mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-utils.git
synced 2026-08-12 17:21:36 +00:00
fix(pezkuwi-asset-hub): declare PEZ and USDT as sufficient assets
The wallet refused USDT.p transfers to any account holding no HEZ:
Your transfer will fail since the destination account does not have
enough HEZ to accept other token transfers
It is a false positive, and the chain disagrees with this config.
DeadRecipientValidation skips the whole check when the destination asset is
self-sufficient:
skipIf = { assetSourceRegistry.isAssetSelfSufficient(destinationChainAsset) }
and StatemineAssetBalance reads that flag from HERE, not from the chain:
chainAsset.requireStatemine().isSufficient → runCatching { … }.getOrDefault(false)
`isSufficient` was absent from typeExtras in every version of this config, so it
resolved to false, the validation ran, and every transfer to a fresh account was
warned against.
Measured on chain (asset-hub-rpc.pezkuwichain.io):
asset 1 PEZ sufficient=true minBalance=1 18 accounts
asset 1000 wUSDT sufficient=true minBalance=10000 21 accounts
Both are sufficient, so neither needs the recipient to hold native balance.
Proof it works in practice rather than only in theory: account
5E2yqgUVVNjU… holds 1750.00 USDT with free=0, providers=0, sufficients=1 and
nonce=0. Zero native balance, no provider reference, and it has never signed a
transaction — so it was brought into existence by the incoming USDT transfer
itself, which is exactly what the wallet was saying could not happen.
Applied to v22 (the version the app fetches, runtime/build.gradle CHAINS_URL) and
to the top-level chains.json.
Noted, not changed here: this config also declares assets 1001/1002/1003 on
Pezkuwi Asset Hub as DOT, ETH and BTC. None of the three exists on chain —
assets.asset() returns None for all of them. They are shown to users and any
transfer would fail.
This commit is contained in:
@@ -116,7 +116,8 @@
|
||||
"buyProviders": {},
|
||||
"sellProviders": {},
|
||||
"typeExtras": {
|
||||
"assetId": "1"
|
||||
"assetId": "1",
|
||||
"isSufficient": true
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -131,7 +132,8 @@
|
||||
"buyProviders": {},
|
||||
"sellProviders": {},
|
||||
"typeExtras": {
|
||||
"assetId": "1000"
|
||||
"assetId": "1000",
|
||||
"isSufficient": true
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -832,4 +834,4 @@
|
||||
"defaultBlockTime": 2000
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user