账户和钱包(官网的中文版)

重要的提示

本课程适用于私有单节点testnet(如Docker快速入门),但可以在公共网络上进行微小修改。

介绍

 

课程观众

本课程适用于想要了解钱包和帐户管理,如何使用cleos管理钱包和帐户以及钱包和帐户管理EOSIO组件如何相互交互的开发人员。有关清除的更多信息,请参阅Cleos Command Reference

 

你将学到什么

您将学习如何创建和管理钱包及其密钥,然后使用此钱包通过区块链进行交互cleos。然后,您将学习如何使用创建帐户cleos。本教程将介绍一些之间的相互作用cleoskeosd以及nodeos签署发布到blockchain内容。

 

先决条件

  • 在您的系统上构建并运行cleos 和keosd的副本。
  • 构建并准备好在您的系统上运行nodeos的副本。
  • 对命令行界面的基本了解。

 

EOSIO账户和钱包概念概述

下图提供了EOSIO中帐户和钱包的简单概念视图。虽然还有其他受支持的部署配置,但此视图与我们将在本教程中使用的视图相匹配。

钱包可以被认为是公钥 - 私钥对的加密存储库。这些是签署区块链上执行的操作所必需的。钱包及其内容由管理keosd。钱包可以使用cleos

可以将帐户视为具有与其关联的访问权限的链上标识符(即,安全主体)。 nodeos管理区块链上的帐户和帐户相关操作的发布。nodeos还可以使用帐户管理功能cleos

帐户和钱包之间没有固有的关系。帐户不知道钱包,反之亦然。相应地,nodeos和之间没有固有的关系keosd。它们的基本功能根本不同。(尽管如此,有部署配置模糊了这种区别。但是,该主题超出了本教程的范围。

发生重叠的地方是需要签名时,例如签署交易。钱包通过将密钥本地存储在可以锁定的加密存储中,有助于以安全的方式获得签名。 cleos有效地充当keosd密钥检索操作和nodeos需要使用这些密钥生成的签名的帐户(和其他)区块链动作之间的中介。

 

创建和管理钱包

打开终端并切换到构建EOSIO的目录。这将使我们更容易进行交互cleos,这是与互动的命令行界面nodeoskeosd

请注意,cleos需要一个正在运行的实例keosd进行交互,它将keosd在第一次使用子命令运行它时启动一个实例。

  • shell
cd /path_to_eos/build/programs/cleos

你需要做的第一件事就是创造一个钱包; 使用wallet create命令cleos

  • shell
$ cleos wallet create --to-console
Creating wallet: default
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"A MASTER PASSWORD"

现在里面有一个名为default的钱包keosd,它已经返回了这个钱包的主密码。请务必将此密码保存在安全的地方。此密码用于解锁(解密)您的钱包文件。

此钱包的文件已命名default.wallet。默认情况下,keosd将钱包存储在~/eosio-wallet文件夹中。可以使用--wallet-dir参数在命令行上指定钱包数据文件夹的位置。

 

管理多个钱包和钱包名称

cleos能够管理多个钱包。每个钱包都受不同钱包主密码的保护。下面的示例创建了另一个钱包,并演示了如何使用该-n参数对其进行命名。

  • shell
$ cleos wallet create -n periwinkle --to-console
Creating wallet: periwinkle
Save password to use in the future to unlock this wallet.
Without password imported keys will not be retrievable.
"A MASTER PASSWORD"

现在确认钱包是使用您选择的名称创建的。

  • shell
$ cleos wallet list
Wallets:
[
  "default *",
  "periwinkle *"
]

在每个列出的钱包之后注意星号(*)很重要,这意味着相应的钱包已解锁。使用create wallet结果钱包时,默认情况下会解锁以方便您使用。

锁定第二个钱包使用 wallet lock

  • shell
$ cleos wallet lock -n periwinkle
Locked: 'periwinkle'

wallet list再次运行时,您将看到星号已消失,这意味着钱包现已锁定。

$ cleos wallet list
Wallets:
[
  "default *",
  "periwinkle"
]

解锁已命名的钱包需要wallet unlock使用-n参数后跟钱包名称进行呼叫,然后在密码提示中输入钱包的主密码(是的,您可以粘贴密码)。继续抓住您创建的第二个钱包的主密钥,执行以下命令,当出现密码提示时,粘贴并按回车键。您将收到确认。

  • shell
$ cleos wallet unlock -n periwinkle

cleos会告诉你钱包已解锁

  • shell
Unlocked: 'periwinkle'

注意:您还可以使用--password参数后跟主密码来跳过提示,但这会导致主密码在控制台历史记录中可见

现在检查你的进度:

  • shell
$ cleos wallet list
Wallets:
[
  "default *",
  "periwinkle *"
]

periwinkle钱包后跟一个星号,所以它现在解锁。

注意:使用wallet命令与'default'钱包交互不需要-n参数

现在停止keosd,然后返回到您调用的位置cleos并运行以下命令(请记住,cleos将检查它keosd是否正在运行,如果不是,则将启动它的实例)。

  • shell
$ cleos wallet list
Wallets:
[]

钱包首先需要在可以操作之前打开,包括列出它们。当你关闭时,钱包被锁定了keosd。当keosd重新启动,钱包未打开。运行以下命令打开,然后列出默认钱包。

  • shell
$ cleos wallet open
$ cleos wallet list
Wallets:
[
  "default"
]

注意:如果要打开命名钱包,则可以运行$ cleos wallet open -n periwinkle

您将在上一个响应中注意到默认情况下默认钱包已被锁定。现在解锁; 你将在后续步骤中使用它。

出现密码提示时,运行该wallet unlock命令并粘贴默认钱包的主密码。

  • shell
$ cleos wallet unlock
Unlocked: 'default'

检查钱包是否已解锁:

  • shell
$ cleos wallet list
Wallets:
[
  "default *"
]

钱包附有星号,因此它已解锁。

您已经学会了如何创建多个钱包,并与它们进行交互cleos。但是,一个空的钱包对你没什么好处。我们现在将学习将密钥导入钱包。

 

生成和导入EOSIO密钥

有几种方法可以生成EOSIO密钥对,但本教程将重点介绍该create key命令cleos

生成两个公钥/私钥对。请注意键的一般格式。

  • shell
$ cleos create key --to-console
Private key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Public key: EOSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
$ cleos create key --to-console
Private key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Public key: EOSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

通过添加--file filename标志而不是--to-console,可以将密钥写入本地文件。

您现在有两个EOSIO密钥对。在这一点上,这些只是任意的密钥对,而且它们本身没有权限。

如果您按照上述所有步骤操作,则应打开并解锁默认钱包。

在下一步中,我们将私钥导入钱包。为此wallet import,对于之前生成的每个私钥执行两次,一次。

  • shell
$ cleos wallet import --private-key PRIVATE_KEY_1

然后再用第二个私钥

  • shell
$ cleos wallet import --private-key PRIVATE_KEY_2

如果成功,每次wallet import命令都使用与您的私钥对应的公钥进行响应,您的控制台应如下所示:

  • shell
$ cleos wallet --private-key import 5Hvgh37WMCWAc4GuyRBiFrk4SArCnSQVMhNtEQVoszhBh6RgdWr
imported private key for: EOS84jJqXj5XBz3RqLreXZCMxXRKspUadXg3AVy8eb5J2axj8cywc

我们可以通过调用wallet keys(仅限公钥)或wallet private_keys(私钥和公钥)来检查加载了哪些密钥

  • shell
$ cleos wallet keys
[
	"EOS6....",
	"EOS3...."
]
$ cleos wallet private_keys --password YOUR WALLET PASSWORD
password:
[[
    "EOS6....",
    "5KQwr..."
  ],
  [
    "EOS3....",
    "5Ks0e..."
  ]
]

钱包文件本身是加密的,因此钱包将在锁定时保护这些键。访问锁定钱包中的密钥需要在创建钱包期间提供给您的主密码。

 

备份你的钱包

现在您的钱包中包含密钥,最好养成将钱包备份的习惯,例如闪存驱动器或其他媒体,以防止丢失钱包文件。如果没有密码,钱包文件将以高熵加密,并且内部的密钥难以访问(通过所有合理的措施不可能)。

您可以在中找到您的钱包文件data-dir。如果--data-dir在启动eos时未指定参数,则钱包文件将存储在该~/eosio-wallet文件夹中。

$ cd ~/eosio-wallet && ls
blockchain   blocks   config.ini   default.wallet   periwinkle.wallet

如果您一直按照本教程的步骤操作,您将看到两个文件,default.wallet以及periwinkle.wallet。将这些文件保存在安全的位置。

 

创建一个帐户

对区块链执行操作需要使用帐户。我们cleos用来请求nodeos创建帐户并在区块链上发布。在我们的教程中,我们需要开始nodeos。以下命令将启动单个节点testnet。有关设置本地环境的更多信息,请参阅创建和启动单个节点Testnet

对于本教程的这一部分,我们需要keosd和nodeos同时运行。目前,在默认端口
keosdnodeos相同(8888端口)。为了简化教程本部分的运行nodeos,我们将
端口更改为8899. keosd我们可以通过两种方式执行此操作:

  1. 编辑keosd配置文件(~/eosio-wallet/config.ini)并将http-server-address属性更改为:

    http-server-address = 127.0.0.1:8899

  2. 使用命令行参数-http-server-address = localhost:8899启动keosd

使用comand line参数重新启动keosd:

$ pkill keosd
      $ keosd --http-server-address=localhost:8899

解锁您的默认钱包(当keosd重新启动时它被锁定)。由于keosd开始侦听端口8899,因此您需要使用--wallet-url命令行参数进行清除。

  cleos --wallet-url=http://localhost:8899 wallet unlock

提示输入密码时,请输入创建钱包时在上一部分中生成的钱包密码。

首先nodeos,打开一个新的终端窗口,转到包含nodeos可执行文件的文件夹,然后运行以下命令:

  • sehll
$ cd eos/build/programs/nodeos
$ nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

在本教程中,eosio是授权帐户。必须使用与eosio帐户关联的密钥对区块链上执行的操作进行签名。该eosio帐户是用于引导EOSIO节点的特殊帐户。此帐户的密钥可以在nodeos配置文件中找到,位于~/.local/share/eosio/nodeos/config/config.iniLinux平台和~/Libraries/Application Support/eosio/nodeos/config/config.iniMacOS上。

或者您可以使用以下命令

$ cleos wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

现在我们可以创建帐户了。这是cleos create account命令的结构。

$ cleos create account eosio NEW_ACCOUNT OWNER_KEY ACTIVE_KEY
  • authorizing_account 是为帐户创建提供资金的帐户的名称,以及随后的新帐户。
  • new_account 是您要创建的帐户的名称
  • owner_key是分配给帐户所有者权限的公钥。(参见帐户和权限
  • active_key是分配给您帐户的有效权限的公钥,第二个将被授予您帐户的有效权限。

我们需要一个新帐户的名称。帐户名称必须符合以下准则:

  • 必须少于13个字符
  • 只能包含以下符号:.12345abcdefghijklmnopqrstuvwxyz

我们将使用名称“myaccount”作为新帐户。

我们将使用您在上面生成并导入到钱包中的公钥(回想一下公钥开头EOS)。在将权限分配给权限之前,密钥是任意的。但是,一旦分配,记住分配很重要。您的所有者密钥等同于完全控制您的帐户,而您的有效密钥等同于您帐户中资金的完全访问权限。

使用cleos create account创建帐户:

  • shell
$ cleos --wallet-url=http://localhost:8899 create account eosio myaccount PUBLIC_KEY_1 PUBLIC_KEY_2

如果成功,您将看到类似于以下内容的输出。

  • shell
executed transaction: 7f1c6b87cd6573365a7bb3c6aa12f8162c3373d57d148f63f2a2d3373ad2fd54  352 bytes  102400 cycles
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"myaccount","owner":{"threshold":1,"keys":[{"key":"EOS5kkAs8HZ88m2N7iZWy4J...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值