defi/nft/lp/dapp/dao代币发行合约流动性质押挖矿分红系统开发详情版(通缩销毁,锁仓限购,买卖回流,回购拉盘模式开发)

简介: When the peer node receives the input (propsal) requested by the client, it will send a chain code message object (with input information and caller information) to the corresponding chain code.

Fabric chain code interacts with peer node through gprc

When the peer node receives the input (propsal) requested by the client, it will send a chain code message object (with input information and caller information) to the corresponding chain code.

The chain code calls the invoke method in ChaincodeBase to obtain the ledger status information and send the pre submission status to the peer node by sending the getState and putState messages.

The chain code sends the final output result to the peer node, and the node endorses and signs the input (propsal) and output (propsalreponse) to complete the first signature submission.

After that, the client collects the first segment of the submission information of all peer nodes, assembles the transaction and signs it, sends the transaction to the orderer node for queuing, and finally the orderer generates the block and sends it to each peer node, and puts the input and output on the ledger to complete the second segment of the submission process.

Basis of chain code development:

The foundation of chain code development can be summarized as follows: one base class, two queries, and one write.

A base class: ChaincodeBase

In Java, ChaincodeBase is the contract base class of user-defined chain codes. The run (ChaincodeStub stub, String function, String [] args) method is the entry function for peer to call chain codes. An init method must be customized for contract initialization and upgrade initialization.

Because of its dynamic interface characteristics, GO does not need to specifically declare the implementation of the contract interface. However, two interface methods must be implemented:

▪ Init (stub shim. ChaincodeStubInterface): init is used for contract initialization and upgrade initialization;

▪ Invoke (stub ship. ChaincodeStubInterface): Invoke is the entry function of peer calling chain code; ChaincodeStub contains rich ledger operations, such as getCallerCertificate(), getState (k), putState (k, v), invokeChaincode (...), rangeQueryState (k1, k2), getTxId(), etc.

Two queries: getState (k) and rangeQueryState (k1, k2)

GetState (k) gets the value corresponding to a separate key.

RangeQueryState (k1, k2) gets all k-v objects that start with k1 and end with k2, and returns Map<String, String>objects, where k1 and k2 are sorted lexicographically.

One write: putState (k, v),

Write the data. It should be noted here that putState data will not fall into the ledger immediately. The data will not fall into the ledger until the second transaction submission consensus is reached.

Chain code development experience

  1. Store the business entity in Json mode and create an index on the key

Because there is only one key val status database, the data whose value is Json can be quickly parsed. The key is added with the value of some simple index fields, such as Pk_ TxId Transaction ID_ A field value to realize range query.

The leveldb used by the k-v library of the fabric, and the lexicographical order used by the inserted key values. Therefore, the index field values must have a fixed length, or call stub. rangeQueryState (k1, k2) for range query, and a heap of incorrect data will be taken out.

  1. The written data cannot be obtained immediately

The data written through putState will not fall into the ledger immediately. The data will not fall into the ledger until the consensus of all peer nodes in the second transaction is reached. Therefore, it is not possible to immediately obtain the previously written values, such as batch inserting data, using putState to write data, and then using the getState function to determine whether the primary key is repeated.

  1. Do the methods in the chain code need to be locked

unwanted. The peer node has implemented the message queue. The chain code messages sent to the chain code are executed sequentially, not in parallel.

相关文章
|
存储 安全 区块链
IDO预售代币合约质押项目系统开发方案指南
区块链是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储
|
算法 安全 区块链
DAPP流动性合约代币质押系统开发指南与方案
区块链技术带来的去中心化革命将对未来产生深远影响。
|
存储 Java Shell
链上LP质押流动性代币分红dapp系统开发demo详情|方案设计|技术介绍
链上LP质押流动性代币分红dapp系统开发demo详情|方案设计|技术介绍
|
区块链
defi/lp/nft/dapp代币预售合约流动性质押挖矿开发正式版,defi/lp/nft/dapp代币预售合约流动性质押挖矿系统开发(方案及详细)
 智能合约(Smart contract)是依托计算机在网络空间运行的合约,它以信息化方式传播、验证或执行合同,由计算机读取、执行,具备自助的特点。而区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现
|
存储 IDE 搜索推荐
DeFi+NFT铸造质押借贷理财dapp系统规则详情|合约功能开发介绍
DeFi+NFT铸造质押借贷理财dapp系统规则详情|合约功能开发介绍
|
JavaScript 前端开发 UED
LSD赛道流动性挖矿dapp系统开发源代码|LP流动性质押分红模式定制详情
LSD赛道流动性挖矿dapp系统开发源代码|LP流动性质押分红模式定制详情
|
区块链
代币合约dapp开发丨代币合约dapp流动性质押挖矿分红系统开发实现技术案例及源码
 因为整个区块链系统是点对点的对等网络,没有统一的中心机构协调各个节点的行为,所以在生成区块时,各个节点的行为都是相互独立的,很有可能同时由多个矿工在同一区块高度生成出2个以上的区块来。这些区块打包的交易很可能是不一样的,同时满足条件的数字n不是唯一的,多个矿工之间生成的数字n是不一样的,但是同样是满足不等式的。在这种情况下,网络中的其他节点很可能同步到不同的区块数据,并且这些数据在数学上都是合法的、有效的。当不同的节点中的不同的区块作为当前最新区块时,就会存在分叉的情况,即不同的矿机对同一高度的区块生产了内存不一样的新区快,并且这些矿工都找到了满足不等式的数字n。
|
边缘计算 5G 区块链
swap交易所代币合约流动性质押挖矿系统开发(开发案例)丨swap交易所代币合约流动性质押挖矿现成源码案例
 综合来看,技术方面,Web 3.0不仅是过往技术迭代,更是多项科技的集成,包括5G、VR、AR、区块链、云计算、芯片、边缘计算等。具体地来看,Web3.0技术可分为基础层技术、平台层技术、交互层技术。相较于Web2.0时代,Web3.0涉及细分技术类别更多、范围更广,其中区块链技术由于其去中心化的特征,成为Web3.0核心底层基础技术
|
JSON 测试技术 区块链
IDO预售代币合约流动性质押挖矿分红开发逻辑丨IDO预售代币合约流动性质押挖矿分红系统开发技术分红及代码部署
# 代币数量,以wei为单位,可以是字符串和int类型 web3.toWei(数值,代币单位) # 为了方便调通代码,我们这里用wei来做单位,正常都是用ether。 # 1 ether = 1 x 10^18wei = 1 x 10^9 Gwei 'value': web3.toWei(amount, 'wei'),
|
JSON 区块链 数据格式
DEFI/NFT/LP/DAPP代币合约流动性质押挖矿分红开发案例源码,DEFI/NFT/LP/DAPP代币合约流动性质押挖矿分红系统开发(逻辑及详细)
# web3对象与已部署的用户合约进行通信 rpc = "HTTP合约通讯地址(http url)" web3 = Web3(HTTPProvider(rpc))