16

According to Whitehat Withdrawal contract - Update and Next Steps and Whitehat Withdrawal contract - Last update before deployment, the Goodies will be deploying the withdrawal contracts whetcwithdraw.sol, authorized_addresses.sol and whauthorizeaddress.sol to facilitate the withdrawal of Classic Ethers (ETCs) based on your The DAO tokens DAO balance at block 1,919,999 just prior to the hard fork.

How do I use these contracts to withdraw my Classic Ethers (ETC) from the withdrawal contract?



The DAO Refunds



See also:

2 Answers 2

13

Update Apr 12 2017

There are only 3 more days to withdraw your refunds from the WhitehatWithdraw contract.

There are still 1,651,062.7506 ETC (USD 4,292,763.15) remaining in the withdrawal contract.

87% of accounts have NOT withdrawn their refunds.

Check this spreadsheet to confirm that you have withdrawn all your refunds.

Following is a chart of the WhitehatWithdraw account balance:

enter image description here

The latest instructions can be found at The DAO Refunds.



Update Jan 1 2017

As documented in DAO Token Holders, Come Claim Your Money!, MyEtherWallet will be discontinuing support for withdrawing ETCs after Jan 1 2017.

Update Jan 4 2017

A new version of MyEtherWallet has just been released with a Node Switcher. DAO to ETC withdrawals can still be executed by switching to MyEtherWallet's ETC node, but support for the ETC node will cease in the next month. Please note that ETC transactions will be replayed on the ETH chain. As mentioned in the release notes, move your ETH balance to a new address before executing your ETC transactions!

You can also download the old v3.37 version of MyEtherWallet and execute your DAO to ETC withdrawal with replay protection, but again MyEtherWallet is intending to cease support for their ETC node in the next month.

Update Jan 31 2017

The Whitehat Withdrawal Contract has been extended for 2 months until Apr 15 2017.

Update Mar 29 2017

The latest instructions can be found at The DAO Refunds.



Summary

From Whitehat Withdrawal contract - Update and Next Steps:

If there are no major objections or exploits found, the withdrawal contract will be deployed on Aug, 30th, 2016 at 17:00 CET. All the users will have 6 months from that day on to claim their refund.

The withdraw contract will probably be topped up multiple times, since there is still another small DAO we are waiting to come out of its creation period and also some funds are held by exchanges. So people would need to claim the remaining of their portion each time funds are sent to the contract.

We are also actively working with exchanges to resolve the issue of frozen funds and will post an update as soon as there is new information so these funds can be added to the withdraw contract as well.

After 6 months, all remaining funds will be sent to a multisig controlled by the whitehat group and will either be kept as donation for the efforts they have done to bring this value back to the token holders or donated to community developments.

The 6 month expiry is 24 week from the deployment of the withdrawal contract. All remaining funds will be removed from the withdrawal contract on Feb 13 2017. Execute your withdrawals before this time if you want to claim your ETCs.

The #withdrawal_support channel on thedao.slack.com has been created for users to get (and give) support on the withdrawal contract process. And donation addresses for the Goodies are 0xf63d257fc3576f9736fd9014cf0f0e1f0e7dd531 on the ETH chain and 0xe79aca5c8cda44d834efa969906a377cb987e02e on the ETC chain.

You should now be able to withdraw about 0.60417219365076306985 ETC per 1 ETH worth of tokens (100 DAOs). The withdrawal contract will be topped up with another ~ 0.11 ETC per 1 ETH worth of tokens (100 DAOs). Further withdrawals can be made when the withdrawal contract is topped up at a later stage. From the script at the bottom of this answer:

WH Total Funds      :  6971038.689221082299900709
The DAO Total Supply: 11538165.381458511407837618
WH Fill Factor      : 0.60417219365076306985

At 07:02 Sep 4 2016 UTC, there are 2749352.9709 ETCs remaining in the withdrawal contract at 0x9f5304da62a5408416ea58a17a92611019bd5ce3. About 60% of available funds (6971038.6892 ETCs) have been withdrawn.

At 15:05 Sep 6 2016 UTC, there are 2697281.1240 ETCs remaining in the withdrawal contract. About 61% of available funds have been withdrawn. And the Baddies will have access to 3641694 ETCs in 7 hours.

At 01:38 Sep 7 2016 UTC, there are 4132558.4010 ETCs remaining in the withdrawal contract. The withdrawal contract has been topped up with the final deposit, including a bonus 186,516.63 from currency conversion rate movements. Here is an update of the statistics:

WH Total Funds      :  8440400.269846492299900709
The DAO Total Supply: 11538165.381458511407837618
WH Fill Factor      : 0.73152013260357357102

From When will the Baddies have access to the hacked funds on the Ethereum Classic chain?:

Stolen booty: 3641694.241898506992612606
The DAO Total Supply: 11538165.381458511407837618
Steal Factor: 0.3156
Steal + WH Fill Factor: 1.0471

From @lefteris:

Hey ... if the attacker is here and reading the slack ... you would become a hero and end this DAO chapter beautifully if you deposited all the ETC you just got in to the withdraw contract for the DTH to retrieve.

Use function deposit() on address 0x9f5304da62a5408416ea58a17a92611019bd5ce3 with msg.value being the amount of ETC.

You can check the amount of ETCs paid out, the amount of ETCs you can withdraw, and withdraw the ETCs (you have to provide a signature for this - see Method 5 below) at https://whwithdraw.bity.com/ .

You can check your account's DAO balance at the pre-hard-fork block 1,919,999 in theDAOTokenBalance_20160819_155742UTC_balance.xlsx. You can check your account's ETC balance and transactions using the Classic chain block explorer at https://gastracker.io/.


6 Methods Are Listed Below For You To Withdraw Your ETC

  • Method 1 - Withdrawal With MyEtherWallet This is the easiest method to withdraw your ETC. Point your browser to https://www.myetherwallet.com/#the-dao (IMPORTANT to use this correct URL as there are phishing sites popping up every day). See also the Jan 4 2017 update above.

  • Method 2 - Withdrawal With Ethereum Wallet On The Classic Chain Sync Ethereum Wallet 0.8.1 (NOT 0.8.2) to the Classic chain and execute the WhitehatWithdraw.withdraw(...) function.

  • Method 3 - Withdrawal With geth On The Classic Chain Sync geth 1.4.10 or later with the --oppose-dao-fork option and execute the WhitehatWithdraw.withdraw(...) function.

  • [CLOSED] Method 4 - Providing Your Signature Of Intent On The ETH Chain For The Goodies To Execute Your Withdrawal - For Wallet Contracts Only Sign your intent for the Goodies to execute the withdrawal on your behalf by signing a message on the hard-forked Ethereum chain. You then don't have to sync with the Ethereum Classic chain. This signature needed to be executed before Aug 30 2016 at 17:00 CET when the WhitehatWithdraw contract was deployed.

  • Method 5 - Using sign() for the Whitehat Withdrawal On The ETH Chain - For Non-Wallet Contract Accounts See How To Use sign() for the Whitehat Withdrawal for further details. Note that you have to create a new signature for each new withdrawal, even if you are specifying the same parameters (from @jbaylina in the thedao.slack.com/messages/withdraw_support).

  • Method 6 - Using WHETCWithdraw From A Mist Contract On The Classic Chain See Using whetcwithdraw from a mist contract.


Important

  • Your addresses must be all lowercase as these were used in the creation of the mapping keys in the withdrawal contract. Use https://convertcase.net/.
  • As suggested by @kirkdameron, @lunejy and @bocrypto on the thedao.slack.com/messages/withdraw_support, you can create a fresh new account on the ETH (or ETC as the accounts are the same) chain, and use this new account as your _beneficiary account when you execute the WhitehatWithdraw.withdraw(...) function. In MyEtherWallet you can specify your new accounts as the ETC destination address. Don't use this new account on the ETH chain. You are now safe from the transaction replays.
  • You may want to transfer your ETCs after you have withdrawn them. To prevent the replaying of your ETC transfer transaction on the hard-forked ETH chain, see How to conditionally send ethers to another account post-hard-fork to protect yourself from replay attacks .


REMEMBER THAT THERE WILL BE MORE ROUNDS OF REFUNDS - when the Goodies top up this withdrawal contract. Check the https://thedao.slack.com/messages/withdraw_support/ forum and https://www.reddit.com/r/ethereum/ periodically. I'll update this page as well.


21:26 Aug 31 2016 21:26 Kraken has deposited the frozen funds into this withdrawal contract. You can check the amount available for withdrawal using the "Calculate withdraw" function in the Ethereum Wallet, or using the whitehatWithdraw.calculateWithdraw(myAccount) function in geth as documented below.

03:00 Sep 1 2016 UTC Poloniex has deposited the frozen funds into the withdrawal contract.

08:36 Sep 1 2016 UTC Bonus geth + bash script to show you the Whitehat Withdrawal amounts paid and outstanding for your account - see the bottom of this answer.

01:38 Sep 7 2016 UTC Whitehat Withdrawal Contract - Final Deposit is Available. The withdrawal contract has had it's final top up of 269,566.58 ETC (from childDAO #101) and 1,199,777.62 ETC (from converted ETCs) - you will need to execute the withdrawal process one last time. Nice work overall Goodies!



Details

Details based on the contracts in github at 16:01 Aug 27 2016.

Method 1 - Withdrawal With MyEtherWallet

Update Jan 1 2017 - MyEtherWallet will be discontinuing ETC withdrawal support after Jan 1 2017.

LIVE AND WORKING

Run MyEtherWallet from https://www.myetherwallet.com/#the-dao (Be careful as there are bogus MyEtherWallet sites with similar URLs popping up over the internet aiming to steal your private keys.) enter image description here

And MyEtherWallet's donation address is 0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8.



Method 2 - Withdrawal With Ethereum Wallet On The Classic Chain

LIVE AND WORKING - REMEMBER TO RUN THIS ON THE CLASSIC CHAIN

If you want to use the WhitehatWithdraw contract to withdraw to a regular account (rather than a Wallet contract), you will have to execute the the following function:

withdraw(address _beneficiary, uint _percentageWHG)

You will need Ethereum Wallet 0.8.1 to use the wallet on the Classic chain.

Note that Ethereum Wallet 0.8.2 will NOT run on the Classic chain but instead prompts you to download the tools from https://ethereumclassic.github.io.

When you start Ethereum Wallet 0.8.1, it will ask you "Do you want to activate the chain in which funds linked to the exploit are restored to a contract where they can be withdrawn by The DAO token holders?". Answer No to use Ethereum Wallet on the Classic chain. Ethereum Wallet will then instruct the packaged geth executable to download the Classic chain with the --fast automatically. You may also be asked whether you want to download the new version - just close the dialog box.

See How do I sync the Ethereum Wallet and/or geth to the Ethereum Classic chain without affecting my hard-forked Ethereum chain? for instructions on running the Classic chain beside the hard-forked chain - at different times.

Watch WhitehatWithdraw Contract

In the Contracts tab, click on Watch Contract, then:

  • Set Contract Name to WhitehatWithdraw
  • Set Contract Address to 0x9f5304da62a5408416ea58a17a92611019bd5ce3 (this is the new re-deployed address)
  • Set JSON Interface to [{"constant":true,"inputs":[{"name":"_dth","type":"address"}],"name":"calculateWithdraw","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"escapeHatch","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_additionalSeconds","type":"uint256"}],"name":"extendClosingTime","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getPaidOut","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"getWHGDonationAddress","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getMyBalance","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"name":"","type":"address"}],"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"type":"function"},{"constant":false,"inputs":[],"name":"claimRemaining","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[{"name":"","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"proxyWithdraw","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"getTotalFunds","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"}],"name":"withdraw","outputs":[],"type":"function"},{"inputs":[{"name":"_whg_donation","type":"address"},{"name":"_daoBalanceSnapshotAddress","type":"address"},{"name":"_escapeAddress","type":"address"},{"name":"_remainingBeneficiary","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"dth","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"percentageWHG","type":"uint256"},{"indexed":false,"name":"withdrawType","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_depositor","type":"address"},{"indexed":false,"name":"_allowed","type":"bool"}],"name":"CertifiedDepositorsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"EscapeCalled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"RemainingClaimed","type":"event"}]
  • Click OK

  • Here is what your screen should look like, with the appropriate address when it is announced: enter image description here


Execute WhitehatWithdraw.withdraw(...)

In the Contracts tab, click on the WHITEHATWITHDRAW custom contract you just created, then:

  • Before executing your withdrawal, you can check:
    • The amount you have already been paid by entering your address in the Get paid out section on the left hand side of the screen.
    • The amount available for withdrawal by entering your address in the Calculate withdraw section on the left hand side of the screen.
  • On the right hand side under Write To Contract, select function Withdraw.
  • In the beneficiary field, enter your address.
  • In the percentage whg field, enter a number between 0 and 100. 0 means that you are not going to make any contribution to the Goodies for their hard work reclaiming the ethers from the hacked The DAO contract. 100 means that you are going to donate all your ETCs to the Goodies for their hard work.
  • In the Execute From field, select the same address as you specified in the Beneficiary field.
  • In the Send ETHER field, enter 0. This will prevent any transfer of ethers if/when the transaction is replayed on the hard-forked-chain.
  • Click EXECUTE and enter your password to unlock the selected account.

  • Here is what your screen should look like: enter image description here

  • NOTE - In the password confirmation screen you have to make sure that you provide at least 200000 gas

  • The ETC balance on your address should be deposited with ETCs in proportion to your The DAO token holding multiplied by the percentage of funds the Goodies have reclaimed. Your Ethereum Wallet address balance should update with the new balance.



Method 3 - Withdrawal With geth On The Classic Chain

LIVE AND WORKING - REMEMBER TO RUN THIS ON THE CLASSIC CHAIN

Make sure that you are running geth version 1.4.10 or later. And run your geth commands with the --oppose-dao-fork option so that you are on the Ethereum Classic blockchain. The commands follow - add --datadir ~/classicchain before the console parameter to sync the classic chain to a different directory:

user@Kumquat:~$ geth --oppose-dao-fork --fast console
// Allow chain to sync
var percentageWHGDonation = 10; // MINIMUM 0, MAX 100

var whitehatWithdrawAddress = "0x9f5304da62a5408416ea58a17a92611019bd5ce3"; // New re-deployed address
var whitehatWithdrawABIFragment = [{"constant":true,"inputs":[{"name":"_dth","type":"address"}],"name":"calculateWithdraw","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getPaidOut","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"}],"name":"withdraw","outputs":[],"type":"function"}];
var whitehatWithdraw = eth.contract(whitehatWithdrawABIFragment).at(whitehatWithdrawAddress);    

var myAccount = "{your account}";
// var myAccount = "{your account}".toLowerCase(); // As suggested by @0x8000

// Check paid out amount
var paidoutAmount = whitehatWithdraw.getPaidOut(myAccount);
console.log("So far you have been paid " + web3.fromWei(paidoutAmount, "ether") + " ETC");

// Check withdrawal amount
var withdrawalAmount = whitehatWithdraw.calculateWithdraw(myAccount);
console.log("You can withdraw " + web3.fromWei(withdrawalAmount, "ether") + " ETC");

// Withdraw
personal.unlockAccount(myAccount, "{your password}");
var withdraw = whitehatWithdraw.withdraw(myAccount, percentageWHGDonation, {from: myAccount, value: 0, gas:200000});
console.log(withdraw);

See How do I sync the Ethereum Wallet and/or geth to the Ethereum Classic chain without affecting my hard-forked Ethereum chain? for instructions on running the Classic chain beside the hard-forked chain - at different times.



[CLOSED] Method 4 - Providing Your Signature Of Intent On The ETH Chain For The Goodies To Execute Your Withdrawal - For Wallet Contracts Only (Authorizeaddress)

See the Authorizeaddress section of Whitehat Withdrawal contract - Update and Next Steps if you want you used a Wallet Contract to hold DAO tokens just prior to the hard fork.

This signature needed to be executed before Aug 30 2016 at 17:00 CET when the WhitehatWithdraw contract was deployed.



Bonus geth Script To Check Your Whitehat Withdrawal Balance

Here is a script to check your Whitehat Withdrawal balances. Save it into a file and see the instructions at the top of the file.

#!/bin/sh
# ------------------------------------------------------------------------------
# Retrieve information on the Whitehat ETC Withdrawal contract for your accounts
#
# This script runs in Linux and OS/X. This script may run in Windows with the
# Cygwin bash shell installed.
#
# Usage:
#   1. Download this script to getWHETCBalances .
#   2. `chmod 700 getWHETCBalances`
#   3. Run `geth --oppose-dao-fork console` in a window.
#   4. Then run this script `./getWHETCBalances` in a separate window.
#
# Enjoy. (c) BokkyPooBah 2016. The MIT licence.
# ------------------------------------------------------------------------------

geth attach << EOF | grep "INFO" | sed "s/^INFO//"

function padTokens(s, n) {
  var o = s.toFixed(0);
  while (o.length < n) {
    o = " " + o;
  }
  return o;
}

function padEthers(s, n) {
  var o = s.toFixed(18);
  while (o.length < 27) {
    o = " " + o;
  }
  return o;
}

function checkAllBalances() { 
  var theDAOABIFragment = [{ "type": "function", "outputs": [ { "type": "uint256", "name": "balance", "value": "0" } ], "name": "balanceOf", "inputs": [ { "type": "address", "name": "_owner" } ], "constant": true }, {"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"type":"function"}];
  var theDAOAddress = "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413";
  var theDAO = eth.contract(theDAOABIFragment).at(theDAOAddress);
  var whitehatWithdrawAddress = "0x9f5304da62a5408416ea58a17a92611019bd5ce3";
  var whitehatWithdrawABIFragment = [{"constant":true,"inputs":[{"name":"_dth","type":"address"}],"name":"calculateWithdraw","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"getPaidOut","outputs":[{"name":"","type":"uint256"}],"type":"function"}, {"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_percentageWHG","type":"uint256"}],"name":"withdraw","outputs":[],"type":"function"}, {"constant":true,"inputs":[],"name":"getTotalFunds","outputs":[{"name":"","type":"uint256"}],"type":"function"}];
  var whitehatWithdraw = eth.contract(whitehatWithdrawABIFragment).at(whitehatWithdrawAddress);    
  var theDAOTotal = new BigNumber(0); 
  var ethersTotal = new BigNumber(0); 
  var whPaidoutAmountTotal = new BigNumber(0); 
  var whWithdrawalAmountTotal = new BigNumber(0); 

  var whTotalFunds = whitehatWithdraw.getTotalFunds();
  console.log("INFOWH Total Funds      :  " + web3.fromWei(whTotalFunds, "ether"));
  var totalSupply = theDAO.totalSupply();
  console.log("INFOThe DAO Total Supply: " + web3.fromWei(totalSupply, "ether"));
  var whFillFactor = whTotalFunds.div(totalSupply);
  console.log("INFOWH Fill Factor      : " + whFillFactor);

  console.log("INFO  #     Account                                        TheDAO                         ETC             WH Paid Out ETC           WH Withdrawal ETC");
  console.log("INFO------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------");
  var i =0; 
  eth.accounts.forEach( function(e) {
    var tokens = theDAO.balanceOf(e).div(1e16);
    theDAOTotal = theDAOTotal.add(tokens.toString());
    var ethers = web3.fromWei(eth.getBalance(e), "ether");
    ethersTotal = ethersTotal.add(ethers.toString());
    var whPaidoutAmount = web3.fromWei(whitehatWithdraw.getPaidOut(e), "ether");
    whPaidoutAmountTotal = whPaidoutAmountTotal.add(whPaidoutAmount);
    var whWithdrawalAmount = web3.fromWei(whitehatWithdraw.calculateWithdraw(e), "ether");
    whWithdrawalAmountTotal = whWithdrawalAmountTotal.add(whWithdrawalAmount);

    console.log("INFO  " + i + "\t" + e + " " + padTokens(tokens, 10) + " " + padEthers(ethers) + " " + padEthers(whPaidoutAmount) + " " + padEthers(whWithdrawalAmount)); 
    i++; 
  })
  console.log("INFO------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------");
  console.log("INFO  " + i + "    Total                                      " + padTokens(theDAOTotal, 10) + " " + padEthers(ethersTotal) + " " + padEthers(whPaidoutAmountTotal) + " " + padEthers(whWithdrawalAmountTotal));
}; 

checkAllBalances()

exit;

EOF

And here is some sample report data from the script above.

user@Kumquat:~$ getWHETCBalances 
WH Total Funds      :  6971038.689221082299900709
The DAO Total Supply: 11538165.381458511407837618
WH Fill Factor      : 0.60417219365076306985
  #     Account                                        TheDAO                         ETC             WH Paid Out ETC           WH Withdrawal ETC
------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------
  0     0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa        367        0.111111111111111111        0.111111111111111111        0.111111111111111111
  1     0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb        735        0.222222222222222222        0.222222222222222222        0.222222222222222222
  2     0xcccccccccccccccccccccccccccccccccccccccc       1103        0.333333333333333333        0.333333333333333333        0.333333333333333333
------- ------------------------------------------ ---------- --------------------------- --------------------------- ---------------------------
  3     Total                                            2205        0.666666666666666666        0.666666666666666666        0.666666666666666666



Update 15:50 Sep 02 2016 UTC

As queried by @Chevdor, the code using the Solidity Online Compiler using solc v0.3.5-2016-08-10-fc60839 matches the code deployed at the ETC address 0x9f5304da62a5408416ea58a17a92611019bd5ce3.

Here is the deployed code:

user@Kumquat:~$ geth --exec 'eth.getCode("0x9f5304da62a5408416ea58a17a92611019bd5ce3").substr(0,160)' attach
"0x606060405236156100b95760e060020a600035046302ef6c8681146100c15780631554611f146100dc5780633e2640d6146100f15780633fb27b851461010557806357211ac01461013b57806364da"

And here is the Solidity Online Compiler screen showing the runtime code at the bottom of the screen: enter image description here

And the creation transaction can be found here. This transaction was executed with the following parameters (you can see these parameters in blocks 76 to 80 in the block explorer):

8
  • In the answer you put the New York time as 'Aug 30 2016 at 09:00'. Shouldn't it be 10am? (BTW, thanks for the detailed answer) Aug 29, 2016 at 1:32
  • 1
    To have lowercase address in geth, you should have : var myAccount = "{your account}".toLowerCase();
    – 0x8000
    Aug 31, 2016 at 10:16
  • 1
    why does this say that the withdrawal's contract address is 0x9f5304da62a5408416ea58a17a92611019bd5ce3 but the blog post blog.bity.com/2016/08/29/… mentions a different address: 0xd4fb7fd0c254a8c6211e441f7236fa9479708a99?
    – knocte
    Dec 21, 2016 at 12:25
  • 1
    sorry I meant this URL: blog.bity.com/2016/08/26/…
    – knocte
    Dec 21, 2016 at 12:53
  • 1
    The contract on the ETH chain etherscan.io/address/… is a contract where users who don't want to download the ETC chain can submit a request for Bity to automatically execute the DAO -> ETC withdrawal on behalf of the user. This option for Bity to execute the DAO -> ETC withdrawal on a user's behalf was to be executed by the user BEFORE the DAO -> ETC withdrawal contract was deployed on the ETC chain, and is no longer available for use. Dec 21, 2016 at 13:03
4

I think it remains good practice to check any contract before running it.

The contract seems to be at: https://github.com/BitySA/whetcwithdraw/blob/master/whetcwithdraw.sol

Is there a way to check that the contract at the address 0x9f5304da62a5408416ea58a17a92611019bd5ce3 is indeed coming from the source above?

In order to verify that the contract deployed is indeed matching the source above, could you please provide the 4 parameters used to deploy the contract? Especially the "escape address" and the "remaining beneficiary" as well as what they do?

As far as I can tell, the ABI coming from the source matches the one from this post except the removal of the fill method.

EDITS: The parameters are NOT relevant on checking the bytecode and thanks to the help of the folks on the slack channel, I and a few others were able to confirm that the bytecode matches the source as long as the right compiler version is used. In a nutshell:

So I DO now confirm on my end as well that using the right (nightly sic) version of the compiler (ethereum.github.io/browser-solidity/#version=soljson-v0.3.5-2016-08-10-fc60839.js&optimize=true) , the code at https://raw.githubusercontent.com/BitySA/whetcwithdraw/master/whetcwithdraw.sol matches the bytecode at the address 0x9f5304da62a5408416ea58a17a92611019bd5ce3.

1

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.