EOS

EOS账户和钱包

简介

本文主要讲解在命令行下操作钱包和帐户管理,以及EOSIO组件如何相互交。

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

在这之前需要搭建好nodeos基本环境,构建并运行cleos和keosd的副本。对命令行界面的基本了解。

本文内容从官方:账户和钱包教程翻译修改所得。

EOSIO账户和钱包概念概述

钱包可以被认为是公钥-私钥对的加密存储库。这些是签名操作所必需的。钱包及其内容由keosd管理。钱包可以访问cleos。

帐户是存储在区块链中并由可读名称。它可以由个人或多个人授权拥有,具体取决于权限配置。区块链上任何有效交易或推送消息都依赖与一个帐户。

帐户和钱包之间没有固有的关系。帐户不知道钱包,反之亦然(从关系图中可以看到)。相应地,nodeos和keosd之间没有固有的关系。它们的基本功能完全不同。

账户和钱包产生交集的地方是需要签名时,例如签名一个交易。钱包会在本地用加密的方式存储密钥。cleos在keosd和nodeos之间充当一个中介服务,当需要使用钱包中的密钥生成签名时它便会做检索操作。

创建和管理钱包

cleos会自动启动keosd,最终可能会有多个keosd正在运行的实例。

创建钱包

在cleos下使用wallet create命令创建一个默认的钱包:

现在里面有一个名为default的钱包,并返回了这个钱包的密码。

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

cleos能够管理多个钱包。每个钱包都受不同钱包密码的保护。使用-n创建一个自定义名称的钱包:

钱包列表

查看现有钱包列表:

这里注意看default账号后边没有*,nm1024后有。
这个*意味着相应的钱包已解锁。

钱包的锁定与解锁

锁定指定钱包:

解锁一个已命名的钱包需要使用之前生成的密码:

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

当我们将keosd停止后:

打开钱包

可以看到钱包列表了没有之前的两个钱包了。
钱包需要在操作之前打开,包括列出它们。当你关闭keosd时,钱包被锁定了。当keosd重新启动,钱包未打开。运行以下命令打开,然后列出默认钱包。(-n可以指定钱包)

open后的钱包是锁定状态,需要执行之前的unlock解锁。

生成和导入EOSIO密钥

注意:确保使用由cleos命令生成的实际私钥,而不是本教程中生成使用的值!

生成EOSIO密钥

有多种方法可以生成EOSIO密钥对,这里重点介绍该create key命令。
生成两个公钥/私钥对。请注意键的一般格式。

注意此处生成的公钥前均是EOS开头;使用--file filename参数而不是--to-console,可以将密钥写入本地文件。
这里生成的密钥对,仅仅是一对密钥不具备任何权限。

密钥导入至钱包

现在将私钥导入nnm1024钱包。对于之前生成的两个私钥分别执行一次。(这里需要解锁对应的钱包)

如果导入成功会在下边提示当前私钥对应的公钥。

通过调用wallet keys查看所有的公钥(不限钱包);wallet private_keys来查看指定的账户加载了哪些密钥,可以看到公钥与私钥(需要钱包密码)。

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

如果--data-dir在启动eos时未指定参数,则钱包文件将存储在该~/eosio-wallet文件夹中。要养成备份钱包的习惯,防止丢失钱包文件。
在此~/eosio-wallet文件夹中除了钱包文件外,还有keosd配置文件config.ini。

创建一个帐户

eos里边账户和密钥对之间并没有严格的对应关系,比如A账户完全可以和B账户使用相同的的密钥对。

对区块链执行操作需要使用帐户。我们用cleos来请求nodeos创建帐户并在区块链上发布。在这之前需要使用上一篇文章中的命令启动单个节点testnet。有关设置本地环境的更多信息,请参阅EOS单节点启动与配置说明

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

启动节点

  • 编辑keosd配置文件

之前有提到keosd配置文件是~/eosio-wallet/config.ini,打开并将http-server-address属性更改为:http-server-address = 127.0.0.1:8899

  • 使用命令行参数

在执命令后加参数-http-server-address = 127.0.0.1:8899来启动keosd。

启动nodeos组件:

解锁钱包并导入密钥

在这之后我们需要起一个新的终端窗口(保持nodeos的运行,可以使用&),解锁要使用的钱包(当keosd重新启动时它会被锁定)。由于keosd开始侦听端口8899,因此您需要添加--wallet-url命令行参数(如果在配置中修改的则不需要)。

在本教程中,eosio是授权帐户(参考上篇文章的config.ini介绍)。必须使用与eosio帐户关联的密钥对区块链上执行的操作进行签名。该eosio帐户是用于引导EOSIO节点的特殊帐户。此帐户的密钥可以在nodeos配置文件/root/.local/share/eosio/nodeos/config/config.ini中找到:

signature-provider就对应了公私钥。

不仅仅是在文件里配置,必须使用命令将此私钥加入wallet中

创建账号

之后就可以开始创建帐户了。先看一下cleos create account命令的结构。

  • authorizing_account(对应下面命令中的eosio) 是为帐户创建提供资金的帐户名称,随后可以换新帐户。
  • new_account 要创建的帐户的名称
  • owner_key 是分配给帐户完全控制权的公钥。(is a public key to be assigned to the owner authority of the account)
  • active_key 是分配给帐户资金的完全访问权限的公钥。( is a public key to be assigned to the active authority of your account, and the second one will be permissioned for the active authority of your account.)

帐户名称必须符合以下规则:

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

这里创建一个nmaccount账号,并使用在上面的小节生成并导入到钱包中的公钥。在将公钥分配使用之前,它是没有意义的。
拥有owner_key密钥等同于完全控制对应的帐户,而active_key密钥等同于帐户中资金的完全访问权限。

出来一个警告,交易在本地执行,可能尚未由网络确认。暂时忽略。

eos系统中创建账号还有一种方式,就是使用eosio.system合约中的newaccount方法;当部署了eosio.system合约,刚才讲解的这种方法便不能创建账号,会提示:

就需要使用下边的方法将创建账号、购买RAM\CPU\NET放在一个事务种才可以实现:

然而就算你使用了上边的方法可能还是会遇到一堆的问题,具体参见问题汇总。

下一篇将会涉及到发布代币、合约等相关内容。

.
.
.
.
.
.
.
【本文章出自NM1024.com,转载请注明作者出处。】

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据