EOSIO学习笔记



  • 什么是EOSIO?

    EOSIO是一种软件,它引入了区块链架构,旨在实现分散式应用程序的垂直和水平扩展(“EOSIO软件”),并可用于启动私有和公共区块链网络。这是通过类似操作系统的构造实现的,可以在其上构建应用程序,该软件提供帐户,身份验证,数据库。

    ABOUT THE STACK

    每个组件以及它们是如何配合工作的:

    • nodeos(node + eos = nodeos) - 核心EOSIO 节点守护程序,可以配置插件来运行节点。示例用法是块生产,专用API端点和本地开发。
    • cleos (cli + eos = cleos) - 命令行界面,用于与区块链交互并管理钱包。
    • keosd (key + eos = keosd) - 将EOSIO密钥安全存储在钱包中的组件。
    • eosio-cpp- 部分eosio.cdt,它编译C ++代码WASM并可以生成ABI。
      组件关系

    启动节点和设置

    第一步 引导节点和电子钱包

    1. 首先要启动keosd(将EOSIO密钥安全存储在钱包中的组件)
    keosd &
    # enter 键退出
    
    1. 立即启动nodeos
    nodeos -e -p eosio \
    --plugin eosio::producer_plugin \
    --plugin eosio::chain_api_plugin \
    --plugin eosio::http_plugin \
    --plugin eosio::history_plugin \
    --plugin eosio::history_api_plugin \
    --access-control-allow-origin='*' \
    --contracts-console \
    --http-validate-host=false \
    --verbose-http-errors \
    --filter-on='*' >> nodeos.log 2>&1 &
    

    这些设置可实现以下功能:

    • 运行nodeos。此命令加载所有基本插件,设置服务器地址,启用CORS以及合同调试和日志记录。
    • 设置CORS没有限制(*)和开发日志记录。

    第二步 检查安装

    1. 检查Nodeos是否正在产生块
    tail -f nodeos.log
    # ctrl + c 关闭日志
    

    会看到以下输出

    1929001ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366974ce4e2a... #13929 @ 2018-05-23T16:32:09.000 signed by eosio [trxs: 0, lib: 13928, confirmed: 0]
    1929502ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366aea085023... #13930 @ 2018-05-23T16:32:09.500 signed by eosio [trxs: 0, lib: 13929, confirmed: 0]
    1930002ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366b7f074fdd... #13931 @ 2018-05-23T16:32:10.000 signed by eosio [trxs: 0, lib: 13930, confirmed: 0]
    1930501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366cd8222adb... #13932 @ 2018-05-23T16:32:10.500 signed by eosio [trxs: 0, lib: 13931, confirmed: 0]
    1931002ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366d5c1ec38d... #13933 @ 2018-05-23T16:32:11.000 signed by eosio [trxs: 0, lib: 13932, confirmed: 0]
    1931501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366e45c1f235... #13934 @ 2018-05-23T16:32:11.500 signed by eosio [trxs: 0, lib: 13933, confirmed: 0]
    1932001ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000366f98adb324... #13935 @ 2018-05-23T16:32:12.000 signed by eosio [trxs: 0, lib: 13934, confirmed: 0]
    1932501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 00003670a0f01daa... #13936 @ 2018-05-23T16:32:12.500 signed by eosio [trxs: 0, lib: 13935, confirmed: 0]
    1933001ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 00003671e8b36e1e... #13937 @ 2018-05-23T16:32:13.000 signed by eosio [trxs: 0, lib: 13936, confirmed: 0]
    1933501ms thread-0   producer_plugin.cpp:585       block_production_loo ] Produced block 0000367257fe1623... #13938 @ 2018-05-23T16:32:13.500 signed by eosio [trxs: 0, lib: 13937, confirmed: 0]
    

    如果报错

    database dirty flag set (likely due to unclean shutdown): replay required
    

    执行

    rm -rf ~/.local/share/eosio/nodeos/
    rm -rf ~/.local/share/eosio/nodeos/data
    rm nodeos.log
    

    重新执行tail命令

    1. 检查钱包
      <br> 打开shell并运行cleos命令列出可用的钱包。
    cleos wallet list
    

    可以看到空钱包回复

    Wallets:
    []
    
    1. 检查nodeos端点
      这将检查RPC API是否正常工作,选择一个。
    curl http://localhost:8888/v1/chain/get_info
    

    创建开发钱包

    钱包是公钥-私钥对的存储库。需要私钥来签署区块链上的操作。

    创建电子钱包

    使用下面的命令来创建一个默认的钱包。
    <br>有两种方式:

    • --to-console 钱包密码会显示在bash历史记录中
    • --to-file 钱包密码不会记录在bash的历史记录中
    # 1
    cleos wallet create --to-console
    # 2
    cleos wallet create --to-file
    

    关于钱包

    关于钱包的加密货币中常见的误解是它们存储令牌。钱包不存储令牌。钱包的作用是将私钥存储在加密文件中并签署交易。
    <br> 用户通常通过接口构建事务对象,将该对象发送到要签名的钱包,然后钱包返回具有签名的该事务对象,然后该签名被广播到网络。当/如果网络确认交易有效,则将其包含在区块链的块中

    打开钱包

    默认情况下,在启动keosd实例时关闭钱包,开始运行以下内容

    cleos wallet open
    

    运行以下命令返回钱包列表

    cleos wallet list
    

    解锁钱包

    # 会提示输入密码,把之前的私钥复制粘贴回车
    cleos wallet unlock
    

    此时cleos wallet list可以看到

    Wallets:
    [
      "default *"
    ]
    
    # (*)标识已经解锁
    

    将密钥导入钱包

    生成一个私钥,cleos有一个辅助函数,只需运行以下命令即可

    cleos wallet create_key
    # 返回类似
    # Created new private key with a public key of: "EOS8PEJ5FM42xLpHK...X6PymQu97KrGDJQY5Y"
    

    导入开发密钥

    cleos wallet import
    # 输入:5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3
    

    创建账户

    什么是账户?

    帐户是一组授权,存储在区块链中,用于标识发件人/收件人。它具有灵活的授权结构,使其可以由个人或一组个人拥有,具体取决于如何配置权限。需要一个帐户才能发送或接收有效的 交易
    到区块链。

    本系列教程使用两个“用户”账户,bob并alice,以及默认eosio的配置账号。此外,本系列教程还介绍了各种合同。

    第一步 创建测试账户

    使用cleos create account创建两个账户

    cleos create account eosio bob EOS837KGQoU5yMv6izqZWmMt37mBX5oDXKK2XAQrQoobUqaYj28Fw 
    cleos create account eosio alice EOS837KGQoU5yMv6izqZWmMt37mBX5oDXKK2XAQrQoobUqaYj28Fw
    

    疑问:
    创建了多个账户,当期操作cleos的是具体的某一位吗?
    如何查看当前账户?

    账户里面的密钥对是什么意思?



  • @nijunpeiEOSIO学习笔记 中说:

    执行
    rm -rf ~/.local/share/eosio/nodeos/
    rm -rf ~/.local/share/eosio/nodeos/data
    rm nodeos.log

    重新执行tail命令

    这里第一条不需要呀朋友



  • @yuxuan



  • 小泥泥写的真好


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

Looks like your connection to Dian was lost, please wait while we try to reconnect.