如何向PTE发送已签名manifest实现与已发布包交互
向PTE提交签名Manifest获取Badge的具体操作步骤
前提:你已经通过resim publish完成包发布,拿到了PTE网络上的包地址,且本地resim已经导入了你在PTE上持有的、有足够测试XRD余额的个人账户。
第一步:编写操作Manifest
新建后缀为.rtm的Manifest文件,核心逻辑要覆盖锁付gas、调用合约发badge、将操作产生的资产存入你的账户三个环节,参考结构如下:// 从你的账户锁定部分测试XRD作为gas,建议填5-20,多余gas执行后会自动退回 CALL_METHOD Address("你的PTE个人账户地址") "lock_fee" Decimal("10") ; // 调用你已发布包中发放badge的对应方法,按需补全方法参数 CALL_FUNCTION Address("resim publish返回的PTE网络包地址") "你的合约模块名" "发放badge的方法名" // 如果方法需要入参,按参数类型顺序逐行填写即可 ; // 将交易执行后工作台上的所有资产(包含目标badge)全部存入你的账户 CALL_METHOD Address("你的PTE个人账户地址") "deposit_batch" Expression("ENTIRE_WORKTOP") ;注意:如果你的badge发放方法设置了权限校验,要确认Manifest的调用逻辑和参数完全匹配合约的权限规则,避免交易报权限错误。
第二步:对Manifest做网络签名
PTE网络不认本地模拟器的默认测试签名,必须用你PTE账户对应的私钥完成签名,执行命令:resim sign-manifest --manifest ./你的manifest文件路径.rtm --signer-key 你的PTE账户私钥 --network-id <PTE对应网络ID>如果不确定PTE对应的网络ID,可以先执行
resim show-config查看当前resim连接PTE时的默认network-id,保持参数一致即可。命令执行完成后,会在同目录生成带.signed后缀的已签名Manifest文件。第三步:提交签名后的Manifest到PTE
执行提交命令:resim submit --signed-manifest ./生成的已签名manifest文件路径.rtm.signed --network-id <和签名步骤一致的PTE网络ID>提交成功后终端会返回交易哈希,等待3-10秒网络出块确认后,执行以下命令查询你的账户资产,就能看到返回的目标badge:
resim show 你的PTE个人账户地址 --network-id <和之前一致的PTE网络ID>
常见踩坑提醒:
- 不要混用本地模拟器生成的地址和PTE网络地址,Manifest里填的包地址、账户地址必须全是PTE网络下生成的有效地址
- 锁gas金额不要设置过低,PTE网络执行合约的gas成本略高于本地模拟器,设置10个测试XRD基本能覆盖绝大多数合约操作
- 签名用的私钥必须对应你填在Manifest里的账户地址,且该账户在PTE上有足够的测试XRD余额支付gas,否则交易直接失败
内容的提问来源于stack exchange,提问作者Miro Liebschner
相关产品推荐
相关产品推荐

