I'm executing the basic token contract found at https://ethereum.org/token:

contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }

contract MyToken {
    /* Public variables of the token */
    string public standard = 'Token 0.1';
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;

    /* This creates an array with all balances */
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    /* This generates a public event on the blockchain that will notify clients */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /* Initializes contract with initial supply tokens to the creator of the contract */
    function MyToken(
        uint256 initialSupply,
        string tokenName,
        uint8 decimalUnits,
        string tokenSymbol
        ) {
        balanceOf[msg.sender] = initialSupply;              // Give the creator all initial tokens
        totalSupply = initialSupply;                        // Update total supply
        name = tokenName;                                   // Set the name for display purposes
        symbol = tokenSymbol;                               // Set the symbol for display purposes
        decimals = decimalUnits;                            // Amount of decimals for display purposes

    /* Send coins */
    function transfer(address _to, uint256 _value) {
        if (balanceOf[msg.sender] < _value) throw;           // Check if the sender has enough
        if (balanceOf[_to] + _value < balanceOf[_to]) throw; // Check for overflows
        balanceOf[msg.sender] -= _value;                     // Subtract from the sender
        balanceOf[_to] += _value;                            // Add the same to the recipient
        Transfer(msg.sender, _to, _value);                   // Notify anyone listening that this transfer took place

    /* Allow another contract to spend some tokens in your behalf */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        tokenRecipient spender = tokenRecipient(_spender);
        spender.receiveApproval(msg.sender, _value, this, _extraData);
        return true;

    /* A contract attempts to get the coins */
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        if (balanceOf[_from] < _value) throw;                 // Check if the sender has enough
        if (balanceOf[_to] + _value < balanceOf[_to]) throw;  // Check for overflows
        if (_value > allowance[_from][msg.sender]) throw;   // Check allowance
        balanceOf[_from] -= _value;                          // Subtract from the sender
        balanceOf[_to] += _value;                            // Add the same to the recipient
        allowance[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
        return true;

    /* This unnamed function is called whenever someone tries to send ether to it */
    function () {
        throw;     // Prevents accidental sending of ether

But when I see the log at testrpc or I look at web3.eth.getTransactionReceipt(txHash)I can't see any log or event.

Does anybody know what could I've doing wrong? Any known bug with web3 or testrpc in this topic?

  • Possible duplicate of contract event not firing in web3 node console
    – niksmac
    Commented Jun 23, 2016 at 1:43
  • How much gas are you providing and what is gasUsed in the receipt? Have you tried increasing the gas and which function are you invoking?
    – eth
    Commented Jun 23, 2016 at 4:05
  • i'm using 100.000 gas and I'm using less than the half Commented Jun 23, 2016 at 6:30
  • @niksmac that's not a duplicate of my question, I'm watching the good way the events, also looking at testrpc logs and inscpecting the TokenReceipt, and nothing works. Commented Jun 23, 2016 at 6:32
  • Please check if your account is unlocked. If your account is locked, the transaction is sent but you do not get a receipt. See ethereum.stackexchange.com/questions/4307/…. Commented Jun 23, 2016 at 13:54

1 Answer 1


Is any ether being transferred? Is it going through? If so, try making sure the ABI's are correct. If that doesn't fix your problem try using this methodology for monitoring events:

var contract = web3.eth.contract(abi).at(addr);
var transfers = contract.Transfer( {}, {fromBlock: 0, toBlock: 'latest'})

//Watch Events
transfers.watch(function(error, result) {


Can you post your web3 transaction code?

  • This code is very old and gives me the error, "cannot call watch on undefined"
    – Jim
    Commented Nov 1, 2021 at 19:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.