# 创建账户和钱包

# 介绍

在比原中,账户是一种可以通过追踪控制程序(control program)或者地址(address),来确定资产在区块链上所有权而进行抽象的实体。控制程序或地址会出现在每一笔交易的输出中。其中,控制程序定义了一系列在花费这笔输出时必须满足的条件;地址通过对公钥或脚本进行hash计算生成。控制程序和地址都可以作为一笔交易的输出地址,当下一笔交易花费该输出时,需要与输出地址对应公钥相匹配的私钥进行签名。

在本地可以存在多个账户实体,账户实体并不会保存到区块链上,而只会存在于本地,只有在账户中创建的控制程序或地址才会出现在区块链上。然而,当一笔交易被处理时,依附于本地的账户数据可以提供更加强大且对用户更易于理解的查询

# 创建密钥

在创建钱包之前,首先需要创建密钥

// Request
curl -X POST create-key -d '{"alias": "alice", "password": "123456", "language": "en"}'

// Result
{
  "status": "success",
  "data": {
    "alias": "alice",
    "xpub": "6f9d945cd03cce033f4a2a9fd5659d3ddfa58e2d32f8c711baca0de0aae83ff6d67f4f4e53f3ff0b3c11bac2a11123c26c7c32e0478e6cf802ca1109941bb45b",
    "file": "/home/yang/.bytom/keystore/UTC--2018-10-10T07-09-17.509894697Z--341695b9-9223-470c-a26d-bea210f8e1bb",
    "mnemonic": "price put soldier kitten beef garlic release burden symptom jump purity flower"
  }
}

# 创建账户

创建一个钱包账户,将上一步产生的xpub作为参数传入

curl -X POST create-account -d '{"root_xpubs":["6f9d945cd03cce033f4a2a9fd5659d3ddfa58e2d32f8c711baca0de0aae83ff6d67f4f4e53f3ff0b3c11bac2a11123c26c7c32e0478e6cf802ca1109941bb45b"],"quorum":1,"alias":"alice"}'

// Result
{
  "status": "success",
  "data": {
    "id": "4b5d460c-7773-4b6e-94ee-4d074df31729",
    "alias": "alice",
    "xpubs": [
  "6f9d945cd03cce033f4a2a9fd5659d3ddfa58e2d32f8c711baca0de0aae83ff6d67f4f4e53f3ff0b3c11bac2a11123c26c7c32e0478e6cf802ca1109941bb45b"
    ],
    "quorum": 1,
    "key_index": 1,
    "derive_rule": 1
  }
}

其中quorum代表签名的数量,单签设置为1,多签设置大于1

# 创建地址

创建账户完成后,可以创建地址,需要输入账户别名和ID

curl -X POST create-account-receiver -d '{"account_alias": "alice", "account_id": "4b5d460c-7773-4b6e-94ee-4d074df31729"}'

{
  "status": "success",
  "data": {
    "control_program": "0014b649dc914cb95a2a263604319b00fc3995c06cd4",
    "address": "bn1qkeyaey2vh9dz5f3kqscekq8u8x2uqmx5h6p06c"
  }
}

创建完地址后,即可使用该地址进行收款了

上次更新: 2021/8/27下午6:07:22