【问题标题】:How does near protocol distinguish between contracts?近协议如何区分合约?
【发布时间】:2020-09-09 01:31:45
【问题描述】:

https://examples.near.org/rust-status-message

您可以使用以下方式部署您的智能合约:

near deploy --wasmFile res/status_message.wasm --accountId YOUR_ACCOUNT_NAME

我们正在调用合约函数 set_status 使用:

near call YOUR_ACCOUNT_NAME set_status '{"message": "aloha friend"}' --accountId YOUR_ACCOUNT_NAME

函数在这里:

#[near_bindgen]
impl StatusMessage {
    pub fn set_status(&mut self, message: String) {
        env::log(b"A");
        let account_id = env::signer_account_id();
        self.records.insert(&account_id, &message);
    }

    pub fn get_status(&self, account_id: String) -> Option<String> {
        env::log(b"A");
        return self.records.get(&account_id);
    }
}

near协议如何区分合约?

如果其他一些合约有 set_status 函数,它会调用哪个合约函数。另外,如果我重新部署合同并运行该功能怎么办。它会调用哪个合约函数?

【问题讨论】:

    标签: nearprotocol


    【解决方案1】:

    以下是您需要了解的内容,希望能够解决这个问题:

    • 部署到 NEAR 的每个合约必须消耗 1 个帐户。
    • NEAR 上的每个帐户必须有 0 或 1 个合约
    • 帐户名称遵循类似于 DNS 的模式,网络为顶级
      • your-account.testnet 可能是您在 TestNet 上的主要开发者帐户
      • contract-v1.your-account.testnet 可能是您编写的合同的 v1
      • your-token.your-account.testnet 可以是您控制的 fungible token

    在使用我们的示例时,部署过程使用 near dev-deploy 命令,该命令分 2 步执行 4 件事(请参阅来自 NEAR Explorer 的附件图片)

    第一步(批量交易)

    • 1.1。创建新帐户 (your-account)
    • 1.2。用 100 NEAR 从水龙头为账户注资
    • 1.3。将FullAccess 密钥添加到该帐户

    第二步

    • 2.1 将合约(path/to.wasm)部署到新账户(your-account

    您在上面包含的部署命令

    near deploy --wasmFile path/to.wasm --accountId YOUR_ACCOUNT_NAME
    

    只做最后一步,2.1

    对于第 1 步中的前 3 件事(1.1 - 1.3),您将需要以下内容:

    near create_account a-contract-on.your-account.testnet --master-account your-account.testnet --helper-url https://helper.testnet.near.org
    

    your-account.testnet 是使用 NEAR Wallet 预先创建的

    您可以查看以下链接了解更多详情:

    【讨论】:

    • 文档说合约是可升级的。 “后续部署会覆盖合约代码而不影响存储(保存合约代码的状态密钥除外)”然后它如何保持去中心化,因为合约代码将保持在合约部署者的控制之下。
    • 账户的访问权限似乎受限,例如多重签名和锁定合约。
    • 要使合约不可信,所有者通常需要删除所有完整的访问密钥,有时也需要删除所有访问密钥。
    • 以及如何删除完整的访问密钥?
    • near delete-key &lt;account-id&gt; &lt;access-key&gt; 见:docs.near.org/docs/development/near-cli#near-delete-key
    猜你喜欢
    • 2018-06-21
    • 2020-11-26
    • 2022-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2021-01-19
    相关资源
    最近更新 更多