一个账户可视为在线的访问凭证。nodeos管理着在区块链上发布账户以及与账户相关联的行为。我们通过cleos与nodeos的交互,来实现账户的管理。
钱包与账户之间没有天然的内在联系。账户并不知道钱包的存在,反之钱包也不知道账户的存在。
在区块链上执行操作,需要使用到账号。我们使用cleos向nodeos发起请求来创建账号并且将账号发布到区块链中。在执行创建账号操作之前,我们必须确保nodeos处于运行状态。
1.创建一个新帐户
帐户需要由其他帐户创建。“eosio”是一个可授权账号。当在区块链上进行操作时必须使用eosio账号进行签名。eosio账号同时还是特殊的账号用来启动EOSIO节点,它的密码对信息信息可以在nodeos的配置文件中找到(默认在 ~/.local/shared/eosio/config/config.ini
)。
假设你按照之前钱包管理一文中的说明操作,你现在应该有一个处于解锁状态的钱包,其中包含3个密钥对。
确定你使用的是你生成的公钥,而不是下面显示的公钥。
$cleos --wallet-url http://wallet:5555 -u http://server:7777 create account eosio mynewaccount {MyNewAccount owner Public Key} {MyNewAccount active Public Key}
$cleos --wallet-url http://wallet:5555 -u http://server:7777 create account eosio mynewaccount EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN
命令说明:
$ cleos create account ${authorizing_account} ${new_account} ${owner_key} ${active_key}
- authorizing_account: 授权的账号名称,用来支付账号创建以及后续其他新账号的费用。
- new_account:希望创建的新账号。
- owner_key:拥有拥有者权限的账号的公钥(详见账号与权限)。
- active_key:希望分配给活跃权限公钥。
响应后看起来应该是这样的:
executed transaction: d4a764ae9c728f9a2c95537613445f059e4833d1cde12504f6d6e88ec10951ab 352 bytes 102400 cycles
# eosio <= eosio::newaccount {"creator":"eosio","name":"mynewaccount","owner":{"threshold":1,"keys":[{"key":"EOS6MRyAjQq8ud7hVNYc...
请注意,帐户名称必须为小写,且应小于13个字符。(仅包含以下符号.12345abcdefghijklmnopqrstuvwxyz)。请注意,不允许使用6,7,8,9,0。
2.账户信息查询
$cleos -u http://server:7777 get account mynewaccount -j
{
"account_name": "mynewaccount",
"permissions": [{
"perm_name": "active",
"parent": "owner",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS5tJQSKKeiTUZEutPo9SWUoCeovV43kWxGuW21K663frcHw7GnN",
"weight": 1
}
],
"accounts": []
}
},{
"perm_name": "owner",
"parent": "",
"required_auth": {
"threshold": 1,
"keys": [{
"key": "EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF",
"weight": 1
}
],
"accounts": []
}
}
]
}
或者也可以将所有帐户链接到给定的公钥:
$cleos -u http://server:7777 get accounts EOS7EzCEh94uN2k59wznzsZDcFVnpZ3wuiYvPSbb8bXDS6U7twKQF
{
"account_names": [
"mynewaccount",
"test1"
]
}