如何自己创造区块链,如何开发自己的区块链

首页 > 经验 > 作者:YD1662024-03-18 00:19:03

如何自己创造区块链,如何开发自己的区块链(25)

通过上面的代码和注释可以对区块链有直观的了解,接下来我们看看区块是怎么挖出来的。

理解工作量证明

新的区块依赖工作量证明算法(PoW)来构造。PoW 的目标是找出一个符合特定条件的数字,这个数字很难计算出来,但容易验证。这就是工作量证明的核心思想。

为了方便理解,举个例子:

假设一个整数 x 乘以另一个整数 y 的积的 Hash 值必须以 0 结尾,即 hash(x * y) = ac23dc...0。设变量 x = 5,求 y 的值?

用 Python 实现如下:

如何自己创造区块链,如何开发自己的区块链(26)

结果是:y = 21,因为:

hash(5 * 21) = 1253e9373e...5e3600155e860

在比特币中,使用称为 Hashcash 的工作量证明算法,它和上面的问题很类似,矿工们为了争夺创建区块的权利而争相计算结果。

通常,计算难度与目标字符串需要满足的特定字符的数量成正比,矿工算出结果后,会获得比特币奖励。当然,在网络上非常容易验证这个结果。

实现工作量证明

让我们来实现一个相似 PoW 算法,规则是:寻找一个数 p,使得它与前一个区块的 proof 拼接成的字符串的 Hash 值以 4 个零开头。

如何自己创造区块链,如何开发自己的区块链(27)

衡量算法复杂度的办法是修改零开头的个数。使用 4 个零来用于演示,你会发现多一个零都会大大增加计算出结果所需的时间。

现在 Blockchain 类基本已经完成了,接下来使用 HTTP requests 来进行交互。

Blockchain 作为 API 接口

我们将使用 Python Flask 框架,这是一个轻量 Web 应用框架,它方便将网络请求映射到 Python 函数,现在我们来让 Blockchain 运行在 Flask Web 上。

我们将创建三个接口:

创建节点

我们的“Flask 服务器”将扮演区块链网络中的一个节点,我们先添加一些框架代码:

如何自己创造区块链,如何开发自己的区块链(28)

上一页34567下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.