2.0佛萨奇MetaForce系统丨2.0佛萨奇MetaForce智能合约系统开发运营版丨2.0佛萨奇MetaForce开发源码功能

简介:  验证区块:从节点在验证区块时会从交易池Get块中的交易,对存在于本节点交易池中的交易,Core模块只需比对块中交易和交易池中交易哈希是否一致即可(因为交易池已经做了相关检查),对于不在本节点交易池中的交易,Core模块则需要进行交易有效性检查和防重检查。验证区块有效后,Core模块会通知交易池将块中交易从待打包Queue队列中移至已打包Pending缓存中,此操作也是确保在MaxBFT共识下交易不会被重复打包。

  在交易池实现时,对缓存配置类型交易和普通类型交易的队列进行了区分,分别为ConfigTxQueue和CommonTxQueue。

  在每种交易队列TxQueue中包含两个结构用于缓存交易:

  Queue队列:缓存通过交易有效性检查和防重检查的待打包交易队列;

  Pending缓存:缓存已经被打包进区块正在共识中的交易队列;

  添加至交易池的交易来源TxSource,有三种类型:RPC、P2P、INTERNAL,不同来源的交易,对应着不同的检查。

  RPC:对来自RPC的交易,交易池不进行交易基础信息的有效性检查(如交易ID是否符合规范、时间戳是否过期,交易签名是否有效),只进行防重检查,因为RPC模块已做此类检查;

  P2P:对其它节点广播过来的交易,需进行全量的检查,包括交易有效性检查、交易在不在交易池或者已经上链的防重检查;

  INTERNAL:如果节点在同一高度接收到多个验证有效的区块,当其中某个区块上链后,节点会对同一高度的其他区块进行剪枝,被剪枝区块内的交易会被重新添加进交易池,此时交易池会对这些交易进行有效性和防重检查;

  介绍交易池的设计思路:

  接收交易:交易池对不同来源的交易会进行不同的处理,对于来自RPC的交易,会将有效的交易缓存到待打包队列Queue中并将交易广播给其他节点;对于来自P2P或者INTERNAL的交易,验证有效后只会放入交易池的Queue队列中。

  构造区块:主节点的Core模块会从交易池Fetch一批交易用于构造新的区块,此时交易池会将该批交易从待打包Queue队列移至已打包Pending缓存中,防止在MaxBFT共识下交易被重复打包。

  验证区块:从节点在验证区块时会从交易池Get块中的交易,对存在于本节点交易池中的交易,Core模块只需比对块中交易和交易池中交易哈希是否一致即可(因为交易池已经做了相关检查),对于不在本节点交易池中的交易,Core模块则需要进行交易有效性检查和防重检查。验证区块有效后,Core模块会通知交易池将块中交易从待打包Queue队列中移至已打包Pending缓存中,此操作也是确保在MaxBFT共识下交易不会被重复打包。

  提交区块:在完成共识并提交区块后,主节点和从节点会对同一高度的其他区块进行剪枝,将被剪枝区块中的交易重新放入待打包Queue队列中,并将提交的区块中的交易从交易池Pending和Queue中移除。

  gRPC接口

  独立部署时,提供交易存在性和有效性证明服务的grpc接口

  type RpcProverServer interface{ValidTransaction(context.Context,TxValidationRequest)(TxValidationResponse,error)}

  其中*api.TxValidationRequest结构如下:

  type TxValidationRequest struct{ChainId string//链ID BlockHeight int64//交易所在区块高度Index int32//交易索引TxKey string//交易ID ContractDataContractData//交易调用的合约数据Timeout int64//超时时间,单位:ms Extra[]byte//预留扩展字段}type ContractData struct{Name string//合约名称Version string//合约版本Method string//合约方法名Params[]KVPair//合约方法参数Extra[]byte//预留扩展字段}type KVPair struct{Key string//参数名称Value[]byte//参数值}

  其中*api.TxValidationResponse结构如下:

  type TxValidationResponse struct{ChainId string//链ID TxKey string//交易ID Code Code//状态码,0表示Unknown,1表示为有效的交易Valid;1表示为无效的交易Invalid Message string//提示信息}

相关文章
|
网络安全 区块链
佛萨奇Metaforce2.0系统开发(成熟源码)
智能合约是一种可编程的自动执行合约,其代码被嵌入到区块链中
|
11月前
|
存储 安全 区块链
佛萨奇矩阵公排系统开发|metaforce佛萨奇源码
区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制
|
算法 安全 分布式数据库
MetaForce原力元宇宙佛萨奇2.0智能合约系统开发(源码部署)
Force是一个全球加密货币生态系统,其成员使用我们的智能合约即时利润分配工具和算法互相帮助以实现财务福利。META FORCE系统属于我们的社区并且是完全去中心化的,这意味着它是透明的、安全的并且可以抵抗外部影响。 智能合约是一种自执行算法(程序代码)。它保证了在区块链内执行逻辑或传输的透明性和安全性。
|
存储 安全 区块链
佛萨奇2.0系统开发(源码案例)|metaforce佛萨奇矩阵合约系统开发
智能合约远胜于传统交易流程,因为它们有可能实现自动化
|
存储 区块链 数据库
Forsage/MetaForce佛萨奇2.0系统开发(方案及案例),MetaForce/Forsage佛萨奇2.0系统开发(源码及项目)
 该技术方案主要让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的数据块(block),每个数据块中包含了一定时间内的系统全部信息交流数据,并且生成数据指纹用于验证其信息的有效性和链接(chain)下一个数据库块。
|
区块链
MetaForce佛萨奇2.0系统开发技术
Source code WeChat:kaifa873
70 0
|
Kubernetes Shell Docker
MetaForce佛萨奇2.0系统开发详细方案丨佛萨奇系统开发技术讲解
MetaForce佛萨奇2.0系统开发详细方案丨佛萨奇系统开发技术讲解
171 0
|
存储 区块链 数据安全/隐私保护
Metaforce/Forsage/佛萨奇2.0开发稳定版,Metaforce/Forsage/佛萨奇2.0系统开发(开发案例)丨成熟技术
Plasma是通过创建区块链的“树”来提高可扩展性的另一种方式,主链是树的根,而“子”区块链尽可能少地与更高级别的链互动。例如Loom的PlasmaChain和OmigeGO Plasma
|
安全 区块链 数据安全/隐私保护
Forsage/Metaforce佛萨奇2.0原力元宇宙系统开发(开发说明),Forsage/Metaforce佛萨奇2.0源码运营版
 Blockchain technology can thus empower enterprises in many ways:providing reliable shared data and building trust between parties;Eliminate data silos,which integrate data into a system through centralized ledgers that are shared in a network and support licensee access;Give data a high degree of s
|
存储 自然语言处理 运维
MetaForce佛萨奇(2.0)系统开发(原力元宇宙开发)丨佛萨奇MetaForce马蹄链2.0系统开发(稳定版)
 自然语言处理是人工智能技术中的另一个分支,主要应用于机器与人之间的语言交互。在工业领域,自然语言处理可以用于实现自然语言的输入、理解和生成。例如,在工业设备维护领域,可以使用自然语言处理技术来实现设备的语音控制和故障诊断。