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//提示信息}

相关文章
|
8月前
|
监控 供应链 安全
dapp智能合约只涨不跌系统开发步骤详细/开发案例/功能需求/方案项目/源码功能
需求分析:明确系统的功能需求和业务逻辑。确定系统需要支持的资产类型、交易规则和逻辑限制等。
|
安全 区块链
区块链交易所开发运营版丨区块链交易所系统开发规则详细/项目案例/设计功能/需求逻辑/源码部署
Blockchain exchange refers to an online platform built on blockchain technology for trading and managing digital assets, such as cryptocurrencies (such as Bitcoin, Ethereum, etc.) and other digital assets or tokens. Blockchain exchanges allow users to buy, sell, store, and manage digital assets.
|
视频直播 定位技术 UED
拍卖软件开发系统源码解决方案,三大核心功能
互联网的飞速发展,电子商务领域也在不断演进,推动了直播拍卖软件成为一个备受欢迎的应用。其中,“东莞梦幻网络科技”用于搭建平台的拍卖系统源码市场热度不断攀升。这个系统源码具备三大核心功能,为平台商家带来了更多的盈利机会。本文将深入讨论这三大核心功能的意义。
|
存储 算法 区块链
DAPP智能合约系统软件开发案例 | 币安智能链模式系统开发
币安链和其它许多项目类似,比如EOS。它具有高吞吐量和高性能的底层匹配引擎,可以同时迅速的支持和处理大量交易。但是不够灵活性,无法支持许多复杂的DAPP。
|
安全 区块链
区块链商城系统开发运营版丨区块链商城系统开发详细流程/设计案例/需求逻辑/功能源码
User registration and login: Provide user registration and login functions to ensure the security and privacy protection of user information.
|
存储 区块链 数据安全/隐私保护
秒合约跟单系统开发功能与细节|秒合约系统源码搭建(成熟案例)
区块链智能合约目前还在发展初期,存在诸多问题。
|
存储 机器人 大数据
量化交易机器人系统开发(开发策略)及案例丨数字货币区块链交易所系统开发详细项目/方案设计/开发逻辑/源码版
  区块链的核心技术之一就是公开且透明的交易信息。一般情况下,在区块链内产生、流转和存储的信息是对所有节点用户开放的,其高度的透明化也使得区块内的所有人都能够查看数据的所有相关信息同时使用其应用。因此,区块链技术在信息共享与数据交换领域具有一定的优势。
|
存储 人工智能 安全
Opsea NFT智能合约平台系统开发方案介绍/功能详解/源码说明/项目案例
  DAPP是去中心化应用程序(Decentralized Application),它是建立在区块练技术之上的应用程序,具有去中心化、开放性、透明性、安全性等特点,DAPP可以实现各种功能,例如数字货币钱包、去中心化交易所、去中心化社交网络等。O
|
存储 区块链 数据安全/隐私保护
USDToch(优多趣)智能合约系统开发实现技术方案/源码功能
那智能合约到底是什么呢?In short,a smart contract is a contract that uses Computer language instead of Legal writing to record terms and is automatically executed by a program.简换句话说,智能合约就是传统合约的数字化版本,跑在区块链网络上,由程序自动执行。
|
存储 安全 分布式数据库
USDToch智能合约系统开发详细功能/方案介绍/案例分析/源码部署
  区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。从本质上看,区块链是通过去中心化和去信任化,集体维护、分布式存储的可靠数据库。