阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

评论

发布
暂无评论
  • C2C 交易软件系统开发(源码)

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

    2021-10-19

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

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

    2021-07-28

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

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

    2021-10-20

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

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

    2021-07-23

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

    导言

    2022-01-13

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

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

    2021-11-14

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

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

    2022-09-01

  • 《精通比特币》学习笔记(第六章)

    1、比特币交易的本质是数据结构,这些数据结构中含有比特币交易参与者价值转移的相关信息。

    2021-03-10

  • 区块链量化交易所开发|搭建量化交易系统

    (1)被动型算法交易,也称结构型算法交易。该交易算法除利用历史数据估计交易模型的关键参数外,不会根据市场的状况主动选择交易时机和交易的数量,而是按照一个既定的交易方针进行交易。

    2021-07-19

  • 区块链技术智能合约有哪些实际的应用场景

    智能合约是用于信息传递、验证或合同执行的计算机协议。通过智能合约,可以在没有第三方的情况下进行可追踪且不可逆转的交易。

    2020-09-17

  • 回顾前世:解读区块链技术发展三阶段

    回顾历史可以帮我们理清前因后果,深刻认识技术的来龙去脉。

    2021-07-21

  • Okaleido 或杀出 NFT 重围,你看好它吗?

    如果你持有一枚以太坊上的NFT,那么你会优先考虑到哪里交易?绝大多数投资者都会率先想到Opnesea。Opensea本身汇聚了以太坊上绝大多数用户,它的历史交易量占据了所有NFT交易笔数的80%以上,所以绝大多数人都会首选Opensea(当然,相当一部分NFT在Opensea都难

    2022-07-18

  • chianmaker 交易初探

    本文基于chainmaker v2.3.1版本分析,主要使用TBFT的共识算法和Noraml Tx Pool的交易池类型,分享chainmaker交易的整个生命周期及在各阶段流转过程中不同模块的主要工作。

    2023-02-28

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

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

    2021-08-30

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

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

    2021-08-31

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

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

    2021-08-16

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

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

    2021-10-20

  • 波场链智能合约 DAPP 系统开发技术

    智能合约是一种特殊协议,旨在提供、验证及执行合约。具体来说,智能合约是区块链被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。

    2021-01-06

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

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

    2021-08-06

发现更多内容

面试官:谈谈你对JVM内存结构的理解

做梦都在改BUG

Java JVM

Svelte框架结合SpreadJS实现表格协同文档

葡萄城技术团队

再获权威认证!秒云顺利通过ISO20000、27001双系统认证

MIAOYUN

ISO9001 ISO20000 ISO27001

关于使用消息队列今天被面试官问倒了

做梦都在改BUG

秒云加入金兰组织,携手共建信创新生态

MIAOYUN

信创 信创云 信创产业 金兰组织

大数据培训零基础的方法有哪些

小谷哥

新年伊始,谈谈开源软件供应链安全的新趋势

安势信息

开源软件 清源CleanSource SCA 安势信息 ChatGPT 开源软件供应链安全

啊啊啊!小程序小游戏也可以在自己的App上架❗️❗️

没有用户名丶

微信小程序 小程序游戏

安势信息入选 SegmentFault思否「2022 中国新锐技术先锋企业」

安势信息

软件成分分析 清源CleanSource SCA 安势信息 技术先锋 SegmentFault

Java培训有哪些不同的学习方法

小谷哥

大数据培训学习选择哪个机构好

小谷哥

SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

做梦都在改BUG

Java Spring Boot 接口

嵌入式ARM设计编程(一) 简单数据搬移

timerring

arm

特定领域知识图谱融合方案:文本匹配算法之预训练Simbert、ERNIE-Gram单塔模型等诸多模型【三】

汀丶人工智能

人工智能 自然语言处理 知识图谱 2月月更 2月日更

Sentinel 是如何实现分布式限流的?

做梦都在改BUG

sentinel 分布式限流

模块6如何设计微服务架构

程序员小张

热点面试题: Array中有哪些非破坏性方法?

控心つcrazy

JavaScript array 前端面试题 Javascript框架 超全前端面试题

实战分享,电路板设计后这样干,一个人也能轻松搞定项目!

华秋PCB

PCB PCB打样 PCB设计

fabric.js开发图片编辑器的细节实现

秦少卫

架构 编辑器 Fabric.js 前端编辑器

软件测试/测试开发 | Web 控件定位与常见操作

测试人

软件测试 自动化测试 测试开发 Web自动化测试

只用了半个Redisson的Semaphore实现并发控制

做梦都在改BUG

Java 并发控制 Semaphore redisson

上架的时候怎么向某个版本添加构建版本

雪奈椰子

apple ios开发

TDengine 3.0.2.5 查询再优化!揭秘索引文件的工作原理

TDengine

数据库 tdengine 时序数据库

宋红康2023版Java视频发布

小谷哥

前端培训学习方法有哪些

小谷哥

由浅入深,聊聊OkHttp的那些事(很长,很细节)

Petterp

android okhttp

安擎董事长俞跃渊:打造智能算力,创新产业价值

科技热闻

探讨丨传统行业必须数字化转型吗?

优秀

数字化转型

IoTLink 版本更新 v1.5.2

山东云则信息科技

物联网

软件测试/测试开发 | web 控件的交互进阶

测试人

软件测试 自动化测试 测试开发 Web自动化测试

软件测试/测试开发 | 网页 frame 与多窗口处理

测试人

软件测试 自动化测试 测试开发 Web自动化测试

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