Wuxy Robot Dev Engineer

js4eos开发智能合约

2019-08-01
wuxy

说明

  • 本文测试环境为:window10,js4eos,kylin测试网
  • 所有命令都是在powershell中运行的,在命令中遇到“”时需要加“\ ”转义;
  • 当然也可以在mingw等linux的环境下运行,比如git bash就可以,就不需要转义了。
  • 预先安装node,安装过程很简答,直接到node官网,然后和普通软件安装方式一样;
  • 然后安装js4eos.
  • js4eos的命令和cleos基本一致,具体参见js4eos官网。
  • 预先创建kyiln账号,免费的。

开发步骤

钱包账号

  • js4eos wallet create -n wuxyWallet
  • js4eos wallet unlock -n wuxyWallet
  • js4eos wallet import -n wuxyWallet 5JcYhRpuN8KYg4sfxVe7ZUCYhQ3mn1tXXTYxJdopNi1oCGSGtLK
  • js4eos wallet keys:查看钱包中的公钥
  • js4eos get account wuxytestnet1:查看账户信息

编写编译智能合约

  • mkdir loveoffering :一定要是英文目录
  • cd loveoffering
  • 新建智能合约源文件:loveoffering.cpp,其中.hpp文件可选,简单的合约我们可以把所有的代码写在.cpp里
  • js4eos compile -o loveoffering.wasm loveoffering.cpp:编译生成wasm文件,在区块链中实际运行的文件,机器看的。
  • js4eos compile -g loveoffering.abi loveoffering.cpp:编译生成abi文件,作为合约接口,给人看的,方便调用。
  • 合约名就是账户名,实际上不存在合约名这个概念,账户名、文件名、类名3个名称没有关系。
  • action和table的命令要符合base32的规则,即a~z,1~5

部署合约

  • js4eos config set –network kylin:把当前的网络设置成kylin
  • js4eos config set:可查看网络
  • 切换到loveoffering目录上一级
  • js4eos set contract wuxytestnet1 loveoffering:其中loveoffering是文件夹
  • 部署需要私钥,所有记得wallet unlock

调用合约

  • js4eos push action wuxytestnet1 version ‘[]’ -p wuxytestnet1@active:因为version action没有参数
  • js4eos push action wuxytestnet1 addprooject ‘["project1","help_child",100]’ -p wuxytestnet1@active:在ps中需要添加转义
  • js4eos push action wuxytestnet1 offerlove ‘["wuxytestnet2","knights"]’ -p wuxytestnet2@active
  • js4eos push action wuxytestnet1 modifyproj ‘[“knights”,”quantityReceived”,0]’ -p wuxytestnet1@active

其他配置

配置合约账号的eosio.code权限:

  • js4eos set account permission wuxytestnet1 active ‘{"threshold": 1, "keys": [{"key":"EOS5SCyJoqf1t114JAFPRW7AMbY6q2F1rVeTyFFbpfkuHg6nZwi7r","weight": 1}], "accounts": [{"permission":{"actor":"wuxytestnet1", "permission":"eosio.code"}, "weight":1}], "waits": []}’ owner -p wuxytestnet1@owner

  • js4eos set account permission wuxytestnet2 active ‘{"threshold": 1, "keys": [{"key":"EOS7v3ezbBTbLSJr8cRkeySGq8c1x7YouyVQin6k82e6unbtTvN3S","weight": 1}], "accounts": [{"permission":{"actor":"wuxytestnet1", "permission":"eosio.code"}, "weight":1}], "waits": []}’ owner -p wuxytestnet2@owner

  • js4eos push action eosio.token transfer ‘[ "wuxytestnet2", "wuxytestnet1", "25.0000 EOS", "memo"]’ -p wuxytestnet2@active:转账操作

    参考文献

  • https://github.com/itleaks/js4eos : 官方资料
  • 一条Javascript命令玩转EOS, js4eos开源了:https://blog.csdn.net/ITleaks/article/details/82466329:其实就是翻译官网资料,翻译的还不错

Similar Posts

上一篇 LTE技术扫盲

下一篇 nodejs应用开发

Comments