Where do I find the _h Hash to confirm an ETC Multisig Contract Transaction [SOLVED: Specify amounts in Wei, not Ether/ETC]


I’d like to send ETC from a multisig contract with Parity or MEW. There is a good description how to do this on the ETH chain: https://myetherwallet.github.io/knowledge-base/faq/interacting-with-ethereum-multisig-wallet.html

I didn’t find an ETC Chain Explorer which shows the hash needed for the confirmation step mentioned under point 4 subpoint 3 Gastracker.io seems not to have an event log tab like etherscan.io.

Running Ethereum/Mist Wallet on top of Parity (runned in classic mode) didn’t work in any way for me. Ethereum Classic and Emrald Wallet doesn’t seem to provide contract interaction functionality.

Does anyone know how to figure out this hash for a transaction on the ETC Blockchain?


Can you get it out of the raw transaction? Basically on the screen right before you broadcast the transaction in MEW. Should be some JSON with the important bit of info you need already computed.


dear antony
many thanks for your reply!
Thats what I also thought and tested, but I don’t finde something like a hash in the raw
Here an example:


What do you think the operation id could be? the 0xA10B… is the contract address.


Not sure then, is it the transaction hash or maybe the block hash?

Would also be helpful to see the code this is from.


It is not the transaction hash, I’ve tested this multiple times. The block hash contains multiple transaction, correct? If so, multiple transactions would be confirmed when taking the block hash, so don’t think this is it.
I don’t have any code because i make it with MEW or parity.


That’s what I additionally found:

The issue here is that you are confusing the transaction hash with the “operation hash”. The command
h = wallet.execute(eth.accounts[2], web3.toWei(5, “ether”), web3.toHex(‘send some money’), { from: eth.accounts[0]});
is actually returning the transaction hash, whereas the contract wants you to refer to the pending operation by its “operation hash”, which the contract defines separately (contracts do not know tx hashes).

What you need to do is set up a listener for the event that the contract will emit, which is called ConfirmationNeeded.
This should work:
wallet.ConfirmationNeeded({address:eth.accounts[2]}, function(err, res){
wallet.confirm(res.args.operation, {from: eth.accounts[0]});
Set that listener before using the execute method, and it will automatocally authorize any transaction. That’s obviously not what you want in a production environment, but it shows what the process should look like.

But as said I’m not familiar with coding.
This is quite a basic function and I don’t think I’m the only one performing such multisig interactions?


I was able to raise the daily spend limit, so no confirmation is necessary now. The transaction still does not work and nothing is transferred although the daily spend amount is raising. How do I figure out if my wallet is frozen and impacted by the parity hack?


Are you using the parity multisig?

Also it won’t be affected if you’re using the parity code for ETC. The ETC version was slightly different from the ETH version and went unaffected.


I created the contract with the Ethereum Wallet on the ETH Chain. I did no change after the fork happened, so I guess the ETC Wallet is also with this Ethereum Wallet code…?

I now make transactions using the execution function with Parity and/or MEW and the daily spend counter goes up, but nothing is transferred. Don’t see the problem… any ideas or other suggestions?


The solution was that I had to enter the amount in WEI format and not in ETC.
In ETC format the value was so small that nothing was transferred towards the contract execution transaction.


For anyone reading along you can see how to convert from Ether/ETC to Wei here: Common Pitfalls