区块链的核心部分就是挖矿算法,接来下我们就以比特币的算法为例。它被称为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),而该模式下则不需要太多的计算能力,这就意味着只需要相对较少的电力,并且该模式也将扩展到更多的用户。
以上就是区块链的基本原理!
来源:币安
声明:文章仅代表作者个人观点意见,不代表认知区块链观点和立场,所有内容及观点仅供参考,不构成投资建议。投资者应自行决策与交易,对投资者交易形成的直接间接损失作者及认知区块链将不承担任何责任。图文转载于网络的,版权归原作者所有,仅供学习参考之用。如有异议,请联系本站删除。