javascript - 将帐户传递给 near-js-api 函数调用
问题描述
我正在尝试near-js-api
为我的合同调用以下方法。它以 RsutAccountId
作为参数。
序列化帐户并将其传递给合同的正确方法是什么?
此外,调用合约初始化器时是否有任何特殊注意事项?
#[near_bindgen]
impl BurnerPool {
#[init]
fn new(token_id: AccountId) -> Self {
assert!(!env::state_exists(), "Already initialized");
let pool = Self {
token_id: token_id,
total_received: 0,
};
return pool;
}
}
解决方案
AccountId
是一个字符串。所以只需粘贴一个字符串值。
注意事项:
最好先验证一个帐户,然后再对它进行任何操作:
#[inline] pub fn assert_account_is_valid(a: &AccountId) { assert!( env::is_valid_account_id(a.as_bytes()), format!("{} account ID is invalid", a) ); }
如果在使用前严格要求合约初始化,如果别人代替你初始化它会发生不好的事情(例如设置所有者地址),那么您可以添加一些保护方法(例如在智能合约中硬编码哈希并做原像)检查
new
方法)。如果一个合约不应该被初始化两次,那么总是
!env::state_exists()
用调用assert
,就像你做的那样。
推荐阅读
- python - 创建插入到mysql脚本
- sockets - Elixir 套接字重复 STX 和 ETX 作为响应
- html - 如何在网页上显示 .thb 文件?
- java - 在 Intellij 中编辑的 JMeter 外部 JSR223 java
- python - 将每一行与数据框中的其他行进行比较
- asp.net - LINQ IQueryable 嵌套循环
- apache-spark - 调试 Livy 作业
- c++ - 在抛出 'std::bad_alloc' what(): std::bad_alloc 的实例后调用终止。动态分配不当?
- tensorflow - TF2.0 中的 TensorFlow 分析
- angular - 如何配置 Angular 应用程序以便每个人都可以针对后端 GCP 使用它