美文网首页从零开始学EOS应用开发EOS学习资料blockChain
加载BIOS合约给指定账户eosio踩坑记录

加载BIOS合约给指定账户eosio踩坑记录

作者: 面壁者Z | 来源:发表于2018-08-28 17:13 被阅读11次

    当完成节点搭建以后(测试单节点环境),我们需要给eosio这个账户,加载BIOS合约,实际上就是给eosio账户赋予了一个超级管理员的角色,这样就可以对其他账户资源进行管理以及执行一些需要特殊权限才可以执行的API。

    首先,不需要启动nodeos,直接调用cleos命令:

    cleos set contract eosio ../conntract/eosio.bios -p eosio

    详细解释一下这句的含义:
    首先,cleos是eosio开发中非常常用的一个工具,工具目录位于:
    ~/eos/build/programs/cleos
    文件夹内

    其次,cleos的set命令:“set or update a blockchain state” (设置或者更新一个区块链状态)
    contract,智能合约,“set or update blockchain account state" (设置或更新区块链账户的状态)
    后面跟的参数1:eosio,即要更新的账户名,再后面跟的,是智能合约的路径。
    这个智能合约路径一般位于:
    ~/eos/build/contracts目录下,所以要填好对应的目录
    最后的参数 -p,即--permission,“An account and permission level to authorize, as in 'account@permission' (defaults to 'account@active')",授权账户和权限级别,例如 account@permission,默认为accounnt@active。

    执行该命令后,提示:

    ~/eos/build/contracts$ cleos set contract eosio eosio.bios # 注意这里我在contracts目录下
    Readinng WASM from eosio.bios/eosio.bios.wasm...
    Publishinng contract...
    Failed to connect to nodeos at http://127.0.0.1:8888/; is nodeos running?

    询问是否启动了nodeos,我没有启动,所以,去启动nodeos

    ~/eos/build/programs/nodeos$ ./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

    然后再试试刚才的cleos命令:

    ~/eos/build/contracts$ cleos set contract eosio eosio.bios
    Error 3120006: No available wallet
    Ensure that you have created a wallet and have it open

    没有可用的钱包,需要确认是否创建并能打开了?

    前面我们已经创建了default钱包(没有可以去看前面的文章:Ubuntu下安装eosio1.0.0过程全记录https://www.jianshu.com/p/16d0b7e62704

    先看一眼现在钱包有没有打开的:

    cleos wallet list

    发现没有。
    打开钱包:

    cleos wallet open # 默认就会打开default

    然后再看

    cleos wallet list
    提示发现default已经打开了。

    然后给钱包解锁:

    cleos wallet unlock # 默认default
    password: ***(之前创建时生成的密码)
    Unlocked:default

    然后看看钱包状态:

    cleos wallet list
    发现在default后面多了一个*,表示已经解锁

    再去执行

    ~/eos/build/contracts$ cleos set contract eosio eosio.bios
    Error3090003: Provided keys, permissions, and delays do not satisfy declared authorizations
    Ensure that you have the related private keys inside your wallet and your wallet is unlocked.

    确认钱包解锁并且有相关的私钥。

    实际上这是因为我们现在所使用的default钱包,没有倒入eosio私钥导致的。
    默认的eosio初始私钥:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

    cleos wallet import
    private key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    imported private key for :EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV

    导入成功后,再执行难上面的命令:

    ~/eos/build/contracts$ cleos set contract eosio eosio.bios -p eosio
    Readinng WASM from eosio.bios/eosio.bios.wasm...
    Publishinng contract...
    executed transaction: **** 3720byte

    eosio <= eosio::setcode {account......

    最后提示只是本地执行了,还没得到区块确认,这其实已经不重要了,很快就会被确认了。

    好了,完成了加载bios合约,中间的不少坑,都踩了一个遍。。。

    我是王越,欢迎加入EOSIO开发俱乐部,微信361757(暗号EOS)

    相关文章

      网友评论

      • 8337ea5e8883:您好,看到您的文章质量非常高,想邀请您成为虫洞社区的首批优质内容签约作者。虫洞社区是专业的区块链技术学习社区。虫洞社区鼓励内容生产者产生高质量内容,并给予合理的回报,也希望能帮助内容消费者获得高质量的区块链内容,并让数字货币投资者获得有价值的投资洞见。同时,虫洞社区已经积累了大量的区块链深度从业者,便于作者建立个人品牌。希望知道是否方便加您微信细聊?
        面壁者Z:文末有微信,欢迎交流

      本文标题:加载BIOS合约给指定账户eosio踩坑记录

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