Search code examples
blockchainethereumwalletomise

Withdraw airdropped OMG tokens from wallet


I'm trying to withdraw OMG (Omise Go) tokens that were air-dropped to some Ethereum accounts of mine.

How to do this securely, cleanly, easily?


Solution

  • ---Confirmed answer below---

    This works with any ERC20 token - not just OMG. This is the simplest, cleanest, most first principled way to separate your ERC-20 tokens.

    This answer is useful for those who prefer to use raw command line Ethereum (e.g. geth, eth, etc.)

    Simply enter the commands below.

    Remember the following:

    Be sure to replace myETHaccount and myOMGaccount string variables with your own addresses!

    If you don't have a destination OMG account, create an OMG on an exchange. I use https://bittrex.com

    bittrex.com requires a minimum deposit of 0.1 OMG

    //Official OMG ABI definition: var omg_abi=[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_releaseTime","type":"uint256"}],"name":"mintTimelocked","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}];

    //Official OMG contract address: var omg_address='0xd26114cd6EE289AccF82350c8d8487fedB8A0C07';

    //now let's create an instance of OMG contract: var instance = web3.eth.contract(omg_abi).at(omg_address);

    //set your ETH address var myETHaccount=eth.accounts[3];

    //check your available OMG balance: web3.fromWei(instance.balanceOf(myETHaccount),"ether");

    //check balance of all your addresses in ~/.ethereum: eth.accounts.forEach(function(e,i){console.log("eth.accounts["+i+"]: " + "\tbalance:" + web3.fromWei(instance.balanceOf(eth.accounts[i]),"ether") + " OMG")})

    //set OMG address var myOMGaccount='0xc0c941740a550e05c50c060168c2fda1f9a6ad7b';

    //transfer full amount: instance.transfer(myOMGaccount,instance.balanceOf(myETHaccount),{from:myETHaccount,gas:180000});

    PROMPT: ENTER_YOUR_PASSWORD

    //Congratulations. You're done!

    //Don't forget to lock your account: web3.personal.lockAccount(myETHaccount)

    //copy and paste the tx receipt and check it on etherscan.io (for example) //**Note 1**: OMG contract can take 5 mins before it sends it to bittrex.com //**Note 2**: bittrex.com takes 36 confirmations before balance will appear