创建新账户
账户对于区块链来说必不可少。它是由唯一的 账户名 以及一连串的密钥组成。
为了避免随意创建账户,DCore的新账户由现有账户注册,注册费用由现有账户承担。用户可以通过 网络钱包 和其他工具(如CLI_wallet)创建账户。
网络钱包 可免费为新用户创建账户,用户也无需知道是谁承担了注册费用。这是Decent用新用户注册账户提供的一种服务。
创建您的第一个账户
如上所述,为创建新账户(也就是您的第一个账户),您需要通过一个已经在DCore区块链注册的现有账户来帮您完成注册。为此,您只需要向为您注册的现有账户/注册者提供 账户名 和 公钥。为保证您的账户安全,请不要向任何人提供您的 助记词 或 私钥 。通过以下方法操作来获取您的 助记词 , 私钥 和 公钥,这些与用户名一起共同确定您的 账户名 。
密钥生成
提醒
若您忘记了登录信息,助记词是您找回账户的唯一凭证。
具体操作:
钱包API函式 suggest_brain_key 生成新的 助记词 以及对应的 私钥 和 公钥,用于创建新的账户。
- 助记词 - 一长串16个随机组成的单词,其足够生成一个 私钥。
- 建议的助记词 - 一串容易且方便记忆的字符。
brain_key_info suggest_brain_key();
返回值
- 建议的 助记词, 私钥 (WIF/钱包导入格式)和 公钥。
调用 - 助记词
suggest_brain_key
回应
suggest_brain_key
{
"brain_priv_key": "SMUG NAPHTHA OCHER WHELM SOVCERY PIGLY GUDGET LOTA SELF LATEX GNOSTIC GIFT IDANT THEYLL SPLOTCH FIXATE",
"wif_priv_key": "9JBQVbjNkjRqT4GZJpdmbt7AS5ji8VfN42cfFQ9v5PZpRyVub8f",
"pub_key": "DCT9SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc"
}
另一个生成新密钥的方法是利用密钥生成器程序,该程序支持线下生成密钥。以上的两种方法都可以生成密钥。
可通过返回的 公钥 在DCore创建账户。关于 注册账户 的方法,在接下来的部分会介绍。
通过wif_priv_key向钱包导入新创建的账户信息,接下来如何向CLI钱包导入账户信息也会在这部分介绍。
利用已生成的公钥注册账户
重要提示
请您依照RFC 1035文法为您的账户设置账户名(例如:长度至少5个字符,以字母开头,所有字母必须小写,非字母和数字的字符只能包括小数点和连字符等)
友情提示,以下方法可供注册者使用。
方法说明:
注册账户 - 在DCore区块链上注册第三方账户。这个功能适用于您(作为注册者)在注册新账户,但您不拥有该账户的私钥,且该账户不存于DCore区块链上。作为注册者,最终用户会生成他们自己的个人密钥,并将公钥发送给您。注册者会通过这个方法代表最终用户注册账户。
signed_transaction register_account(string name,
public_key_type owner,
public_key_type active,
string registrar_account,
bool broadcast = false);
参数:
- name - 账户名, 账户名在DCore区块链是唯一的。
- owner - owner - 新账户的所有者密钥。此密钥代表对该账户的绝对控制权。通常情况下,更新账户密钥时才会用到该密钥。
- active - 新账户的活跃密钥。活跃密钥代表着账户的常用密钥。此密钥可以控制该几乎该账户所有的操作。
- registrar_account - 该账户支付注册费并且为交易签名。
- broadcast - 当该数值为真时,交易就会在全网广播。
重要提示
除所有者密钥和活跃密钥外,账户也需要 备忘密钥(memo_key) ,可用于加密/解密交易备忘。运用此种方法, 备忘密钥(memo_key)等同于 活跃密钥(active_key) 。
为了操作更简便,我们在以下示例中使用相同的所有者密钥和活跃密钥。虽然这样的设置是有效的,但却会降低账户的安全性。
另外,需要提到的是,账户密钥可以随后变更。
返回值:
注册账户的签名交易
调用 - registrar_account :
register_account accountname DCT8SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc \
DCT8SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc decent true
回应:
register_account accountname DCT9SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc DCT9SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc decent true
{
"ref_block_num": 24034,
"ref_block_prefix": 2856729761,
"expiration": "2017-11-13T13:11:10",
"operations": [[
1,{
"fee": {
"amount": 500000,
"asset_id": "1.3.0"
},
"registrar": "1.2.15",
"name": "accountname",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [[
"DCT9SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [[
"DCT9SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc",
1
]
]
},
"options": {
"memo_key": "DCT9SFcioQFYXnNHNSAEcLb5o5EovrhjPk4SMbYnag6t6VhwuvMAc",
"voting_account": "1.2.3",
"num_miner": 0,
"votes": [],
"extensions": [],
"allow_subscription": false,
"price_per_subscribe": {
"amount": 0,
"asset_id": "1.3.0"
},
"subscription_period": 0
},
"extensions": {}
}
]
],
"extensions": [],
"signatures": [
"1f4d1caa9fffa8c7723169bcce6de18ca1acc306b60e07e9efd0906e8fdb02f5cc69961f59271c89b900917d764462157110ac4092e0f767233db9fd31ea69aaae"
]
}
向CLI钱包导入账户
如果您已经在区块链平台上注册了账户,您需要导入账户信息以使用CLI钱包。下面会为您展示具体操作:
方法说明:
import_key - 输入账户的个人密钥。
bool import_key(string account_name_or_id,
string wif_key);
参数:
- account_name_or_id - 密钥所有者账户
- wif_key WIF格式下的个人密钥
返回值:
- 密钥与账户相符,返回值为 true 。
调用 - import_key :
import_key decent 9JBQVbjNkjRqT4GZJpdmbt7AS5ji8VfN42cfFQ9v5PZpRyVub8f
回应:
import_key decent 9JBQVbjNkjRqT4GZJpdmbt7AS5ji8VfN42cfFQ9v5PZpRyVub8f
true
创建可自动导入CLI钱包的新账户
在这一部分,我们会展示如何通过您已有的账户创建另一个账户。以下方法既包括如何创建账户,也包括向CLI钱包导入账户信息。
方法说明:
- create_account_with_brain_key - 需要您指定一个 brain key 。
signed_transaction
create_account_with_brain_key(string brain_key,
string account_name,
string registrar_account,
bool broadcast = false);
参数:
- string brain_key - 用于生成账户密钥的助记词。
- string account_name - 账户名,在区块链上具有唯一性并且最少包含5个字符。
- string registrar_account - 为用户支付费用的账户。
- broadcast - 当数值为真,交易信息会在全网络公布。
调用 - create_account_with_brain_key :
create_account_with_brain_key \
"SMUG NAPHTHA OCHER WHELM SOVCERY PIGLY GUDGET LOTA SELF LATEX GNOSTIC GIFT IDANT THEYLL SPLOTCH FIXATE" \
accountname decent true
回复:
create_account_with_brain_key "SMUG NAPHTHA OCHER WHELM SOVCERY PIGLY GUDGET LOTA SELF LATEX GNOSTIC GIFT IDANT THEYLL SPLOTCH FIXATE" accountname decent true
{
"ref_block_num": 32575,
"ref_block_prefix": 1149709988,
"expiration": "2017-12-21T14:50:25",
"operations": [[
1,{
"fee": {
"amount": 500000,
"asset_id": "1.3.0"
},
"registrar": "1.2.15",
"name": "accountname",
"owner": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [[
"DCT8NC1kNjEeqRp8SnEPQWtpeCLoJRuquH5jHtE78NNTthSi6t2uX",
1
]
]
},
"active": {
"weight_threshold": 1,
"account_auths": [],
"key_auths": [[
"DCT71c3ord9nDJuVipGgZMcALLzya9DRqu2ms9dpyn4pv5wTMMNRx",
1
]
]
},
"options": {
"memo_key": "DCT7ZdBtDtrAXCidXHPNrMyagegBLN8ruv6EmJ5EYdq6rYJLPztuH",
"voting_account": "1.2.3",
"num_miner": 0,
"votes": [],
"extensions": [],
"allow_subscription": false,
"price_per_subscribe": {
"amount": 0,
"asset_id": "1.3.0"
},
"subscription_period": 0
},
"extensions": {}
}
]
],
"extensions": [],
"signatures": [
"20124f6d942d7eaf555c7c3bc420d35b877123ef63d1440edc904b5ae46c17df1d53dc433a3a1785ae8f9dba7a366639be140ecf0278a369100744189eaadb5989"
]
}
信息
如上面的示例,此方法确定可以从 所有者密钥(owner_key)中生成不同的 活跃密钥(active_key)和 备忘密钥(memo_key)。