近 sdk 承诺的解释



https://docs.rs/near-sdk/0.11.0/near_sdk/struct.Promise.html

在交叉合约调用示例中

它包含以下承诺

impl CrossContract {
pub fn deploy_status_message(&self, account_id: String, amount: u64) {
Promise::new(account_id)
.create_account()
.transfer(amount as u128)
.add_full_access_key(env::signer_account_pk())
.deploy_contract(
include_bytes!("../status-message-contract/status_message.wasm").to_vec(),
);
}

这是用于调用deploy_status_message的 near 命令

near call cross_contract deploy_status_message '{"account_id": "status_message", "amount":1000000000000000}' --accountId mainaccount

你能解释一下这个承诺链吗:

1(它以参数status_messageaccount_idcreate_account应该创建一个帐户status_message, 但

near state status_message

给出错误

account status_message does not exist while viewing

2(也应该做什么

include_bytes!(...) 

包含,哪个字符串?

3(这里有什么传递函数?是否从mainaccount中取出

1000000000000000 并将其存入status_message

帐户?4(add_full_access_key将完全访问密钥添加到哪个帐户?status_messageenv::signer_account_pk()作为论据有什么必要?

1 确实如此。您可能有错误的 env var,因此最终查询了不同的网络。UPD:这个例子坏了。https://github.com/near/near-sdk-rs/pull/193 在此处修复。

2 include_bytes 是一个内置的 Rust 宏,与近 SDK-RS 无关。请参阅 https://doc.rust-lang.org/beta/std/macro.include_bytes.html

3 不确定是什么mainaccount,但它将 100000000000000000 从合约账户的经常账户余额转移到status_message账户。请注意,活期账户余额也包括附加的存款。

4 是的,它添加到status_message帐户。要添加密钥,您需要指定要添加的密钥,env::signer_account_pk()会为您提供密钥。

最新更新