Recover KSM from a erroneous teleport/XCM call
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)
Proposal Passed
3
of 3Summary
0%
Aye
0%
Nay
Aye (147)0.0 DOT
Support0.0 DOT
Nay (10)0.0 DOT
Voting Data
Approval%
Support%
Threshold0.00%
Threshold0.00%
Comments (8)
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
What's your plan if this passes and then one day your 50 KSM becomes recoverable?
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 versionspec_version: "1001000", spec_name: "bridge-hub-kusama"
Incorrect (executed) call:
correct call (should have been executed):
EDIT in a few minutes:
ok this is hard to read. Diff starts in line 7:
diff correct:
diff incorrect:
What's your plan if this passes and then one day your 50 KSM becomes recoverable?