2017-10-24 2 views
1

Ich habe einen Solidität-Vertrag, der eine feste Anzahl von ERC20-Token geprägt hat (unter Verwendung des ROPSTEN-Test-Netzwerks). Ich brauche eine Möglichkeit, die Tokens von einer Brieftasche zu einer anderen Brieftasche zu senden (vorzugsweise die Verwendung der web3js-Bibliothek, aber JSON-RPC würde funktionieren, ich habe den privaten Schlüssel zu dem Konto).Senden von ERC20-Tokens

Hier ist mein Code so weit

var Web3 = require('web3') 
var web3 = new Web3(new 
Web3.providers.HttpProvider('https://ropsten.infura.io/xxxxxxx')); 
const abi = [ {} ]; 
const contract = new web3.eth.Contract(abi).at("0x...") 
contract.transferFrom('0x....', '0x.....', 100); 

Wenn ich diesen Schnipsel ausführen, bekomme ich Probleme sagen: „Typeerror: (Zwischenwert) .at ist keine Funktion“. Ich bin relativ neu zu Web3, also würden irgendwelche Gedanken/Vorschläge am meisten geschätzt.

Antwort

0

können Sie versuchen, diesen Code

transferTokensTo: function(contract, address_from, address, tokens) { 
    return new Promise(function(resolve, reject) { 
     contract.methods.decimals().call().then(function (result) { 
      var decimals = result; 
      console.log("Token decimals: " + decimals); 
      var amount = tokens * Math.pow(10, decimals); 

      console.log('Transfer to:', address); 
      console.log('Tokens: ' + tokens + " (" + amount + ")"); 
      contract.methods.transfer(address, amount).send({ 
       from: address_from, 
       gas: 150000 
      }).on('transactionHash', function (hash) { 
       console.log('\n[TRANSACTION_HASH]\n\n' + hash); 
      }).on('confirmation', function (confirmationNumber, receipt) { 
       console.log('\n[CONFIRMATION] ', confirmationNumber); 

       resolve(receipt); 
      }).on('receipt', function (receipt) { 
       console.log('\n[RECEIPT]\n\n', receipt); 

       // TODO: process receipt if needed 
      }).on('error', function (error) { 
       console.log('\n[ERROR]\n\n' + error); 

       reject(error); 
      }).then(function (done) { 
       console.log('\n[DONE]\n\n', done); 
      }); 
     }); 
    }); 
}