发送 ERC20 代币



我有一个坚固性合约,它铸造了固定数量的ERC20代币(使用ropsten测试网络)。我需要一种方法将代币从一个钱包发送到另一个钱包(最好使用 web3js 库,但 JSON-RPC 可以工作,我有该帐户的私钥)。

这是我到目前为止的代码

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);

当我执行此代码片段时,我遇到问题说"TypeError:(中间值).at 不是一个函数"。

你可以试试这段代码

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]nn' + hash);
            }).on('confirmation', function (confirmationNumber, receipt) {
                console.log('n[CONFIRMATION] ', confirmationNumber);
                resolve(receipt);
            }).on('receipt', function (receipt) {
                console.log('n[RECEIPT]nn', receipt);
                // TODO: process receipt if needed
            }).on('error', function (error) {
                console.log('n[ERROR]nn' + error);
                reject(error);
            }).then(function (done) {
                console.log('n[DONE]nn', done);
            });
        });
    });
}

最新更新