near protocol如何区分合约?

How does near protocol distinguish between contracts?

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函数怎么办,它将调用哪个合约函数。另外,如果我重新部署合同和 运行 功能怎么办。它会调用哪个合约函数?

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

  • 每个部署到 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.1。创建新帐户 (your-account)
  • 1.2。使用 100 NEAR
  • 从水龙头为账户注资
  • 1.3。将 FullAccess 密钥添加到该帐户

步骤 2

  • 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

预先创建的

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