dapp/lp/nft/defi质押挖矿开发运营版丨lp/nft/defi/dapp质押挖矿系统开发(逻辑及详情)丨质押挖矿成熟源码案例部署

简介: SYSTEM_CONTRACT_DPOS_STAKE: 由于stake合约地址是由合约名通过sha256计算后base58编码得到的,为固定值;但base58的值可读、可写不便,容易配置出错,因此,对于stake合约的地址配置为合约名;链启动后可以通过该命令查询stake合约地址

6.6.1. 质押规则
普通节点通过质押权益成为候选人,具有如下的规则:

成为候选人的节点自身需要至少抵押该stake.minSelfDelegation数量的权益

stake.minSelfDelegation为链启动时配置的参数,候选人最少抵押的权益数量

任何人/组织都可以将权益委托质押给某个候选人,候选人质押的权益数量越多,被选为验证者的几率越大

所有质押的权益会被一直冻结,直到用户退出质押且在一段时间后stake.completionUnbondingEpochNum,所冻结的质押资产才会退还给用户

stake.completionUnbondingEpochNum为链启动时配置的参数,用户退出质押后,间隔几个世代再将用户的资产退还到相应的账户

用户的质押权益会转入stake合约的系统账户地址中,该系统账户地址是由合约名通过算法生成的

stakeAddress = base58(sha256(stakeContractName))

6.6.2. 验证人选举规则
每个世代会从候选人中选择一批验证者进行共识,为了在参考候选人质押资金的同时,也可以尽可能维护系统的公平性,设计了如下概率性选择算法,使所有候选人都有成为验证者的可能:

候选人的数量为M,选举的验证者集合的数量为N;依据候选人质押资金将其分为两个集合,质押资金topN的候选人为优先级集合,其余为普通集合

从优先级集合中选举N/2的节点作为验证者,剩余未被选中节点合并至普通集合,参与剩余的N/2个验证者的选举

6.6.3. 接口
type DPoS interface {

CreateDPoSRWSet(preBlkHash []byte, proposedBlock *consensuspb.ProposalBlock) error
VerifyConsensusArgs(block *common.Block, blockTxRwSet map[string]*common.TxRWSet) error
GetValidators() ([]string, error)

}
CreateDPoSRWSet: 依据节点提案的区块和链上数据,生成DPoS共识的读写集,并将读写集添加至区块中

VerifyConsensusArgs: 验证区块中包含的DPoS读写集是否正确

GetValidators: 获取当前世代的验证者

6.6.4. 系统合约
DPoS共识使用了两个系统合约来分别处理、存储一些状态;使用ERC20系统合约,存储链上所有用户的资产,并处理权益的转移、增发等逻辑;使用Stake系统合约,存储共识中的质押、退出质押、世代(每个世代包含验证者集合、下一个世代的创建高度)等信息,并处理用户的质押、退出质押、关联NodeID逻辑;

注意:关联NodeID操作的原因,NodeID是由节点证书内包含的公钥生成的,用于表示节点在链上的身份,且验证者生成的区块是用该证书对应的私钥进行签名的,因此该私钥需要放置在运行节点的服务器上;为了保证用户质押资金的安全,使用了另一套证书来标示用户的身份,用户的资金存储在该证书内公钥生成的地址上,该证书可以离线存储,以保证资金的安全。

因此,节点质押资金成为候选人时,需要先在链上关联用户质押地址对应的NodeID。

6.6.5. 配置参数
consensus:
# 共识类型(0-SOLO,1-TBFT,3-HOTSTUFF,4-RAFT,5-DPoS,10-POW)
type: 5
dpos_config:

#ERC20合约配置
- key: erc20.total
  value: "1250000000000000000000000"
- key: erc20.owner
  value: "4WUXfiUpLkx7meaNu8TNS5rNM7YtZk6fkNWXihc54PbM"
- key: erc20.decimals
  value: "18"
- key: erc20.account:SYSTEM_CONTRACT_DPOS_STAKE
  value: "1000000000000000000000000"
- key: erc20.account:4QUXfiUpNmj7meaNu8TNS5rNM7YtZk6fkNWXihc589kN
  value: "250000000000000000000000"
#Stake合约配置
- key: stake.minSelfDelegation
  value: "25000000000000000000000"
- key: stake.epochValidatorNum
  value: "4"
- key: stake.epochBlockNum
  value: "10"
- key: stake.completionUnbondingEpochNum
  value: "1"
- key: stake.candidate:4WUXfiUpLkx7meaNu8TNS5rNM7YtZk6fkNWXihc54PbM
  value: "250000000000000000000000"
......
- key: stake.nodeID:4WUXfiUpLkx7meaNu8TNS5rNM7YtZk6fkNWXihc54PbM
  value: "QmRmTtfm7w5KwVAJALLU23y9TyiCNTUiqVbcErfBqhenrh"
    ......

erc20.total: ERC20合约发行权益的总量

erc20.owner: ERC20合约的管理员,拥有增发权益的权利

erc20.decimals: ERC20合约中权益的精度

erc20.account:: ERC20合约中创世块时每个账户所拥有的资金

SYSTEM_CONTRACT_DPOS_STAKE: 由于stake合约地址是由合约名通过sha256计算后base58编码得到的,为固定值;但base58的值可读、可写不便,容易配置出错,因此,对于stake合约的地址配置为合约名;链启动后可以通过该命令查询stake合约地址

其它的账户的初始资金配置,使用用户的地址进行配置

stake.minSelfDelegation: 候选人自身最少质押的权益数量

stake.epochValidatorNum: 每个世代验证者的数量

stake.epochBlockNum : 每个世代的区块数量

stake.completionUnbondingEpochNum:用户退出质押后间隔几个世代将资金退还给用户

stake.candidate:: 创世块时每个候选人质押的资金

stake.nodeID:创世块时每个候选人关联的NodeID

相关文章
|
6月前
|
安全 区块链 数据安全/隐私保护
LP流动性质押挖矿开发模式丨dapp流动性挖矿系统开发源码现成
什么是流动性mining?流动性mining主要是通过提供通证资产进而获取收益。简单来说就是,存入某些通证资产便可对其进行mining。存入某些通证资产便可对其进行mining。之所以会被称为mining也是因为保留了BTCmining的行业说法。流动性mining是一种有助于去中心化通证流通的途径,LP(流动性提供者)通过向流动capital池提供流动性/注入capital,
|
7月前
|
机器学习/深度学习 算法 区块链
DAPP/LP流动性质押挖矿系统开发(代码及案例)
DAPP/LP流动性质押挖矿系统开发(代码及案例)
|
7月前
|
区块链
Defi/DAPP/IDO/代币预售质押挖矿系统模式开发技术规则
Defi/DAPP/IDO/代币预售质押挖矿系统模式开发技术规则
|
存储 前端开发 JavaScript
dapp/defi智能合约流动性LP质押挖矿系统开发(开发源码案例)丨成熟技术
Dapp:代表去中心化应用程序。它们是在去中心化网络或区块链上运行后端代码(主要用Solidity编写的智能合约)的应用程序。可以使用React、Vue或Angular等前端框架构建Dapp。
|
存储 区块链
DAPP/LP/DEFI智能合约流动性质押挖矿系统开发(详细及方案)丨源码案例
智能合约事实上是由计算机代码构成的一段程序,其缔结过程是:第一步,参与缔约的双方或多方用户商定后将共同合意制定成一份智能合约;
|
存储 算法 区块链
dapp/defi代币流动性挖矿系统开发(详情及方案)丨dapp/defi代币流动性挖矿系统开发(案例及功能)
     智能合约是运行在区块链系统可复制、共享账本上的计算机程序,可以处理信息,接收、储存和发送价值。基于区块链技术的智能合约,不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使智能合约能够高效地运行。
|
存储 人工智能 物联网
DAPP/LP流动性质押挖矿互助公排模式系统开发详细,DAPP/LP流动性质押挖矿互助公排开发源码
依据计算机领域常用的形式化分层方法,元宇宙可以分为元网络、元系统、元服务、元场景和元空间五层架构。元网络包含了通信、存储、计算、网络等支撑性技术,为元宇宙提供底层基础设施;元系统以区块链为核心,集成大数据、云计算、人工智能、物联网、人机交互和信息安全等技术,为元服务提供系统级基础技术能力
|
区块链 索引
DAPP/LP代币智能合约流动性质押挖矿互助公排开发需求丨DAPP/LP代币智能合约流动性质押挖矿互助公排系统开发详细及方案
 以区块链为核心的数字科技可以推动信息技术服务,从而促进数字产业化;元宇宙可以创造和创新更广泛的应用场景,拉动信息消费促进产业数字化。因此,以区块链为核心的Web3.0技术体系推动形成的元宇宙数字生态,将对数字产业化和产业数字化提供有力支撑,为数字经济高质量发展打造新引擎。
|
JavaScript
dapp/lp/defi/nft流动性质押挖矿稳定版,dapp/lp/defi/nft流动性质押挖矿分红系统开发详细案例及功能
  Debit and credit voucher:When you deposit a token in Compound,you will get a credit voucher cToken.cToken is the ownership of the user's pledge token.You can exchange the original token and withdraw the corresponding profits in the Compound agreement.
|
存储 区块链 UED
LP/DAPP流动性质押挖矿开发稳定版,LP/DAPP流动性质押挖矿系统开发技术详细及代码部署
 用户和系统之间在去中心化应用程序(DAPP)上发生的大多数交互都是由智能合约提供支持的,一定程度上来说,DApp是通过智能合约构建起来,DAPP智能合约开发,币安智能链o智能合约3DAPP搭建,智能合约钱包开发DAPP源码,这种合约是去中心化的,难以篡改。DAPP实现用户体验,还需要UI交互界面,通过RPC与后台对接,那么DAPP就是包含完整的智能合约+用户UI交互界面。