风险提示:理性看待区块链,提高风险意识!
Derek:剖析源码,一文理解比原链
首页 > 币界资讯 > 区块链新闻 2019-01-11 07:35:52
币界网报道:

2018年11月17日上午,“2018比原链全球开发者大会”正式在杭州国际博览中心(G20会馆)开幕,这是杭州第一次由开源组织举办的技术型峰会,也是杭州被誉为区块链之城以来规模最大的一场区块链开发者大赛,100+开发团队历经4个月激烈厮杀,16支团队将在本次大会上展开最终角逐。

在大赛进行过程中,资深程序员,比原社区的开发者Derek作了题为《GO语言公链实战》的分享。这是即将上市的一本图书,它主要讨论了GO语言的使用,而比原链是该书剖析GO语言的一个具体项目。

微信图片_20181117163022_副本

“现在讲区块链的书很多,但真正深入公链的书不多,而从一个技术语言入手,去剖析区块链技术的就更少了。我认为Go语言是区块链未来的趋势,我这本书就是想通过对比原代码的剖析,让更多程序员了解区块链。”Derek说。

以下为Derek演讲,经整理:

大家好,今天主要和大家分享一下关于比原链的技术细节。主要四个方面,第一,比原链的总架构;第二,虚拟机的堆栈实现;第三,区块快速同步和定期同步原理;第四,P2P节点状态机。微信截图_20181117164112

上面是比原链总架构图,比原链官方提供了一个三层架构图,我在这上面细化了一下。第一层是用户交互层,比原链提供两种用户交互工具,包括bytomcli、Bytom-dashboard,我们开发者用得比较多。第二层是接口层,ApiServer服务,主要接收交互层工具的请求和处理请求,并响应请求。第三层是内核层,是比原链的核心,占整体代码54%左右。最主要的两块是交易管理,交易的构建、交易的签名和交易的提交。包括智能合约,它也有这三个过程。智能合约运行在bvm虚拟机,还有Equity语言,今天参赛选手都是用Equity语言做代码编写。还有BUTXO,这是比原链在比特币UTXO上做了一些拓展。

再下一层是钱包层,大家用得比较多,这一块比较简单,就不说了。然后是共识层,目前主流的共识有两种,PoW和PoS,比原链的宗旨是算力即权力,所以他们选择PoW方式去做共识。比原链在PoW做了一个创新,自主研发了Tensority算法,基于AI友好型的矩阵计算hash方式。接下来是数据库,在比原链上面用得比较多,对开发者来说把时间换成空间的一种方式。最主要的数据库有几个,一个是Core,存放所有主链区块信息和交易信息。还有Wallet,钱包数据库等。

下面一层是P2P网络层,P2P大家都知道,当年快播用得特别溜。比原链在该基础上面主要实现几个功能,节点发现,区块同步、交易同步、快速广播,快速广播主要为了挖矿时让交易能够在全网尽快达成共识。1

23说一下虚拟机的运行原理,大家在学校里都学过堆栈,先进先出和先进后出的数据结构。BVM在这里就是先进后出的数据结构。第一步操作,假设堆栈里有两个指令,有两个元素,X和Y。这时候入站的话,将2入站到站中,就是XY和2。当出站操作时,它是先进后出的原理,首先会从栈中推出一个元素,比如说常数2从站点推出来。下面是执行DUP的指令,复制指令,将栈中元素再复制一个元素放入到栈当中。我们可以看到原有的是X和2,然后通过执行到DUP指令之后就变成X,2和2。这是一个虚拟机,我们在虚拟机发布指令,都会涉及指令进站出站的操作,这是堆栈虚拟机。

下面说一下区块,区块早期一般都是定期同步,这种情况下在一个区块链网络上比较缓慢。比原链在上面做了快速同步机制,我们可以看到这两边的区别,它是根据Checkpoints,是比特币最早提出来的,用于检验旧区块是否有分叉。所以比原链在Checkpoints做了快速同步,基于当前节点在Checkpoints高度节点范围内就使用快速同步,不然就是定期同步。快速同步

快速同步的话,从当前节点和已知节点中找到已知最优对等节点进行加密握手链接,加密握手链接之后会向它发送请求,发送请求范围是从当前高度到Checkpoint范围,最大是128个区块,一次请求会请求128个最大。然后它就会验证区块,添加到本地区块链上面,这是快速同步。定期同步,前面流程都是一样,但是到后面因为为了安全问题,每次这个块还没有出来的时候只请求一个区块,再验证,再添加到本地。添加完之后会最后通知对等节点,告诉它最新节点高度和区块hash。节点状态机

节点状态机1下面再简单介绍一下P2P节点状态机,状态机的话,大家应该在学校里都学过,它是一种状态的切换。不知道大家有没有看过一些P2P源码,在比原链里有7种状态的定义。当前节点和对等节点进行连接的时候,对等节点的初始状态是Unknown,经过不同包的发送切换不同的状态。由Unknown一直往下切,整个状态机图表大概是这样的。

这里面包含几个策略,比如说当前节点和对等节点刚开始加密握手连接之后,大家的状态都是Unknown,然后发一些Ping包,对等节点返回一些Pong包,状态节点就会被切换。直到它会将对等节点加入到自己路由表中,就会和对等节点建立一些交易和区块的发送。不光是比原,包括比特币和以太坊,所有币种都是用KAD去实现这种路由表。KAD是一个路由算法,它是基于两个节点的ID进行异货算出来一个逻辑距离。这个距离不是实际物理地址,比如我在中国,我在美国,这也有可能建立连接。并不是说我在中国和杭州建立最近的连接,它是逻辑的距离。

下面说一下今天来的目的,前面都是一些铺垫。今天主要和大家介绍一下,我和我的小伙伴在9月初时,写了一本书,目前的进度是2/3,大约是在明年年初就能出版。《GO语言公链实战》里面的内容是和比特币有点类似,但又比精通比特币内容丰富很多,包括原理上的实现和算法上的实现,都会以比原链底层代码作为铺垫,在上面展示出来。

上一篇: 加密货币泡沫出清,有利于区块链脱离投机行为“绑架”
下一篇: 区块链迫在眉睫的存储问题 迅雷链是这么解决的
推荐专栏
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涨跌幅
比特币
61360.23 USDT
¥445,634.81
-0.39%
Solana
144.02 USDT
¥1,045.96
-3.05%
Curve
0.2882 USDT
¥2.09
-2.83%
Filecoin
4.505 USDT
¥32.72
+1.01%
Beta Finance
0.080146 USDT
¥0.58
-15.96%
柚子
0.5921 USDT
¥4.30
+0.99%
狗狗币
0.1265 USDT
¥0.92
+1.61%
Conflux
0.1667 USDT
¥1.21
-0.48%
Shiba Inu
1.724E-5 USDT
¥0.00
-1.65%
Terra Classic
8.297E-5 USDT
¥0.00
-0.36%
Arweave
26.0659 USDT
¥189.31
-3.8%
dYdX
1.4174 USDT
¥10.29
+0.27%
最新快讯
更多
Nostra首席执行官在代币空投11天后辞职
2024-06-28 21:09:29
币界网最新行情晚报:UNI价格达9.321美元/枚,日内跌幅-3.04%
2024-06-28 21:06:05
币界网最新行情晚报:SOL索拉纳价格达143.7美元/枚,日内跌幅-3.06%
2024-06-28 21:04:51
币界网晚报|6月28日晚间重要动态一览
2024-06-28 21:03:13
加密ETP发行商Valour推出CoreETP和HederaETP
2024-06-28 20:59:56
PufferFinance:EIGENStakedrop第二阶段已面向pufETH质押者开放
2024-06-28 20:57:15
币界网最新行情晚报:ORDI价格达38.248美元/枚,日内跌幅-3.02%
2024-06-28 20:53:27
下载币界网APP