初识BlockChain和Bitcoin(二)

  参考:
* [比特币是什么?| 知乎](https://www.zhihu.com/question/22076666/answer/172266472)
* [Bitcoin: A Peer-to-Peer Electronic Cash System](https://bitcoin.org/bitcoin.pdf)
* [比特币白皮书 个人翻译+注解](https://zhuanlan.zhihu.com/p/25039679)
* [(大鱼)精读比特币白皮书系列(1-6)](http://www.jianshu.com/p/ca0c0a0e0faa)
* [比特币的运行原理](http://www.jianshu.com/p/f1fa43273027)
* [比特币的私钥,公钥和地址是什么?](https://segmentfault.com/a/1190000008741956)   
* [区块链技术指南(《区块链原理、设计与应用》在线版)](https://github.com/yeasy/blockchain_guide)
比特币到底是什么?

什么是比特币(bitcoin)?

概念与定义

比特币是一种用去中心化、全球通用、不需第三方机构或个人,基于区块链作为支付技术的电子加密货币。作为一种特定数据,从地球一端向地球另一端转账比特币,就像发送电子邮件一样简单、低成本且无任何限制。比特币也因此常被用于跨境贸易、支付、汇款等领域。

比特币并不依赖中央机构来发行新钱和维护交易,而是由区块链来完成,用数字加密算法、全网抵御51%算力攻击保证交易安全(可参考《51%攻击解析 | 巴比特》)。交易记录以被全体网络电脑收录维护,每笔交易的有效性都必须经过区块链检验确认。

比特币的总量恒定为2100万个;其最小单位是 0.00000001 (一亿分之一)比特币,称为“1聪”(纪念其发明人中本聪)。如有必要,也可以修改协议(只要大多数用户同意)将其分区为更小的单位,以保证其流通方便。

易混淆的2个概念

(区块链的相关说明,可参考初识BlockChain和Bitcoin(一))

  • 比特币是区块链(的一种应用),但是区块链并不就是比特币。区块链是一种记录方式或者说一种数据库系统,用于记录A,就是A的区块链;用于记录B,就是B区块链;如果用于记录比特币的交易,那就是比特币区块链
  • 区块链1.0是比特币的底层技术。最初中本聪是为了解决比特币的“真实性”及“不被重复支付”这两个问题,才提出了“将打包了多个交易的区块从后向前有序链接,形成可追溯到创始区块的链条(即区块链)”的解决方案。不过,他当时可能也没想到,区块链技术可以拥有这么巨大的潜力,能被应用在其他重要方面上

在(一)中已提到,区块链可看作是一种数据库系统,其数据格式,根据技术应用场景,可分为三种:

  1. 数据间完全不相关(只是达成的共识,没有有效无效之说)
  2. 数据间具有某些逻辑结构(如对每笔交易,输入和输出都与之前交易有关,这些数据需要通过逻辑验证)
  3. 数据拥有图灵完备的逻辑(对每笔交易不仅要验证真实性和输入准确性,还要根据交易逻辑通过输入值来验证结果)

比特币系统就属于第二种,又叫分布式账本;而以太坊(Ethereum,一种体系,包括以太币)则属于第三种,可支持智能合约。

深入理解

比特币真的是一种“币”吗?
“1个比特币”的含义

在中本聪的《比特币白皮书》中,其实明确了其本质含义:“We define an electronic coin as a chain of digital signatures”,提取主干即为“We define an coin as a chain”。所以,1个比特币,其实就是一个“”(即区块链)。“币”的数量,是通过“链”上的“交易”而被推算出来的数值,“币”其实是并不存在的。

比特币的交易并不是使用一手交钱一手交货的方式,而是通过转账的方式将价值进行组合与分割,并且比特币的交易被设计为可以纳入多个输入和输出,即一笔交易可以转账给多个人。也正是因为如此,钱包上显示的比特币数值其实只是程序进行的一种处理,通过对交易的输入和输出进行反复追溯,并计算最终可用的值。

一些术语

比特币区块链涉及到的领域很多,包括分布式、存储、密码学、心理学、经济学、博弈论、网络协议等,有几个概念是要解释下的:

  • 交易(Transaction,后面简称Tx):指一次操作,会导致账本状态的一次改变,如添加一条记录。Tx是比特币系统信息载体的最小单元,一条交易可能包含如下信息:
付款人地址 付款人对交易的签字确认 付款人资金的
来源交易ID
交易的金额 收款人地址 收款人的公钥 时间戳
合法的地址(公钥经过两次hash运算得到的160位hash值) 确保交易内容不被篡改 从哪个交易的输出作为本次交易的输入 多少钱,跟输入的差额为交易的服务费 合法的地址 收款人的公钥 交易何时能生效
  • UTXO:指未经使用的交易的输出(Unspent Transaction Outputs),可以被新创建的交易引用,作为其合法的输入。

  • 区块(Block):记录一段时间内发生的Tx和状态结果,是对当前账本状态的一次共识。Block将多个Tx打包装箱,贴上封条,并串联起来。

  • 链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。

  • HASH算法:是一个把任意长度的数据映射成固定长度数据的函数运算,且此过程是不可逆(已知x的HASH值,无法求出x)和无冲突(已知x,无法求出一个y,使x与y的HASH值相同)的。

注意:
1.这两条性质在数学上并不成立,因为一个函数必然可逆,且由于HASH函数的值域有限,理论上会有无穷多个不同的原始值,它们的hash值都相同
2.好的算法做到的是“求逆和求冲突在计算上不可能”,也就是正向计算很容易,而反向计算即使穷尽人类所有的计算资源都做不到
3.目前流行的Hash算法包括MD5、SHA-1和SHA-2(前两类已被证明安全性不足以用于目前商业环境)
  • Merkle树:是存储hash值的一种数据结构(树)。由一个根节点、一组中间节点和一组叶节点组成,根节点和中间节点都是它们各自的两个孩子节点内容的hash值。
    Merkle树的特点就是:底层数据的任何变动,都会传递到其父亲节点,一直到树根。
假设D1中数据被修改,就会影响N1、N4和Root,因此沿着Root-->N4-->N1就能“快速定位”到发生改变的D1
  • 不对称加密算法:顾名思义,即加密密钥和解密密钥是不同的,分别称为公钥(公开)和私钥(私有)。公钥可以加密数据或验证数据,私钥可以解密数据或对数据签名。

  • 数字签名:证实某数字内容的完整性和来源,类似在纸质合同上签名确认合同内容。
    比如,A要发给B一个Tx(数据信息),B如何获知所得到的Tx即为A发出的原始版本?A先对Tx进行摘要,然后用自己的私钥进行加密,将Tx和加密串都发给B。B收到后Tx和加密串,用A的公钥来解密加密串,得到原始的数字摘要,跟对Tx进行摘要后的结果进行比对。如果一致,说明该Tx确实是A发过来的,并且Tx内容没有被修改过。

  • 地址(账户):比特币的账户地址其实就是用户公钥经过不对称加密算法及编码运算后生成的160位(20字节)的字符串。在交易时,用户自己保留私钥,对自己发出的交易进行签名确认,并公开公钥

  • 挖矿:通过暴力尝试来找到一个字符串,使得它加上一组交易信息后的 hash值符合特定规则(例如前缀包括若干个 0),找到的人可以宣称新区块被发现,并获得系统奖励的比特币。

  • 零知识证明:假设B拥有A的公钥,B没有见过A,而A见过B。而有一天2人见面了,A认出了B,但B不能确定对面是否是A,这时A要向B证明自己是A,有2个方法:
    1)A把自己的私钥给B,B用这个私钥对某个数据加密,然后用A的公钥解密,如果正确,则证明对方确实是A。
    2)B给出一个随机值,A用自己的私钥对其加密,然后把加密后的数据交给B,B用A的公钥解密,如果能够得到原来的随机值,则证明对方是A,而不必知道A的私钥。此第二种方法即属于零知识证明
    再比如,在前面Merkle树的图例中,D可以看作是不同的交易Tx。那么,如何证明某个交易(如D3)中包括指定的交易(如D0)的数据呢?很简单,只要交易D3能沿着系统保存的Merkle树的Root节点,找到N4、N1和N0的Hash值,就能证明这点,且还不必知道交易D0的数据,这也是一种零知识证明

交易的原理
比特币交易过程图解,一些术语在前面已做解释

每次发生交易,用户需要将新交易记录写到比特币区块链网络中,等网络确认后即可认为交易完成。每个交易包括一些输入和一些输出。一笔合法的交易,即引用某些已存在交易的UTXO,来作为交易的输入,并生成新的输出的过程。

在交易过程中,转账方需要通过签名脚本来证明自己是UTXO的合法使用者,并且指定输出脚本来限制未来对本交易的使用者(为收款方)。对每笔交易,转账方需要进行签名确认。并且,对每一笔交易来说,总输入不能小于总输出。

比特币网络中的节点,在收到广播来的交易信息后,将进行如下检查:

  • 交易是否已经处理过;
  • 交易是否合法。包括地址是否合法、发起交易者是输入地址的合法拥有者、是否是UTXO;
  • 交易的输入之和是否大于输出之和。

在对每笔交易的检查通过后,会将此交易标记为合法的未确认交易,并在网络内进行广播。网络中的矿工(也是网络节点)通过“挖矿”来完成对交易记录的记账过程,以此来维护整个网络的正常运行。

价值与意义

作为一种概念金融货币,比特币主要是希望解决已有金融货币系统的几个问题:

  • 被掌控在发行机构手中
  • 自身的价值无法保证
  • 无法匿名化交易

比特币之所以受到无数金融从业者的热捧,在于它首次真正意义上实现了足够安全可靠的去中心化数字货币机制。尽管充满了争议,但从技术角度看,比特币仍然是数字货币历史上一次了不起的创新。比特币网络在2009年上线以来已经在全球范围内7*24小时运行接近8年时间,支持过单笔1.5亿美金的交易。比特币网络由数千个核心节点参与构成,没有任何中心的运维参与,支持了稳定上升的交易量,从理论到实践,再到相关其相关技术的多领域拓展,相信它的发展前景会变得越来越好。

注:比特币历史上唯一已知的漏洞事件曾导致比特币的恶意增发,但问题很快被发现并修正,相关非法交易被撤销。

你可能感兴趣的:(初识BlockChain和Bitcoin(二))