Hi 游客

更多精彩,请登录!

比特池塘 区块链茶馆 正文

记录eos 合约开发摸索过程

雪2016zx
77 0 0
朋友让帮忙在eos上发个币,并且需要有和eos兑换功能。
因为之前开发过eth的合约,按照eth合约开发的套路,
先找一个发币示例合约,
然后找一个类似remix的IDE, 解决编译abi和部署的问题。
正确的做法是:
在eosio官方github账号里一共有5个仓库:
eos: 节点源码
eosio.cdt:eosio contracts development toolket 智能合约开发工具
eosio.contracts:智能合约示例代码
eosjs: 前端需要用到的库
demux-js:  用于监听区块消息的服务框架
一个dapp有这么几个部分:

[*]智能合约:接受代币,开奖等等需要用到区块链公开且不可篡改特性的功能
[*]网站的前端:读取用户钱包的余额并签名交易
[*]网站的后端:监听合约事件,做一些中心化功能比如统计等等

回头看eosio仓库,工具eosio.cdt, eosio.contracts解决了智能合约的教学、开发、部署的任务。
eosjs 解决前端的任务,demux-js解决后端的任务。
这么看,eos对dapp的开发者来说是做到相当的友好了,我们只要能正确使用这些工具就可以了,集中精力在业务的开发上。
了解清楚了就可以开始干活了:

[*]安装eosio.cdt,具体方法看仓库中的readme
[*]下载eosio.contracts
[*]在eosio.contracts中找到eosio.token合约,按照需求做一些更改
[*]执行eosio.contracts中的build.sh, 这样就生成了新的eosio.token的abi等文件了。
[*]安装cleos等工具,不需要8G内存就可以编译
> 1. docker pull eosio/eos-dev, 这个image会在2019年6月被删除
> 2. docker run -it -d --privileged=true --name eos -p 8088:80 eosio/eos-dev
一定要加–privileged=true, 避免在docker中启动docker时找 iptables
> 3. 在eosio docker中执行:
cd Docker/dev
docker build -t eosio/eos-dev . 中编译eosiocpp> 段落引用

这些都做完了后,就可以往链上部署合约并发币等功能了, 下面假设在kylin测试网发行BTC:

[*]
部署合约
cleos -u https://api-kylin.eoslaomao.com set contract 我的账号 /root/eosio.contracts/build/eosio.token -p 我的账号@owner

[*]
创建合约
cleos -u https://api-kylin.eoslaomao.com push action 我的账号 create ‘{“issuer”:“我的账号”, “maximum_supply”:“1000000.0000 BTC”}’ -p 我的账号

[*]
发行代币
cleos -u https://api-kylin.eoslaomao.com push action 我的账号 issue ‘[“我的账号”, “300000.0000 BTC”, “”]’ -p 我的账号

[*]
检查合约状态
cleos -u https://api-kylin.eoslaomao.com get currency stats 我的账号 BTC

[*]
赋权限
cleos -u https://api-kylin.eoslaomao.com set account permission 我的账号 active ‘{“threshold”: 1, “keys”: [{“key”: “我的公钥”, “weight”: 1}], “accounts”:[{“permission”:{“actor”:“我的账号”,“permission”:“eosio.code”},“weight”:1}], “waits”:[] }’ owner -p 我的账号

[*]
转账测试
cleos -u https://api-kylin.eoslaomao.com push action 我的账号 transfer ‘[ 我的账号, 你的账号, “1.0000 BTC”, “m” ]’ -p 我的账号


创建账号
cleos -u https://api-kylin.eoslaomao.com system newaccount 新账号 老账号 新账号的公钥 新账号的公钥 --stake-net ‘10 EOS’ --stake-cpu ‘1 EOS’ --buy-ram ‘10.12 EOS’
购买ram
cleos -u https://api-kylin.eoslaomao.com system buyram 我的账号 你的账号 “10 EOS”
抵押带宽
cleos -u https://api-kylin.eoslaomao.com system delegatebw 我的账号 你的账号 “1.0000 EOS” “1.0000 EOS”
记录一下走过的弯路:

[*]从网上搜索到编译智能合约需要用到eosiocpp, 而eosiocpp需要通过编译eos源码一起编译出来。
然后我就去编译源码,因为eos不支持windows,想了个办法,在docker里跑个centos来搞。搞了半天docker准备好了,一编译,提示至少需要8G的内存,NND,感觉要搞不下去了,电话咨询朋友,被告知,eosiocpp从哪个版本开始就从eos源码里挪出来了,取名叫eosio.cdt.

https://eosio.github.io/eosio.cdt/1.5.0/structeosio_1_1asset.html#function-asset-12
cdt的帮助文档
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

雪2016zx 小学生
  • 粉丝

    0

  • 关注

    0

  • 主题

    3