Polkassembly Logo

Create Pencil IconCreate
OpenGov

Notice: Polkadot has migrated to AssetHub. Balances, data, referenda, and other on-chain activity has moved to AssetHub.Learn more

View All Small Spender

Recover KSM from a erroneous teleport/XCM call

inSmall Spender
2 years ago
treasury
xcm
error
Executed

We lost 50 KSM in a blockhole during a teleport call. We were trying to teleport 50 KSM from our account on Bridgehub-Kusama to Kusama.

We first tried with small amounts after we had found the right working call and then we thought copied the call-data to initiate the actual transfer, but it was an old copy that lead to the error of unroutable, which is a fatal error and the tokens get lost apparently in the system. We don't know where they get lost. You can see it in the events that the tokens don't get deposited anywhere. This is new information to us.

This is the call-data I have used: 0x1f0903000109030300010100666963fc8192623504df2da473a1db2c69e1660463e2fd5071bcc68a96c3970d0304000100000b00203d88792d0000000000

This would have been the correct call-data: 0x1f090301000300010100666963fc8192623504df2da473a1db2c69e1660463e2fd5071bcc68a96c3970d0304000100000b00203d88792d0000000000

Our request is to recover the 50 KSM from openGov to the account that made call.

  • The call was our mistake, we should have double checked.
  • There is work in progress by the core developers to make sure these errors are claimable in the future, but it's not in production yet.
  • The 50 KSM was on that account was to bid for a system-collator slot for bridgehub, which we didn't win. The teleport was one way until runtime upgrade 1,001,000

Comments (8)

2 years ago

Alzymologist Oy Decentralized voice

We approve this ideologically, but as a design shop we are obliged to take due diligence in doing some tech analysis of incident. This will take some time, but now:

Just a brief and quick 3rd party review to be done in 5 minutes.

Extrinsics decoded with BridgeHub Kusama metadata version spec_version: "1001000", spec_name: "bridge-hub-kusama"

Incorrect (executed) call:

Pallet: PolkadotXcm
  Call: limited_teleport_assets
    Field Name: dest
      Enum
        Enum Variant Name: V3
          Struct: 2 field(s)
            Field Name: parents
              u8: 0
            Field Name: interior
              Enum
                Enum Variant Name: X1
                  Enum
                    Enum Variant Name: GlobalConsensus
                      Enum
                        Enum Variant Name: Kusama
    Field Name: beneficiary
      Enum
        Enum Variant Name: V3
          Struct: 2 field(s)
            Field Name: parents
              u8: 0
            Field Name: interior
              Enum
                Enum Variant Name: X1
                  Enum
                    Enum Variant Name: AccountId32
                      Field Name: network
                        Enum
                          Enum Variant Name: None
                      Field Name: id
                        Sequence u8: 666963fc8192623504df2da473a1db2c69e1660463e2fd5071bcc68a96c3970d
    Field Name: assets
      Enum
        Enum Variant Name: V3
          Sequence: 1 element(s)
            Struct: 2 field(s)
              Field Name: id
                Enum
                  Enum Variant Name: Concrete
                    Struct: 2 field(s)
                      Field Name: parents
                        u8: 1
                      Field Name: interior
                        Enum
                          Enum Variant Name: Here
              Field Name: fun
                Enum
                  Enum Variant Name: Fungible
                    u128: 50000000000000
    Field Name: fee_asset_item
      u32: 0
    Field Name: weight_limit
      Enum
        Enum Variant Name: Unlimited

correct call (should have been executed):

Pallet: PolkadotXcm
  Call: limited_teleport_assets
    Field Name: dest
      Enum
        Enum Variant Name: V3
          Struct: 2 field(s)
            Field Name: parents
              u8: 1
            Field Name: interior
              Enum
                Enum Variant Name: Here
    Field Name: beneficiary
      Enum
        Enum Variant Name: V3
          Struct: 2 field(s)
            Field Name: parents
              u8: 0
            Field Name: interior
              Enum
                Enum Variant Name: X1
                  Enum
                    Enum Variant Name: AccountId32
                      Field Name: network
                        Enum
                          Enum Variant Name: None
                      Field Name: id
                        Sequence u8: 666963fc8192623504df2da473a1db2c69e1660463e2fd5071bcc68a96c3970d
    Field Name: assets
      Enum
        Enum Variant Name: V3
          Sequence: 1 element(s)
            Struct: 2 field(s)
              Field Name: id
                Enum
                  Enum Variant Name: Concrete
                    Struct: 2 field(s)
                      Field Name: parents
                        u8: 1
                      Field Name: interior
                        Enum
                          Enum Variant Name: Here
              Field Name: fun
                Enum
                  Enum Variant Name: Fungible
                    u128: 50000000000000
    Field Name: fee_asset_item
      u32: 0
    Field Name: weight_limit
      Enum
        Enum Variant Name: Unlimited

EDIT in a few minutes:

ok this is hard to read. Diff starts in line 7:

diff correct:

            Field Name: parents
              u8: 1
            Field Name: interior
              Enum
                Enum Variant Name: Here

diff incorrect:

            Field Name: parents
              u8: 0
            Field Name: interior
              Enum
                Enum Variant Name: X1
                  Enum
                    Enum Variant Name: GlobalConsensus
                      Enum
                        Enum Variant Name: Kusama

2 years ago

@Alzymologist Thanks for checking this and posting it here. the Difference indeed that the destination should have been [parents:1, interior:here].

2 years ago

What's your plan if this passes and then one day your 50 KSM becomes recoverable?

2 years ago

@Adam_Clay_Steeber We would send it back to the treasury 😇

Load more comments
PleaseLogin to comment

Requested

DOT
5.00K DOT

Proposal Passed

Summary

0%

Aye

AyeNay

0%

Nay

Aye (147)0.0 DOT

Support0.0 DOT

Nay (10)0.0 DOT

Help Center

Report an Issue
Feedback
Terms and Conditions
Github

Our Services

Docs
Terms of Website
Privacy Policy

A House of Commons Initiative.

Polka Labs Private Limited 2025

All rights reserved.

Terms and ConditionsTerms of Website
Privacy Policy