我们知道EOS及EOS CDT的编译系统只兼容了linux及Unix系列的操作系统,并没有适配Windows。导致Windows下开发EOS非常困难,不得不借助Docker等工具,而这些搭建过程也是不简单。今天给大家介绍一个Javascript 工具js4eos.只需要一条命令即可使用EOS及编译部署EOS合约。
js4eos也是一个npm程序,需要通过npm安装,因而先安装npm程序。
官网:https://nodejs.org/
下载,安装,然后进入终端(cmd)测试是否安装成功
node -v
npm -v
不推荐在mingwin或cygwin等linux模拟器下使用js4eos,可能会出现问题
vscode不仅支持c++即eos合约开发,同时内置的powershell也非常适合js4eos命令行操作,体验远远好于windows自带的终端
https://code.visualstudio.com/Download
手工创建js4eos-dapp目录,并打开vscode程序,并打开js4eos-dapp目录
然后菜单栏选择view(查看)->terminal(终端),在底部打开终端
安装js4eos
npm install -g js4eos
初始化一个eos dapp工程
js4eos dapp init -v vscode
编译部署demo合约hello
执行测试用例
下面所有命令都可以在vscode的powershell终端执行
编辑合约,配置文件及测试用例, 更多详情
vscode在打开文件时右下角会提示安装相应插件,安装即可
没有安装mingwin或cygwin等类linux终端环境的用户,如果命令行直接执行js4eos,有些需要转义,比如下面转账命令
js4eos push action eosio.token transfer '["youraccount", "account2", "1.0000 EOS", "test"]' -p youraccount
需要更改为
js4eos push action eosio.token transfer "[""youraccount"", ""account2"", ""1.0000 EOS"", ""test""]" -p youraccount
引号"需要增加一个"来转义即""
如果是vscode下的powershell则需要使用 \ 来转义, 上述命令需更改为如下
js4eos push action eosio.token transfer '[\"youraccount\", \"account2\", \"1.0000 EOS\", \"test\"]' -p youraccount
如果是使用其他window命令行,请自己尝试上述三种方式
如不想使用vscode,而是对windows终端有特别喜好,执行下面命令安装js4eos
npm install -g js4eos
js4eos源码项目源码:https://github.com/itleaks/js4eos
js4eos只支持一个钱包,钱包可以管理很多key(账号)
js4eos wallet create
js4eos的钱包是加密的,解锁前必须输入创建钱包时输出的密码
js4eos wallet unlock
测试网络账号创建
js4eos config set --network jungle
js4eos faucet accountxxx
这个 accountxxx 为你想要创建的新账号, 必须是12个字符,每个字符只能是a-z,1-4
主网等其他网络创建请切换到对应网络
js4eos config set --network mainnet/kylin/fibos
js4eos faucet accountxxx
你要操作某个账号,必须导入该账号的私钥,导入私钥必须先解锁钱包
js4eos wallet unlock (然后输入钱包的密码)
js4eos wallet import keyxxx
keyxxx 为前面账号生成时输出的privateKey
目前只支持单层目录合约编译 合约目录结构为xxx/xxx.cpp
#编译需要网络,请保持网络畅通
cd xxx
js4eos compile -o xxx.wasm xxx.cpp
js4eos compile -g xxx.abi xxx.cpp
编译完成后xxx目录下有xxx.cpp, xxx.abi, xxx.wasm三个文件
hello合约大约需要52k ram 前面通过faucet获取的jungle测试账号是没有余额的,因此需要在下面网址免费获得EOShttp://jungle.cryptolions.io/#faucet, 然后购买ram
js4eos system buyram acountxxx acountxxx "10.0000 EOS"
上面的.0000四个0不能省略
js4eos set contract accountxxx xxx
xxx是上面合约的目录,里面必须包含xxx.wasm和xxx.abi两个文件
其他接口和EOS的cleos一模一样(包括参数名字传递方式)
js4eos config, 该接口用来设置系统配置,比如主网nodeos节点服务信息,网络chainid。通过该命令可以切换EOS网络。]可通过下面的命令来切换到不同网络
比如在测试网络jungle,kylin麒麟和主网之间切换
js4eos config set --network mainnet/kylin/jungle/enu/fibos
以下命令会更改当前网络的参数
js4eos config set --chainid=aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 --url=http://bp.cryptolions.io:8888
下面命令就会切换到mainnnet网络并且修改该网络参数
js4eos config set --network mainnet --chainid=aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 --url=http://bp.cryptolions.io:8888
由于httpendpoint有时可能会失效,我们的服务器会不定时更新节点信息,所以本地需要时可以通过config sync来同步
js4eos config sync
有时修改配置导致配置信息错误,可以通过reset命令修复
js4eos config reset
目前js4eos支持主网,EosForce, 测试网络,ENU和FIBOS也在整理即将支持。切换网络就是修改chainid和httpEndpoint,具体操作详情请使用doc network命令查看
js4eos doc network
由于EOS操作的复杂性,任何一个EOS公链侧链账号注册是一个高门槛。因而js4eos配置了水龙头功能,只需执行
js4eos faucet accountxxx
这个 accountxxx 为你想要创建的新账号, 必须是12个字符,每个字符只能是a-z,1-4
出现下面提示,表示你没有导入私钥(需要js4eos wallet import)或者钱包已经锁定(需要js4eos wallet unlock) js4eos的钱包只有30分钟缓存时间,30分钟无操作需要再次unlock
missing key, check your keyprovider
如果导入私钥或者unlock还是不工作,可以通过如下命令重置钱包
js4eos wallet delete
js4eos wallet create
js4eos wallet import xxx
出现fetchError
{ FetchError: request to
需要检测是否有网络或者需要更换节点
js4eos config choose url
js4eos compile 需要网络,请保持电脑网络通畅
错误无解时可以通过如下命令来恢复
#(ubuntu等需要sudo)
npm install -g js4eos
js4eos config reset
js4eos config sync
没有安装mingwin或cygwin等类linux终端环境的用户,如果命令行直接执行js4eos,有些输入需要转义,比如
js4eos push action youraccount hi '["youraccount"]' -p youraccount
需要更改为
js4eos push action youraccount hi "[""youraccount""]" -p youraccount
引号需要"需要增加一个"来转义即""
下图的EOS请替换为具体网络的币符号 比如ENU网络替换为ENU,fibos替换为FO
js4eos create key
js4eos wallet import xxxxx
导入私钥,才能执行该私钥对应的账号写操作,比如抵押CPU,NET等
下面的EOS请使用上面的create key输出的公钥
js4eos system newaccount --stake-net "0.0000 EOS" --stake-cpu "0.0000 EOS" --buy-ram-kbytes 3 createraccount somenewaccount EOSxxxxx... EOSxxxxx... -p createraccount
js4eos push action eosio.token transfer '["itleakstoken", "itleakstokem", "10.0000 EOS", "test"]' -p itleakstoken
js4eos get account youraccount
js4eos system buyram payer receiver "0.0001 EOS"
js4eos system sellram payer bytes
js4eos system delegatebw payer receiver "0.0000 EOS" "0.1000 EOS"
第一个(0.0000 EOS)是net抵押量,第二个(0.1000 EOS)是cpu抵押量 你必须有payer账号的操作权限
js4eos system undelegatebw payer receiver "0.0000 EOS" "0.1000 EOS"
第一个(0.0000 EOS)是net抵押量,第二个(0.100 EOS)是cpu抵押量 你必须有payer账号的操作权限
js4eos set contract xxx/xxx/contract_name
contract_name目录下需要有contract_name.abi和contract_name.wasm两个文件
由于httpendpoint有时可能会失效,我们可以切换节点
$ js4eos config choose url
Choose one httpEndpoint for mainnet:
*[0] http://bp.cryptolions.io:8888
[1] https://mainnet.genereos.io
[2] https://mainnet.meet.one
[3] http://mainnet.eoscalgary.io
please input[0~3]>
用户可能不了解网络的名字,可以通过列表选择方式切换网络
$ js4eos config choose network
Choose one network:
*[0] mainnet
[1] localnet
[2] eosforce
[3] jungle
[4] kylin
[5] enu
[6] fibos
please input[0~6]>
|**************************************************
* 本文来自CSDN博主"爱踢门",喜欢请点关注
* 转载请标明出处:http://blog.csdn.net/itleaks
***************************************************|
如果你对EOS,ETH技术及开发感兴趣,请入QQ群讨论: 829789117
如需实时查看最新文章,请关注公众号"区块链斜杠青年",一起探索区块链未来