蔚哥专业了!我尽量试着回答一下哈:
- 我理解记账时各个参与方要计算的是与上一个block hash值相同的下一次碰撞,不知对不对?
碰撞概念:如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞。所以在哈希函数中,碰撞的实体是输入字符串。
参与方在争夺记账权时计算的不是“碰撞”,而是“新字符串”对应的“新哈希值”。而这个“新字符串”是这样的一个组合:上一个block的哈希值+本block中交易记录对应的哈希值+随机数。这样算出来的“新哈希值”就是新产生区块的独一无二的标签。这个标签使得区块链是不可逆的,一旦某个区块记录被篡改,就会造成之后的所有区块哈希值不匹配,这就保证了区块链中交易记录的安全性。
另外,整个已经有记录的账本是否为一个block?
简单理解可以这么想:区块链可以比作一个分布式账本,一个区块(block)可以比作账本中的一页,区块哈希值可以比作页码。然后区块链上的区块个数没有最大数量,因为只要还有交易发生,就需要记录新的一页,也就是就要新建区块(block)。交易记录需要新建区块来证明存在性,区块的创建需要交易的发生。-
随着算力的增强,预先定义的总数2100w终有用尽的时候,这时候要超发货币还是怎么办?因为这意味着计算无奖励。
见下图,首先关于“随着算力的增强,预先定义的总数2100w终有用尽的时候”这个说法,比特币是由网络源源不断地产生,准确地说,2100w这个数字是个极限,只有当时间无限久的时候才能达到,正常来讲是无限接近但无法达到。
计算不会无奖励,只不过奖励会越来越少,但如果比特币身价能持续升温,就不会缺少那些花费大量物资打造“矿池”挖矿的人,这个问题可能还要结合经济原理来考虑。
有兴趣可以参考下这篇文章:比特币块链和挖矿原理
前一段google宣布SHA1被攻克,随着密码技术的提升,这种依赖hash不可逆的假设为基石的体系,的系统性风险如何保证?(没有权威第三方用枪杆子保障参与方利益)
区块链中使用SHA-256的哈希算法进行区块加密。我们通俗点讲这个哈希加密的原理:
例如“橘子园读书”==Hash函数==>“0000001101010010”,这里Hash加密函数的输入为“橘子园读书”,输出为字符串散列。
我可以通过哈希值验证被加密的内容是否真实,但是我不能通过哈希值知道被加密的具体内容是什么。
不同的被加密内容,通过Hash函数加密,可能会输出相同的字符串散列,也就是不同的输入对应了相同的哈希值,这就是第一个问题中提到的碰撞,比较好的哈希加密函数中,这个碰撞几率在理论上有测试值,但在实际应用中遇到碰撞的可能性会非常小。
蔚哥提到的SHA1被攻克的新闻我在网上找到了一些:“王小云的主要工作是给出了MD5,SHA-0的碰撞,以及SHA-1的理论破解,她证明了160位SHA-1,只需要大约269次计算就能找出来,而理论值是280次。”
王小云这个是160位,而区块链中用的是256位,这个碰撞几率就更小。
反观区块链每一个区块的哈希值计算过程,可以说是对哈希值的哈希加密,而且还用了merkle树(见下图)这种包含好几层哈希的存储结构,整体来说,找到和被加密内容对应的哈希值一模一样的数据,几乎不太可能。所以,区块链中数据被篡改的几率几乎为零。虽然它不是严格为零,但用于普通的实际应用中已经足够了。
总之,目前来看:理论上区块链上这种哈希加密会有风险,但概率几乎为零,可以用于实际应用。而随着密码学的进步,这个说法可能被推翻也不一定。