Introduction
IRISHub v2.0 changed the generative structure of the entire account system from auth.BaseAccountProto
to ethermint.ProtoAccount
, resulting in incompatibility of newly created accounts;
Note: Accounts before the v2.0 upgrade will not be affected and can still be used normally
The following content takes nyancat testnet as an example:
For accounts before the v2.0 upgrade, the query structure through LCD is as follows: https://lcd.nyancat.irisnet.org/cosmos/auth/v1beta1/accounts/iaa1e0rx87mdj79zejewuc4jg7ql9ud2286g2us8f2
{
"account": {
"@type": "/cosmos.auth.v1beta1.BaseAccount",
"address":"iaa1e0rx87mdj79zejewuc4jg7ql9ud2286g2us8f2",
"pub_key": {
"@type": "/cosmos.crypto.secp256k1.PubKey",
"key":"AiOFJ3Jclq/8y3xV85ALNFuA7FJo1IMoTxYoB3ddMrMr"
},
"account_number": "1251",
"sequence": "12983"
}
}
For accounts upgraded in v2.0, the query structure through LCD is as follows: https://lcd.nyancat.irisnet.org/cosmos/auth/v1beta1/accounts/iaa1g4uak38a8fhkg5v5qky3fc9g6h50yrdcn7waug
{
"account": {
"@type": "/ethermint.types.v1.EthAccount",
"base_account": {
"address":"iaa1g4uak38a8fhkg5v5qky3fc9g6h50yrdcn7waug",
"pub_key": {
"@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey",
"key":"AhHKT0xpnrOmpikkd1lEPxiEHG4ngItq06KLhwU2UQHO"
},
"account_number": "5564",
"sequence": "6"
},
"code_hash": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
}
}
Using Proto
A new type needs to be registered, and the type structure is here: https://github.com/bianjieai/ethermint/blob/v0.20.0-irishub-1/proto/ethermint/types/v1/account.proto
When the query structure is /ethermint.types.v1.EthAccount
, use the new structure analysis;
When the query structure is /cosmos.auth.v1beta1.BaseAccount
, use the old structure analysis;
You can refer to the core-sdk-go written by the irisnet team. The relevant hash is at: https://github.com/irisnet/core-sdk-go/commit/68ed671727e057edb185935c42710f8777dab62f
Useing LCD
When parsing, please make compatibility according to the required type;
If the type is /cosmos.auth.v1beta1.BaseAccount
, use the old structure analysis;
If the type is /ethermint.types.v1.EthAccount
, use the new structure analysis;