
在现实的银行体系里,用户的每一笔转账,会有一个中心系统——银行系统负责结算。而 比特币是一个去中心化的点对点交易系统,由于没有中心机构负责对每一笔交易的监管,记录每一笔账,所以需要通过一种机制让整个系统有规则的记录每一笔交易。比特币的共识机制是工作量证明(proof of work,简称POW)。
比特币的交易是存放单向区块里,所有的区块通过哈希指针连接在一起组成一个区块链。

既然比特币是一个去中心化的交易系统,那就衍生出两个问题:一,没有银行体系,谁负责记账结算每一笔交易;二,如何确保记 录是合规的交易。
1 谁有权记账?
针对第一个问题,比特币采取的是工作量证明机制(proof of work,简称POW)。工作量证明是根据工作量结果来选定记录交易的节点,具体的机制是暴力解一道数学难题,区块头的哈希值小于目标值,即
H(block headers) ≤target
而要解出这个不等式只能一点点试出来,也就是谁越努力,谁算出来的概率就越大,谁就有资格去发布一个区块,所以这个过程才被称为工作量证明。
Nonce 在区块头(block headers)里的一个值,只有找到合适的nonce使得区块头的哈希值小于target,才可以区块合法化并发布。
在比特币中,Nonce字段是一个32位的无符号整数。这意味着Nonce的取值范围是从0到2^32-1,共有2^32个可能的数值。当挖矿难度很高的时候即使遍历了这2^32个取值,也无法使得H(block headers)≤target,此时可以通过调整区块中的coinbase交易里的input内容,从而改变merkle root的哈希值,最终使得H(block headers)≤target。


2 如何确保记账人不作假?
这个问题包括两个问题,一,什么是合规交易;二,如何确保记账者记录的是合规交易。
合规交易,这里的定义是,合法的交易者A合法地将有来源的钱转给合法的交易者B。这个定义里有三个关键,一合法的交易者A和B;合法转出;有来源的钱。
比特币开户——公私钥对
针对于合法交易者问题,在比特币中,任何人包括非法分子可以随便在本地创建多个公私钥对(开多个户),公钥是公开的,相当于银行账户,作为转账和接收的地址;私钥是非公开的,相当于账户密码,知道私钥就可以转出公钥账户上的比特币。公私钥对可以确保交易是交易者自己发起的而非伪造的,但是如何发现发现交易者自身是否是合法的还是非法的,者需要其他手段去监控。为方便讨论,默认所有交易者都是合法的,非恶意的。
公私钥对用于签名确保是本人发起的交易
针对于合法转出,合法转出指的是每一笔交易都要有签名证明转出者的身份,而不是其他人伪造转出者的身份。如前所述,比特币开户是在本地创造一对公钥和私钥,公钥是账户,私钥是密码。转账者通过私钥对交易签名,其他人通过公钥来验证签名的正确性,从而确保交易是由比特币的所有者发起的交易而非第三方伪造的。
在比特币中,每一笔转账金额都要指向钱的来源,一是避免捏造比特币的数量,二可以避免double spending(双花问题,一笔钱花两次)。就比如转账记录,A将10个比特币分别给B和C转去5个比特币,那A要说明自己这10个比特币是来自于上一笔交易。同样B将比特币转给C和D也要说明这个钱是来自于A,依此类推,每一笔交易的来源都可以追溯到最开始挖矿产生的比特币。

那如何确保记账者如实记录合规交易?当包含交易的新区块发布的时候,其他节点会去验证这个节点是否是合法的。验证区块里面的每一笔交易是否合法,是否有合法签名,里面的钱是否被花过,如果不合法则拒绝加入到区块链中。
最长链原则
其次检验这个区块是否是按照最长合法链原则添加的区块,如果不在最长合法链上,其他节点也会拒绝加入到区块中。
版权声明
本文仅代表作者观点,不代表xx立场。
本文系作者授权xx发表,未经许可,不得转载。
最新留言