gpt4 book ai didi

rust - 两个 NEAR 协议(protocol)智能合约之间的交叉通信命名结构是如何确定的?

转载 作者:行者123 更新时间:2023-12-03 11:38:49 25 4
gpt4 key购买 nike

在两个 NEAR 协议(protocol)智能合约之间进行通信时。合约B如何访问合约A?
这个问题How to call different contract from its address?涵盖了这一点,但没有指定如何确定命名结构。
使用来自 https://github.com/near/core-contracts/blob/cd221798a77d646d5f1200910d45326d11951732/lockup/src/lib.rs#L64-L67 的示例

#[ext_contract(ext_whitelist)]
pub trait ExtStakingPoolWhitelist {
fn is_whitelisted(&self, staking_pool_account_id: AccountId) -> bool;
}
ext_whitelist 上面的合约是否部署为 ext_whitelist.near?搜索 near explorer似乎没有帐户 ext_whitelist.near
如何识别具有不同命名空间的另一个合约?
例如 contract1.contracts.near被识别为 #[ext_contract(contract1.contracts)]来自任何 .near 地址和 #[ext_contract(contract1)]来自 contracts.near地址?

最佳答案

我不确定我是否正确理解了这个问题。
但是 Rust 宏输入创建了 Rust 对象(如果我在这里使用了不正确的术语,请原谅)来与合约进行通信。您可以重复使用相同的 ext_whitelist跨多个合约的对象。
调用合约时会传递合约的实际地址:


ext_status_message::get_status(
env::signer_account_id(),
&account_id,
0,
SINGLE_CALL_GAS,
),
最后三个参数是
  • 合约地址为 account_id
  • 0 - 我不知道
  • 分配气体

  • 这不是非常优雅的设计选择,因为阅读和使用非常困惑。我建议创建 Contract与其他区 block 链中的实例一样,而不是将合约地址显式传递给每个合约调用。

    关于rust - 两个 NEAR 协议(protocol)智能合约之间的交叉通信命名结构是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64200042/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com