eosjs轉(zhuǎn)賬代碼怎么寫,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供巴楚網(wǎng)站建設(shè)、巴楚做網(wǎng)站、巴楚網(wǎng)站設(shè)計(jì)、巴楚網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、巴楚企業(yè)網(wǎng)站模板建站服務(wù),10余年巴楚做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
下面介紹使用V20版本的eosjs實(shí)現(xiàn)代幣轉(zhuǎn)賬的思路,并給出eosjs轉(zhuǎn)賬的實(shí)現(xiàn)代碼。
我們首先在nodejs中引入要使用到的類:
const {Api,JsonRpc,RpcError} = require('eosjs') const JsSignatureProvider = require('eosjs/dist/eosjs-jssig'); const fetch = require('node-fetch'); const { TextEncoder, TextDecoder } = require('util');
在EOS中,代幣轉(zhuǎn)賬就是對代幣合約的transfer()
方法的調(diào)用,因此接下來就是準(zhǔn)備一個(gè)對代幣合約的動(dòng)作調(diào)用。例如,下面的動(dòng)作將從賬號(hào)useraaaaaaaa向賬號(hào)userbbbbbbbb轉(zhuǎn)0.0001個(gè)SYS代幣:
const action = { account: 'eosio.token', name: 'transfer', authorization: [{ actor: 'useraaaaaaaa', permission: 'active', }], data: { from: 'useraaaaaaaa', to: 'userbbbbbbbb', quantity: '0.0001 SYS', memo: '', }, }
接下來要準(zhǔn)備一個(gè)簽名器對交易進(jìn)行簽名,在開發(fā)時(shí),我們可以使用eosj內(nèi)置的簽名器實(shí)現(xiàn) JsSignatureProvider,它的實(shí)例化需要傳入一組交易可能用到的私鑰:
// useraaaaaaaa的私鑰 const defaultPrivateKey = "5JtUScZK2XEp3g9gh7F8bwtPTRAkASmNrrftmx4AxDKD5K4zDnr"; const signatureProvider = new JsSignatureProvider([defaultPrivateKey]);
需要指出的是,JsSignatureProvider沒有對私鑰的任何保護(hù)措施,因此在生產(chǎn)環(huán)境中請不要使用這個(gè)簽名器。在教程Eos智能合約與Dapp開發(fā)入門中我們給出了一個(gè)基于keosd的簽名提供器可供生產(chǎn)環(huán)境下使用。
一旦交易完成簽名,就需要利用EOS節(jié)點(diǎn)旳RPC接口提交交易,因此接下來初始化一個(gè)JsonRpc對象:
const rpc = new JsonRpc('http://127.0.0.1:8888', { fetch });
上述簽名、序列化和廣播交易的過程在eosjs中由Api類封裝,因此我們只需要調(diào)用Api實(shí)例的transact()方法即可:
const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() }); api.transact({actions:[action]}) .then(ret => console.log(ret)) .catch(err => console.log(err))
在transact()
方法的實(shí)現(xiàn)中,將調(diào)用JsonRpc對象的push_transaction()方法將簽名后的序列化交易提交到節(jié)點(diǎn)并廣播到整個(gè)EOS網(wǎng)絡(luò)中。
看完上述內(nèi)容,你們掌握eosjs轉(zhuǎn)賬代碼怎么寫的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!