为什么要写这篇文章
EOS最近DAPP不断增多,活跃度也不错,但是EOS一直有一个心病,那就是操作门槛高,这也是EOS参与者账号少的核心原因。
最近几个月一直有不少对区块链感兴趣的同志加我,对客户下载,编译安装老是出题。除了EOS客户端对系统版本(Ubuntu的的,centos的的等)要求比较高之外,而且更新也比较快,更新之后变化也不少。不仅是刚入手的,还是对自己也要花不少时间去了解学习。因此就写了这篇博客与大家分享
谁适合阅读本篇博客
1.对区块链感兴趣,对EOS感兴趣
2.区块链开发者
3.不想下载客户端,编译,同步等那么麻烦者
4.eos合约开发者
js4eos能做什么及介绍
js4eos基本同EOS客户端一样,更轻量级,基本能满足开发者大部分需求。
目前而EOS编译一向都不是一个简单的事情,一是不同机器系统可能会出现个人及开发人员都是通过cleos这个客户端程序和EOS交互,这里就存在一个问题,要得到cleos就必须编译EOS。各种问题,二是机器要求较高。同时,EOS各种升级还可能导致编译错误,比如EOS1.2出现过“symbole_core.hpp”找不到的问题。
js4eos的初衷就是降低用户EOS使用门槛.js4eos第一版解决了EOS个人使用者的问题,即提供了和cleos一模一样的命令,只需一条安装js4eos命令即可拥有cleos的所有功能,无需编译EOS。但是智能合约开发人员需要使用eosiocpp等工具,还是需要编译EOS,因此这次js4eos升级了,支持编译部署智能合约,开发人员也不需要编译EOS了。
js4eos依赖
使用js4eos之前你必须有本地节点开发环境。没有配置好的,请到官网下载安装,简单。
js4eos升级功能
1)支持EOS智能合约编译部署
2)用户账号私钥加密保护,用户的私钥加密后才保存到文件里的,不暴露明文。使用前必须通过解锁解锁。
3)支持一键切换网络,在主网,测试网络丛林,麒麟网络,fibos等网络中自由切换。
js4eos config set mainnet / jungle / kylin / fibos
4)支持水龙头功能,比如新建测试网络账号,通过下面命令即可一键创建
js4eos faucet annewaccount1 create account success {
"privatekey":"your privatekey",
"publickey" : "your publickey",
"account" : "annewaccount1 "
}
js4eos进行智能合约开发实践
js4eos安装
npm install -g js4eos
//创建默认钱包,需要记住它输出的钱包密码,后面unlock时需要输入
js4eos wallet create
导入私钥
//解锁钱包,需要输入前面的钱包密码
js4eos wallet unlock
js4eos wallet import your_private_key
智能合约编写,编译及部署
mkdir hello
cd hello
在你好目录下新建HELLO.CPP文件,通过VIM等编辑器输入一个招呼合约代码
然后编译
js4eos compile -o hello.wasm hello.cpp
js4eos compile -g hello.abi hello.cpp
切换到测试网络部署
cd ../
js4eos config set -n jungle
js4eos set contract youraccount hello
测试(window:需要转义符 \)
js4eos push action youraccount hi "[\"youraccount\"]" -p youraccount
切换到主网正式部署上线
js4eos config set -n mainnet
js4eos set contract youraccout hello
中间执行过程除出现如下提示,就说明你没有导入私钥或者解锁
错误:缺少密钥,请检查您的keyProvider
改变chainid,httpendpoint,network
js4eos config set --network mainnet --chainid=aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 --url=http://bp.cryptolions.io:8888
转账
js4eos push action eosio.token transfer "[\"itleakstoken\", \"itleakstokem\", \"10.0000 EOS\", \"test\"]" -p itleakstoken
获取帐户信息
js4eos get account youraccount
买RAM
js4eos system buyram payer receiver "0.0001 EOS"
卖RAM
js4eos system sellram payer bytes
委托CPU,NET
js4eos system delegatebw payer receiver "0.0000 EOS" "0.1000 EOS"
第一个“0.0000 EOS”是网络,第二个“0.1000 EOS”是cpu
赎回cpu,net资源undelegate
js4eos system undelegatebw payer receiver "0.0000 EOS" "0.1000 EOS"
设置eosio.code权限
js4eos set account permission pppppppp1233 active "{\"threshold\": 1,\"keys\": [{\"key\":\"EOS89YMcse15UyHUPnomuq6Y6nFnn9XzxR2fkCWfgCyt3UYPoeq7g\", \"weight\":1}],\"accounts\": [{\"permission\":{\"actor\":\"pppppppp1233\",\"permission\":\"eosio.code\"},\"weight\":1}]}" owner -p pppppppp1233@owner
参数详解:
1: EOS89YMcse15UyHUPnomuq6Y6nFnn9XzxR2fkCWfgCyt3UYPoeq7g是eosio.code权限对应的公钥地址;
2:pppppppp1233是eosio.code的权限主体,这里需要pppppppp1233的owner权限签名,才能设置eosio.code权限
特别注意:
window环境需要参数需要转义符: \
写这博客特别感谢@ itleaks的支持
欢迎感兴趣的同志加我一起交流