Skip to content

Commit

Permalink
Merge pull request #172 from bandprotocol/proof-v0.43
Browse files Browse the repository at this point in the history
Proof v0.43
  • Loading branch information
songwongtp authored Sep 1, 2021
2 parents 22d8bf0 + 2f343c2 commit c3db705
Show file tree
Hide file tree
Showing 8 changed files with 310 additions and 544 deletions.
11 changes: 8 additions & 3 deletions x/oracle/client/common/proof/abi.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@ var relayFormat = []byte(`
"components": [
{
"internalType": "bytes32",
"name": "authToIbcTransferStoresMerkleHash",
"name": "authToFeeGrantStoresMerkleHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "govToIbcCoreStoresMerkleHash",
"type": "bytes32"
},
{
Expand All @@ -21,12 +26,12 @@ var relayFormat = []byte(`
},
{
"internalType": "bytes32",
"name": "paramsToSlashStoresMerkleHash",
"name": "paramsToTransferStoresMerkleHash",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "stakingToUpgradeStoresMerkleHash",
"name": "upgradeStoreMerkleHash",
"type": "bytes32"
}
],
Expand Down
86 changes: 43 additions & 43 deletions x/oracle/client/common/proof/block_header_merkle_parts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,37 +11,37 @@ import (

/*
{
"block_id": {
"hash": "8C36C3D12A378BD7E4E8F26BDECCA68B48390240DA456EE9C3292B6E36756AC4",
"parts": {
"total": 1,
"hash": "44551F853D916A7C630C0C210C921BAC7D05CE0C249DFC6088C0274F05841827"
block_id: {
hash: "3489F21785ACE1CE4214CB2B57F3A98DC0B7377D1BA1E1180B6E199E33B0FC5A",
parts: {
total: 1,
hash: "6BF91EFBA26A4CD86EBBD0E54DCFC9BD2C790859CFA96215661A47E4921A6301"
}
},
"block": {
"header": {
"version": {
"block": "11"
},
block: {
header: {
version: {
block: "11"
},
"chain_id": "band-laozi-testnet1",
"height": "180356",
"time": "2021-05-19T08:20:43.922160838Z",
"last_block_id": {
"hash": "EF40EA6FC7CACE83B8496B5820D85076505B1F0FF5995F22EAF5A66A5057E168",
"parts": {
"total": 1,
"hash": "64F72682F614F027E37900A985E01251213FCDCA048FF2F3C42A42B90E6AD8F8"
}
chain_id: "bandchain",
height: "25000",
time: "2021-08-25T00:05:31.290650376Z",
last_block_id: {
hash: "622A4600128DECC6C42E471F06F00C654785485D5AB4437556F41743DC4684C8",
parts: {
total: 1,
hash: "733EDAE763A4635509BE9E55E06A2CBF726056A0898B6B4D3AF74683ECCF3475"
}
},
"last_commit_hash": "40D61BC067EBC47C80DACF936616623274956FB3DB7A96E1717AD45F7A689DAC",
"data_hash": "204EA8CEEAAE6D3E7C2DAC7B805049D241B7DB32252820567FDEFF6A97866BE8",
"validators_hash": "372352B297752AF3687FE8755313FBFDE89515D9EB7761BD2E3C8EEBE7FBA63C",
"next_validators_hash": "372352B297752AF3687FE8755313FBFDE89515D9EB7761BD2E3C8EEBE7FBA63C",
"consensus_hash": "BED75E0A0CDB709FBA26EA5D58D4207C32F9DBF96634F8B0F07D01FC06132AAC",
"app_hash": "E500B3DD21816EE04BE5E77271EC0D8286B8AFF81EF96344FED74B52992E6D23",
"last_results_hash": "5E9B2DDD2AC52423AA2D0B04172EB4C464EFDCD2A00423D58FB71358E8BAFA18",
"evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"proposer_address": "DC2E3CF55B246C881C1036C8D9F24BC23BA84AD3"
last_commit_hash: "021C8BBD047747AE943C5F7991B6848DE371B313FF3C15E5B2EDA94DD834BB42",
data_hash: "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
validators_hash: "113928F64B9B2A1F1A58D87C93147D822CF2069309B55D47717700D4074A43B6",
next_validators_hash: "113928F64B9B2A1F1A58D87C93147D822CF2069309B55D47717700D4074A43B6",
consensus_hash: "188E4357E7B1201E6C2B418759CB8246FAB30CF2FFA87433E21690B7BC8BC88C",
app_hash: "37D2CA95F226A7AFE3C41DE288F8158B737E78C4B733B1CCB0061D3236E926BE",
last_results_hash: "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
evidence_hash: "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
proposer_address: "F23391B5DBF982E37FB7DADEA64AAE21CAE4C172"
}
}
}
Expand All @@ -50,29 +50,29 @@ func TestBlockHeaderMerkleParts(t *testing.T) {
// Copy block header Merkle Part here
header := types.Header{
Version: tmversion.Consensus{Block: 11},
ChainID: "band-laozi-testnet1",
Height: 180356,
Time: parseTime("2021-05-19T08:20:43.922160838Z"),
ChainID: "bandchain",
Height: 25000,
Time: parseTime("2021-08-25T00:05:31.290650376Z"),
LastBlockID: types.BlockID{
Hash: hexToBytes("EF40EA6FC7CACE83B8496B5820D85076505B1F0FF5995F22EAF5A66A5057E168"),
Hash: hexToBytes("622A4600128DECC6C42E471F06F00C654785485D5AB4437556F41743DC4684C8"),
PartSetHeader: types.PartSetHeader{
Total: 1,
Hash: hexToBytes("64F72682F614F027E37900A985E01251213FCDCA048FF2F3C42A42B90E6AD8F8"),
Hash: hexToBytes("733EDAE763A4635509BE9E55E06A2CBF726056A0898B6B4D3AF74683ECCF3475"),
},
},
LastCommitHash: hexToBytes("40D61BC067EBC47C80DACF936616623274956FB3DB7A96E1717AD45F7A689DAC"),
DataHash: hexToBytes("204EA8CEEAAE6D3E7C2DAC7B805049D241B7DB32252820567FDEFF6A97866BE8"),
ValidatorsHash: hexToBytes("372352B297752AF3687FE8755313FBFDE89515D9EB7761BD2E3C8EEBE7FBA63C"),
NextValidatorsHash: hexToBytes("372352B297752AF3687FE8755313FBFDE89515D9EB7761BD2E3C8EEBE7FBA63C"),
ConsensusHash: hexToBytes("BED75E0A0CDB709FBA26EA5D58D4207C32F9DBF96634F8B0F07D01FC06132AAC"),
AppHash: hexToBytes("E500B3DD21816EE04BE5E77271EC0D8286B8AFF81EF96344FED74B52992E6D23"),
LastResultsHash: hexToBytes("5E9B2DDD2AC52423AA2D0B04172EB4C464EFDCD2A00423D58FB71358E8BAFA18"),
LastCommitHash: hexToBytes("021C8BBD047747AE943C5F7991B6848DE371B313FF3C15E5B2EDA94DD834BB42"),
DataHash: hexToBytes("E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"),
ValidatorsHash: hexToBytes("113928F64B9B2A1F1A58D87C93147D822CF2069309B55D47717700D4074A43B6"),
NextValidatorsHash: hexToBytes("113928F64B9B2A1F1A58D87C93147D822CF2069309B55D47717700D4074A43B6"),
ConsensusHash: hexToBytes("188E4357E7B1201E6C2B418759CB8246FAB30CF2FFA87433E21690B7BC8BC88C"),
AppHash: hexToBytes("37D2CA95F226A7AFE3C41DE288F8158B737E78C4B733B1CCB0061D3236E926BE"),
LastResultsHash: hexToBytes("E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"),
EvidenceHash: hexToBytes("E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855"),
ProposerAddress: hexToBytes("DC2E3CF55B246C881C1036C8D9F24BC23BA84AD3"),
ProposerAddress: hexToBytes("F23391B5DBF982E37FB7DADEA64AAE21CAE4C172"),
}
blockMerkleParts := GetBlockHeaderMerkleParts(&header)
expectBlockHash := hexToBytes("8C36C3D12A378BD7E4E8F26BDECCA68B48390240DA456EE9C3292B6E36756AC4")
appHash := tmbytes.HexBytes(hexToBytes("E500B3DD21816EE04BE5E77271EC0D8286B8AFF81EF96344FED74B52992E6D23"))
expectBlockHash := hexToBytes("3489F21785ACE1CE4214CB2B57F3A98DC0B7377D1BA1E1180B6E199E33B0FC5A")
appHash := tmbytes.HexBytes(hexToBytes("37D2CA95F226A7AFE3C41DE288F8158B737E78C4B733B1CCB0061D3236E926BE"))

// Verify code
blockHash := innerHash(
Expand Down
58 changes: 29 additions & 29 deletions x/oracle/client/common/proof/iavl_proof_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,34 @@ import (

/*
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"response": {
"code": 0,
"log": "",
"info": "",
"index": "0",
"key": "/wAAAAAAAAAB",
"value": "AAAACmZyb21fYmFuZGQAAAAAAAAAIQAAAAgAAAAAAAAAZAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAQAAAAAAAAAQAAAAAGCdRR4AAAAAYJ1FJgAAAAEAAAAIAAAAAAACyIk=",
"proofOps": {
"ops": [
{
"type": "ics23:iavl",
"key": "/wAAAAAAAAAB",
"data": "CvMGCgn/AAAAAAAAAAESYgAAAApmcm9tX2JhbmRkAAAAAAAAACEAAAAIAAAAAAAAAGQAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAEAAAAAAAAAEAAAAABgnUUeAAAAAGCdRSYAAAABAAAACAAAAAAAAsiJGgwIARgBIAEqBAACkAYiLAgBEgUCBOgGIBohIGdj7fQsDXo3ZejNm5cK4OINxtPPXfDcY8rSyF+vxqgDIioIARImBAjuBiCS8zYBRmdp1iZwpYdxyPjyaV5xQrOFIZfdPKaCW4o7JiAiLAgBEgUGEJAJIBohIFLEslBD/3YNtK4/NB6DCQgATR58O733JLxx3CSqaFE0Ii0IARIGCCCyqQ0gGiEgwJJO/Pr3fk/2Xp8k7QxDx7u7sHDMERxKWNorZrEYnnQiLQgBEgYKNpSsDSAaISBWmsxce+2sB+RRqtS0y0jfglzQN8kcfAz2A6rw1xVa0yItCAESBgxoxsANIBohIIlpQWHoQmHVKLmF8YScJw4GgcHeVj1UL/h0zkqMqkPPIi4IARIHDtoB+soNIBohIDkgQjAtnMeQYgCbYUy1c5yCJ+5HorG9Q27XoBtBMBhmIi4IARIHEMwDlNINIBohIGG8Ftxs3vXSA2bbB+sp0yjc+g1lQeewmmcV8t6dCXkUIi4IARIHEo4Hzu0NIBohIBoSS3Q0SHgfAQm1WZLXEorbT78bknoBDFiS0RGqvwktIi4IARIHFMQO+v8NIBohIJYOQzto4+xF6CaLNEjqiy3pQQkbRp88BIQAsAdJ6Tf2Ii4IARIHFsgc0KkOIBohIE6kjn74Dkv6lr193sHqaXKQ1BfP7wzhMB5pR9gNwKzDIiwIARIoGLAphoIWILhp1b7zuFYz6LqSZ/VHs+2O+B7a5Z562Qut7p9gx3t5ICIuCAESBxrsZIaCFiAaISBTap5a2qYuQSOnlGwHDEZZ5gHHZPHdg0SuMt3S8MDroyIvCAESCBzG3AGGghYgGiEgHtxX9LH3jy1lUMKuGY5xiQQDeti4z5mjUUXfdifmNmAiLwgBEggevMgDhoIWIBohIIikNBin0veShDGow/Is2j75y5fbYW95jXzx89Rz6GhOIi8IARIIIP6eBoaCFiAaISC57L3ZFn7voKNCFn9Fb/a+b6nFa2qyZcQs7NKDf7p/Yw=="
},
{
"type": "ics23:simple",
"key": "b3JhY2xl",
"data": "CtUBCgZvcmFjbGUSIJj83HwI9IC+eoJooHuGNTM9kChH7A6lYG8z1Douk2wOGgkIARgBIAEqAQAiJQgBEiEBrn8EGLzowJ0sM7mBpuomG6Mwx12I3BY3pFK8xlxa6MEiJwgBEgEBGiDgAE8rLdq18Z4gJ/jN5svn/CoLe/ou9Iu2FPhZERPL8CInCAESAQEaIO8Ux+H17c0lq2FuOUtu2JYfZu0rw2Nge1D887onYMb4IiUIARIhAX+pMhUpuZRYyJ9LGxYmssLATEHrDkf8vS+6fqeLnWXX"
}
]
},
"height": "180355",
"codespace": ""
}
}
jsonrpc: "2.0",
id: -1,
result: {
response: {
code: 0,
log: "",
info: "",
index: "0",
key: "/wAAAAAAAAAB",
value: "EAEaEwAAAAEAAAADQlRDAAAAAAABhqAgASgBMAE4AUCTqZOJBkiXqZOJBlABWgwAAAABAAAAASTsB4w=",
proofOps: {
ops: [
{
type: "ics23:iavl",
key: "/wAAAAAAAAAB",
data: "CocCCgn/AAAAAAAAAAESOxABGhMAAAABAAAAA0JUQwAAAAAAAYagIAEoATABOAFAk6mTiQZIl6mTiQZQAVoMAAAAAQAAAAEk7AeMGgwIARgBIAEqBAACsgMiKggBEiYCBLIDIOtzm7IvSLfzBTqQuiuk/gf6smLK34ZkSJVlxQ/1Bbi9ICIqCAESJgQIsgMgGEcQdQfV57TNmUHrb/4WlCZK80xoXBncR4vq3aJlpXggIioIARImBgyyAyDoCq5YHsAEI5hUxNkNgUjoXx+Q0HBKc2aP0tpE3AzqUyAiKwgBEicKIM6GAyB0G3lGJNvpTWfNae6o1Xqqdo0upy8fylYaS++2eDbp4SA="
},
{
type: "ics23:simple",
key: "b3JhY2xl",
data: "CvwBCgZvcmFjbGUSIOjifLtEu2VPZO7vRmeGitSGZ86yjj21xN96S0uH8MBLGgkIARgBIAEqAQAiJQgBEiEB+YFxZWKkneBuPcr7+2OIwpS6pPqdRXd+JXQKkvgc9l4iJQgBEiEBf9X1x8KSDBh2GFQpAc3FcXvoIE8kvoVugJAqG7BHN+QiJwgBEgEBGiD8ls/9MOW4l56mb50NocurFvaWaeiyofsuG+tFfJcm6CIlCAESIQFSSEY+ky0W99CS4mjA3th7I9Ow5xhW8cauKqkfbHEzICInCAESAQEaIMnIhJ7RJcx2gTKcTSe4Ox/IrPeoZcnR0d9XXMpW9I2+"
}
]
},
height: "24999",
codespace: ""
}
}
}
*/

Expand Down Expand Up @@ -69,7 +69,7 @@ func getIAVLParentHash(path IAVLMerklePath, subtreeHash []byte) []byte {

func TestGetMerklePaths(t *testing.T) {
key := base64ToBytes("/wAAAAAAAAAB")
data := base64ToBytes("CvMGCgn/AAAAAAAAAAESYgAAAApmcm9tX2JhbmRkAAAAAAAAACEAAAAIAAAAAAAAAGQAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAEAAAAAAAAAEAAAAABgnUUeAAAAAGCdRSYAAAABAAAACAAAAAAAAsiJGgwIARgBIAEqBAACkAYiLAgBEgUCBOgGIBohIGdj7fQsDXo3ZejNm5cK4OINxtPPXfDcY8rSyF+vxqgDIioIARImBAjuBiCS8zYBRmdp1iZwpYdxyPjyaV5xQrOFIZfdPKaCW4o7JiAiLAgBEgUGEJAJIBohIFLEslBD/3YNtK4/NB6DCQgATR58O733JLxx3CSqaFE0Ii0IARIGCCCyqQ0gGiEgwJJO/Pr3fk/2Xp8k7QxDx7u7sHDMERxKWNorZrEYnnQiLQgBEgYKNpSsDSAaISBWmsxce+2sB+RRqtS0y0jfglzQN8kcfAz2A6rw1xVa0yItCAESBgxoxsANIBohIIlpQWHoQmHVKLmF8YScJw4GgcHeVj1UL/h0zkqMqkPPIi4IARIHDtoB+soNIBohIDkgQjAtnMeQYgCbYUy1c5yCJ+5HorG9Q27XoBtBMBhmIi4IARIHEMwDlNINIBohIGG8Ftxs3vXSA2bbB+sp0yjc+g1lQeewmmcV8t6dCXkUIi4IARIHEo4Hzu0NIBohIBoSS3Q0SHgfAQm1WZLXEorbT78bknoBDFiS0RGqvwktIi4IARIHFMQO+v8NIBohIJYOQzto4+xF6CaLNEjqiy3pQQkbRp88BIQAsAdJ6Tf2Ii4IARIHFsgc0KkOIBohIE6kjn74Dkv6lr193sHqaXKQ1BfP7wzhMB5pR9gNwKzDIiwIARIoGLAphoIWILhp1b7zuFYz6LqSZ/VHs+2O+B7a5Z562Qut7p9gx3t5ICIuCAESBxrsZIaCFiAaISBTap5a2qYuQSOnlGwHDEZZ5gHHZPHdg0SuMt3S8MDroyIvCAESCBzG3AGGghYgGiEgHtxX9LH3jy1lUMKuGY5xiQQDeti4z5mjUUXfdifmNmAiLwgBEggevMgDhoIWIBohIIikNBin0veShDGow/Is2j75y5fbYW95jXzx89Rz6GhOIi8IARIIIP6eBoaCFiAaISC57L3ZFn7voKNCFn9Fb/a+b6nFa2qyZcQs7NKDf7p/Yw==")
data := base64ToBytes("CocCCgn/AAAAAAAAAAESOxABGhMAAAABAAAAA0JUQwAAAAAAAYagIAEoATABOAFAk6mTiQZIl6mTiQZQAVoMAAAAAQAAAAEk7AeMGgwIARgBIAEqBAACsgMiKggBEiYCBLIDIOtzm7IvSLfzBTqQuiuk/gf6smLK34ZkSJVlxQ/1Bbi9ICIqCAESJgQIsgMgGEcQdQfV57TNmUHrb/4WlCZK80xoXBncR4vq3aJlpXggIioIARImBgyyAyDoCq5YHsAEI5hUxNkNgUjoXx+Q0HBKc2aP0tpE3AzqUyAiKwgBEicKIM6GAyB0G3lGJNvpTWfNae6o1Xqqdo0upy8fylYaS++2eDbp4SA=")

var iavlOps storetypes.CommitmentOp
proof := &ics23.CommitmentProof{}
Expand Down
70 changes: 38 additions & 32 deletions x/oracle/client/common/proof/multi_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,55 +8,61 @@ import (

// MultiStoreProof stores a compact of other Cosmos-SDK modules' storage hash in multistore to
// compute (in combination with oracle store hash) Tendermint's application state hash at a given block.
// ________________[AppHash]_______________
// ________________[AppHash]_________________
// / \
// _________________[I14]_________________ [G]
// / \
// _______[I10]______ _______[I11]________
// _______[I12]______ _______[I13]________
// / \ / \
// __[I6]__ __[I7]__ __[I8]__ __[I9]__
// / \ / \ / \ / \
// [I0] [I1] [I2] [I3] [I4] [I5] [C] [D]
// / \ / \ / \ / \ / \ / \
// [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [A] [B]
// [0] - auth [1] - bank [2] - capability [3] - dist [4] - evidence
// [5] - gov [6] - ibchost [7] - ibctransfer [8] - mint [9] - oracle
// [A] - params [B] - slashing [C] - staking [D] - upgrade
// __[I8]__ __[I9]__ __[I10]__ __[I11]__
// / \ / \ / \ / \
// [I0] [I1] [I2] [I3] [I4] [I5] [I6] [I7]
// / \ / \ / \ / \ / \ / \ / \ / \
// [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [A] [B] [C] [D] [E] [F]
// [0] - auth [1] - authz [2] - bank [3] - capability [4] - crisis [5] - dist
// [6] - evidence [7] - feegrant [8] - gov [9] - ibccore [A] - mint [B] - oracle
// [C] - params [D] - slashing [E] - staking [F] - transfer [G] - upgrade
// Notice that NOT all leaves of the Merkle tree are needed in order to compute the Merkle
// root hash, since we only want to validate the correctness of [9] In fact, only
// [8], [I5], [I9], and [I10] are needed in order to compute [AppHash].
// root hash, since we only want to validate the correctness of [B] In fact, only
// [A], [I4], [I11], [I12], and [G] are needed in order to compute [AppHash].
type MultiStoreProof struct {
AuthToIbcTransferStoresMerkleHash tmbytes.HexBytes `json:"auth_to_ibc_transfer_stores_Merkle_hash"`
MintStoreMerkleHash tmbytes.HexBytes `json:"mint_store_merkle_hash"`
OracleIAVLStateHash tmbytes.HexBytes `json:"oracle_iavl_State_hash"`
ParamsToSlashStoresMerkleHash tmbytes.HexBytes `json:"params_to_slash_stores_merkle_hash"`
StakingToUpgradeStoresMerkleHash tmbytes.HexBytes `json:"staking_to_upgrade_stores_merkle_hash"`
AuthToFeeGrantStoresMerkleHash tmbytes.HexBytes `json:"auth_to_fee_grant_stores_Merkle_hash"`
GovToIbcCoreStoresMerkleHash tmbytes.HexBytes `json:"gov_to_ibc_core_stores_merkle_hash"`
MintStoreMerkleHash tmbytes.HexBytes `json:"mint_store_merkle_hash"`
OracleIAVLStateHash tmbytes.HexBytes `json:"oracle_iavl_State_hash"`
ParamsToTransferStoresMerkleHash tmbytes.HexBytes `json:"params_to_transfer_stores_merkle_hash"`
UpgradeStoreMerkleHash tmbytes.HexBytes `json:"upgrade_store_merkle_hash"`
}

// MultiStoreProofEthereum is an Ethereum version of MultiStoreProof for solidity ABI-encoding.
type MultiStoreProofEthereum struct {
AuthToIbcTransferStoresMerkleHash common.Hash
MintStoreMerkleHash common.Hash
OracleIAVLStateHash common.Hash
ParamsToSlashStoresMerkleHash common.Hash
StakingToUpgradeStoresMerkleHash common.Hash
AuthToFeeGrantStoresMerkleHash common.Hash
GovToIbcCoreStoresMerkleHash common.Hash
MintStoreMerkleHash common.Hash
OracleIAVLStateHash common.Hash
ParamsToTransferStoresMerkleHash common.Hash
UpgradeStoreMerkleHash common.Hash
}

func (m *MultiStoreProof) encodeToEthFormat() MultiStoreProofEthereum {
return MultiStoreProofEthereum{
AuthToIbcTransferStoresMerkleHash: common.BytesToHash(m.AuthToIbcTransferStoresMerkleHash),
MintStoreMerkleHash: common.BytesToHash(m.MintStoreMerkleHash),
OracleIAVLStateHash: common.BytesToHash(m.OracleIAVLStateHash),
ParamsToSlashStoresMerkleHash: common.BytesToHash(m.ParamsToSlashStoresMerkleHash),
StakingToUpgradeStoresMerkleHash: common.BytesToHash(m.StakingToUpgradeStoresMerkleHash),
AuthToFeeGrantStoresMerkleHash: common.BytesToHash(m.AuthToFeeGrantStoresMerkleHash),
GovToIbcCoreStoresMerkleHash: common.BytesToHash(m.GovToIbcCoreStoresMerkleHash),
MintStoreMerkleHash: common.BytesToHash(m.MintStoreMerkleHash),
OracleIAVLStateHash: common.BytesToHash(m.OracleIAVLStateHash),
ParamsToTransferStoresMerkleHash: common.BytesToHash(m.ParamsToTransferStoresMerkleHash),
UpgradeStoreMerkleHash: common.BytesToHash(m.UpgradeStoreMerkleHash),
}
}

// GetMultiStoreProof compacts Multi store proof from Tendermint to MultiStoreProof version.
func GetMultiStoreProof(multiStoreEp *ics23.ExistenceProof) MultiStoreProof {
return MultiStoreProof{
AuthToIbcTransferStoresMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[3].Prefix[1:]),
MintStoreMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[0].Prefix[1:]),
OracleIAVLStateHash: tmbytes.HexBytes(multiStoreEp.Value),
ParamsToSlashStoresMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[1].Suffix),
StakingToUpgradeStoresMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[2].Suffix),
AuthToFeeGrantStoresMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[3].Prefix[1:]),
GovToIbcCoreStoresMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[1].Prefix[1:]),
MintStoreMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[0].Prefix[1:]),
OracleIAVLStateHash: tmbytes.HexBytes(multiStoreEp.Value),
ParamsToTransferStoresMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[2].Suffix),
UpgradeStoreMerkleHash: tmbytes.HexBytes(multiStoreEp.Path[4].Suffix),
}
}
Loading

0 comments on commit c3db705

Please sign in to comment.