写点什么

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:421333

评论

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

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

    2021-09-07

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

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

    2021-10-20

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

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

    2021-08-06

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

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

    2021-08-02

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

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

    2021-07-28

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

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

    2021-10-20

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

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

    2022-09-07

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

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

    2021-08-31

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

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

    2021-10-19

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

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

    2023-07-05

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

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

    2021-08-16

  • 着眼今生:揭秘区块链技术的发展现状

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

    2021-07-23

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

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

    2021-11-14

  • 现货合约跟单 API 对接交易所系统开发实现技术方案 / 源码部署

    什么是合约交易?  1、合约交易是指买卖双方对约定未来某个时间按指定价格接收一定数量的某种资产的协议进行交易。The buying and selling objects of contract trading are standardized contracts formulated by the exchange,which specifies standardi

    2023-10-31

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

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

    2023-07-05

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

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

    2023-09-07

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

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

    2022-09-01

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

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

    2023-04-07

发现更多内容

数据,流通在没有船的港口

白洞计划

花费近一年时间整理的Android核心知识清单,面试篇

欢喜学安卓

android 程序员 面试 移动开发

iOS底层面试题(上篇)

程序员 面试

云图说|ROMA演进史:一个ROMA与应用之间不得不说的故事

华为云开发者联盟

华为云 应用 ROMA 云图说 应用使能

三十岁,像培养孩子一样培养自己。

南冥

2021 挚物·AIoT产业领袖峰会召开,EMQ 映云科技喜获双料荣誉

EMQ映云科技

百度 华为 工业互联网 AIOT 边云协同

《MySQL是怎样运行的》读后思考

MySQL

阿里大佬的「算法界Offer收割机」火爆Github,一夜获上万star

Java 编程 程序员 架构师 计算机

灵活运用分布式锁解决数据重复插入问题

vivo互联网技术

分布式锁 服务器 并发

如何包容他人的多样性

escray

学习 极客时间 朱赟的技术管理课 7月日更

生产上数据库死锁,是该程序员祭天了

skow

Java MySQL 面试

架构之:REST和HATEOAS

程序那些事

架构 系统架构 Rest 软件架构

HarmonyOS走进西安电子科技大学国际双创周

科技汇

《全国移动App第二季度安全研究报告》

InfoQ_11eaedef67e9

网络安全 移动安全 个人信息安全 APP安全

英特尔陈伟:AIoT时代的新思维

E科讯

异常是怎么被处理的?这题的答案不在源码里面。

why技术

面试 JVM 字节码

聊聊数据仓库建设

水滴

数据仓库 数仓 数仓架构 主数据管理 标签体系

SpringBoot中时间格式化的5种方法!

王磊

spring springboot

队列Queue:任务间的消息读写,安排起来~

华为云开发者联盟

鸿蒙 数据结构 队列 Queue 消息

教你如何将二进制文件导入到数据库

华为云开发者联盟

数据库 数据 二进制 GaussDB(DWS) 二进制文件

Optional 的使用会导致性能下降吗

小技术君

性能优化 Optional

Linux安装与常用命令

IT视界

Linux linux命令 Linux安装

DataPipeline正式成为信创工委会会员单位!致力于为世界级用户提供更优质产品和服务

DataPipeline数见科技

大数据 数据融合 数据管理

Python开发篇——构建虚拟Python开发环境(Conda+Poetry)

吴脑的键客

Python Anaconda

语言特性实战(一)

南冥

架构实战营模块三作业

maybe

一萌妹子的面试经历,美团四面三小时,成功拿到Java岗offer

白亦杨

Java 编程 程序员 架构师 计算机

应聘高级Android工程师历程感言,你不懂还不学?

欢喜学安卓

android 程序员 面试 移动开发

Axie区块链宠物游戏系统开发搭建

薇電13242772558

区块链

直接裂开!京东二面被问SpringBoot整合MongoDB,我不会啊

Java架构没有996

Java mongodb 程序员 后端 JAVA开发

微软亚研院:如何看待计算机视觉未来的走向?

百度开发者中心

最佳实践 方法论 计算机视觉 语言 & 开发 文化 & 方法

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