4. 比特币的密钥、地址和钱包 - 精通比特币笔记
比特币的所有权是通过密钥、比特币地址和数字签名共同确定的。密钥不存在于比特币网络中,而是用户自己保存,或者利用管理私钥的软件-钱包来生成及管理。
比特币的交易必须有有效签名才会被存储在区块中,因此拥有密钥就拥有对应账户中的比特币。密钥都是成对出现的,由一个公钥和一个私钥组成。公钥相当于银行账号,私钥就相当于银行卡密码。通常情况下密钥由钱包软件管理,用户不直接使用密钥。
比特币地址通常是由公钥计算得来,也可以由比特币脚本得来。
比特币私钥通常是数字,由比特币系统随机( 因为算法的可靠性与随机性正相关,所以随机性必须是真随机,不是伪随机,因此比特币系统可以作为随机源来使用 )生成,然后将私钥作为输入,使用椭圆曲线算法这个单向加密函数生成对应的公钥,再将公钥作为输入,使用单向加密哈希函数生成地址。例如,通过公钥K得到地址A的计算方式为:
其中SHA256和PIPEMD160被称为双哈希或者HASH160,Base58Check是带有验证功能的Base58编码,验证方式为先计算原始数据(编码前)的验证码,再比较编码后数据的验证码,相同则地址有效,否则无效。而在使用Base58Check编码前,需要对数据做处理。
处理方式为: 版本前缀 + 双哈希后的数据 + 校验码
其中版本前缀是自定义的,如比特币私钥的前缀是0x80,校验码是把版本前缀和双哈希后的数据拼接起来,进行两次SHA256计算,取前4字节。得到处理的数据后,再进行Base58编码,得到最终的结果。
下图是Base58Check版本前缀和Base58编码后的结果
密钥可以采用不同的编码格式,得到的编码后结果虽然不同,但密钥本身没有任何变化,采用哪种编码格式,就看情况而论了,最终目的都是方便人们准确无误的使用和识别密钥。
下图是相同私钥采用不同编码方式的结果:
公钥也有很多种格式,不过最重要的是公钥被分为压缩格式和非压缩格式,带04前缀的公钥为非压缩格式的公钥,而03,02开头的标识压缩格式的公钥。
前面说过,公钥是椭圆曲线上的一个点,由一对坐标(x, y)表示,再加上前缀,公钥可以表示为:前缀 x y。
比如一个公钥的坐标为:
以非压缩格式为例,公钥为(略长):
压缩格式的公钥可以节省一定的存储,对于每天成千上万的比特币交易记录来说,这一点点的节省能起到很大效果。
因为椭圆曲线实际上是一个方程(y2 mod p = (x3 + 7)mod P, y2是y的平方,x3是x的立方),而公钥是椭圆曲线上的一个点,那么公钥即为方程的一个解,如果公钥中只保留x,那么可以通过解方程得到y,而压缩公钥格式有两个前缀是因为对y2开方,会得到正负两个解,在素数p阶的有限域上使用二进制算术计算椭圆曲线的时候,y坐标或奇或偶,所以用02表示y为奇数,03表示y为偶数。
所以压缩格式的公钥可以表示为:前缀x
以上述公钥的坐标为准,y为奇数为例,公钥K为:
不知道大家发现没有,这种压缩方式存在一个问题,即一个私钥可以得出两个公钥,压缩和非压缩公钥,而这两个公钥都对应同一个私钥,都合法,但生成的比特币地址却不相同,这就涉及到钱包软件的实现方式,是使用压缩公钥还是非压缩公钥,或者二者皆用,这个问题后面来介绍。
比特币钱包最主要的功能就是替用户保管比特币私钥,比特币钱包有很多种,比如非确定性(随机)钱包,确定性(种子)钱包。所谓的非确定性是指钱包运行时会生成足够的私钥(比如100个私钥),每个私钥仅会使用一次,这样私钥管理就很麻烦。确定性钱包拥有一个公共种子,单向离散方程使用种子生成私钥,种子足够回收所有私钥,所以在钱包创建时,简单备份下,就可以在钱包之间转移输入。
这里要特别介绍下助记码词汇。助记码词汇是英文单词序列,在BIP0039中提出。这些序列对应着钱包中的种子,种子可以生成随机数,随机数生成私钥,私钥生成公钥,便有了你需要的一切。所以单词的顺序就是钱包的备份,通过助记码词汇能重建钱包,这比记下一串随机数要强的多。
BIP0039定义助记码和种子的创建过程如下:
另外一种重要的钱包叫做HD钱包。HD钱包提供了随机(不确定性) 钥匙有两个主要的优势。
第一,树状结构可以被用来表达额外的组织含义。比如当一个特定分支的子密钥被用来接收交易收入并且有另一个分支的子密钥用来负责支付花费。不同分支的密钥都可以被用在企业环境中,这就可以支配不同的分支部门,子公司,具体功能以及会计类别。
第二,它可以允许让使用者去建立一个公共密钥的序列而不需要访问相对应的私钥。这可允许HD钱包在不安全的服务器中使用或者在每笔交易中发行不同的公共钥匙。公共钥匙不需要被预先加载或者提前衍生,但是在服务器中不具有可用来支付的私钥。
BIP0038提出了一个通用标准,使用一个口令加密私钥并使用Base58Check对加密的私钥进行编码,这样加密的私钥就可以安全地保存在备份介质里,安全地在钱包间传输,保持密钥在任何可能被暴露情况下的安全性。这个加密标准使用了AES,这个标准由NIST建立,并广泛应用于商业和军事应用的数据加密。
BIP0038加密方案是: 输入一个比特币私钥,通常使用WIF编码过,base58chek字符串的前缀“5”。此外BIP0038加密方案需要一个长密码作为口令,通常由多个单词或一段复杂的数字字母字符串组成。BIP0038加密方案的结果是一个由base58check编码过的加密私钥,前缀为6P。如果你看到一个6P开头的的密钥,这就意味着该密钥是被加密过,并需个口令来转换(解码) 该密钥回到可被用在任何钱包WIF格式的私钥(前缀为5)。许多钱包APP现在能够识别BIP0038加密过的私钥,会要求用户提供口令解码并导入密钥。
最通常使用BIP0038加密的密钥用例是纸钱包一一张纸张上备份私钥。只要用户选择了强口令,使用BIP0038加密的私钥的纸钱包就无比的安全,这也是一种很棒的比特币离线存储方式(也被称作“冷存储”)。
P2SH函数最常见的实现时用于多重签名地址脚本。顾名思义,底层脚本需要多个签名来证明所有权,然后才能消费资金。这类似在银行开设一个联合账户。
你可以通过计算,生成特殊的比特币地址,例如我需要一个Hello开头的地址,你可以通过脚本来生成这样一个地址。但是每增加一个字符,计算量会增加58倍,超过7个字符,需要专门的硬件或者矿机来生成,如果是8~10个字符,那么计算量将无法想象。
bitcoin私钥是如何产生的?
比特币是什么
比特币的英文名 称是叫 “ Bitcoin ”,比特币就是经过了特殊加密的电子货币。比特币既不算数字货币也不算虚拟货币。比特币这个新概念从提出再到 2009 年 1 月 3 日比特币 才正式发行,由于其发行的总产量是固定的,所以比特币一下子成为了稀有资源,受到了投资者的注意。比特币采用的是去中心化的交易,个人投资者随时随地都能进行交易。
比特币挖矿简介
比特币挖矿算得上是投资者获取比特币的途径之一。故随着比特币的价值不断增长,很多专业机构配备了专业的挖矿设备,这样挖出的比特币效率会提高很多,以此来盈利。说的简单点。比特币挖矿就是投资者找到了比特币系统在某一时间段产生的一串随机代码,只要被投资者发现了,就相当于投资者挖到了矿。一串代码就相当于一枚比特币。因此,很多投资者非常青睐于挖矿,这种激励模式下,比特币的市值不断增大,导致比特币的发展越来越好。甚至在一些国外实体店铺,都开始支持消费者使用比特币进行支付结算了。
比特币的英文缩写是什么?
比特币是一种基于去中心化,采用点对点网络与共识主动性,开放源代码,以区块链作为底层技术的虚拟加密货币,由中本聪在2008年提出,2009年诞生。 与其他虚拟货币最大的不同是其总数量非常有限。比特币协议数量上限为2100万个,以避免通货膨胀问题。使用比特币是透过私钥作为数字签名,不经过如银行、电子支付平台等第三方机构,允许个人直接支付给他人。它不依靠特定货币机构发行,依据特定算法,通过大量的计算产生。
中文名
比特币
外文名
Bitcoin
种类
加密数字货币
流通平台
网络
创始人
中本聪
缩写
BTC
btc是什么币
您好!btc指的是比特币。
比特币(Bitcoin)的概念最初由中本聪在2008年11月1日提出,并于2009年1月3日正式诞生。
根据中本聪的思路设计发布的开源软件以及建构其上的P2P网络。比特币是一种P2P形式的虚拟的加密数字货币。点对点的传输意味着一个去中心化的支付系统。
与所有的货币不同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算产生,比特币经济使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,并使用密码学的设计来确保货币流通各个环节安全性。P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。基于密码学的设计可以使比特币只能被真实的拥有者转移或支付。这同样确保了货币所有权与流通交易的匿名性。比特币与其他虚拟货币最大的不同,是其总数量非常有限,具有的稀缺性。
拓展资料:
一、比特币购买方法
用户可以买到比特币,同时还可以使用计算机依照算法进行大量的运算来“开采”比特币。在用户“开采”比特币时,需要用电脑搜寻64位的数字就行,然后通过反复解谜密与其他淘金者相互竞争,为比特币网络提供所需的数字,如果用户的电脑成功地创造出一组数字,那么就将会获得25个比特币。
由于比特币系统采用了分散化编程,所以在每10分钟内只能获得25个比特币,而到2140年,流通的比特币上限将会达到2100万。换句话说,比特币系统是能够实现自给自足的,通过编码来抵御通胀,并防止他人对这些代码进行破坏。
二、交易方式
比特币是类似电子邮件的电子现金,交易双方需要类似电子邮箱的“比特币钱包”和类似电邮地址的“比特币地址”。和收发电子邮件一样,汇款方通过电脑或智能手机,按收款方地址将比特币直接付给对方。下列表格,列出了免费下载比特币钱包和地址的部分网站。
比特币地址是大约33位长的、由字母和数字构成的一串字符,总是由1或者3开头,例如火币"1PCgrJSzxJTjtUUbijcvPjZ6FVS2jGeZnN"。比特币软件可以自动生成地址,生成地址时也不需要联网交换信息,可以离线进行。可用的比特币地址非常多。
比特币地址和私钥是成对出现的,他们的关系就像银行卡号和密码。比特币地址就像银行卡号一样用来记录你在该地址上存有多少比特币。你可以随意的生成比特币地址来存放比特币。每个比特币地址在生成时,都会有一个相对应的该地址的私钥被生成出来。这个私钥可以证明你对该地址上的比特币具有所有权。我们可以简单的把比特币地址理解成为银行卡号,该地址的私钥理解成为所对应银行卡号的密码。只有你在知道银行密码的情况下才能使用银行卡号上的钱。所以,在使用比特币钱包时请保存好你的地址和私钥。
比特币的交易数据被打包到一个“数据块”或“区块”(blockquan)中后,交易就算初步确认了。当区块链接到前一个区块之后,交易会得到进一步的确认。在连续得到6个区块确认之后,这笔交易基本上就不可逆转地得到确认了。比特币对等网络将所有的交易历史都储存在“区块链”(blockquanchain)中。区块链在持续延长,而且新区块一旦加入到区块链中,就不会再被移走。区块链实际上是一群分散的用户端节点,并由所有参与者组成的分布式数据库,是对所有比特币交易历史的记录 。 中本聪预计,当数据量增大之后,用户端希望这些数据并不全部储存自己的节点中。为了实现这一目标,他采用引入散列函数机制。这样用户端将能够自动剔除掉那些自己永远用不到的部分,比方说极为早期的一些比特币交易记录。
三、消费方式
许多面向科技玩家的网站,已经开始接受比特币交易。比如火币、币安、OKEx之类的网站,以及淘宝某些商店,甚至能接受比特币兑换美元、欧元等服务。毫无疑问,比特币已经成为真正的流通货币,而非腾讯Q币那样的虚拟货币。国外已经有专门的比特币第三方支付公司,类似国内的支付宝,可以提供API接口服务。
可以用钱来买比特币,也可以当采矿者,“开采”它们用电脑搜寻64位的数字就行。通过用电脑反复解密,与其他的淘金者竞争,为比特币网络提供所需的数字。如果电脑能够成功地创造出一组数字,就会获得12.5个比特币。比特币是分散化的,需要在每个单位计算时间内创造固定数量比特币是每10分钟内可获得12.5个比特币。到2140年,流通的比特币上限将达到2100万个。换句话说,比特币体制是可以自给自足的,译成编码可抵御通胀,防止他人搞破坏。