But it was just the beginning of the story. My collegue asked me if I had a private key for the address 0x9c86825280b1d6c7dB043D4CC86E1549990149f9. I had sent him a private key for address 0x231A3925A014EF0a11a0DC5c33bF7cdB3bd9919f, which was used to deploy a contract to the first address. We discussed the issue and decided it was not possible to recover this money 😔

Every contract deployed to Ethereum network has a specific address, which looks random, but I discovered exactly how contract address is generated on deploy: https://ethereum.stackexchange.com/a/761/3032. Simply it is just hash of transaction sender address and nonce number (equals to number of transactions by this sender):

deployed_address = sha3(rlp.encode([sender, nonce]))

This gave me an idea to use the original wallet (the one I used in TESTNET previously) to deploy several new smart contracts to MAINNET. I developed a simple wallet smart contract, which would allow me to display and reclaim lost funds:

contract SimpleWallet is Ownable { function () public payable {

} function weiBalance() public constant returns(uint256) {

return this.balance;

} function claim(address destination) public onlyOwner {

destination.transfer(this.balance);

}

}

Then I found a transaction which deployed contract in TESTNET: 0xc4c32a3d97dbd691eb3646e4c0c404e899a632010bc48d7182d75bef6803b7bc and discovered that nonce field was equal to 13. So I sent 0.03 ETH to this wallet in MAINNET and started to deploy a simple wallet smart contract to MAINNET multiple times, until nonce had reached value 13. And thats it, I got smart contract deployed to the desired address! Here are 2 transactions with nonce equal to 13, which deployed 2 diffrerent smart contracts into 2 different networks to exactly the same addresses with 5 days difference 😎:

Funds were successfully claimed by calling the claim method of a freshly deployed simple wallet smart contract 👏👏👏

Also you may notice that this contract in MAINNET was deployed two days later, after it had been funded 🤗: