最近编写eos智能合约需要做页面开发,简单得eosjs连接nodeos弄了好久都没好,最后弄了好长时间,看了好些文章才实现了一个简单得连接,至少可以转账了。希望对跟我一样的人有所帮助。
首先node安装
测试如下
C:\Users\gentlemen_yan>node -v
v10.13.0
eosjs安装
D:\code\work\eosjstest>npm install eosjs@beta node-fetch text-encoding eosjs-ecc
npm WARN deprecated text-encoding@0.7.0: no longer maintained
npm WARN deprecated text-encoding@0.6.4: no longer maintained
npm WARN saveError ENOENT: no such file or directory, open 'D:\code\work\eosjstest\package.json'
npm WARN enoent ENOENT: no such file or directory, open 'D:\code\work\eosjstest\package.json'
npm WARN eosjstest No description
npm WARN eosjstest No repository field.
npm WARN eosjstest No README data
npm WARN eosjstest No license field.
+ eosjs@20.0.0-beta2
+ node-fetch@2.3.0
+ text-encoding@0.7.0
+ eosjs-ecc@4.0.4
added 2 packages from 10 contributors and updated 3 packages in 4.163s
D:\code\work\eosjstest>node eostest.js
{ transaction_id:
'253f4d3b9b1f34dde9a482646901774aaad95b14989824f4b765a99e92b31b47',
processed:
{ id:
'253f4d3b9b1f34dde9a482646901774aaad95b14989824f4b765a99e92b31b47',
block_num: 3160790,
block_time: '2018-11-27T14:38:10.500',
producer_block_id: null,
receipt:
{ status: 'executed', cpu_usage_us: 488, net_usage_words: 16 },
elapsed: 488,
net_usage: 128,
scheduled: false,
action_traces: [ [Object] ],
except: null } }
D:\code\work\eosjstest>
eostest.js文件内容
// import Api from 'eosjs';
// import JsonRpc from 'eosjs';
// import RpcError from 'eosjs';
// import JsSignatureProvider from 'eosjs';
const { Api, JsonRpc, RpcError, JsSignatureProvider } = require('eosjs');
const fetch = require('node-fetch'); // node only; not needed in browsers
const { TextDecoder, TextEncoder } = require('text-encoding'); // node, IE11 and IE Edge Browsers
const defaultPrivateKey = "5K82FMzUgkMMhyrXxMwpytvwPHjbtib31vDxati6zFhHzvV5he9"; // useraaaaaaaa
const signatureProvider = new JsSignatureProvider([defaultPrivateKey]);
const rpc = new JsonRpc('http://127.0.0.1:8888', { fetch });
const api = new Api( {rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });
try {
(async () => {
const result = await api.transact({
actions: [{
account: 'eosio.token',
name: 'transfer',
authorization: [{
actor: 'yan1',
permission: 'advert',
}],
data: {
from: 'yan1',
to: 'yan2',
quantity: '0.1230 EOS',
memo: '',
},
}]
}, {
blocksBehind: 3,
expireSeconds: 30,
});
console.dir(result);
})();
} catch (e) {
console.log('\nCaught exception: ' + e);
if (e instanceof RpcError)
console.log(JSON.stringify(e.json, null, 2));
}