本次EOS项目编译操作是在mac上安装的的centos7进行的,可能是虚拟机的问题,本次编译时间较长。下面是本次操作的整个流程。

一、虚拟机安装:具体安装步骤省略,看资料需要我分配了8G内存和50G硬盘,参见下图配置

二、首先需要到github上下载相应的代码,下载地址为:https://github.com/EOSIO/eos 下载前先安装git,安装命令:yum install -y git,安装完成后进入需要保存的硬盘路径下载代码,git clonehttps://github.com/EOSIO/eos --recursive

三、进入eos, ./eosio_build.sh编译,此时会报错:

eos/scripts/eosio_build_centos.sh:行98: /opt/rh/devtoolset-7/enable: 没有那个文件或目录

这时需要安装一些软件,命令如下:

sudo yum -y --enablerepo=extras install centos-release-scl

  sudo yum install -y devtoolset-7

  sudo yum install -y python33.x86_64

四、使用 ./eosio_build.sh编译,由于下载软件较多,依赖网络速度。

五、编译中出现下载mongodb无法下载问题,试过几个网络都无法下载,最终解决办法是修改编译脚本,由于我的是centos系统,所以修改的是eos/scripts/eosio_build_centos.sh,修改内容如下

六、当出现这个表示编译通过

七、按上面流程启动mongodb, 设置path,然后测试编译结果

/home/lz/opt/mongodb/bin/mongod -f /home/lz/opt/mongodb/mongod.conf &
source /opt/rh/python33/enable
export PATH=${HOME}/opt/mongodb/bin:$PATH
cd /data/blockchain/eos/build; make test

八、编译后分三个程序

-Cleos,它是一个命令行程序。在前端使用EOS是通过Cleos输入命令,给EOS下达指令。

-Nodeos,其实它就是挖矿客户端。在启动Nodeos之后,它自然就会产生区块。

-Keosd,它是在后端启动。它的目的主要是管理钱包,可以创建私钥。

九、启动nodeos服务,./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin

十、帐户与钱包是EOS中两个不同的概念,钱包管理所有密钥,帐户是实现用户权限管理,通过权重与阈值来管理不同的权限,系统默认有owner和active权限。

[lz@localhost cleos]$ ./cleos get account lz

{

  "account_name": "lz",

  "permissions": [{

      "perm_name": "active",

      "parent": "owner",

      "required_auth": {

        "threshold": 1,

        "keys": [{

            "key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",

            "weight": 1

          }

        ],

        "accounts": []

      }

    },{

      "perm_name": "owner",

      "parent": "",

      "required_auth": {

        "threshold": 1,

        "keys": [{

            "key": "EOS55pK2pN6vBoZrLdrfmKzU7r4xSuAARtekgKxTuiyfjL29VBE8r",

            "weight": 1

          }

        ],

        "accounts": []

      }

    }

  ]

}

十一、创建钱包

[lz@localhost cleos]$ ./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.

"PW5HwWAavqhVRRLKWPLeRxoXEZTfAWHzAaHR5EfgsMxEPqLzLdjLs"

十二、生成公私钥

[lz@localhost cleos]$ ./cleos create key
Private key: 5JYRVnqRBhZUt4SBqBcU3jx53iNFZaWGXrLHiPX3RH39i3DXkYZ

Public key: EOS55pK2pN6vBoZrLdrfmKzU7r4xSuAARtekgKxTuiyfjL29VBE8r

十三、导入私钥

[lz@localhost cleos]$ ./cleos wallet import 5JYRVnqRBhZUt4SBqBcU3jx53iNFZaWGXrLHiPX3RH39i3DXkYZ
imported private key for: EOS55pK2pN6vBoZrLdrfmKzU7r4xSuAARtekgKxTuiyfjL29VBE8r
[lz@localhost cleos]$ ./cleos wallet keys
[[
    "EOS55pK2pN6vBoZrLdrfmKzU7r4xSuAARtekgKxTuiyfjL29VBE8r",
    "5JYRVnqRBhZUt4SBqBcU3jx53iNFZaWGXrLHiPX3RH39i3DXkYZ"
  ],[
    "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
    "5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"
  ]

]

十四、创建帐户,

lz@localhost cleos]$ ./cleos create account eosio lz EOS55pK2pN6vBoZrLdrfmKzU7r4xSuAARtekgKxTuiyfjL29VBE8r EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV
executed transaction: 2e0413099796e17a36d2695b268607e1810b4b3c836ad901ad3ddfb9cd1dbb55  352 bytes  102400 cycles
#         eosio <= eosio::newaccount            {"creator":"eosio","name":"lz","owner":{"threshold":1,"keys":[{"key":"EOS55pK2pN6vBoZrLdrfmKzU7r4xSu...

十五、部署合约

[lz@localhost cleos]$ ./cleos set contract eosio /data/blockchain/eos/build/contracts/eosio.bios -p eosio
Reading WAST/WASM from /data/blockchain/eos/build/contracts/eosio.bios/eosio.bios.wast...
Assembling WASM...
Publishing contract...
executed transaction: a573f334fa7a6e9b46aa9662f060776a4f2082a5697be3576cf2befefa650879  3280 bytes  2200576 cycles
#         eosio <= eosio::setcode               {"account":"eosio","vmtype":0,"vmversion":0,"code":"0061736d0100000001581060037f7e7f0060057f7e7e7e7e...
#         eosio <= eosio::setabi                {"account":"eosio","abi":{"types":[],"structs":[{"name":"set_account_limits","base":"","fields":[{"n...


[lz@localhost cleos]$ ./cleos set contract eosio.token ../../contracts/eosio.token/ -p eosio.token
Reading WAST/WASM from ../../contracts/eosio.token/eosio.token.wast...
Assembling WASM...
Publishing contract...
executed transaction: 986ef3482c1e23e9f7257d7bed3d42ab6af00b01dc77aa3e340d62e0ed83ccb8  8320 bytes  2200576 cycles
#         eosio <= eosio::setcode               {"account":"eosio.token","vmtype":0,"vmversion":0,"code":"0061736d010000000181011560067f7e7f7f7f7f00...
#         eosio <= eosio::setabi                {"account":"eosio.token","abi":{"types":[],"structs":[{"name":"transfer","base":"","fields":[{"name"...

十六、合约调用

[lz@localhost cleos]$ ./cleos push action eosio.token create '["eosio","1000000000.00000 EOS",0,0,0]' -p eosio.token
executed transaction: 20a9e37a1c2197b4795d4d6dc8a8455f4df638ebf2ad3d0acc99ddec7500f26e  248 bytes  104448 cycles
#   eosio.token <= eosio.token::create          {"issuer":"eosio","maximum_supply":"1000000000.00000 EOS","can_freeze":0,"can_recall":0,"can_whiteli...

十七、发币给用户,发币时需要小数点后的位数与创建币时一样,否则会报Error 3030000的错误

[lz@localhost cleos]$ ./cleos push action eosio.token issue '["lz","100.0000 EOS","memo"]' -p eosio
Error 3030000: transaction validation exception
Ensure that your transaction satisfy the contract's constraint!
Error Details:
condition: assertion failed: comparison of assets with different symbols is not allowed

[lz@localhost cleos]$ ./cleos push action eosio.token issue '["lz","100.00000 EOS","memo"]' -p eosio
executed transaction: e46bdee90767242283bc79e9a8913ba538de8694b03eee3560255cfa9cd85c23  256 bytes  126976 cycles
#   eosio.token <= eosio.token::issue           {"to":"lz","quantity":"100.00000 EOS","memo":"memo"}
>> issue
#   eosio.token <= eosio.token::transfer        {"from":"eosio","to":"lz","quantity":"100.00000 EOS","memo":"memo"}
>> transfer
#         eosio <= eosio.token::transfer        {"from":"eosio","to":"lz","quantity":"100.00000 EOS","memo":"memo"}
#            lz <= eosio.token::transfer        {"from":"eosio","to":"lz","quantity":"100.00000 EOS","memo":"memo"}

十八、货币转帐

[lz@localhost cleos]$ ./cleos push action eosio.token transfer '["lz","eosio.token","25.00000 EOS","m"]' -p lz
executed transaction: bf36c33f27b3bd82a0495f3721c780c94ffd690c9031477f493202140f5d37ae  256 bytes  110592 cycles
#   eosio.token <= eosio.token::transfer        {"from":"lz","to":"eosio.token","quantity":"25.00000 EOS","memo":"m"}
>> transfer
#            lz <= eosio.token::transfer        {"from":"lz","to":"eosio.token","quantity":"25.00000 EOS","memo":"m"}

[lz@localhost cleos]$ ./cleos get currency balance eosio.token lz
75.00000 EOS
[lz@localhost cleos]$ ./cleos get currency balance eosio.token eosio.token

25.00000 EOS

参考文章:

https://www.jinse.com/bitcoin/190743.html

https://www.jianshu.com/p/a50851fbb72f

EOS项目编译及操作入门相关推荐

  1. C语言与数据库操作入门

    https://blog.csdn.net/flyingqd/article/details/78763652 C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1 ...

  2. android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget

    错误 android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget 详细错误 Compiling with JDK Java compiler API. D:\A ...

  3. maven java版本过低_maven项目编译运行时提示jdk版本过低问题解决方法

    明明使用的是1.8jdk,但是运行项目时提示使用的是java版本是1.5,版本过低. 修改pom.xml,添加如下: maven-compiler-plugin 3.6.1 1.8 1.8 UTF-8 ...

  4. linux文件操作管理,linux 文件管理操作入门

    mkdir -p /root/kali/bp/shell  一路创建文件夹直到生成文件夹shell,中间没有kali文件夹的话也会自动创建生成 tar解压缩 范例一:将整个 /etc 目录下的文件全部 ...

  5. python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云

    python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...

  6. 基于Arduino IDE开发的ESP8266(ESP-12F)项目2 ——按键操作

     本次写这篇文章是自己做一下学习记录,如有错误,还请大家斧正!!! 日后及时修正!感谢支持! 欢迎大家的关注        点赞        收藏        留言 目录 前言 一.新建工程 二. ...

  7. idea去除无用的包_IDEA一键完成格式化、去除无用引用、编译的操作

    从Eclipse迁移到使用Idea完成开发工作,但是最近加入Jrebel热启动工具来辅助开发,但是每次都 需要自己对代码进行格式化,去除无用的引入包,最后进行代码编译等一系列操作感觉很麻烦,感觉没 有 ...

  8. 【小程序专栏】第一个uniapp项目编译到微信开发者工具以及android真机运行

    在本专栏之前的文章已经为大家介绍过,uniapp作为一个跨端开发框架被广泛应用.通过uniapp可以开发一套程序.运行到andoid.ios以及各种小程序端,微信小程序.支付宝小程序.百度小程序.字节 ...

  9. linux程序测试工具gprof,Linux系统-耗时检测-gprof操作入门

    Linux系统-耗时检测-gprof操作入门. 一定时间的输入的程序处理延时,现需测量程序中各个函数的耗时比例,找到性能瓶颈,使用gprof工具检测. 1. gprof的功能 gprof和oprofi ...

最新文章

  1. 安装phpredis扩展
  2. ubuntu samba重启 mount命令
  3. C++引用不能绑定到临时数据
  4. 【Linux系统编程】进程间通信--有名管道
  5. 【MySQL性能优化】MySQL分库分表与水平分割取模案例(三)
  6. 基本数据类型与String之间的转换
  7. websphere linux版本,安装IBM Websphere on linux
  8. Java多线程之同步与阻塞队列
  9. 苹果雪豹操作系统_苹果 M1 版 MacBook 软件兼容实测:VS Code、PhotoShop 目前还不能用(附列表)...
  10. 虚拟机vm介绍及虚拟机常见操作
  11. 超级万能计算机在线应用,超级万能计算器手机版
  12. 其实我们可以做自己的心理医生
  13. Docker入门教程 Part 1 基础概念 - 镜像、容器、仓库
  14. 仰望流年纯白世界那抹城光(二)
  15. 【sketchup 2021】草图大师的辅助建模工具2【模型交错、照片匹配(重要)】
  16. python魔方方法__getitem__、__setitem__和__len__
  17. flask项目之5:短信验证码发送
  18. 【07】JavaScript:05-作用域、变量的作用域、作用域链、预解析、对象
  19. 计算机基础——4.4 网络信息安全
  20. Docker仓库harbor

热门文章

  1. Windows Mobile 来电自动接听
  2. 竞争神经网络 python_用python解决kaggles奔驰环保竞争
  3. OpenCv图像平滑
  4. Reddit关闭Deepfakes论坛,遏制“非自愿换脸情色”
  5. 用计算机阅卷的流程,考试阅卷方法和流程
  6. 读吴军的《硅谷之谜》有感
  7. linux的SWAP分区
  8. LPA-star算法(Lifelong Planning)及相关思考
  9. matlab 路由表,实验1静态ECMP的浮动静态路由配置
  10. Ubuntu下装个音乐播放器