eos源码赏析(二十二):EOS交易状态何时才是不可逆的

作为本文的读者,可能大部分都进行过eos代币的转账操作。我们平时的交易过程中,能体验到【立马到账】的感觉,这也是eos被越来越多的人认可的重要原因。然而在区块链系统中一笔交易是否完成,有一个很重要的因素就是该笔交易在链上是否是可逆的。今天我们就来谈谈一笔交易在什么情况下才是不可逆的。

在行文之前首先感谢大佬Raymond荆凯给予的帮助,同时建议了解下交易的基础知识,荆凯大佬曾经写了一篇文:

【一五一十】EOS转账背后,发生了什么: EOS交易的状态

在文中提到有个pending的倒计时,同时币乎的作者阿华区块链写过的几篇文章,特别分析了一下当前区块高度与不可逆区块高度之间的关系,得到的结论是,大约不可逆区块与当前区块高度相差在334个区块左右,换算成时间的话,大致是2.7分钟左右。那么这个pending倒计时是什么,和区块的不可逆之间有什么关系呢。

我们都知道在eosio中使用了DPoS共识机制而非类比特币的Pow共识机制。DPoS机制的基本逻辑是一笔交易打包在区块之后,需要21个超级节点中的2/3以上的节点进行签名确认,才认为是不可逆的。而节点生产区块的

速度为0.5秒一个区块,每个节点轮流出块的过程中在6秒的时间内生产12个区块。为什么设置6秒生产12个区块,BM在一些回答中提到:

6 seconds was chosen based upon the "maximum downtime" if a producer
goes off line. This matches Steem & BitShares where a single missed
block creates 6 seconds without any confirmation.

简单的翻译下:之所以选择6秒钟是和节点离线的最大时长有关的。

那么我们来设想一笔交易执行节点A将交易信息打包至区块中,此时节点A已经确认,在执行完成之后还需要至少2/3以上的节点去确认。在eosio设计之初,节点确认只需要进行一轮即可,但在eos主网上线之前V神提出了不同的意见并给出了相关的建议,针对原有设计的安全性进行举例分析,感兴趣的同学可以关注下这个issue:

https://github.com/EOSIO/eos/issues/2718

V神的质疑:


v.png

BM的回答:


b.png

注:本来标题想搞笑一点这样写的:震惊!V神和BM竟如此互怼。

最终,在eosio中,DPoS的节点确认修改为两轮,而V神提到的这篇论文,笔者还在研读,如有感兴趣的也可以一起交流。

我们接着来看。当一笔交易完成打包之后,意味着当前节点以确认,还需要至少21个超级节点中的2/3以上确认,而加上需要两轮确认,因此我们可以做出如下计算:


g.png

此处也基本可验证上面荆凯和阿华提到的当前区块高度和不可逆区块高度之间的差值,最大为336。我们在查询主网的信息也可以看到类似的情况,两者之间的差值为335:


c.png

而根据一个区块生产的时间为0.5秒计算,从交易执行结束到变为不可逆状态所需要的时间应为168s。当然由于网络的原因,这个不可逆状态或多或少的会产生一些时间上的差异,那么我们是否可以从代码中找到蛛丝马迹来判断何时是不可逆的么。

在前面的文章我们分析出块流程的时候有这个步骤:当前区块高度小于最后一个不可逆区块高度的时候,这个交易便是不可逆的了,来看:

1const auto& gpo = db.get<global_property_object>();
2         if( gpo.proposed_schedule_block_num.valid() && // if there is a proposed schedule that was proposed in a block ...
3             ( *gpo.proposed_schedule_block_num <= pending->_pending_block_state->dpos_irreversible_blocknum ) && // ... that has now become irreversible ...
4             pending->_pending_block_state->pending_schedule.producers.size() == 0 && // ... and there is room for a new pending schedule ...
5             !was_pending_promoted // ... and not just because it was promoted to active at the start of this block, then:
6         )

代码中也对区块的几种状态给出了解释即:当前节点生产区块的高度小于最后一个不可逆区块的高度时便为不可逆的。

本文从各位大佬已经积累的经验出发,从代码及平时测试的经验来分析DPoS机制中一笔交易最后是如何实现不可逆的过程。当然理解可能 也有偏差,还请各位多多指教。
如果你觉得我的文章对你有一定的帮助,请点击文章末尾的喜欢该作者。

如果你对eos开发感兴趣,欢迎关注本公众号,一起学习eos开发。

20180910230008245.jpg

微信公众号
有任何疑问或者指教请添加本人个人微信,当然有对eos开发感兴趣或者金庸粉的也可以添加一起交流,备注eos开发或金庸。


2.jpg

个人微信号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 在那个夏天,我们逐渐熟悉,逐渐默契,两颗心也逐渐的靠在一起。一切都是那么的自然,那么的优雅,又好像顺理成章,又...
    糊涂的蚂蚁阅读 192评论 0 0
  • 本想,再一次下车三五分钟 在长沙站台留下自己 奔五仍惑的 一双脚印后继续前行 可是,每次,我都只是 匆匆的过客 面...
    碧海青天2017阅读 167评论 0 1
  • 萧炎 萧炎,萧家历史上空前绝后的斗气修炼天才。4岁就开始修炼斗之气,10岁拥有了九段斗之气,11岁突破十段斗...
    九展宏图阅读 1,343评论 0 2
  • 《过路客》这个文集,我写了很多草稿,却都没有发布,有的是写了一半,因事耽误,有的是想写,却千言万语无从下笔,有的是...
    是月阅读 361评论 8 4