派链PIL/NFT/LP/DAPP/DEFI代币智能合约流动性质押挖矿分红系统开发详细方案及源码逻辑

简介: withSyncResult:是否同步获取交易执行结果当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果

  1.合约调用

  参数说明

  contractName:合约名称

  method:合约方法

  txId:交易ID格式要求:长度为64字节,字符在a-z0-9可为空,若为空字符串,将自动生成txId

  kvs:合约参数

  timeout:超时时间,单位:s,若传入-1,将使用默认超时时间:10s

  withSyncResult:是否同步获取交易执行结果当为true时,若成功调用,common.TxResponse.ContractResult.Result为common.TransactionInfo当为false时,若成功调用,common.TxResponse.ContractResult为空,可以通过common.TxResponse.TxId查询交易结果

  limit:transaction limitation,执行交易时的资源消耗上限,设为nil则不设置上限

  2.部署wasm合约

  下文,将演示通过sdk部署wasm合约,

  sdk_user_contract_claim_test.go

  
  func testUserContractClaimCreate(ttesting.T,clientChainClient,admin1,admin2,admin3,admin4*ChainClient,withSyncResult bool,isIgnoreSameContract bool){resp,err:=createUserContract(client,admin1,admin2,admin3,admin4,claimContractName,claimVersion,claimByteCodePath,common.RuntimeType_WASMER,

  []common.KeyValuePair{},withSyncResult)if!isIgnoreSameContract{require.Nil(t,err)}fmt.Printf("CREATE claim contract resp:%+vn",resp)}func createUserContract(clientChainClient,admin1,admin2,admin3,admin4ChainClient,contractName,version,byteCodePath string,runtime common.RuntimeType,kvs[]common.KeyValuePair,withSyncResult bool)(*common.TxResponse,error){payloadBytes,err:=

  client.CreateContractCreatePayload(contractName,version,byteCodePath,runtime,kvs)if err!=nil{return nil,err}//各组织Admin权限用户签名signedPayloadBytes1,err:=admin1.SignContractManagePayload(payloadBytes)if err!=nil{return nil,err}signedPayloadBytes2,err:=admin2.SignContractManagePayload(payloadBytes)if err!=nil{return nil,err}signedPayloadBytes3,err:=

  admin3.SignContractManagePayload(payloadBytes)if err!=nil{return nil,err}signedPayloadBytes4,err:=admin4.SignContractManagePayload(payloadBytes)if err!=nil{return nil,err}//收集并合并签名mergeSignedPayloadBytes,err:=client.MergeContractManageSignedPayload([][]byte{signedPayloadBytes1,signedPayloadBytes2,signedPayloadBytes3,signedPayloadBytes4})if err!=nil{return nil,err}//发送创建合约请求resp,err:=

  client.SendContractManageRequest(mergeSignedPayloadBytes,createContractTimeout,withSyncResult)if err!=nil{return nil,err}err=checkProposalRequestResp(resp,true)if err!=nil{return nil,err}return resp,nil

  3.调用wasm合约

  下文,将演示通过sdk调用wasm合约,

  sdk_user_contract_claim_test.go

  func testUserContractClaimInvoke(clientChainClient,method string,withSyncResult bool)(string,error){curTime:=fmt.Sprintf("%d",CurrentTimeMillisSeconds())fileHash:=uuid.GetUUID()params:=map[string]string{"time":curTime,"file_hash":fileHash,"file_name":fmt.Sprintf("file_%s",curTime),}err:=invokeUserContract(client,claimContractName,method,"",params,withSyncResult)if err!=nil{return"",err}return fileHash,nil}func invokeUserContract(clientChainClient,contractName,method,txId string,params map[string]string,withSyncResult bool)error{resp,err:=client.InvokeContract(contractName,method,txId,params,-1,withSyncResult)if err!=nil{return err}if resp.Code!=common.TxStatusCode_SUCCESS{return fmt.Errorf("invoke contract failed,[code:%d]/[msg:%s]n",resp.Code,resp.Message)}if!withSyncResult{fmt.Printf("invoke contract success,resp:[code:%d]/[msg:%s]/[txId:%s]n",resp.Code,resp.Message,resp.ContractResult.Result)}else{fmt.Printf("invoke contract success,resp:[code:%d]/[msg:%s]/[contractResult:%s]n",resp.Code,resp.Message,resp.ContractResult)}return nil}

  4.创建及调用evm合约

  sdk-go/examples/user_contract_evm_balance/main.go(https://git.chainmaker.org.cn/chainmaker/sdk-go/-/blob/master/examples/user_contract_evm_balance/main.go)

  5.更多示例和用法

  更多示例和用法,请参看单元测试用例

  功能单测代码用户合约sdk_user_contract_test.go系统合约sdk_system_contract_test.go链配置sdk_chain_config_test.go证书管理sdk_cert_manage_test.go消息订阅sdk_subscribe_test.go

相关文章
|
8月前
|
人工智能 安全 物联网
NFT铸造智能合约代币质押系统开发|逻辑原理
智能合约是DAPP的核心组成部分,它负责处理应用程序的业务逻辑。
|
存储 区块链
DAPP/LP/DEFI智能合约流动性质押挖矿系统开发(详细及方案)丨源码案例
智能合约事实上是由计算机代码构成的一段程序,其缔结过程是:第一步,参与缔约的双方或多方用户商定后将共同合意制定成一份智能合约;
|
存储 前端开发 JavaScript
dapp/defi智能合约流动性LP质押挖矿系统开发(开发源码案例)丨成熟技术
Dapp:代表去中心化应用程序。它们是在去中心化网络或区块链上运行后端代码(主要用Solidity编写的智能合约)的应用程序。可以使用React、Vue或Angular等前端框架构建Dapp。
|
存储 算法 安全
dapp/lp/nft/defi质押挖矿开发运营版丨lp/nft/defi/dapp质押挖矿系统开发(逻辑及详情)丨质押挖矿成熟源码案例部署
SYSTEM_CONTRACT_DPOS_STAKE: 由于stake合约地址是由合约名通过sha256计算后base58编码得到的,为固定值;但base58的值可读、可写不便,容易配置出错,因此,对于stake合约的地址配置为合约名;链启动后可以通过该命令查询stake合约地址
|
缓存 算法 安全
浅谈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 {
|
区块链
defi/lp/nft/dapp代币预售合约流动性质押挖矿开发正式版,defi/lp/nft/dapp代币预售合约流动性质押挖矿系统开发(方案及详细)
 智能合约(Smart contract)是依托计算机在网络空间运行的合约,它以信息化方式传播、验证或执行合同,由计算机读取、执行,具备自助的特点。而区块链的去中心化,数据的防篡改,决定了智能合约更加适合于在区块链上来实现
dapp/defi/nft/lp借贷理财流动性质押挖矿开发功能版,dapp/defi/nft/lp借贷理财流动性质押挖矿系统开发(开发方案)
From the perspective of conceptual model,the metauniverse is the superposition of technology system,content system,economic system,cooperation system and governance system.The core of the technical system is integration,and its technical system should be characterized by open
|
区块链 索引
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.
defi丨dapp丨nft丨lp流动性质押挖矿分红开发详细,defi丨dapp丨nft丨lp流动性质押挖矿分红系统开发(源码版)
 Liquidity mining encourages users to pledge tokens and pledge vouchers to liquidity mining contracts. For users, using DeFi will not only gain the original profits, but also obtain liquidity mining rewards. Inspired by liquidity mining, it has promoted users to become the LP of DeFi and promoted th