【问题标题】:Sub account access keys and storage staking子账户访问密钥和存储质押
【发布时间】:2021-07-23 09:54:16
【问题描述】:

假设一个存在于帐户 factory.near 上的合约有一个 create 方法,该方法可以创建子帐户并将合约部署到它,如下所示..

    const promise = ContractPromiseBatch.create(subaccount)
      .create_account()
      .deploy_contract(Uint8Array.wrap(changetype<ArrayBuffer>(CODE)))
      .add_full_access_key(base58.decode(Context.senderPublicKey))
      .function_call(
        "init",
        new PlaceInitArgs(Context.sender),
        Context.attachedDeposit,
        XCC_GAS
      )
  1. 持有工厂合约的父账户是否自动拥有子账户的完全访问权限或函数调用访问权限?
  2. 由于部署了同一个 WASM 文件,所有子账户是否都具有相同的合约哈希?
  3. 如果附加的押金不足以质押存储会怎样?是否会在未部署合约的情况下创建帐户,或者两者都会失败?
  4. 如果子账户被删除,作为存储的 NEAR 代币是否也会在删除函数调用中返回给指定的受益人?

【问题讨论】:

    标签: smartcontracts nearprotocol


    【解决方案1】:

    持有工厂合约的父账户是否自动拥有子账户的完全访问权限或函数调用访问权限?

    不,帐户之间的访问控制不起作用。说某些帐户对其他帐户具有完全访问权限是无效的。当且仅当您拥有该帐户的完全访问密钥(私钥)时,您才具有对该帐户的完全访问权限。

    由于部署了相同的 WASM 文件,所有子账户是否都具有相同的合约哈希?

    是的,如果它们是以这种方式创建的。

    如果附加的押金不足以质押存储会怎样?是否会在没有部署合约的情况下创建帐户,或者两者都会失败?

    操作在一张收据中分批。收据的执行是原子的——它要么成功,要么回滚其间触及的整个状态。在这种情况下,如果附加存款不足,则创建帐户将失败。

    如果子账户被删除,作为存储的 NEAR 代币是否也会在删除函数调用中返回给指定的受益人?

    是的

    【讨论】:

      猜你喜欢
      • 2017-03-23
      • 2021-03-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多