比特币是区块链技术的第一个应用,本章将详细介绍比特币技术。
比特币已经掀起了一场数字革命,并引入了第一个完全去中心化的数字货币,而且已经证明是非常安全和稳定的。与此同时,也激发了学术和业界研究的浓厚兴趣,许多新的研究领域也参考了这项技术。自2008年推出比特币以来,比特币人气颇高,目前已成为全球最成功的数字货币,并得到了数十亿美元的投资。
比特币建立在密码学、数字现金和分布式计算领域的研究基础之上。在接下来的章节中,将简单介绍比特币的历史及其背景知识,以使读者了解比特币背后的相关内容。
同时本章会以一个程序开发者的视角对比特币相关的代码进行剖析,从而让读者可以自行编译、阅读、修改、运行相关代码,以及开发第三方应用。
2008年,中本聪(Satoshi Nakamoto)发表了一篇关于比特币的论文,即“Bitcoin:A Peer-to-Peer Electronic Cash System”。论文中引入的第一个关键思想即P2P电子现金,同时需要一个中介银行在对等成员间转移支付。
比特币引用加密领域中的成熟技术,如默克尔(Merkle)树、哈希函数、公钥加密和数字签名等。此外,BitGold,b-money、哈希先进和加密时间戳等技术为比特币的产生奠定了基础。所有这些技术结合在一起,创造了世界上第一种去中心化的货币。比特币中所解决的关键问题是,如何有效地处理拜占庭将军问题,以及双重支出(“双花”)问题。
自2012年以来,比特币的价值显著增加。
对比特币的监管一直是一个有争议的话题,执法机构和政府都在制订各种监管措施,例如,纽约州金融服务管理局发布的BitLicense,即是颁发给那些执行与虚拟货币相关活动的企业许可证。
比特币的增长也得益于所谓的网络效应,也称需方经济规模。从概念上讲,基本上随着网络用户的不断增加,其价值也就越高。随着时间的推移,比特币网络的增长呈现指数增长。尽管比特币的价格波动很大,但在过去几年里,比特币的价格总体上仍处于大幅上涨趋势。
比特币有多种定义:一个协议、一种数字货币、一个平台。另外,作为P2P网络、协议和软件的组合,还促进了数字货币比特币的创建和使用。需要注意的是,使用大写B的比特币是用来指代比特币协议的,而使用小写b的比特币则用来指代比特币。相应地,P2P网络中的节点使用比特币协议彼此通信。
bitcoin has many definitions: an agreement, a digital currency, a platform. Also, as a combination of P2P networks, protocols and software, it also facilitates the creation and use of bitcoin as a digital currency. /span is to be noted. .
椭圆曲线密码技术用于在区块链网络中生成的公钥和私钥。比特币地址的创建方式可描述为:使用一个私钥的相应公钥,并对其执行两次哈希操作。
首先可使用SHA256算法,然后使用RIPEMD160算法。最终的160位哈希值通过一个版本号添加前缀,最后采用Base58Check编码方案进行编码。比特币地址表示为26-35个字符,以数字1或3开始。一个典型的比特币地址看起来像一个字符串,如下所示:IANAguGG8bikEv2YsTBnRUmx7QUcK58wt
目前,比特币存在两种类型的地址,即常用的P2PKH和P2SH类型,且分别以1和3开始。早期,比特币使用了公钥直接支付方式,现在则被P2PKH取代。然而,对于币基(coinbase)地址,比特币中仍采用公钥直接支付这种方式。另外,地址不能多次使用,否则将产生隐私和安全问题。无效地址复用在一定程度上规避了匿名问题。
1、比特币的公钥
在公钥加密过程中,公钥由私钥生成。这里,比特币使用基于SECP256K1标准的椭圆曲线加密算法(ECC)。其中,私钥随机选择,长度为256位。相应地,公钥可以通过未压缩或压缩格式显示。
理论上,公钥表示为椭圆曲线上的x和y坐标,在未压缩格式中,包含了十六进制格式中的04前缀。X和Y坐标都是32位的长度。
与非压缩格式的65个字节相比,压缩公钥的长度为33字节。公钥的压缩版本基本上只包含X部分,因为Y部分可以据此派生出来。公钥压缩版本工作原理可描述为,比特币客户端最初使用的是未压缩密钥,但从比特币核心客户端0.6开始,压缩密钥被用作标准。
2、比特币中的私钥
在SECP256KI ECDSA所推荐的范围内,私钥一般表示为256位数字。作为有效的私钥,随机选取的256位数字位于Ox1-OxFFFF FFFF FFFE BAAE DCE6 AF48 A03B BFD2 SE8C D0364140范围内。
私钥通常使用钱包导入格式(WIF)进行编码,以使其易于复制和使用。同时,WIF可以转换为私钥,反之亦然。
此外,有时还使用迷你私钥格式,并在30个字符以内对密钥进行编码,以实现空间有限的存储操作。除此之外,比特币核心客户端还允许加密包含私钥的钱包。
挖矿就是用Hashcash概念打包区块block至区块链blockchain,并自生新币coinbase的过程。挖矿有两个目的:一是产生新币,二是打包转移旧币。挖矿逻辑中有一个核心概念就是Hashcash,理解了它就理解了挖矿。
mining is the process of wrapping blocks from Block Block to Block Block Chain with the concept of Hashcash, and producing the coin coinbase. Mining is for two purposes: generation of new coins and packing of old coins. One central concept in the mining logic is Hashcash, which understands mining.
生产方:一串含有信息的字节串,首先产生一个随机数R,使用某种运算将之合并,再进行散列(如SHA-256);若散列后的比特串的头K位全部是0,那么过程结束,发送原始的字节串及找到的随机数R至验证方;否则,重新生成随机数R。
验证方:简单地验证收到的比特串和随机数R,检验经过散列后的比特串的头K位是否全部是0;若是则有效。
通过数论及密码学设计,可以保证至少存在1个P∈[1,2K]使得其满足头K位全部是0。而要寻找这一神奇的R,只能通过暴力破解来实现。
不难看出,Hashcash具有如下性质。
理论上,其计算复杂度为指数级,需要进行大量的Hash运算,而实际上执行Hashcash过程所需要的计算量,和R的大小直接相关,所以Hashcash的计算难度是可调节的。
验证阶段的计算量和R的大小无关。Bitcoin使用的PoW机制与Hashcash的方式类似。但是也存在如下几点变化。
Hashcash通常只能将难度(difficulty)翻倍或减半,而Bitcoin则有更为复杂的调整策略;
Hashcash usually doubles or halves difficulty, while Bitcoin has more complex adjustment strategies;
Hashcash通常使用1轮SHA-1算法,而Bitcoin的每个开采都需要2轮SHA-256计算;
Hashcash usually uses a one-wheel SHA-1 algorithm, while Bitcoin requires two-wheel SHA-256 calculations for each mining;
用于识别每个block的SHA-256使用block消息结构的前6个字段计算(version、prev_block、merkle_root、timestamp、bits、nonce,后接标准SHA-256填充,共2个64字节块),而非整个block。计算Hash时SHA-256算法只需要处理2个块。由于nonce字段在第二个块里,在挖矿过程中,第一个块保持不变,因此只需要处理第二个块即可。
The first six fields (version, prev_block, Merkle_root, Timestamp, bits, nence, followed by standard SHA-256 filled with two 64-bit blocks) to identify each Block are calculated using the first six fields of the Block message structure, rather than the entire Block. For the Hash-256 calculation, only two blocks are required. Since the nonce field is in the second block, the first block remains unchanged during the mining process, it is sufficient to process the second block.
由于Hash运算需要消耗大量CPU时间,因此系统会定时发放Bitcoin以奖励贡献计算资源的系统维护者,Bitcoin就此在网络中产生,这也是Bitcoin产生的唯一方式,称为挖矿(Mining)。
, which is the only way Bitcoin is generated by mining, known as mining /span ( Mining) .
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论