github.com/igggame/nebulas-go@v2.1.0+incompatible/nebtestkit/cases/contract/contract.erc20.test.js (about) 1 'use strict'; 2 3 var TestnetNodes = require('../../testnet-nodes'); 4 var FS = require("fs"); 5 var expect = require('chai').expect; 6 var BigNumber = require('bignumber.js'); 7 8 var nodes = new TestnetNodes(); 9 var coinbase = "1a263547d167c74cf4b8f9166cfa244de0481c514a45aa2c" 10 var passphrase = "passphrase" 11 nodes.Start(); 12 13 function checkTransaction(hash, done, count) { 14 if (count > 6) { 15 console.log("tx receipt timeout:" + hash); 16 nodes.Stop(); 17 done(); 18 return; 19 } 20 21 var node = nodes.RPC(0); 22 node.api.getTransactionReceipt(hash).then(function (resp) { 23 console.log("tx receipt:" + JSON.stringify(resp)); 24 return node.api.getAccountState(coinbase); 25 }).then(function (resp) { 26 console.log("after state:" + JSON.stringify(resp)); 27 nodes.Stop(); 28 done(); 29 }).catch(function (err) { 30 setTimeout(function () { 31 checkTransaction(hash, done, count + 1); 32 }, 2000); 33 }); 34 } 35 36 describe('contract transaction', function () { 37 before(function (done) { 38 this.timeout(10000); 39 setTimeout(done, 5000); 40 }); 41 42 it('erc20 contract', function (done) { 43 var state; 44 var node = nodes.RPC(0); 45 node.api.getAccountState(coinbase).then(function (resp) { 46 console.log(resp); 47 state = resp; 48 var erc20 = FS.readFileSync("../nf/nvm/test/ERC20.js", "utf-8"); 49 var contract = { 50 "source": erc20, 51 "sourceType": "js", 52 "args": '["TestToken", "NAS", 1000000000]' 53 } 54 return nodes.SendTransaction(coinbase, coinbase, "0", parseInt(state.nonce) + 1, "0", "2000000", contract); 55 }).then(function (resp) { 56 console.log(resp); 57 expect(resp).to.be.have.property('contract_address'); 58 var call = { 59 "function": "totalSupply" 60 } 61 return nodes.SendTransaction(coinbase, resp.contract_address, "0", parseInt(state.nonce) + 2, "0", "2000000", call); 62 }).then(function (resp) { 63 console.log(resp); 64 checkTransaction(resp.txhash, done, 1); 65 }).catch(function (err) { 66 console.log("send err:" + err) 67 nodes.Stop(); 68 done(); 69 }); 70 }); 71 });