Blockchain的鱼和熊掌系列(10)PoW协议
2017-02-14 11:09
387 查看
A proof-of-work (PoW) is a computing result which is difficult to work out but easy for others to verify. For the traditional Bitcoin system, a SHA-256 hash algorithm based PoW protocol was employed to select one out of miners to generate the next block.
Q1: PoW协议是什么鬼?
PoW 即 proof-of-work,是一种工作量证明机制。PoW采用哈希函数来对原始数据进行混淆,进行伪随机化,从而保证被证明的工作量的可靠性,避免有人投机取巧。假设初始值Nonce,平均工作难度系数为M。那么,平均每一个节点都至少进行M此哈希运算才能得出正确的答案(比如开头含有若干个0的哈希值为正确答案),显然,平均工作难度系数M值越大,节点所需的哈希计算量就越大。
Q2: 为什么M值不设置得小一点,节能岂不更好?!
不行,M值不能设置得太小太简单,M值要保持在一个相对于当前网络状态而言的较高的水平上(比如10分钟才能算出一个哈希难题)。这是因为PoW协议的目的是在一个较高安全系数上保证网络中的区块是由诚信节点所创造。在incent机制的激励下,大部分节点会选择保持诚信地在主链上贡献算力,PoW实际上代表了整个诚信网络节点的主链的发展方向。一旦邪恶节点想篡改主链上的数据,必须持续地战胜主体诚信节点群体的算力之和,换句话说,想要成功篡改主链上的数据,必须持续地维持51%一段时间(区块确认所需时间×区块所需确认次数),保证主链上的数据的安全性。
欢迎关注“Aha实验室”微信公众号
参考
[1] Nakamoto S. Bitcoin: A peer-to-peer electronic cash system[J]. 2008.
[2] SVENSSON J, ZEECK J. Proof-of-Work[J].
Q1: PoW协议是什么鬼?
PoW 即 proof-of-work,是一种工作量证明机制。PoW采用哈希函数来对原始数据进行混淆,进行伪随机化,从而保证被证明的工作量的可靠性,避免有人投机取巧。假设初始值Nonce,平均工作难度系数为M。那么,平均每一个节点都至少进行M此哈希运算才能得出正确的答案(比如开头含有若干个0的哈希值为正确答案),显然,平均工作难度系数M值越大,节点所需的哈希计算量就越大。
Q2: 为什么M值不设置得小一点,节能岂不更好?!
不行,M值不能设置得太小太简单,M值要保持在一个相对于当前网络状态而言的较高的水平上(比如10分钟才能算出一个哈希难题)。这是因为PoW协议的目的是在一个较高安全系数上保证网络中的区块是由诚信节点所创造。在incent机制的激励下,大部分节点会选择保持诚信地在主链上贡献算力,PoW实际上代表了整个诚信网络节点的主链的发展方向。一旦邪恶节点想篡改主链上的数据,必须持续地战胜主体诚信节点群体的算力之和,换句话说,想要成功篡改主链上的数据,必须持续地维持51%一段时间(区块确认所需时间×区块所需确认次数),保证主链上的数据的安全性。
欢迎关注“Aha实验室”微信公众号
参考
[1] Nakamoto S. Bitcoin: A peer-to-peer electronic cash system[J]. 2008.
[2] SVENSSON J, ZEECK J. Proof-of-Work[J].
相关文章推荐
- Blockchain的鱼和熊掌系列(4)GHOST协议
- Blockchain的鱼和熊掌系列(6)Bitcoin-NG协议
- Blockchain的鱼和熊掌系列(9)Multi-Paxos协议
- Blockchain的鱼和熊掌系列(20) 之 pow 简单测试
- Blockchain的鱼和熊掌系列(8)Paxos协议
- Blockchain的鱼和熊掌系列(2)收敛性分析
- Blockchain的鱼和熊掌系列(21)之 keccak(sha-3) linux 下使用
- Blockchain的鱼和熊掌系列(0) Intro
- Blockchain的鱼和熊掌系列(19) 之 pthread 线程库
- Blockchain的鱼和熊掌系列(18) 之 openssl 问题
- Blockchain的鱼和熊掌系列(5)SPV机制
- Blockchain的鱼和熊掌系列(11)Smart Contract
- Blockchain的鱼和熊掌系列(15)Stellar Consensus Protocol
- Blockchain的鱼和熊掌系列(3)分叉问题
- Blockchain的鱼和熊掌系列(22) 之基于CUDA的客户端哈希并行化处理示例
- Blockchain的鱼和熊掌系列(16)Potential Attacks
- Blockchain的鱼和熊掌系列(17)Privacy Protection
- Blockchain的鱼和熊掌系列(21) 之 TCP端口交互之socket programming in standard C
- Blockchain的鱼和熊掌系列(7)Bloom Filter(续SPV)
- Blockchain的鱼和熊掌系列(14)Sybil Attack