0

The following transaction was sent from what seems to be a Parity multisig wallet:

https://etherscan.io/tx/0xf244329caaee10dd1378ff744a569f37a8dc8dd606921233deccb51e0ed0c5a0#internal

The receiving contract throws when the default entry point is called. My understanding is that the transfer failed, but that etherscan displays that execution completed because the error is captured.

In this respect, the 25 ethers sent as part of this transaction must have never left the original contract. However, the sender of this transaction insists that their balance decreased by 25 ethers, which seems impossible.

Am I missing something? Is this a behavior I'm not aware of, a bug in Solidity, or is the sender mistaken?

1

That transaction executes the proposal a2614b9ce2589b917f712d0e696b37f1f890af12ca260f538977c4c4b0eec001. That proposal was created at tx 0xb97f048e343d75c9e3df85b98295725c4abff8c72a39a796af6fab906a58118c.

Decoding the transaction you have

  • _to: 0xb56d622ddf60ec532b5f43b4ff9b0e7b1ff92db3 (TezosCrowdsale)
  • _value: 0x15af1d78b58c40000 (25 ether)
  • _data: [] (empty array!)

When the proposal is confirmed the multisig wallet will execute:

_to.call.value(_value)(_data);

Since _data field is empty it will call the fallback function for the TezosCrowdsale, and it will throw an exception immediately.

  /* no default action, in case people forget to send their data
     or in case they use a buggy app that forgets to send the data */
  function () {
    throw;
  }

In this case it works as the funds never left the multisigwallet. To ensure this is correct you have to check the balance of the multisig wallet 0x99C04a7ad876e7afc2B1182CeA8804ae253317bb before and after block 3957178 which contains transaction 0xf244329caaee10dd1378ff744a569f37a8dc8dd606921233deccb51e0ed0c5a0.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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