美文网首页区块链开发区块链研习社
EOS开发入门2 -- 钱包与账户

EOS开发入门2 -- 钱包与账户

作者: luohuayong | 来源:发表于2018-05-13 18:35 被阅读77次

    在开始所有之前,先确定已经完成了上一篇文章的内容。

    EOS开发入门1 -- EOS环境搭建

    并且保证nodeos在运行中。

    创建一个默认钱包

    $ cleos wallet create
    Creating wallet: default
    Save password to use in the future to unlock this wallet.
    Without password imported keys will not be retrievable.
    "PW5JuBXoXJ8JHiCTXfXcYuJabjF9f9UNNqHJjqDVY7igVffe3pXub"
    

    通过cleos命令创建了一个默认的钱包。并返回给我们这个钱包的秘钥。每台机器生成的秘钥跟这个并不一样。记录下这个秘钥,之后会经常用到。钱包创建完成后默认是锁定状态的,现在我们需要解锁钱包。

    解锁钱包

    $ cleos wallet unlock --password PW5JuBXoXJ8JHiCTXfXcYuJabjF9f9UNNqHJjqDVY7igVffe3pXub
    Unlocked: default
    

    使用刚刚给出的秘钥我们已经解锁了默认的钱包。

    更安全的解锁钱包方式

    上面解锁钱包的方式,会将秘钥记录到bash的历史中,存在安全隐患。更安全的解锁方式是使用交互方式,按照提示输入密码,其实这里也可以粘贴密码。

    $ cleos wallet unlock
    password:
    

    锁定钱包

    出于安全考虑,在不使用钱包时,锁定钱包。

    $ cleos wallet lock
    Locked: default
    

    加载Bios合约

    eosio.bios是eos自带的一个合约,存在于源文件下的/build/contracts/eosio.bios,下面的命令假定当前目录位于源文件的根目录,当然也可以使用绝对路径加载这个合约 ${EOSIO_SOURCE}/build/contracts/eosio.bios

    $ cleos set contract eosio build/contracts/eosio.bios -p eosio
    Reading WAST...
    Assembling WASM...
    Publishing contract...
    executed transaction: 414cf0dc7740d22474992779b2416b0eabdbc91522c16521307dd682051af083  4068 bytes  10000 cycles
    #         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001ab011960037f7e7f0060057f7e7e7e...
    #         eosio <= eosio::setabi                {"account":"eosio","abi":{"types":[],"structs":[{"name":"set_account_limits","base":"","fields":[{"n...
    

    这个命令的执行结果是使用两个动作(action)生成了一个交易(transaction),这两个动作是:eosio::setcode和eosio::setabi

    稍后我们会看到动作可以被多个合约处理。

    这个命令的最后一个参数 -p eosio 的含义是使用eosio账户的私钥对操作进行签名。

    创建账户

    现在我们已经创建了基本的系统合约,接下来我们来创建自己的账户。我们将创建两个账户:user和tester,每个账户都需要一个秘钥与其关联,这个例子中,我们将同一个秘钥关联到两个账户。首先生成一个秘钥

    $ cleos create key
    Private key: 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
    Public key: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
    

    我们看到生成了一个秘钥对,包括一个私钥和一个公钥。然后将这个秘钥对导入到我们的钱包:

    $ cleos wallet import 5Jmsawgsp1tQ3GD6JyGCwy1dcvqKZgX6ugMVMdjirx85iv5VyPR
    imported private key for: EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
    

    确保导入的秘钥是你自己实际生成的秘钥,而不是这里的。

    创建两个用户帐号

    接下来,我们将创建两个帐户user和tester,并使用我们上面创建的密钥。

    $ cleos create account eosio user EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
    ...
    
    $ cleos create account eosio tester EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4 EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
    ...
    

    cleos create 命令需要两个秘钥,一个用于OwnerKey,另一个用于ActiveKey,在本例中,我们给它两个相同的秘钥。

    查看帐号

    因为已经加载了 eosio::history_api_plugin 插件,我们可以使用命令查看秘钥控制的帐号。
    插件可以通过两种方式加载,命令参数方式和配置文件方式,我们这里是使用的配置文件加载的,所以在命令参数中并没有看到。

    $ cleos get accounts EOS7ijWCBmoXBi3CgtK7DJxentZZeTkeUnaSDvyro9dq7Sd1C3dC4
    {
      "account_names": [
        "tester",
        "user"
      ]
    }
    

    相关文章

      网友评论

        本文标题:EOS开发入门2 -- 钱包与账户

        本文链接:https://www.haomeiwen.com/subject/apgldftx.html