EOS项目编译及操作入门
本次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项目编译及操作入门相关推荐
- C语言与数据库操作入门
https://blog.csdn.net/flyingqd/article/details/78763652 C语言与数据库操作入门(Win版) 2017年12月10日 17:30:17 阅读数:1 ...
- android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget
错误 android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget 详细错误 Compiling with JDK Java compiler API. D:\A ...
- maven java版本过低_maven项目编译运行时提示jdk版本过低问题解决方法
明明使用的是1.8jdk,但是运行项目时提示使用的是java版本是1.5,版本过低. 修改pom.xml,添加如下: maven-compiler-plugin 3.6.1 1.8 1.8 UTF-8 ...
- linux文件操作管理,linux 文件管理操作入门
mkdir -p /root/kali/bp/shell 一路创建文件夹直到生成文件夹shell,中间没有kali文件夹的话也会自动创建生成 tar解压缩 范例一:将整个 /etc 目录下的文件全部 ...
- python全栈工程师 pdf_python全栈工程师项目开发实例实战入门教程百度云
python全栈工程师项目开发实例实战入门教程百度云 课程目录: 开学典礼 pycharm的基本使用 Python基本语法 数值类型数据及运算 字符串的基本操作 字符串的常用方法 列表的基本使用 列表 ...
- 基于Arduino IDE开发的ESP8266(ESP-12F)项目2 ——按键操作
本次写这篇文章是自己做一下学习记录,如有错误,还请大家斧正!!! 日后及时修正!感谢支持! 欢迎大家的关注 点赞 收藏 留言 目录 前言 一.新建工程 二. ...
- idea去除无用的包_IDEA一键完成格式化、去除无用引用、编译的操作
从Eclipse迁移到使用Idea完成开发工作,但是最近加入Jrebel热启动工具来辅助开发,但是每次都 需要自己对代码进行格式化,去除无用的引入包,最后进行代码编译等一系列操作感觉很麻烦,感觉没 有 ...
- 【小程序专栏】第一个uniapp项目编译到微信开发者工具以及android真机运行
在本专栏之前的文章已经为大家介绍过,uniapp作为一个跨端开发框架被广泛应用.通过uniapp可以开发一套程序.运行到andoid.ios以及各种小程序端,微信小程序.支付宝小程序.百度小程序.字节 ...
- linux程序测试工具gprof,Linux系统-耗时检测-gprof操作入门
Linux系统-耗时检测-gprof操作入门. 一定时间的输入的程序处理延时,现需测量程序中各个函数的耗时比例,找到性能瓶颈,使用gprof工具检测. 1. gprof的功能 gprof和oprofi ...
最新文章
- 安装phpredis扩展
- ubuntu samba重启 mount命令
- C++引用不能绑定到临时数据
- 【Linux系统编程】进程间通信--有名管道
- 【MySQL性能优化】MySQL分库分表与水平分割取模案例(三)
- 基本数据类型与String之间的转换
- websphere linux版本,安装IBM Websphere on linux
- Java多线程之同步与阻塞队列
- 苹果雪豹操作系统_苹果 M1 版 MacBook 软件兼容实测:VS Code、PhotoShop 目前还不能用(附列表)...
- 虚拟机vm介绍及虚拟机常见操作
- 超级万能计算机在线应用,超级万能计算器手机版
- 其实我们可以做自己的心理医生
- Docker入门教程 Part 1 基础概念 - 镜像、容器、仓库
- 仰望流年纯白世界那抹城光(二)
- 【sketchup 2021】草图大师的辅助建模工具2【模型交错、照片匹配(重要)】
- python魔方方法__getitem__、__setitem__和__len__
- flask项目之5:短信验证码发送
- 【07】JavaScript:05-作用域、变量的作用域、作用域链、预解析、对象
- 计算机基础——4.4 网络信息安全
- Docker仓库harbor