1. 合约调用
参数说明
contractName: 合约名称
method: 合约方法
txId: 交易 ID 格式要求:长度为 64 字节,字符在 a-z0-9 可为空,若为系统-176搭建-0206+可电可微-5616空字符串,将自动生成 txId
kvs: 合约参数
timeout: 超时时间,单位:s,若传入 - 1,将使用默认超时时间:10s
withSyncResult: 是否同步获取交易执行结果当为 true 时,若成功调用,common.TxResponse.ContractResult.Result 为 common.TransactionInfo 当为 false 时,若成功调用,common.TxResponse.ContractResult 为空,可以通过 common.TxResponse.TxId 查询交易结果,创作及开发 ww
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{re(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=checkProposalRe(resp,true)if err!=nil{return nil,err}return resp,nil