rooch-network / rooch

VApp Container with Move Language
https://rooch.network
Apache License 2.0
128 stars 54 forks source link

[Indexer] Recode state change set for state sync And provide state sync RPC #1190

Closed baichuan3 closed 5 months ago

baichuan3 commented 5 months ago

Summary

Part of #1028 and follow up https://github.com/rooch-network/rooch/pull/1186

  1. Recode state change set for state sync
  2. Provide state sync RPC, sync from asc by default
  3. Add state sync test cases
  4. Rename key_hash to key_str for leaf_states table
vercel[bot] commented 5 months ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

1 Ignored Deployment | Name | Status | Preview | Comments | Updated (UTC) | | :--- | :----- | :------ | :------- | :------ | | **rooch** | ⬜️ Ignored ([Inspect](https://vercel.com/rooch/rooch/58MzHjwy3BuT88fc5448eWoXLGb3)) | [Visit Preview](https://rooch-git-statesync-rooch.vercel.app) | | Nov 30, 2023 8:51am |
baichuan3 commented 5 months ago
curl --location 'http://localhost:50051' \
--header 'Content-Type: application/json' \
--data '{
    "id": 101,
    "jsonrpc": "2.0",
    "method": "rooch_syncStates",
    "params": [
        null, "10", null
    ]
}'
{
    "jsonrpc": "2.0",
    "result": {
        "data": [
            {
                "tx_order": 0,
                "state_change_set": {
                    "new_tables": {},
                    "removed_tables": [],
                    "changes": {
                        "0x0000000000000000000000000000000000000000000000000000000000000000": {
                            "entries": {
                                "0x4b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c56": {
                                    "type": "new",
                                    "value": "0x4b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c564b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c5600447c72e15e318ef69ef0de731754a97120e4f1448a127bae8f82ef7000ffb1a3a6c051877fbbb3398ec27d9eca77658bcc93b63f5ecca2eaef5e5d0ffc1fb0ec",
                                    "value_type": "0x2::object::ObjectEntity<0x2::account_storage::AccountStorage>",
                                    "decoded_value": null
                                },
                                "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a": {
                                    "type": "modify",
                                    "value": "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a00000000000000000000000000000000000000000000000000000000000000000053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696e0ce11a000000000000000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                },
                                "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd5764": {
                                    "type": "new",
                                    "value": "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd57644b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c560053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696ef41ef5622d5ec76b05000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                },
                                "0xf81628c3bf85c3fc628f29a3739365d4428101fbbecca0dcc7e3851f34faea6b": {
                                    "type": "modify",
                                    "value": "0xf81628c3bf85c3fc628f29a3739365d4428101fbbecca0dcc7e3851f34faea6b00000000000000000000000000000000000000000000000000000000000000030053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696e0e526f6f63682047617320436f696e0352474312000010632d5ec76b050000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin::CoinInfo<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 2
                        },
                        "0x447c72e15e318ef69ef0de731754a97120e4f1448a127bae8f82ef7000ffb1a3": {
                            "entries": {
                                "0x52303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6163636f756e743a3a4163636f756e74": {
                                    "type": "new",
                                    "value": "0x0100000000000000",
                                    "value_type": "0x3::account::Account",
                                    "decoded_value": null
                                },
                                "0x60303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6163636f756e745f636f696e5f73746f72653a3a436f696e53746f726573": {
                                    "type": "new",
                                    "value": "0xad7d15099438f06bc6e5954089b798d6ebd4a8cf8d2201e29a7872e0a11fff93",
                                    "value_type": "0x3::account_coin_store::CoinStores",
                                    "decoded_value": null
                                },
                                "0x6c303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6163636f756e745f61757468656e7469636174696f6e3a3a41757468656e7469636174696f6e4b657973": {
                                    "type": "new",
                                    "value": "0xa8b28ae0a36c51f6998eec632eb3b75777f49ae312cc0c17d75f20f61fb47135",
                                    "value_type": "0x3::account_authentication::AuthenticationKeys",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 3
                        },
                        "0xa6c051877fbbb3398ec27d9eca77658bcc93b63f5ecca2eaef5e5d0ffc1fb0ec": {
                            "entries": {
                                "0x0a6576656e745f74657374": {
                                    "type": "new",
                                    "value": "0x8502a11ceb0b0600000009010006020608030e10041e02052012073252088401400ac401070ccb011200000101010200030300010400000005000100010802030002090501010202040207080103000106080101050108000109000a6576656e745f7465737407636f6e74657874056576656e740d57697468647261774576656e7407436f6e746578740a656d69745f6576656e74046164647206616d6f756e740673656e64657204656d69744b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c560000000000000000000000000000000000000000000000000000000000000002000202060507030001040001070b002e11010b01120038000200",
                                    "value_type": "0x2::move_module::MoveModule",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 1
                        },
                        "0xa8b28ae0a36c51f6998eec632eb3b75777f49ae312cc0c17d75f20f61fb47135": {
                            "entries": {
                                "0xd001303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6163636f756e745f61757468656e7469636174696f6e3a3a41757468656e7469636174696f6e4b65793c303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6e61746976655f76616c696461746f723a3a4e617469766556616c696461746f723e": {
                                    "type": "new",
                                    "value": "0x204b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c56",
                                    "value_type": "0x3::account_authentication::AuthenticationKey<0x3::native_validator::NativeValidator>",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 1
                        },
                        "0xad7d15099438f06bc6e5954089b798d6ebd4a8cf8d2201e29a7872e0a11fff93": {
                            "entries": {
                                "0x53303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696e": {
                                    "type": "new",
                                    "value": "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd5764",
                                    "value_type": "0x2::object::ObjectID",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 1
                        }
                    }
                },
                "created_at": 0
            },
            {
                "tx_order": 1,
                "state_change_set": {
                    "new_tables": {},
                    "removed_tables": [],
                    "changes": {
                        "0x0000000000000000000000000000000000000000000000000000000000000000": {
                            "entries": {
                                "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a": {
                                    "type": "modify",
                                    "value": "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a00000000000000000000000000000000000000000000000000000000000000000053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696e71171b000000000000000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                },
                                "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd5764": {
                                    "type": "modify",
                                    "value": "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd57644b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c560053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696e8fe8f4622d5ec76b05000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 0
                        },
                        "0x447c72e15e318ef69ef0de731754a97120e4f1448a127bae8f82ef7000ffb1a3": {
                            "entries": {
                                "0x52303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6163636f756e743a3a4163636f756e74": {
                                    "type": "modify",
                                    "value": "0x0200000000000000",
                                    "value_type": "0x3::account::Account",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 0
                        }
                    }
                },
                "created_at": 0
            },
            {
                "tx_order": 2,
                "state_change_set": {
                    "new_tables": {},
                    "removed_tables": [],
                    "changes": {
                        "0x0000000000000000000000000000000000000000000000000000000000000000": {
                            "entries": {
                                "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a": {
                                    "type": "modify",
                                    "value": "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a00000000000000000000000000000000000000000000000000000000000000000053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696ed64d1b000000000000000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                },
                                "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd5764": {
                                    "type": "modify",
                                    "value": "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd57644b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c560053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696e2ab2f4622d5ec76b05000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 0
                        },
                        "0x447c72e15e318ef69ef0de731754a97120e4f1448a127bae8f82ef7000ffb1a3": {
                            "entries": {
                                "0x52303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6163636f756e743a3a4163636f756e74": {
                                    "type": "modify",
                                    "value": "0x0300000000000000",
                                    "value_type": "0x3::account::Account",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 0
                        }
                    }
                },
                "created_at": 0
            },
            {
                "tx_order": 3,
                "state_change_set": {
                    "new_tables": {},
                    "removed_tables": [],
                    "changes": {
                        "0x0000000000000000000000000000000000000000000000000000000000000000": {
                            "entries": {
                                "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a": {
                                    "type": "modify",
                                    "value": "0x5abccdaadbbbc049420786674b8b899b0da4b498391626f2da59d97787c8c84a00000000000000000000000000000000000000000000000000000000000000000053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696e3b841b000000000000000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                },
                                "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd5764": {
                                    "type": "modify",
                                    "value": "0x9fdf6a44e40e34899dca64cddf78a4f8896e82d9b3b52d8c3757e193a2dd57644b1b5d2a62f3c9a19a5314167439945bf98fbc871e1402e36d5bad3382064c560053303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6761735f636f696e3a3a476173436f696ec57bf4622d5ec76b05000000000000000000000000000000000000000000000000",
                                    "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 0
                        },
                        "0x447c72e15e318ef69ef0de731754a97120e4f1448a127bae8f82ef7000ffb1a3": {
                            "entries": {
                                "0x52303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030333a3a6163636f756e743a3a4163636f756e74": {
                                    "type": "modify",
                                    "value": "0x0400000000000000",
                                    "value_type": "0x3::account::Account",
                                    "decoded_value": null
                                }
                            },
                            "size_increment": 0
                        }
                    }
                },
                "created_at": 0
            }
        ],
        "next_cursor": 3,
        "has_next_page": false
    },
    "id": 101
}
baichuan3 commented 5 months ago

Encouter an CI sdk test error, https://github.com/rooch-network/rooch/actions/runs/7044107582/job/19179560537?pr=1190,

 ❯ test/e2e/sdk.test.ts  (13 tests | 1 failed) 19010ms
   ❯ test/e2e/sdk.test.ts > SDK > #sessionKey > Create session account with multi scopes should be ok
     → status ABORTED of type Execution with sub status 327684

Please help to have a look. @jolestar @wow-sven

jolestar commented 5 months ago

@wow-sven can give some suggestions based on the use case.

jolestar commented 5 months ago

Encouter an CI sdk test error, https://github.com/rooch-network/rooch/actions/runs/7044107582/job/19179560537?pr=1190,

 ❯ test/e2e/sdk.test.ts  (13 tests | 1 failed) 19010ms
   ❯ test/e2e/sdk.test.ts > SDK > #sessionKey > Create session account with multi scopes should be ok
     → status ABORTED of type Execution with sub status 327684

Please help to have a look. @jolestar @wow-sven

It is the SDK test case timestamp issue. The same error was encountered at #1187