在近程协议中创建主账号需要押金。这可能会给应用程序用户带来很大的困难。创建子账号是免费的,但最好的方法是不暴露主账号私钥。我是否应该将主账号的私钥存储在服务器中,并允许用户创建该账号?
Near api js允许创建帐户,是否可以使用python,或者从python调用json rpc?
发布于 2021-01-08 02:49:09
另一个不需要您的FullAccessKey的选项是通过部署到您的帐户的合同创建子帐户。
如果你使用rust和near-sdk-rs,你应该调用create_account函数。以下是文档中有关如何使用它的示例:
Promise::new("bob_near".to_string())
.create_account()
.transfer(1000)
.add_full_access_key(env::signer_account_pk());下面是创建子账号的合同代码:
use borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::{env, near_bindgen, AccountId, Balance, Promise};
#[global_allocator]
static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
#[near_bindgen]
#[derive(Default, BorshDeserialize, BorshSerialize)]
pub struct Registry {}
#[near_bindgen]
impl Registry {
#[init]
pub fn init() -> Self {}
#[payable]
pub fn create_account(&mut self, name: AccountId, balance: Balance) -> Promise {
let target = format!("{}.{}", name, env::current_account_id());
// Here add some rules in case you don't want everyone
// to claim any unclaimed sub-account.
Promise::new(target)
.create_account()
.transfer(balance)
.add_full_access_key(env::signer_account_pk())
}
}要创建任何子账号,任何用户都可以在合约中调用函数create_account函数,传入子账号的名称(只有点前的前缀)和用于初始化帐户的余额。
即使主帐户不再有任何FullAccessKey,这也会起作用。
https://stackoverflow.com/questions/65614492
复制相似问题