写点什么

FISCO BCOS 中交易的一生

  • 2019-11-18
  • 本文字数:1400 字

    阅读完需:约 5 分钟

FISCO BCOS中交易的一生

交易——区块链系统的核心,负责记录区块链上发生的一切。区块链引入智能合约后,交易便超脱『价值转移』的原始定义,其更加精准的定义应该是区块链中一次事务的数字记录。无论大小事务,都需要交易的参与。


交易的一生,贯穿下图所示的各个阶段。本文将梳理交易的整个流转过程,一窥 FISCO BCOS 交易完整生命周期。


交易生成

用户的请求给到客户端后,客户端会构建出一笔有效交易,交易中包括以下关键信息:


发送地址:即用户自己的账户,用于表明交易来自何处。


接收地址:FISCO BCOS 中的交易分为两类,一类是部署合约的交易,一类是调用合约的交易。前者,由于交易并没有特定的接收对象,因此规定这类交易的接收地址固定为 0x0;后者,则需要将交易的接收地址置为链上合约的地址。


交易相关的数据:一笔交易往往需要一些用户提供的输入来执行用户期望的操作,这些输入会以二进制的形式被编码到交易中。


交易签名:为了表明交易确实是由自己发送,用户会向 SDK 提供私钥来让客户端对交易进行签名,其中私钥和用户账户是一一对应的关系。


之后,区块链客户端会再向交易填充一些必要的字段,如用于防交易重放的交易 ID 及 blockLimit。


交易的具体结构和字段含义可以参考编码协议文档


交易构造完成后,客户端随后便通过 Channel 或 RPC 信道将交易发送给节点。


交易池

区块链交易被发送到节点后,节点会通过验证交易签名的方式来验证一笔交易是否合法。若一笔交易合法,则节点会进一步检查该交易是否重复出现过,若从未出现过,则将交易加入交易池缓存起来。若交易不合法或交易重复出现,则将直接丢弃交易。


交易广播

节点在收到交易后,除了将交易缓存在交易池外,节点还会将交易广播至该节点已知的其他节点。


为了能让交易尽可能到达所有节点,其他收到广播过来的交易节点,也会根据一些精巧的策略选择一些节点,将交易再一次进行广播,比如:对于从其他节点转发过来的交易,节点只会随机选择 25%的节点再次广播,因为这种情况一般意味着交易已经开始在网络中被节点接力传递,缩减广播的规模有助于避免因网络中冗余的交易太多而出现的广播风暴问题。

交易打包

为了提高交易处理效率,同时也为了确定交易之后的执行顺序保证事务性,当交易池中有交易时,Sealer 线程负责从交易池中按照先进先出的顺序取出一定数量的交易,组装成待共识区块,随后待共识区块会被发往各个节点进行处理。


交易执行

节点在收到区块后,会调用区块验证器把交易从区块中逐一拿出来执行。如果是预编译合约代码,验证器中的执行引擎会直接调用相应的 C++功能,否则执行引擎就会把交易交给 EVM(以太坊虚拟机)执行。


交易可能会执行成功,也可能因为逻辑错误或 Gas 不足等原因执行失败。交易执行的结果和状态会封装在交易回执中返回。


交易共识

区块链要求节点间就区块的执行结果达成一致才能出块。FISCO BCOS 中一般采用 PBFT 算法保证整个系统的一致性,其大概流程是:各个节点先独立执行相同的区块,随后节点间交换各自的执行结果,如果发现超过 2/3 的节点都得出了相同的执行结果,那说明这个区块在大多数节点上取得了一致,节点便会开始出块。

交易落盘

在共识出块后,节点需要将区块中的交易及执行结果写入硬盘永久保存,并更新区块高度与区块哈希的映射表等内容,然后节点会从交易池中剔除已落盘的交易,以开始新一轮的出块流程。用户可以通过交易哈希等信息,在链上的历史数据中查询自己感兴趣的交易数据及回执信息。


本文转载自 FISCO BCOS 开源社区


2019-11-18 21:421458

评论

发布
暂无评论
  • 着眼今生:揭秘区块链技术的发展现状

    这一讲,我们一起关注区块链技术的发展现状。

    2021-07-23

  • 基于业务和平台理解数字营销概念

    数字营销产业链上最核心的角色就是就是受众人群,即浏览广告的用户,之所以称为受众人群,通常会把用户按照画像特点基于标签进行人群分类,数字营销的基本就是广告主把营销内容传递到潜在的消费者,并触发用户交易动作。

    2021-11-14

  • 人工智能新范式,创新生产力崛起

    在人工智能的漫长历程中,我们见证了诸多伟大的里程碑,而当下,我们正站在一个新的历史节点。从CHATGPT到生成式AI(Generative AI),人工智能正在经历一场前所未有的革命。

    2023-09-07

  • DeFi:“三无模式”开辟金融新蓝海

    DeFi的意义不仅在于业务模式创新,站在社会价值的角度,DeFi的积极意义还在于金融普惠性和透明度的提升。而除此之外,DeFi还正在面向全球用户,创造一个无需准入、规则透明、规模极具想象力的金融统一大市场。

    2022-09-01

  • 国家发改委:利用区块链等新技术开展绿色电力交易试点

    据国家发改委官网消息,国家发改委、国家能源局近日正式复函国家电网公司、南方电网公司,推动开展绿色电力交易试点工作。复函的“技术可实现”分析部分,提及利用区块链等新技术。

    2021-09-07

  • 2021 年 7 月券商 App 行情刷新及交易体验评测报告

    最新券商APP评测报告出炉

    2021-08-12

  • 自适应熔断原理分析与源码解读

    熔断机制(Circuit Breaker)指的是在股票市场的交易时间中,当价格的波动幅度达到某一个限定的目标(熔断点)时,对其暂停交易一段时间的机制。此机制如同保险丝在电流过大时候熔断,故而得名。

    2022-09-07

  • 共识(下):区块链领域的两类常用算法

    这一讲,我将为你梳理区块链中常用到的共识算法。

    2021-08-06

  • 区块链 + 数字人民币:怎样理解数字人民币体系架构?

    而伴随着数字人民币的发展,总有声音将其和区块链技术联系起来。

    2021-08-16

  • 在 7 月 4 日,PoseiSwap 治理通证 $POSE 上线了 BNB Chain 上的头部

    在 7 月 4 日,PoseiSwap 治理通证 $POSE 上线了 BNB Chain 上的头部 DEX PancakeSwap(POSE/ZBC 交易对),在 $POSE 开盘交易的 10 分钟内,其最高涨幅达到了 2169.22%,所有的早期投资者基本都从中获得了不菲的收益,进一步引发市场的高度关注。

    2023-07-05

  • ipfs 矿机是什么?ipfs 矿机挖出的币能交易吗?

    Filecoin主网上线快一年的时间,热度一直持续不下,引来币圈、链圈的投资者们关注入场,其中就有一部分小白投资者对IPFS挖矿的不太了解,所以今天就来聊一下IPFS挖矿:ipfs矿机是什么?ipfs矿机挖出的币能交易吗?

    2021-08-31

  • 网络:先有去中心化还是先有点对点?

    研究去中心化和点对点的关系可以让你更深刻地理解区块链网络。

    2021-08-02

  • 场外 OTC 交易系统 APP 开发(案例)

    场外OTC交易系统APP开发,张森:I85薇2946电OIIO,场外OTC交易系统源码开发,场外OTC交易APP系统开发简介,场外OTC交易软件系统开发简介,场外OTC交易软件系统开发案例,场外OTC交易系统开发介绍,场外OTC交易系统软件开发搭建,区块练将有助于确保数据的安全

    2021-10-20

  • 存储:区块链的存储设计有定式吗?

    这一讲我会带你深入单个区块链节点,让你了解区块链存储是如何设计的。

    2021-07-28

  • OpenSea 交易平台开发 NFT 系统部署技术

    NFT交易平台OpenSea市场上的交易是可以实现智能交易的控制,这意味着是在去中心化平台上进行的交易。而是通过保证公平交易来促进卖方获得这些报酬。OpenSea在双方之间进行交易。尽管如此平台交易仍没有在市场中以2.5%的价格与每个市场的竞争者达成交易。Open

    2023-04-07

  • 数字货币交易软件系统开发介绍(搭建)

    数字货币交易软件系统开发介绍,张森:I85薇2946电OIIO,数字货币交易系统软件开发简介,数字货币交易APP系统开发介绍,数字货币交易系统软件开发价格,数字货币交易系统软件开发案例,数字货币交易APP系统开发,数字货币交易系统开发方案,任何数据存入到这

    2021-10-20

  • 茶酒交易小程序开发难吗??

      茶酒交易系统开发介绍,找广州【裴经理:I35薇電35O7同号9592】,茶酒交易软件开发,茶酒交易APP开发,茶酒交易小程序开发,茶酒交易公众号开发,茶酒交易模式开发,茶酒交易源码搭建,茶酒交易平台开发,茶酒交易系统前景怎么样,茶酒交易系统开发需要多

    2021-08-30

  • C2C 交易软件系统开发(源码)

    C2C交易软件系统开发,张森:I85薇2946电OIIO,C2C交易系统软件开发,C2C交易系统软件开发资料,C2C交易软件系统开发介绍,C2C交易系统软件开发搭建,C2C交易系统软件开发案例,C2C交易系统开发搭建,随着短视频的强势崛起,越来越多的传统企业把目光瞄向了这

    2021-10-19

发现更多内容

困扰程序员的7个噩梦,只要遇上一个,都是崩溃的瞬间

爱好编程进阶

Java 程序员 后端开发

架构实战营:毕业项目《电商秒杀系统》

刘璐

一、什么是云原生安全

穿过生命散发芬芳

云原生安全 5月月更

ArrayList源码分析-初始化

zarmnosaj

5月月更

首届波卡黑客松项目「Manta Network」的进击之路

One Block Community

区块链 隐私安全 黑客马拉松 波卡生态

【LeetCode】不含重复字符的最长子字符串Java题解

Albert

LeetCode 5月月更

C++最佳实践 | 3. 安全性

俞凡

c++ 最佳实践

全靠这份阿里大厂Java面试真题手册,让我成功拿下12家大厂offer

爱好编程进阶

Java 程序员 后端开发

模块1-作业

Fan

架构实战营

到了2020年,技术水平到底需要达到怎样的程度才能成为顶级的阿里P8架构师

爱好编程进阶

Java 程序员 后端开发

14岁懂社会- 《歧视也没什么错》读书笔记 - 丁点思考的车轱辘书

懒时小窝

读书笔记 14岁懂社会

MP4封装格式

Loken

音视频 5月月更

Cocos Creator学习のTiledMap

空城机

Cocos 5月月更

利用Java反射实现两个具有相同属性bean赋值

爱好编程进阶

程序员 后端开发

AI简报-图像质量评价指标-LPIPS

AIWeker

人工智能 深度学习 5月月更

SpringBoot之:SpringBoot中使用HATEOAS

程序那些事

Java Spring Boot 程序那些事 5月月更

C++最佳实践 | 2. 代码风格

俞凡

c++ 最佳实践

《原则》读书笔记 - 又臭又长

懒时小窝

读书笔记

如何保证 Redis 高可用和高并发(主从+哨兵+集群)

Ayue、

redis sentinel Redis 核心技术与实战

架构实战营 - 第 6 期 模块五课后作业

乐邦

「架构实战营」

模块1作业回答

Geek_701557

架构实战营:毕业总结

刘璐

刚出炉热腾腾的定时任务可视化管理系统

爱好编程进阶

Java 程序员 后端开发

C语言_链表总结

DS小龙哥

5月月更

是能力更是文化,谈谈IT系统的安全发布

Samson

技术管理 SRE 系统稳定性 安全生产 5月月更

LockSupport与Condition

急需上岸的小谢

5月月更

全链路压测(十二):生产压测必不可少的环节

老张

性能测试 全链路压测 稳定性保障

在职场,光有技术是不行的,18年老程序员职场宝贵经验分享

爱好编程进阶

Java 程序员 后端开发

去中心化云存储技术 | CESS 的多层网络架构详解

One Block Community

区块链 去中心化存储 CESS 波卡生态

前端【js】学习JavaScrip心得

恒山其若陋兮

5月月更

Laxcus分布式操作系统三代UI演进之路

LAXCUS分布式操作系统

分布式计算 操作系统 分布式存储 并行计算 GUI设计

FISCO BCOS中交易的一生_开源_李陈希_InfoQ精选文章