风险提示:理性看待区块链,提高风险意识!
如何创建并部署一个区块链项目?
首页 > 币界资讯 > 区块链知识 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私有网络搭建教程
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥271,294.30
38,011.84 USDT
+0.2%
ETH以太坊
¥14,910.25
2,089.12 USDT
+2.87%
USDT泰达币
¥7.22
1.01 USDT
+0.42%
BNB币安币
¥1,632.68
228.76 USDT
+0.31%
XRP瑞波币
¥4.35
0.60930 USDT
+0.53%
USDC
¥7.14
1.00 USDT
+0.02%
SOLSolana
¥435.82
61.07 USDT
+0.94%
OKBOK币
¥405.21
56.78 USDT
+1.08%
ADA艾达币
¥2.70
0.37900 USDT
-0.52%
DOGE狗狗币
¥0.59500
0.08338 USDT
+2.77%
热搜币种
更多
币种
价格
24H涨跌幅
Terra Classic
¥0.00
0.00011802 USDT
-6.21%
比特股
¥0.05
0.007133 USDT
+22.54%
dYdX
¥21.84
3.0821 USDT
-3.42%
Gala
¥0.18
0.025705 USDT
+3.17%
FTX Token
¥29.53
4.1675 USDT
+5.27%
Yield Guild Games
¥2.70
0.3809 USDT
+1.93%
柚子
¥4.82
0.6806 USDT
+0.44%
比特币
¥269,329.09
38011.84 USDT
+0.2%
Filecoin
¥31.43
4.4361 USDT
+0.56%
奇亚
¥172.28
24.3143 USDT
+2.61%
波场
¥0.73
0.1037 USDT
+0.19%
ZKSwap
¥0.49
0.068963 USDT
+8.21%
最新快讯
更多
比特币矿企Metaversco收购labourSMART
2023-12-01 11:37:00
Arbitrum社区提议延长STIP与BackFund项目的激励分发截止日期至2024年3月
2023-12-01 11:34:26
KineProtocol已上线DYDX/USDT、MEME/USDT、SUSHI/USDT交易对
2023-12-01 11:33:51
KineProtocol已上线DYDX、MEME、SUSHI与USDT交易对
2023-12-01 11:33:51
WioBank与Fuze合作为客户提供虚拟资产交易服务
2023-12-01 11:31:15
“海纳AI”完成数千万元A轮融资,联想创投独家投资
2023-12-01 11:31:01
MystenLabs开放Quest3奖励认领
2023-12-01 11:25:26
下载币界网APP