cómo llamar a un contrato inteligente implementado con sendRawTransaction [duplicado]

con este código quiero llamar a la función de transferencia de mi token smartcontract. según mi conocimiento, tengo que agregar este ".transfer (dirección, cantidad)" al campo de datos. ¿Estoy en lo correcto? También estoy usando web3 0.20. en esta versión tengo que usar getData ¿no? entonces será var dataforTx = mycontract.tranfer.getData(address,amount); luego agregue ese dataforTx al campo de datos?

var Tx = require('ethereumjs-tx'); var llave privada = nuevo búfer ('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')

var rawtx = {nonce: '0x00', gasePrice: '0x09184e72a000',
gasLimit: '0x2710', a: '0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000SETRA **ANTIA ** ANTERIO **
AD obtener el valor hexadecimal de mis datos para Tx???????**

var tx = nuevo Tx(rawTx); tx.sign(clave privada);

var serializedTx = tx.serialize();

//console.log(serializedTx.toString('hex'));

web3.eth.sendRawTransaction('0x' + serializedTx.toString('hex'), function(err, hash) { if (!err) console.log(hash); // "0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385" });

Todavía no puedo transferir el token. Devuelve el valor hash pero no refleja ningún saldo en otra cuenta. y si uso balanceOf, entonces cómo capturar la salida de la función balanceOf en sendRawTransaction

Respuestas (2)

var abi=[//your abi array];

var contractAddress = "//your contract address";

var contract = web3.eth.contract(abi).at(contractAddress);


let send_add = data.send_public_address;

let recv_add = rec_public_address;

let amount = web3.toHex(transfer_amount),

let nonce = web3.toHex(web3.eth.getTransactionCount(send_public_address));

var private_key = privatekey_sender.slice(2);

let gas = web3.toHex(data.gas_limit);

let gasPrice = web3.toHex(data.gas_price);

var rawTx = {

        from: send_add,

        nonce: nonce,

        gasLimit: gas,

        gasPrice: gasPrice,

        amount: web3.toHex(transfer_amount),

        to: recv_add,

    };

var transaction = new tx(rawTx);

var txData = new Buffer(private_key, 'hex');

transaction.sign(txData);

var serializedTx = transaction.serialize().toString('hex');

contract.transfer.sendTransaction(recv_add , amount , {'0x' + serializedTx}, 
function (err, txHash) {

        if (txHash) {

            next(null, txHash);

        }

        else if (err && err.message) {

            next(err.message, null);

        }

        else {

            next('Unable to sendTransaction', null);

        }

    });
¿Puedes agregar una explicación de cómo esto responde a la pregunta?
No se recomiendan las respuestas de solo enlace porque se vuelven inútiles si el servidor está inactivo o la página se mueve. Es mejor incluir los puntos principales en la respuesta y solo usar el enlace para ampliar los detalles.