MVM
警告
mvm 相关调用 sdk 最低版本: >= 3.1.3
#
1. 无需资产的合约调用指不需要资产的合约调用。只是为了修改 mvm 合约的状态而调用。
- 默认是使用
0.00000001 CNB
来做合约调用,调用完毕之后会尝试退回。- 如果期望使用其他币种和数量来调用,请参见这里
#
1. Messenger 用户调用client.paymentGeneratorByContract({ contracts: [ { address: '0x2E8f70631208A2EcFC6FA47Baf3Fde649963baC7', method: 'addAny', types: ['uint256'], values: ['10'], }, ],});
返回值:
{ "type": "payment", "trace_id": "5f4a39ea-69c3-48aa-ab1f-e19bf64738da", "asset_id": "965e5c6e-434c-3fa9-b780-c50f43cd955c", "amount": "0.00000001", "threshold": 5, "receivers": [ "d5a3a450-5619-47af-a3b1-aad08e6e10dd", "9d4a18aa-9b0a-40ed-ba57-ce8fbbbc6deb", "2f82a56a-7fae-4bdd-bc4d-aad5005c5041", "f7f33be1-399a-4d29-b50c-44e5f01cbb1b", "23a070df-6b87-4b66-bdd4-f009702770c9", "2385639c-eac1-4a38-a7f6-597b3f0f5b59", "ab357ad7-8828-4173-b3bb-0600c518eab2" ], "memo": "G9Zwhyds4yY7kzOqM34hKkAAAAAAA8AAEuj3BjEgii7PxvpHuvP95kmWO6xwAkd60KqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK", "created_at": "2022-08-19T02:25:07.410174964Z", "status": "pending", "code_id": "bf7a02fa-7ae5-4fe8-be2e-0d42bcfcaccf"}
说明:
- 让 mixin messenger 的用户打开
mixin://codes/bf7a02fa-7ae5-4fe8-be2e-0d42bcfcaccf
链接,完成支付之后,合约即调用成功。bf7a02fa-7ae5-4fe8-be2e-0d42bcfcaccf
的来源是上述返回值中的code_id
- 合约调用需要交易,默认的币种是 CNB,数量是最小单位 0.00000001,或者指定任何其他的资产和数量都可以。
- 所有合约调用结束之后,会尝试退还转入的资产。也就是说如果合约本身没有使用上述调用的 0.00000001 CNB 的话,会尝试给调用者退还转入的资产。
#
2. 机器人用户调用async function main() { const txInput = await client.paymentGeneratorByContract({ contracts: [ { address: '0x2E8f70631208A2EcFC6FA47Baf3Fde649963baC7', method: 'addAny', types: ['uint256'], values: ['10'], }, ], payment: { type: 'tx', }, }); const res = await client.transaction(txInput);}
txInput 的值为:
{ "asset_id": "965e5c6e-434c-3fa9-b780-c50f43cd955c", "amount": "0.00000001", "trace_id": "3b8d0f7e-e10a-4913-817e-215b8c09a451", "memo": "G9Zwhyds4yY7kzOqM34hKkAAAAAAA8AAEuj3BjEgii7PxvpHuvP95kmWO6xwAkd60KqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK", "opponent_multisig": { "receivers": [ "d5a3a450-5619-47af-a3b1-aad08e6e10dd", "9d4a18aa-9b0a-40ed-ba57-ce8fbbbc6deb", "2f82a56a-7fae-4bdd-bc4d-aad5005c5041", "f7f33be1-399a-4d29-b50c-44e5f01cbb1b", "23a070df-6b87-4b66-bdd4-f009702770c9", "2385639c-eac1-4a38-a7f6-597b3f0f5b59", "ab357ad7-8828-4173-b3bb-0600c518eab2" ], "threshold": 5 }, "pin": "/xxxxxxxxx/xxxxxxxxxxxx/xxxxxxxxxxxxxxxxx"}
res 的值为:
{ "type": "raw", "snapshot_id": "f16a01ab-7b53-43ba-9bf4-6f8c585d87e2", "opponent_key": "", "opponent_receivers": [ "d5a3a450-5619-47af-a3b1-aad08e6e10dd", "9d4a18aa-9b0a-40ed-ba57-ce8fbbbc6deb", "2f82a56a-7fae-4bdd-bc4d-aad5005c5041", "f7f33be1-399a-4d29-b50c-44e5f01cbb1b", "23a070df-6b87-4b66-bdd4-f009702770c9", "2385639c-eac1-4a38-a7f6-597b3f0f5b59", "ab357ad7-8828-4173-b3bb-0600c518eab2" ], "opponent_threshold": 5, "asset_id": "965e5c6e-434c-3fa9-b780-c50f43cd955c", "amount": "-0.00000001", "opening_balance": "1429369.81742709", "closing_balance": "1429369.81742708", "trace_id": "3c9cfd32-8757-4059-919e-ee9925e7c24e", "memo": "G9Zwhyds4yY7kzOqM34hKkAAAAAAA8AAEuj3BjEgii7PxvpHuvP95kmWO6xwAkd60KqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK", "state": "signed", "created_at": "1970-01-01T00:03:39+00:03", "transaction_hash": "5f06dce2278cfa43f00e11a514aecb12fc88ad498b847944fa2dabd7c8644f83", "snapshot_hash": "", "snapshot_at": "0001-01-01T00:00:00Z"}
不难发现,其实合约的调用本质上就是一笔多签交易,几个“节点”监听到了这笔签名的交易之后,会根据 memo 的信息解析出合约的相关信息,然后调用合约的方法。
#
2. 需要(指定)资产的合约调用Messneger用户调用
和 机器人用户的调用
请参见上一小节, 其实就是多了一个参数 payment.type='tx'
, 默认是 payment
这里默认使用生成 code_id
来让 Messenger 用户调用合约
const payment = await client.paymentGeneratorByContract({ contracts: [ { address: '0x2E8f70631208A2EcFC6FA47Baf3Fde649963baC7', method: 'addAny', types: ['uint256'], values: ['10'], }, ], payment: { asset: 'c94ac88f-4671-3976-b60a-09064f1811e8', amount: '1', trace: client.newUUID(), },});
{ "type": "payment", "trace_id": "1dc2b4d3-0d41-4bb5-a524-1b028b9fae8e", "asset_id": "c94ac88f-4671-3976-b60a-09064f1811e8", "amount": "1", "threshold": 5, "receivers": [ "d5a3a450-5619-47af-a3b1-aad08e6e10dd", "9d4a18aa-9b0a-40ed-ba57-ce8fbbbc6deb", "2f82a56a-7fae-4bdd-bc4d-aad5005c5041", "f7f33be1-399a-4d29-b50c-44e5f01cbb1b", "23a070df-6b87-4b66-bdd4-f009702770c9", "2385639c-eac1-4a38-a7f6-597b3f0f5b59", "ab357ad7-8828-4173-b3bb-0600c518eab2" ], "memo": "G9Zwhyds4yY7kzOqM34hKkAAAAAAA8AAEuj3BjEgii7PxvpHuvP95kmWO6xwAkd60KqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK", "created_at": "2022-08-19T02:53:10.346200826Z", "status": "pending", "code_id": "105b07fa-bc1b-4083-96b8-7d3b35390b50"}