FISCO BCOS:深入浅出FISCO BCOS区块链底层平台

news2024/11/18 15:23:49

 

 苏泽

大家好 这里是苏泽 一个钟爱区块链技术的后端开发者

本篇专栏 ←持续记录本人自学两年走过无数弯路的智能合约学习笔记和经验总结 如果喜欢拜托三连支持~


我前面有补充相关的区块链的知识 如果没有了解的话 可能部分概念或名词会不懂哦 建议先了解一波再来看~http://t.csdnimg.cn/0XPyA

目录

我前面有补充相关的区块链的知识 如果没有了解的话 可能部分概念或名词会不懂哦 建议先了解一波再来看~http://t.csdnimg.cn/0XPyA

FISCO BCOS是什么?

架构与设计

流程

发包

收包

接口层

调度层

模块1:共识(Consensus)模块

​编辑

模块2:同步(Sync)模块

如何启动!?

很简单! 一共就两步


FISCO BCOS是什么?

FISCO BCOS是一个金融级、国产安全可控的区块链底层平台,由深圳市金融区块链发展促进会(金链盟)开源工作组牵头研发。作为最早开源的国产联盟链底层平台之一,FISCO BCOS于2017年面向全球开源

架构与设计

大概就是分为那么几个层 往深了讲可以讲几天几夜 我就挑 作为一个应用级别的开发者哈需要关注的大概就是那么几个地方:

流程

发包

以node0的第一组向node1的第一组发送消息packetA为例:

  1. group1将消息packetA传递到网络层。

  2. 网络层模块对packetA进行编码,将本群组ID添加到packetA的包头,形成新的数据包{groupID(1) + packetA}。

  3. 网络层访问账本白名单,判断node0是否是group1的节点。如果node0不是group1的节点,网络层会拒绝发送数据包。但如果node0是group1的节点,网络层会将编码后的数据包发送给目标节点node1。

收包

当node1接收到来自node0的数据包{groupID(1) + packetA}时:

  1. 网络层会查询账本白名单,检查源节点node0是否是group1的成员。如果node0不是group1的成员,网络层会拒绝该数据包;如果node0是group1的成员,网络层会将数据包传递给解码模块。

  2. 解码模块会从数据包中提取出group ID为1和数据包packetA,并将数据包packetA发送到group1。

接口层

让我们以一个简单的比喻来解释接口层由交易池(TxPool)、区块链(BlockChain)和区块执行器(BlockVerifier)三个模块组成的含义:

假设你是一个公司的项目经理,负责处理公司内部的各种任务和请求。在这个比喻中,你就是调度层,而接口层由三个模块组成。

  1. 交易池(TxPool):交易池就像你的收件箱,它接收来自公司员工或其他部门的新任务和请求。员工们将任务发送到你的收件箱中,而你会将这些任务提供给相关的团队去处理。类似地,交易池接收来自客户端或其他节点的新交易,并将这些交易提供给共识模块进行打包处理。同时,同步模块也可以从交易池中获取新交易进行广播,就像你将任务分发给相关团队一样。

  2. 区块链(BlockChain):区块链就像你的公司档案室,它保存着所有任务的历史记录。当你需要查看过去某个时间点的任务或了解任务执行结果时,你可以向档案室查询相关信息。类似地,区块链模块是你访问底层存储和执行模块的唯一入口。你可以通过区块链模块提交新的区块和区块执行结果,查询历史区块等信息。

    此外,RPC模块可以通过区块链模块获取区块、块高以及交易执行结果等信息,就像你向档案室查询任务历史记录一样。

  3. 区块执行器(BlockVerifier):区块执行器就像你的执行团队,负责实际执行任务。当你将任务分配给执行团队时,他们会按照任务要求进行操作,并将执行结果反馈给你。类似地,区块执行器与调度层进行交互,负责执行调度层传入的区块,并将区块执行结果返回给调度层。它是核心层与调度层之间的重要组件,用于验证和执行区块中的交易逻辑,就像你的执行团队负责执行任务并将结果反馈给你一样。

调度层

模块1:共识(Consensus)模块

共识模块的作用就像是一群人一起决定做什么事情。假设有一个团队,他们需要决定在周末去哪里旅行。每个人都提出了自己的建议,然后大家一起讨论并达成共识。共识模块就像是团队成员,它主要负责执行客户端提交的交易,并确保每个人对交易执行结果的认可。

在共识模块中,有两个重要的部分:打包(Sealer)线程和共识(Engine)线程。打包线程负责从交易池中获取还没有被执行的交易,并将这些交易打包成一个区块。而共识线程则负责对区块执行结果进行共识,确保大家都达成一致意见。目前,常用的共识算法有PBFT和Raft。

共识模块的工作流程如下:

  1. 客户端提交的交易会先缓存到交易池(就像是大家提出的旅行建议被放在一个池子里)。

  2. 当有新的交易进入交易池时,打包线程会被唤醒。打包线程会根据当前最高的区块,从交易池中获取最新的交易,然后打包成一个新的区块。

  3. 打包线程将新的区块传递给共识线程,供共识过程使用。

  4. 共识线程收到新的区块后,启动共识流程。在共识过程中,会调用区块执行器执行区块中的每一笔交易,并确保大家对执行结果达成一致。

  5. 如果共识成功,就会调用区块链模块将新的区块和区块执行结果提交到底层数据库。

  6. 当新的区块成功上链后,交易池会删除已经被打包进区块的交易,并将交易执行结果发送给客户端。

模块2:同步(Sync)模块

同步模块的目标是确保每个团队成员都拥有完整的信息。假设有一个团队,其中的成员分布在不同的地方。为了保持大家的信息一致,每个人会定期向其他人汇报自己的进展。同步模块就像是团队成员之间的信息传递通道,它主要负责交易和区块的同步。

同步模块包括交易同步和区块同步。

交易同步的过程如下:

  1. 当客户端向特定团队的交易池提交新的交易时,交易同步线程会被唤醒。这个线程会将新的交易广播给其他团队的节点,以确保每个团队都有完整的交易信息。

  2. 假设客户端将交易A发送到团队1,将交易B发送到团队2。交易同步线程会将交易A广播给所有团队的节点,而将交易B广播给所有团队的节点。

区块同步的过程如下:

  1. 节点0、节点1和节点2的区块同步线程会定期广播最新区块的高度信息。

  2. 当节点1收到节点0和节点2的最新区块高度后,发现自己的区块高度是3,低于节点0和节点2的最新区块高度6。

  3. 为了保持负载均衡,节点1向节点2请求第4个区块,并向节点0请求第5和第6个区块。

  4. 节点0和节点2接收到节点1的区块请求后,分别将第5和6个区块返回给节点1,节点2还返回第4个区块。

  5. 节点1按照区块的顺序执行第4、5和6个区块,并将最新的区块按顺序提交到底层存储。这样,节点1就与其他节点保持了区块的同步。

如何启动!?

很简单! 一共就两步

  1. 学习如何编写智能合约(本专栏重点介绍solidity语言)相当于就是一门新的编程语言,只是引用了很多不一样的库 还有要学习新的语法
  2. 学习如何使用FISCO BCOS平台理解其部署、安装 、使用方法以及调试、优化等

本篇专栏就是围绕着这两条线进行展开讲解  学习记录的

然后就是最最激动的 实战部分(会随着项目进度陆续发出)

链接摆上、按需食用!:

智能合约:http://t.csdnimg.cn/Ll93z

FISCO BCOS:http://t.csdnimg.cn/a2uNa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sentinel黑白名单权限控制

黑白名单权限控制 规则配置 规则创建 创建一个 AuthorityRule 规则对象三个关键要素 setStrategy: 黑白名单类型setResource: 规则和资源的绑定关系setLimitApp: 限制的来源 调用 AuthorityRuleManager.loadRules()加载规则 监听器实例化和管理 AuthorityPropertyListener…

2024年普通人的创业机会在哪里?2024热门创业项目!2024普通人想翻身的风口行业!

创业千万别冲动,社区团购代理创业失败案例! 是不是一开始挺看好这个赛道,看别人做的风生水起,以为不难,真正开始做才发现不好做,没有先天优势,货源和客源从零开始积累,开始就是摸着石…

Qt学习--QT Creator使用基本介绍

话不多说,直接开搞,笔者用的是5.12.9版本 双击打开QT Creator 显示这个界面 新建工程 然后出现这样的界面 点击运行 就弹出了一个这个,空的,因为我们啥也没写

JUC并发编程(四)

1、同步模式保护性暂停 用一个线程等待另一个线程的执行结果 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个中间类。如果有结果不断从一个线程到另一个线程那么可以使用消息队列(见生产者/消费者)。JDK 中,join 的…

人物百度百科如何创建?人物类词条编辑指南

创建人物百度百科是一项既具有挑战性的工作。下面,伯乐网络传媒就来给大家详细介绍如何创建人物百度百科,包括准备工作、创建步骤以及常见问题解答。 一、创建人物百度百科的准备工作 1. 人物百科词条创建要求 百度百科对创建人物词条有一定的要求&…

学嵌入式真的很烧钱吗?

如果是走嵌入式单片机方向,这篇内容,很适合预算1000以下的,作为发育参考。 下面是我2011年的入行成本: 买了智能小车,还有51开发板,杂七杂八,可能一共不到1000。 一开始迷之自信了,买…

HTML静态网页成品作业(HTML+CSS)——24节气之冬至介绍(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

误删.idea后的svn菜单找回

最近做开发maven出了问题总是找不到已有的包,最后相信大力出奇迹删除.idea目录重启idea,结果问题没解决,给我svn搞没了。无奈重新研究恢复svn,这里记录一下我成功的方法。 我是之前做过配置,删除.idea后消失的svn相关…

2024湖南消费促进年启动仪式在益阳举行

优化消费环境,激发消费活力。值3月15日消费者权益日,由湖南省商务厅、益阳市人民政府主办,益阳市商务局承办的2024湖南消费促进年(春季)启动仪式暨益阳消费促进系列活动在益阳佳宁娜广场隆重举行。湖南省各市州商务部门领导、各区县市商务主管部门领导、参展协会代表以及100多家…

《算法设计与分析第二版》100行 C语言实现 广度度优先算法 BFS——最短距离

抄录自课本P157页。 #include <stdio.h> #define MAXQ 100 // 队列大小 #define MAxN 10 // 最大迷宫大小 int n8; // 迷宫大小 char Maze [MAxN][MAxN] {{O,X,X,X,X,X,X,X,},{O,O,O,X,O,X,O,X,},{X,X,O,O,O,X,O,X,},{X,X,O,X,O,X,X,X,},…

普通人搞副业,空闲时间做,月入5w+

我是电商珠珠 大家会发现&#xff0c;朱砂越来越火&#xff0c;不仅是因为它好看&#xff0c;而且商家对外扬言可以招财。现在的人对爱情不屑一顾&#xff0c;财神殿里可以长跪不起&#xff0c;人人都想求财&#xff0c;想要在空余时间搞副业赚大钱&#xff0c;但做什么还没有…

掌握 Swagger annotations(注解):完全指南与最佳实践

利用 Swagger 注解增强 API 理解 Swagger 提供的注解集是其框架中定义 API 规范和文档的重要工具。这些注解在代码里标注重要部分&#xff0c;为 Swagger 的解析工作铺路&#xff0c;进而生成详尽的 API 文档。开发者编写的注释能够被转换成直观的文档&#xff0c;并展现API端…

【呼市经开区建设服务项目水、电能耗监测 数采案例】

一、项目背景及需求 项目地点位于内蒙古呼和浩特市&#xff0c;呼市数字经开区建设服务项目。属于企业用能数据采集、能耗监测板块子项目。 针对水、电能耗数据采集&#xff0c;结合现场客观因素制约&#xff0c;数据采集方面存在较大难度。大多数国网电表485接口由于封签限制&…

B009-springcloud alibaba 服务配置 Nacos Config

目录 服务配置中心介绍Nacos Config入门Nacos Config深入配置动态刷新方式一: 硬编码方式方式二: 注解方式(推荐) 配置共享同一个微服务的不同环境之间共享配置不同微服务中间共享配置 nacos的几个概念 服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题…

031—pandas 读取解析实验室数据至DataFrame

前言 某个科研实验室在进行一项物理实现&#xff0c;实验仪器会输出一个 txt 文本的数据&#xff0c;研究人员需要从这个文本中将数据结构化才能进行进行统计分析。 在为个解析和分析过程中&#xff0c;他们选择了 Python 的 pandas 库来完成这些操作。我们今天来完成这这个 t…

一口气看完明朝276年历史

明朝是中国历史上最后一个由汉人建立的大一统封建王朝&#xff0c;建立于公元1368年&#xff0c;亡于公元1644年&#xff0c;国祚276年&#xff0c;传12世16帝。 太祖建国 太祖&#xff08;1368~1398&#xff09; 公元1368年&#xff0c;朱元璋在南京应天府建元称帝&#xff…

Linux 中搭建 主从dns域名解析服务器

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言———— 主从&#xff08;Master-Slave&#xff09;DNS架构是一种用于提高DNS系统可靠性和性能的配置方式。…

兼顾稳定和性价比的跨国企业SD-WAN组网

随着全球业务不断扩张&#xff0c;跨国企业面临着跨域网络的复杂性和不稳定性带来的挑战。不同地区分支机构的数据互通和协作常常受到制约&#xff0c;而在网络问题出现后&#xff0c;排查多方问题导致高昂的部署和运维成本。尽管直连方案在表面上看似省钱&#xff0c;但由于不…

爱恩斯坦棋小游戏使用C语言+ege/easyx实现

目录 1、游戏介绍和规则 2、需要用到的头文件 3、这里我也配上一个ege和easyx的下载链接吧&#xff0c;应该下一个就可以 4、运行结果部分展示 5、需要用到的图片要放在代码同一文件夹下 6、代码地址&#xff08;里面有需要用到的图片&#xff09; 1、游戏介绍和规则 规则如…

few shot vid2vid(Few-shot Video-to-Video Synthesis)论文理解

代码&#xff1a;https://github.com/NVlabs/few-shot-vid2vid 论文&#xff1a;https://arxiv.org/abs/1910.12713