You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ManifestBuilder.create_fungible_resource创建可替代资源遇权限错误求助

问题解决:ManifestBuilder调用deposit_batch触发AuthError

错误原因分析

你遇到的AuthError并非来自create_fungible_resource的OwnerRole配置,而是调用账户deposit_batch方法时缺少所有者证明。错误日志中fn_identifier明确指向Account:deposit_batch,说明权限验证失败发生在这个方法调用环节——账户的deposit_batch默认要求调用者提供账户所有者身份的证明,你的manifest未包含该步骤,因此触发权限拦截。

解决方案

需要在manifest中添加生成账户所有者证明的步骤,同时修正代码中的语法错误:

  1. 添加所有者证明生成步骤:在调用deposit_batch前,使用create_proof_of_address生成目标账户的所有者证明,满足方法的权限要求。
  2. 修复语法错误:你的代码中Some(dec!("1000000")缺少闭合括号),需补充完整。

修正后的代码

let manifest = ManifestBuilder::new()
   .lock_fee(FAUCET_COMPONENT, dec!("10"))
   .create_fungible_resource(
      OwnerRole::None,
      false,
      DIVISIBILITY_MAXIMUM,
      FungibleResourceRoles::single_locked_rule(AccessRule::AllowAll),
      metadata! {
         init {
            "name" => "Token1", locked;
            "symbol" => "TK1", locked;
         }
      },
      Some(dec!("1000000")) // 补充缺失的闭合括号
   )
   .create_proof_of_address(<account_address>) // 添加账户所有者证明
   .call_method(
      <account_address>,
      "deposit_batch",
      manifest_args!(ManifestExpression::EntireWorktop)
   )
   .build();

额外说明

  • 你之前调整OwnerRole的操作方向错误:OwnerRole控制的是新创建 fungible 资源的所有者权限,和账户方法的调用权限完全无关,因此无法解决当前问题。
  • create_proof_of_address会生成对应账户NonFungible身份的证明,这是调用账户核心方法(如deposit_batch、withdraw等)的通用权限验证要求。

内容的提问来源于stack exchange,提问作者Fred Liebenberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:43:27