区块链交易id是希哈值吗,区块链交易id不存在

  

  免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。   

  

  边肖:记得要集中注意力。   

  

  来源:北京互助融云   

  

  作者:李火华   

  

  9月14日,一款名为“EOSPlay”的DApp游戏遭遇了新的随机数攻击,损失了数万EO。   

  

  可能很多人对“随机数攻击”这个词已经很熟悉了,因为随机数攻击占了DApp黑客攻击的很大一部分,DApp的很多随机数都被黑客破解过。   

  

  你可能会问,随机数不是随机的吗?它意味着随机性和不可预测性。为什么会被黑客破解?   

  

  这得从随机数说起。   

  

  随机数可以分为真随机数和伪随机数。真随机数需要满足随机性、不可预测性和不可复制性,而伪随机数只需要满足随机性,或者随机性和不可预测性。   

  

  真随机数只存在于物理世界,一般需要通过物理手段(包括量子过程)获得,比如我们日常看到的抛硬币和掷骰子。生成的随机数是真随机数。但这种掷硬币、掷骰子等随机数生成方式的缺点也是显而易见的,即耗时耗力,无法满足现代计算机世界对随机数的需求。   

  

  因为效率问题,现代计算机软件主要依靠伪随机数。最早的伪随机数发生器是由20世纪最重要的数学家之一冯诺依曼创造的。通过一定的随机数种子,用一定的算法生成伪随机数序列。目前主流的计算机编程语言,默认使用1997年发明的Mason旋转算法作为产生伪随机数的方法。   

  

  伪随机数最大的缺陷就是只要种子不变,生成的伪随机数序列就不会变。换句话说,只要能拿到种子,就能破解随机数。   

  

  计算机产生伪随机数的过程或多或少与这台计算机的物理状态或运行状态有关。也就是说,同样的随机数算法,不同的计算机,或者同一台计算机在不同的时间,产生不同的随机数。   

  

  然而,尽管这种传统的计算机伪随机数生成方法足够安全,但它并不适合区块链。区块链是一个分布式系统。同一个DApp运行在不同的节点上,采用的随机数必须一致,这样每个节点才能验证。因此,DApp的随机数源不能由运行这个DApp的计算机自动生成,因为在这种情况下,不同节点计算机的运行结果会有所不同。   

  

  那么,区块链上的DApp随机数从何而来?有三种主要方法:   

  

  第一种方法是通过可信的第三方提供随机数。例如,random.org,一个致力于提供随机数的网站,可以通过独立于区块链的Oraclize预言机在以太坊区块链上为DApp获得随机数。当然,这种依靠可信赖的第三方的方法违背了区块链的分权精神。   

  

  第二种方法是不同的参与者一起产生随机数。例如,区块链以太坊上的冉道,任何人都可以提交一个号码。RANDAO使用所有提交的数字集作为种子来生成随机数。其他DApp可以付费检索RANDAO生成的随机数,这些费用将奖励给那些提交数字的用户。因为以太坊的去中心化,你不知道别人提交的是什么数字,所以破解燃道的随机数种子非常困难。   

  

  第三种方法是收集关于区块链的信息作为种子。这也是目前大多数DApp采用的随机数生成方法。缺点是随机数的种子“几乎”是透明的。以本文开头提到的EOSPlay为例。这个游戏的随机数是用未来某个区块的ID(哈希值)作为随机数的种子。   

  

  那么,黑客是如何实现攻击的呢?根据区块链一家保安公司“慢雾科技”的分析,可以使用以下方法:   

  

  1.黑客租用了大量的CPU为他们自己和项目方;2.黑客发起大量延迟交易;3.由于以上两个原因,抬高CPU价格,导致其他用户CPU不足;4.因为CPU不足,其他用户很难发送事务,黑客可以用自己的事务来填块;5.根据预先构造的交易内容,黑客可以成功预测块哈希。   

  

  也就是说,虽然哈希算法是不可逆的,但黑客可以通过控制输入来控制输出:控制块中的交易内容,从而控制块信息,进而控制块的哈希值,最终达到预测彩票结果的目的。   

  

  最后,我们总结一下:   

  

  随机数可以分为真随机数和伪随机数。真随机数只存在于物理世界,一般需要通过物理手段获得。为了效率,计算机主要使用伪随机数。然而,由于区块链的分布特性,传统的足够安全的计算机伪随机数生成方法并不适用。大多数dapp使用来自区块链的信息作为伪随机数的种子,但是设计足够安全的伪随机数非常困难,这就是为什么许多dapp经常受到随机数的攻击。   

  

  ―结束――结束   

相关文章