新手教程 如果你想要在测试网上发布合约,请看过来,少踩一个大坑!(连接第三方节点)

penglipengnb · 2018年12月20日 · 最后由 Surou 回复于 2018年12月20日 · 276 次阅读
在通过eosjs在测试网发布合约的时候我踩过一个大坑,别问我为什么不用cleos,环境坑的要死,把我本地测试节点都弄炸了,看下面:、
###
const Eos = require('eosjs');
var http = require('http');
var url = require('url');
var express = require('express');
const ecc = require('eosjs-ecc');
fs = require('fs');
var app = express();

const home="你的账户名";

const httpEndpoint = 'http://39.108.231.157:30065//麒麟测试网的节点';
const chainId = '5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191';//麒麟创世节点
const key = 'xxx';//你的私钥,active的,

const config = {
// private keys used to request net
keyProvider: [key], // 配置私钥字符串

httpEndpoint: httpEndpoint, // mainNet bp endpoint
chainId: chainId, // 通过cleos get info可以获取chainId
expireInSeconds: 1000,
broadcast: true,
debug: false,
sign: true,
authorization: null // 该参数用于在多签名情况下,识别签名帐号与权限,格式如:[email protected]
// transactionHeaders: (expireInSeconds, callback) => {
// callback(null/error/, headers) //手动设置交易记录头,该方法中的callback回调函数每次交易都会被调用
// },
};

const eos = Eos(config);

module.exports = {
home,
eos,
key
};

app.get('/',function(req,res) {
wasm = fs.readFileSync(token.wasm) ;//导入token.wasm文件,注意这里是相对路经,你也可以用绝对路径
abi = fs.readFileSync(token.abi);//同上

eos.setcode({account:home,vmtype: 0, vmversion:0,code: wasm},
{authorization: [${home}@active]}) //就是这步,卡了我三天,如果不加后面的授权,
那你一直会报没有授权,哪怕你上面配置了,加了授权,那前面得加大括号,里面不能只传参数,
还要写形参,也就是account vmtype vmversion code,这些参数名我找了一整天,中间两个是版本相关的,
无所谓,第一个是你的账户名,最上面的时候配置了

eos.setabi({account:home, abi:JSON.parse(abi)},{authorization: [${home}@active]})
//同上,一样的问题,参数名找了好久,这里需要注意一个问题,setabi和setcode必须都成功,
这里如果出现一个成功一个不成功,那是绝对不行的,亲测!!!
因为我是在后面加了 .then(=>rs......打印出来的,当时只打印了一条,结果只成功一个,
});
app.listen(7777);//这个是你可以通过浏览器弄,涉及业务我懒得改了
###

最后:创建账户我就不在这里具体说了https://kylin.eosx.io/tools/account/create
里面自己充eos买ram买cpu那些
node和eosjs模块自己上网补习,网上能搜到的我就不写了

分享一个eosjs的api网址:https://www.jianshu.com/p/30e933df1600 虽然没有解释,但是懂一些之后还是能看懂
如果侵权,请联系删除! 不过代码都是我自己写的,应该不会
共收到 1 条回复

👏 不错的分享~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册