You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
Rosetta API assumes all balances should be initialized at genesis so it can iterate over these denoms and calculate balance changes.
When a new denom not available at genesis added, the CLI will throw error unable to get previous account balance for [account] [symbol].
Our cosmos chain is a DEX. It's natural to have new denoms as trading markets are added.
To Reproduce
Refactor cosmos simd app to have ability to mint new coins.
Start the chain and mint some coins with denom not available at genesis.
Start rosetta gateway.
Setup config file and run rosetta-cli --configuration-file=rosetta-config.json check:data
Expected behavior
From our perspective, it sounds reasonable to just add new denom with 0 balance if it's not detected in previous block instead of throwing error on this.
Additional context
Pick up the previous block in the error thrown by rosetta-cli, for example 95.
Run simd query bank balances inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku --height=95
Run simd query bank balances inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku --height=96
This should show the new denom minted at block 96 and not available at parent block 95.
Simplified stack trace and error log
# AddingBlock() > UpdateBalance() > existingValue() > AccountBalance(): throw errors on missing balance on previous block
Error: unable to process blocks: unable to process block: account balance response does not contain currency {
"symbol": "share1",
"decimals": 0
}: could not get {
"symbol": "share1",
"decimals": 0
} currency balance for {
"address": "inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku"
}: unable to get currency balance: unable to get previous account balance for {"address":"inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku"} {"symbol":"share1","decimals":0} at {"index":95,"hash":"0B97F30BF83AFE1757442784C2027ED7E8FFCE597396248BCE9E77B124A19ADE"}: unable to add block to storage C3FBCF6C3B8016AACE5A5D2217E90E905764A738F7861ECA812E1685F36F97B7:96: unable to sync to 709
The text was updated successfully, but these errors were encountered:
@nhannamsiu has there been any further work on this issue? I am working on a cosmos based blockchain and am seeing this same issue when I mint new coins that aren't in the genesis file and then attempt to run rosetta tests.
I get an unable to sync to 193 where 193 is the block containing the newly minted token.
Describe the bug
Rosetta API assumes all balances should be initialized at genesis so it can iterate over these denoms and calculate balance changes.
When a new denom not available at genesis added, the CLI will throw error unable to get previous account balance for [account] [symbol].
Our cosmos chain is a DEX. It's natural to have new denoms as trading markets are added.
To Reproduce
rosetta-cli --configuration-file=rosetta-config.json check:data
Expected behavior
From our perspective, it sounds reasonable to just add new denom with 0 balance if it's not detected in previous block instead of throwing error on this.
Additional context
previous block
in the error thrown byrosetta-cli
, for example95
.simd query bank balances inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku --height=95
simd query bank balances inj14au322k9munkmx5wrchz9q30juf5wjgz2cfqku --height=96
This should show the new denom minted at block 96 and not available at parent block 95.
Simplified stack trace and error log
The text was updated successfully, but these errors were encountered: