【区块链】从零开始学基于以太坊的区块链应用开发系列09
通过前两课的内容,我们对区块链的基本概念和设计理念有了比较直观的认识。
不过其中的内容更多是针对通用区块链的,而我们的课程系列主要是基于Ethereum的。因此,有必要针对Ethereum做一些特别的说明,另外对其中的有些不太准确的说法做一些澄清。
首先打开Chrome浏览器,输入以下网址:
https://anders.com/blockchain/block.html
这是我们之前了解过的关于block区块的页面。
在Chrome浏览器中右键单击空白处,选择Inspect。
在右侧切换到Console选项卡,
在空白区域输入0x,然后复制粘贴Hash值,回车,就会得到一个数字。
此前我们提到,在Data区的数据更改后,通过Mine计算让Hash值的首四位重新变成0000,就算是完成了验证。
在更早之前的内容中,我们提到过Ethereum账户的公钥和私钥都是十六进制数。而在Block区块页面的Hash值其实也是十六进制数。
而进行Mine运算的目标并非是一定让首四位变成0000,而是让这个Hash值所对应的数字小于某个特定的数字。
这种计算的过程可以用类似下图的方式来说明:
在上图中,Data对应的是block页面中的Data,而Nonce仍然对应的是Nonce。Output Hash对应的是Has值,而这里多了一个十进制的数字,也就是Hash值所对应的数字。只有当这个数字小于我们所指定的某个数字,比如1000,才算是完成了Mine的过程。
接下来让我们来认识一下SHA256 Hash的数值范围:
是的,你没看错,HASH值的范围从0到1.15乘以10的77次方,一个巨大无比的数字。
而我们花在找到这样一个数字上所用的时间就是区块时间,或者说mine(挖矿)的时间。
在Ethereum网络中,目标的block time 是15秒。
这是什么意思呢?
也就是说如果系统发现mine的所需时间要远超15秒,那么就会将目标数值提高,从而降低计算难度。
为什么这个目标数值要动态调整呢?其实很简单,任一时间,Ethereum中的节点数量(计算设备数量)都在不断的变动,需要动态调整这个目标数值,才能让算力与目标block time相匹配。
为了进一步理解这个概念,让我们在Chrome浏览器中打开一个网址:
https://etherscan.io/chart/blocktime
这个表里面显示的是从2015年开始到现在,Ethereum的目标block time的变化。可以看到,基本稳定在15秒左右。当然,从2017年6月到2017年12月之间,block time有了一个显著的提升(最高在30秒左右)。但是之后很快做了一个调整,让block time重新回归到15秒左右。
好了,耗费了这么多的时间,我们总算是勉强回答了一个问题。那就是为什么区块链的交易等待时间有这么长,在这段时间里究竟发生了些什么。
从下一课开始,我们将进一步了解和Ethereum相关的另一个非常重要的概念,那就是Smart Contract(智能合约),我们下一课再见~
如果在操作中,遇到什么不懂的问题,欢迎到我的论坛去发帖询问,论坛的网址是:http://www.vr910.com/forum.php 返回搜狐,查看更多
责任编辑: