浅谈defi/nft/lp/pil/dapp代币智能合约流动性质押挖矿系统开发(技术方案及逻辑)丨代码部署

简介: // Proposal defined a consesensus proposal which can // be gossiped to other node and can be serilized // for persistent store.message Proposal {

接口说明
TBFT 实现了长安链的ConsensusEngine接口。
Start 方法用来初始化TBFT内部状态及启动TBFT实例。
Stop 方法用来停止TBFT实例。

type ConsensusEngine interface {
// Init starts the consensus engine.
Start() error

// Stop stops the consensus engine.
Stop() error
}
6.4.5. 数据结构
// TBFTMsgType defines different type message in tbft
enum TBFTMsgType {
propose = 0;
prevote = 1;
precommit = 2;
state = 3;
}

message TBFTMsg {
TBFTMsgType type = 1;
bytes msg = 2;
}

// Proposal defined a consesensus proposal which can
// be gossiped to other node and can be serilized
// for persistent store.
message Proposal {
string voter = 1;
int64 height = 2;
int32 round = 3;
int32 pol_round = 4;
Block block = 5;
EndorsementEntry endorsement = 6;
}

// VoteType represents the type of vote
enum VoteType {
VotePrevote = 0;
VotePrecommit = 1;
}

// Vote represents a tbft vote
message Vote {
VoteType type = 1;
string voter = 2;
int64 height = 3;
int32 round = 4;
bytes hash = 5;
EndorsementEntry endorsement = 6;
}

// Step represents the step in a round
enum Step {
NewHeight = 0;
NewRound = 1;
Propose = 2;
Prevote = 3;
PrevoteWait = 4;
Precommit = 5;
PrecommitWait = 6;
Commit = 7;
}
6.4.6. 配置参数
TBFT 可以通过在配置块中的ext_config字段配置相关参数:

“TBFT_propose_timeout”: 提案的超时时间,如10s, 1m;

“TBFT_propose_delta_timeout”: 每轮提案超时增加的时间,如10s, 1m;

“TBFT_blocks_per_proposer”: 每个节点连续出块数,如 "3"。

6.5. Maxbft
consensus-maxbft模块实现了hotstuff流水线共识,是一种优化后的三阶段BFT算法,当拜占庭节点数小于共识节点数的1/3时,可以保证系统的安全、高效运行、并提供状态的最终性保证;相较于其它BFT算法在如下方面进行了优化:

优化投票流程,使用星型网络减少网络通信量至O(n)

使用流水线模式简化三阶段共识消息类型:提案消息、投票消息

活性(liveness)规则与安全性(safetyRules)规则解耦

hotstuff是一种基于view的共识算法,每个view又称为level,每次进行view切换时,更新下一个view的proposer、触发新提案的生成,具有如下特性;

共识算法运转过程中,存在两个全局累加的变量:区块高度、共识view,指定的区块高度可能经历多轮共识才达成一致,当节点生成有效区块或当前共识view超时未达成一致,共识view递增但区块高度不变

hotstuff流水线共识算法中,当前共识view提案的投票发送下一个共识view的proposer节点,由下一个view的proposer收集投票信息组成QC,包含在下一个view生成的提案中

hotstuff共识算法为三阶段协议:prepareQC、precommitQC、commitQC

由于每一阶段都是对特定类型的消息收集投票,因此在流水线模式实现中,对投票流程和消息类型进行了优化

prepareQC:当共识节点接收视图为view的提案验证通过后,对view提案进行投票并发送给view+1的Leader,共识view+1的Leader基于view生成新提案时,将视图view投票聚合的QC包含在view+1的提案中,广播给其它共识节点,当其它共识节点收到view+1提案消息验证通过后,则表示网络中(n-f)个共识节点对视图view的提案达成第一轮共识(prepareQC)

precommitQC/lockedQC:视图view提案的precommitQC是由视图view+1提案的prepareQC间接确认的,即view+2的Leader将验证者集合对view+1提案的共识投票作为QC包含在view+2的提案中,其它共识节点收到view+2提案并验证通过时,表示对视图view+1提案的prepareQC阶段达成,对视图view提案的precommitQC阶段达成

commitQC:与precommitQC阶段达成类似,视图view提案的commitQC是通过对视图view+2提案的prepareQC间接达成的;共识节点收到视图view+2的提案、验证通过后进行投票,视图view+3的Leader接收投票聚合为QC、将其包含在view+3生成的提案中,广播给其它共识节点。当其它共识节点收到view+3的提案并验证通过时,表示链上验证集合对视图view提案的commitQC达成,此时会将view的提案提交上链、达成状态最终性

因此在上述三阶段中,网络中的共识消息类型被简化为2种:提案消息ProposalData,投票消息VoteData;且将precommitQC、commitQC阶段通过下一个视图的prepareQC阶段间接达成,减少了共识的交互流程

因此hotstuff流水线共识中,节点最少会缓存三个视图(view、view+1、view+2)的待提交提案信息,直至接受视图view+3提案时,将view的提案进行提交、并标识视图view+3的提案为待提交.

Maxbft 当前仅支持共识节点数 >= 4的场景,1)当创世节点数小于4时,节点无法成功启动;2)当链上共识节点数量动态减少时,导致链上节点数小于4的交易,执行失败

相关文章
|
2月前
|
人工智能 安全 物联网
NFT铸造智能合约代币质押系统开发|逻辑原理
智能合约是DAPP的核心组成部分,它负责处理应用程序的业务逻辑。
|
9月前
|
机器学习/深度学习 算法 区块链
DAPP/LP流动性质押挖矿系统开发(代码及案例)
DAPP/LP流动性质押挖矿系统开发(代码及案例)
|
11月前
|
区块链
DAPP/LP代币智能合约分红合约系统开发代码逻辑分析
// DAPP代币的智能合约分红 function distributeTokenProceeds(address recipient, uint amount) public { require(recipient != address(0), "Recipient cannot be zero address");
|
11月前
|
存储 人工智能 大数据
|
11月前
|
存储 算法 数据安全/隐私保护
DAPP流动性质押项目系统开发(逻辑方案)|DAPP代币发行
在设计良好的Web3系统中,去中心化就变成了良性循环
|
存储 区块链
DAPP/LP/DEFI智能合约流动性质押挖矿系统开发(详细及方案)丨源码案例
智能合约事实上是由计算机代码构成的一段程序,其缔结过程是:第一步,参与缔约的双方或多方用户商定后将共同合意制定成一份智能合约;
|
存储 前端开发 JavaScript
dapp/defi智能合约流动性LP质押挖矿系统开发(开发源码案例)丨成熟技术
Dapp:代表去中心化应用程序。它们是在去中心化网络或区块链上运行后端代码(主要用Solidity编写的智能合约)的应用程序。可以使用React、Vue或Angular等前端框架构建Dapp。
|
存储 算法 区块链
dapp/defi代币流动性挖矿系统开发(详情及方案)丨dapp/defi代币流动性挖矿系统开发(案例及功能)
     智能合约是运行在区块链系统可复制、共享账本上的计算机程序,可以处理信息,接收、储存和发送价值。基于区块链技术的智能合约,不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使智能合约能够高效地运行。
|
人工智能 JSON 大数据
DAPP/LP智能合约挖矿分红开发运营版,DAPP/LP智能合约挖矿分红系统开发(详细逻辑及规则)
  Web3.0技术与核心特征:Web3.0是元宇宙的底座,技术包括区块链、人工智能、大数据等技术和用户共识社区(DAO)等,核心特征为用户隐私保护能力加强、去中心化组织形态、价值互联互通、“平行空间”成为现实
|
存储 算法 安全
dapp/lp/nft/defi质押挖矿开发运营版丨lp/nft/defi/dapp质押挖矿系统开发(逻辑及详情)丨质押挖矿成熟源码案例部署
SYSTEM_CONTRACT_DPOS_STAKE: 由于stake合约地址是由合约名通过sha256计算后base58编码得到的,为固定值;但base58的值可读、可写不便,容易配置出错,因此,对于stake合约的地址配置为合约名;链启动后可以通过该命令查询stake合约地址