Forum

Return STAKE tokens accidentally locked on the xDai bridge

Hi xDai bridge validators,

We have discovered that few days ago two accounts were sent STAKE tokens to the xDai bridge accidentally. And at least one of the owner posted a request for the help on the forum.

Hopefully for them, the bridge contract on the Ethereum Mainnet side is equipped with the functionality to return assets that are different from the DAI token to a sender. This functionality can be triggered by the xDai bridge governance account, that’s why we are talking to you.

We see it ethical to use this functionality now even if it will cost few dollars for us, but it will add a bit happiness to the World.

We initialized three transactions to return 10 STAKE to 0x920533a21eb5b069089e5ae38d5eb7ba932e7024 and 2 STAKE to 0xfb7eb89925b5823fc524feaa7e906eae39b6f467 (these links can be used to see the original transactions):

  • the first transaction is to send all locked STAKE tokens to the governance multisig contract
  • the second transaction is to transfer 10 STAKEs to 0x920533a21eb5b069089e5ae38d5eb7ba932e7024.
  • the third transaction is to transfer 2 STAKEs to 0xfb7eb89925b5823fc524feaa7e906eae39b6f467.

If you agree to return STAKE tokens to their initial owners please perform the following actions:

  1. Visit the multisig wallet contract in the Etherscan. Connect the currect MM/NF account to Web3.
  2. Enter to the field next to the method confirmTransaction the transaction ID 16.
  3. Press the “Write” button.
  4. In the MM/NW section change the gas to 500’000 and confirm the transaction.
  5. Enter to the field next to the method confirmTransaction the transaction ID 17.
  6. Press the “Write” button.
  7. In the MM/NW section change the gas to 500’000 and confirm the transaction.
  8. Enter to the field next to the method confirmTransaction the transaction ID 18.
  9. Press the “Write” button.
  10. In the MM/NW section change the gas to 500’000 and confirm the transaction.

If you have any question or issues appeared during the described steps, write a note below this forum post. As soon as you send a transaction with confirmation, reply to this message.

1 Like

These are transactions the multisig participant from POA Network project made to initialize transactions for the suggested changes:

  1. To claim all STAKE tokens (0x0Ae055097C6d159879521C384F1D2123D1f195e6) and send them to the governance multisig contract (0xff1a8eda5eacdb6aaf729905492bdc6376dbe2dd): https://etherscan.io/tx/0x915eac360cf2f1eaff6f99f17b7bde2b8541feab02d261327f1efe3d84eb6b95#eventlog. It suggests to execute 0x69ffa08a0000000000000000000000000ae055097c6d159879521c384f1d2123d1f195e6000000000000000000000000ff1a8eda5eacdb6aaf729905492bdc6376dbe2dd on the bridge token contract 0x4aa42145aa6ebf72e164c9bbc74fbd3788045016 that corresponds to the call claimTokens(0x0Ae055097C6d159879521C384F1D2123D1f195e6, 0xff1a8eda5eacdb6aaf729905492bdc6376dbe2dd).

  2. To transfer 10 STAKE tokens from the governance multisig to 0x920533a21eb5b069089e5ae38d5eb7ba932e7024: https://etherscan.io/tx/0x55f437f6cc09fd74e3c6f740ddd392cc06f3e9d20c8706d78dde3d754ef52d9e#eventlog. It suggests to execute 0xa9059cbb000000000000000000000000920533a21eb5b069089e5ae38d5eb7ba932e70240000000000000000000000000000000000000000000000008ac7230489e80000 on the STAKE token contract 0x0Ae055097C6d159879521C384F1D2123D1f195e6 that corresponds to the call transfer(0x920533a21eb5b069089e5ae38d5eb7ba932e7024, 10000000000000000000).

  3. To transfer 2 STAKE tokens from the governance multisig to 0xfb7eb89925b5823fc524feaa7e906eae39b6f467: https://etherscan.io/tx/0xf5e63bab293d0ee7ffc4cdedbb960ca8405a54b8a2a69d5d5dd0a6d9bf5a4f57#eventlog. It suggests to execute 0xa9059cbb000000000000000000000000fb7eb89925b5823fc524feaa7e906eae39b6f4670000000000000000000000000000000000000000000000001bc16d674ec80000 on the STAKE token contract 0x0Ae055097C6d159879521C384F1D2123D1f195e6 that corresponds to the call transfer(0xfb7eb89925b5823fc524feaa7e906eae39b6f467, 2000000000000000000).

The correspondence of the ABI encoded method calls to the human readable form of the call can be checked if you take the ABIs:

claimTokens() for the bridge contracts

[
  {
    "constant":false,
    "inputs":[
      {
        "name":"_token",
        "type":"address"
      },
      {
        "name":"_to",
        "type":"address"
      }
    ],
    "name":"claimTokens",
    "outputs":[
      
    ],
    "payable":false,
    "stateMutability":"nonpayable",
    "type":"function"
  }
]

transfer() for the STAKE token contract

[
  {
    "constant":false,
    "inputs":[
      {
        "name":"_to",
        "type":"address"
      },
      {
        "name":"_value",
        "type":"uint256"
      }
    ],
    "name":"transfer",
    "outputs":[
      {
        "name":"",
        "type":"bool"
      }
    ],
    "payable":false,
    "stateMutability":"nonpayable",
    "type":"function"
  }
]

and use it on the service: https://abi.hashex.org/#

@geleeroyale/@GriffGreen, @mgarcia/@ArseniiPetrovich and @mariano.conti/@savdao please take into consideration.

You will need to submit 3 transactions to the Ethereum Mainnet.

Hi @akolotov,

We also agree it is the right thing to do.

The transactions have been confirmed by the Protofire signer: 16, 17 and 18.

It would be great to create a sustainable safety net for potential future cases where users could follow simple instructions and recover the tokens transferred to the bridge by mistake.

This is so great… just like old times with the DAO…

#16

#17

#18

I’ve received my tokens which were locked in the bridge. Thank you all very much for your help.

2 Likes