例如,如果某个块需要某些5个前导零,那么我们不能写一个32字节的随机散列,其中包含5个前导零,例如
00000C66DA510B7C524F7EF33279BCA641E2E8BF94B6B15AC6343CD2B706F673
或
00000C66DA510B7C524F7EF33279BCA641E2E8BF94B6B15AC6343CD2ASDFERTY
此外,如果我正在设计自己的区块链,那么在不进行散列的情况下选择任何随机数会影响区块链的安全性吗?
答案 0 :(得分:0)
您不能选择区块链块的哈希。每个块都有一些数据(包括前一个块的哈希),然后是“ nonce”,然后是整个事物的加密哈希。密码哈希的基本设计属性之一是没有人知道如何选择输入以使输出呈现特定值。
区块链矿工整日要做的事情是计算HASH(prev_hash || new data || 1)
,HASH(prev_hash || new data || 2)
,HASH(prev_hash || data || 3)
,...直到它们达到使哈希值与所需的前导数一致的数字为止零。那就是他们证明自己已经完成的工作。然后他们发布带有nonce和hash的块,与 verify (HASH(prev_hash || new data || n)
具有所需的前导零个数)进行比较,只花费了很少的工作量,因此该块被接受。
工作量证明不是区块链的强制性功能,实际上,如果我们能找到一个好的替代方案,那将是非常好的,因为工作量证明使比特币消耗的电量与瑞典整个国家一样多或这几天的事。区块链只是一系列数据块,与加密散列和签名链接在一起。工作量证明的作用-包括“哈希必须具有这么多的前导零”规则,这使某人难以控制哪个矿工将成功开采下一个区块,那就是争论的意思是“没有人能强迫分布式系统接受他们的下一个区块,而不是别人的。”
如果上一段中的某些断言看起来有些奇怪,那么,您绝对正确。这就是为什么加密货币仍然是活跃的研究领域,而不是每个人都一直使用的东西的原因。