0

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 call cross_contract deploy_status_message '{"account_id": "status_message", "amount":1000000000000000}' --accountId mainaccount

你能解释一下这个 Promise 链吗:

1)它需要参数status_messageas account_idcreate_account应该创建一个帐户status_message,但是

near state status_message

给出错误

account status_message does not exist while viewing

2)还有什么应该

include_bytes!(...) 

包含,哪个字符串?

3)这里有什么传递函数?是否需要1000000000000000mainaccount并存入status_message账户?

4)add_full_access_key将完全访问密钥添加到哪个帐户?status_message? env::signer_account_pk()作为论证的必要性是什么?

4

1 回答 1

1

1 确实如此。您可能有错误的环境变量,因此最终会查询不同的网络。 UPD:示例已损坏。在此处修复https://github.com/near/near-sdk-rs/pull/193

2 include_bytes 是一个内置的 rust 宏,与 near-sdk-rs 无关。见https://doc.rust-lang.org/beta/std/macro.include_bytes.html

3 不知道是什么mainaccount,但是它将1000000000000000从合约账户的当前账户余额转移到status_message账户。请注意,当前账户余额也包括附加存款。

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

于 2020-06-20T16:08:04.173 回答