01月26, 2018

深入浅出理解比特币原理

一、比特币的背景

2008年9月,美国第4大投资银行雷曼兄弟由于投资失利,引发了全球金融海啸。为应对危机,各国政府采取量化宽松等措施,救助由于自身过失、陷入危机的大型金融机构。这些措施带来了广泛的质疑,人们对政府的信心开始动摇。

在此非常时刻,一位自称“中本村”的科学家提出了一种新型电子现金系统,不依赖于特定的中央发行机构,无需任何可信的第三方,使用遍布整个P2P网络节点的分布式数据库来记录货币的交易,并使用密码学的设计来确保货币流通各个环节安全性。这就是本文所要讲的比特币。

二、比特币的交易流程

为清楚了解比特的原理,我们有必要先了解一下比特币具体的交易流程,一些需要理解的词语这里会标注出来,文章第三部分会有详细解释。

首先,作为新用户需要注册一个比特币账号。可以在比特币中国官网注册, 也可以使用比特币钱包,如BlockChain.Info等。注册好后,钱包会自动生成比特币地址比特币的私钥。当钱包里有比特币的时候我们就可以交易了。

所谓比特币的交易就是从一个比特币钱包向另一个中转账,交易时,我们需要填写一个账单,如下图所示。

alt

账单填写完成后,转出方再将账单广播给矿工,矿工用账单中的公钥和数字签名进行验证,如果验证成功,说明这笔交易确实是转出方发起的,并且可以证明转账信息未被更改。

比特币钱包间的转账是通过交易实现的。交易数据是由转出钱包私钥的所有者生成,也就是说有了私钥就可以花费该钱包的比特币“余额”。虽然交易的原始数据包括“转账数额”和“转入钱包地址”,但是仅有这些是不够的,因为无法证明交易的生成者对“转出钱包地址”余额有动用的权利。所以需要用私钥对原始数据进行签名。

需要补充的是,实际操作中,我们只需填写自己的私钥即可,数字签名和公钥系统会自动帮我们生成的。

当临近节点的矿工接收到广播的账单后,要对账单的合法性和真实性进行验证,这里的合法性,是指矿工会检验支付方的比特币是否充足。矿工们按照交易中支付方的地址,在过往合法的交易中查询该账户“转入”的比特币数量,当大于或者等于本账单中填写的数额时,这笔交易就是合法的。验证成功后会生成带有规范编号的账簿。这个编号是对随机数进行哈希运算得来的,只有编号的前10个数均为0,这页账簿纸才算有效,形成所谓的“区块”。

先完成工作的矿工再将生成的账簿广播到全网,其它矿工收到账簿后,必须立即开始验证。

当其他节点(矿工)收到信息后,可以用这个随机数马上就计算出哈希是否正确,从而验证这个矿工发布的信息是否可靠(注意:获得合适的随机数需要很长时间的计算,但是进行哈希码验证则是很快的)。

当51%的矿工都认可这个账簿时,这个账簿就确认了。所有矿工要把这个账单更新到自己的交易系统中,这些被认可的账单就构成了区块链。第一个验证的矿工,将会获得比特币的奖励。

三、比特币公钥、私钥、地址、数字签名的理解

私钥:比特币的私钥是一个随机的字符串,由系统自动生成。当安装好比特币钱包后,私钥也就自动产生了。

公钥:使用椭圆曲线加密算法(ECDSA)即可得到私钥所对应的公钥。

地址:再对公钥进行一系列的哈希运算,并使用base58变换法,得到比特币的地址。

三者之间的关系如下图所示:

alt

比特币的地址是透明的,是公开的,而私钥是严格需要保密的。比特币的私钥和公钥,都存放在比特币钱包wallet.dat文件中。

数字签名:比特币的数字签名是在比特币转账时由转出方生成的一段防伪字符串,它将账单信息进行转化,生成交易“摘要信息”,再用私钥对其进行加密。它的作用一方面是证明交易确实由转出方发起,另一方面是证明交易信息在传输中没有被更改。

四、比特币的安全问题

比特币的钱包不是实名制的,换句话说,一个人可以注册多个钱包,进而拥有多个比特币地址。这就为比特币的安全埋下了伏笔。

如果比特币钱包的私钥泄漏,或者黑客利用交易记录,获取了比特币的公钥,攻击了比特币钱包,那么钱包就不再安全。

因此我们建议,当完成一笔交易时,我们可以更换一个比特币的地址,让新地址只有转入记录,没有转出记录,从而避免公钥的泄漏。同时,一定要保管好自己的私钥。有些比特币钱包是自己查询不到过往交易记录的,这就需要我们及时做好备份,并且不要将这个备份上传到网络中。

本文链接:https://www.daguanren.cc/post/bitcoin_introduction.html

-- EOF --

Comments