区块链的核心部分就是挖矿算法,接来下我们就以比特币的算法为例。它被称为SHA-256,也就是“256位元安全散列算法”的缩写,它可接受任何内容的输入,包括文本、数位,或者任何长度的文档。而输出结果称为“杂凑”,且每次长度都相同为256位机器代码。
同样的输入将得到同样的输出,并不会随机。但如果你对输入进行了微小的改变,则输出会完全不同。
而且该演算法也被称为单向函数,这就意味着你不能根据输出来计算出输入。你只能对输入进行猜测,然而你猜对的几率是2^256分之一,这几乎是不可能的,换句话该演算法是安全的。
现在我们已经知道什么是演算法,那接下来我们就用一个简单的交易示例来演示区块链是如何运行的。
现有Alice和Bob两个人,且我们知道他们俩的比特币余额。我们假设Alice欠Bob2个比特币。
Alice如果想要向Bob发送那两枚比特币,则Alice需要向网路中的矿工们广播她想要进行交易的消息。
在广播中,Alice将Bob的公共地址、她想要发送的比特币数量,以及数位签章和她公开金钥提供给矿工们。该签名是通过Alice的私密金钥生成的,由此矿工们就可以验证那些比特币是属于Alice的,且她也想要进行交易。
一旦矿工确定该交易是有效的,则他们就会将该交易与其他交易一起纳入到区块中,并尝试对该区块进行挖矿。且区块中的这一输入是通过SHA-256演算法来完成的。而输出则需要从具体的0's数值开始,以便才能被认为有效。具体0's的数值则将根据所谓的“difficulty(难度)”来决定,而“difficulty”也将根据网路中的计算能力进行更改。
想要根据最开始要求的0's数值来生成输出杂凑值,矿工则需要在区块中添加一个“noncee number(乱数)”。由于输入的很小改变会完全更改输出,所以矿工要不断随机nonces,直到找到一个有效的输出杂凑值为止。
如果该区块已经被挖掘,则该矿工就会向其他矿工们广播该新的已被挖掘的区块。之后矿工们就开始检查该区块以确保是有效的,之后再将该区块添加到他们的区块链副本中,至此交易就完成了。并且矿工也需要在已完成的区块中纳入前一区块的输出杂凑值,以此才能使得所有的区块都相互连接,而区块相互连结的线性链也就被命名为区块链。因为系统是基于信任工作的,所以这一过程尤为重要。
每一位矿工的电脑上都有他自己的区块链副本,且所有人都相信投入计算工作最多的区块链,就将成为最长的区块链。如果一位元矿工更改了之前区块中交易,则该区块的输出杂凑值也将改变,而这就导致了其后的所有杂凑值都会改变(因为区块是通过杂凑值连结的)。该矿工就不得不重新开始所有的工作,以便于其他人接收到正确的区块链。因此,如果一位矿工想要作弊,则他的算力就必须要超过网路计算能力的50%,这几乎是不可能的。而网路中类似的攻击也就被称为51%攻击。
为了生成区块而使电脑运行的模式被称为工作量证明(PoW)。也存在其他模式列入权益证明(PoS),而该模式下则不需要太多的计算能力,这就意味着只需要相对较少的电力,并且该模式也将扩展到更多的用户。
以上就是区块链的基本原理!
本文链接地址:https://www.wwsww.cn/qkl/1244.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。