风险提示:理性看待区块链,提高风险意识!
如何创建并部署一个区块链项目?
首页 > 币界资讯 > 区块链知识 2020-10-12 14:35:27
币界网报道:

想要了解一样事物,将其拆开重新组装一遍是最快的方式,在动手操作中了解其是如何运作的,了解每个组件的具体作用。本文主要写如何搭建一个区块链实例,源码在这里,是由Daniel van Flymen开发的。详细教程在这里,本文只是快速搭建与运行。

环境

首先你需要一个基本的Linux环境,我仅在WSL Ubuntu上测试过,以下的步骤不保证在其他Linux上兼容但是WSL Ubuntu是一定没问题的。

安装WSL我就不详细写了,网上教程大把,如果配置不来WSL可以参考这篇文章

系统安装好后你还需要一个http工具,用来进行API交互。

Postman官网

依赖

该项目需要python3.6+并依赖Flask、Requests库。如果不知道系统自带的python版本可以使用此命令查看“python -v”,ubuntu自带了python3,所以只需要安装Flask和Requests即可:

pip install Flask==0.12.2 requests==2.18.4Copy

如果没有安装pip:

sudo apt install python3-pipCopy

运行

你可以去github下载源码也可以从我的备份站点下载:

#下载源码curl -O https://down.tstrs.me/blockchain/blockchain.py#运行python3 blockchain.pyCopy

显示如下输出就是运行正常:

但如果出现了这样的错误:

可以使用以下命令修复错误并且重新运行即可:

pip3 install flaskCopy

调试

正常运行的话一个完整的区块链就搭建好了。下面的步骤就是如何使用该区块链了。

挖矿

在postman里请求 http://localhost:5000/mine 来挖矿(GET):

交易

创建一个交易请求,请求 http://localhost:5000/transactions/new (POST):

查看所有区块

使用postman请求http://localhost:5000/chain 可以得到所有区块信息(GET):

共识

到这里我们就已经有一个基本的区块链可以挖矿和接受交易了,但是区块链的系统理应是分布式的,既然是分布式的,那如何使所有的节点链保持一致呢?

首先我们要让它知道与它相邻的节点,每个节点都要保存网络中其他节点的记录。在当一个节点与另一个节点有不同的链时,就会产生冲突,所以就需要制定一个规则:这个网络中最长的链就是最权威的,使用这个规则在网络中的节点之间达成共识。

注册节点

你可以在另一台机器上再运行节点,也可以在当前机器上不同的端口运行两个实例。我用的方法是后者:

#获取另一个脚本该脚本端口5001.当然你也可以自己复制一份,要修改端口只需要修改blockchain.py文件的最后一行“port=”后的数字即可设置端口
curl -O https://down.tstrs.me/blockchain/blockchain1.pypython3 blockchain1.pyCopy

这样我就有两个节点了http://127.0.0.1:5000http://127.0.0.1:5001,注册一个新节点:

使用postman请求 http://127.0.0.1:5001/nodes/request (POST):

{"nodes": ["http://127.0.0.1:5000"]
}Copy

返回的信息如图所示就是添加节点成功了。

同步

然后我在节点0上挖一些新的块,确保链条更长。之后在节点1上调用一致性算法/nodes/resolve (GET):

其中短的链被一致性算法取代。


区块链确实蛮好玩的,不过我似乎发现了一个很大的漏洞啊,既然短的链会被长的链替换,假设有人从比特币的创世区块开始硬分叉,并且离线运行到超过当前高度,再入网岂不是就可以替换掉原有链?不过这个算力是无法想象的,在量子计算机出现之前我认为这类数字货币加密货币都是很安全的。

参考资料

上一篇: IPFS网络是什么?IPFS和filecoin是什么关系?
下一篇: 简单的IPFS私有网络搭建教程
推荐专栏
Boss Wallet Web3 Econom Pass
专注币圈最新资讯
通俗浅显地聊透Web3大事小情
读懂区块链生态与未来,尽在币界网!
热门币种
更多
币种
美元价格
24H涨跌幅
BTC比特币
60,963.61 USDT
¥435,103.38
-2.72%
ETH以太坊
3,368.69 USDT
¥24,042.67
-0.3%
BNB币安币
570.68 USDT
¥4,073.00
-0.28%
USDT泰达币
1.02 USDT
¥7.25
-0.19%
SOL
135.96 USDT
¥970.36
+7.66%
USDC
1.00 USDT
¥7.15
-0.01%
TON
7.59 USDT
¥54.14
+4.55%
XRP瑞波币
0.47720 USDT
¥3.41
+0.48%
DOGE狗狗币
0.12210 USDT
¥0.87140
+2.43%
ADA艾达币
0.39050 USDT
¥2.79
+3.88%
热搜币种
更多
币种
美元价格
24H涨跌幅
比特币
61025.05 USDT
¥443,340.89
-1.5%
Solana
137.42 USDT
¥998.34
-0.75%
Filecoin
4.3458 USDT
¥31.57
-2.12%
Curve
0.2957 USDT
¥2.15
-6.81%
柚子
0.5733 USDT
¥4.16
-0.16%
Terra Classic
8.17E-5 USDT
¥0.00
-1.38%
Shiba Inu
1.721E-5 USDT
¥0.00
-3.8%
Conflux
0.1558 USDT
¥1.13
-1.52%
狗狗币
0.1222 USDT
¥0.89
-3.86%
dYdX
1.3769 USDT
¥10.00
-1.17%
Arweave
25.922 USDT
¥188.32
-9.75%
以太坊
3383 USDT
¥24,577.16
-0.39%
最新快讯
更多
币界网午报|6月27日午间重要动态一览
2024-06-27 12:00:26
已有超89%的BLAST空投被领取,领取地址超25万
2024-06-27 11:54:22
新SwellrswETH池已上线Penpie
2024-06-27 11:34:46
Custodia要求上诉法院指示地区法院撤销对Custodia主账户的拒绝
2024-06-27 11:26:52
Custodia寻求法官撤回授权美联储拒绝其主账户申请的决定
2024-06-27 11:26:52
XT即将上线新一期鲨鱼鳍理财
2024-06-27 11:26:33
WEEX唯客将于7月1日开启第二期Launchpool,投入WXT瓜分37,000ZK
2024-06-27 11:25:57
下载币界网APP