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_message
为account_id
,create_account
应该创建一个帐户status_message
, 但
near state status_message
给出错误
account status_message does not exist while viewing
2(也应该做什么
include_bytes!(...)
包含,哪个字符串?
3(这里有什么传递函数?是否从mainaccount
中取出
status_message
帐户?4(add_full_access_key
将完全访问密钥添加到哪个帐户?status_message
?env::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()
会为您提供密钥。