区块链之共识算法系列——PoW(一)
区块链之共识算法系列——PoW(一)
一、前言
说到区块链我们先要了解什么是 P2P,这个 P2P 不是金融方面的名词,而是指对等网络。在中本聪的白皮书中提出了像微信支付、支付宝这样的需要经过第三方的点对点支付系统是没有任何意义的。
而我们的 P2P,就是这样一个不需要经过第三方的概念,其之所以会出现的一个重要原因就是避免有第三方和中心。
在 P2P 对等网络中所有的节点功能都是一样的,没有哪一个节点是特殊的,他们之间互相提供服务。
因为没有第三方,没有中心,所以保证了数据的透明、自由、平等。
我们常听说的比特币就是使用 PoW 共识算法的。PoW 是 Proof-of-Work 的简称,即工作量证明。就是计算一个数值,使得和数据合并后的值满足要求后,就马上广播全网打包区块,全网的节点收到广播之后,就会验证其正确性。如果节点有作弊行为,那么就不会通过验证,这个打包的区块会被丢弃,无法记录到账本,挖矿成本这么高,如果作弊导致区块被丢弃,比特币也拿不到了,岂不是还得亏本。所以矿工都愿意遵守比特币系统的共识协议。
二、PoW 代码实现
我们先定义区块的结构体:
复制代码
根据比特币,我们将这个区块的信息设置为以下几点:上一个区块的哈希值、当前区块的哈希值、时间戳、难度系数、交易信息、区块高度、随机值。
然后我们来建立一个创世区块。
复制代码
因为是第一个区块,所以前一个区块是为空,时间戳我们使用现在的时间,难度我们暂时设置为 3,因为是第一个区块,所以区块高度为 1,随机值可以随便搞一个,我们就用 0 吧。然后我们得计算当前区块的 hash 值,我们要使用 sha256 来计算,下面的内容我们下一期再说吧~敬请期待!
评论