nervosnetwork / ckb-light-client

CKB light client reference implementation
MIT License
14 stars 16 forks source link

Long fork detected when long-time working #117

Closed gpBlockchain closed 1 year ago

gpBlockchain commented 1 year ago

commit: c24c3edb2a01140bf3ad636daa0dd27fa268c82b config.toml

# chain = "mainnet"
# chain = "testnet"
# chain = "your_path_to/dev.toml"
chain = "testnet"

[store]
path = "data/store"

[network]
path = "data/network"

listen_addresses = ["/ip4/0.0.0.0/tcp/8118"]
### Specify the public and routable network addresses
# public_addresses = []

# Node connects to nodes listed here to discovery other peers when there's no local stored peers.
# When chain.spec is changed, this usually should also be changed to the bootnodes in the new chain.
bootnodes = [
 # Hangzhou, Asia
  "/ip4/47.111.169.36/tcp/8111/p2p/QmNQ4jky6uVqLDrPU7snqxARuNGWNLgSrTnssbRuy3ij2W",
  # Ohio, North America
  "/ip4/18.217.146.65/tcp/8111/p2p/QmT6DFfm18wtbJz3y4aPNn3ac86N4d4p4xtfQRRPf73frC",
  # Singapore, Asia
  "/ip4/18.136.60.221/tcp/8111/p2p/QmTt6HeNakL8Fpmevrhdna7J4NzEMf9pLchf1CXtmtSrwb",
  # London, Europe
  "/ip4/35.176.207.239/tcp/8111/p2p/QmSJTsMsMGBjzv1oBNwQU36VhQRxc2WQpFoRu1ZifYKrjZ"
]

### Whitelist-only mode
whitelist_only = true
### Whitelist peers connecting from the given IP addresses
whitelist_peers = [
# Hangzhou, Asia
  "/ip4/47.111.169.36/tcp/8111/p2p/QmNQ4jky6uVqLDrPU7snqxARuNGWNLgSrTnssbRuy3ij2W",
  # Ohio, North America
  "/ip4/18.217.146.65/tcp/8111/p2p/QmT6DFfm18wtbJz3y4aPNn3ac86N4d4p4xtfQRRPf73frC",
  # Singapore, Asia
  "/ip4/18.136.60.221/tcp/8111/p2p/QmTt6HeNakL8Fpmevrhdna7J4NzEMf9pLchf1CXtmtSrwb",
  # London, Europe
  "/ip4/35.176.207.239/tcp/8111/p2p/QmSJTsMsMGBjzv1oBNwQU36VhQRxc2WQpFoRu1ZifYKrjZ"
]

max_peers = 5000
max_outbound_peers = 2500
# 2 minutes
ping_interval_secs = 120
# 20 minutes
ping_timeout_secs = 1200
connect_outbound_interval_secs = 15
# If set to true, try to register upnp
upnp = false
# If set to true, network service will add discovered local address to peer store, it's helpful for private net development
discovery_local_address = false
# If set to true, random cleanup when there are too many inbound nodes
# Ensure that itself can continue to serve as a bootnode node
bootnode_mode = false

[rpc]
# Light client rpc is designed for self hosting, exposing to public network is not recommended and may cause security issues.
# By default RPC only binds to localhost, thus it only allows accessing from the same machine.
listen_address = "127.0.0.1:9000"

step

  1. setScript
  2. hang up for a long time

response

  1. collect script msg
  2. the node reports an error Long fork detected
    
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x4b33d8a7a00a7fa056d93f477a95177b9b33dda8623b26eba17f84bd777920ba
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0xdabf2dfc4a16c5f5a7b3ddd50da5d8fdc73496665dd87421cf2401ae79f342ff
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0xfda36b1957e4878bcd9d95ee089d28f446999a9af2f500ecd0dfba561a678c1f
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0xfb8313ac528cc6ec218d610eb7917af6a8144faca190fb2e609889d2043ecb3c
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x3d8d1eda4d01228dd2a6955b4d481e2b1266b66e3536ab2297e2fe1a956a4b22
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x109e5857e30ab7667808837dc82407099b89d0f60fd1ef55775b4b1bd2c6da6b
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0xd219f9031cff3bf652b50b7b1cbd3f5e38f91c317b9c7eb00cdbc7c994f1e090
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x85cd1a46a127ea2bd39e3583a481b575c1e01d606e53b491b69fc38e463a515a
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x2d643eb8edcb7ed8b005c05a4ed1f977f11bc56305daae7e518a4adbb975d703
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x54d59309292a4825d0754e8f4185df1f5cd683629e50c2adfc1220584636e31c
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x6a5d9125da39b800b11fd1e08b07d7acf5ff9591c97921efd68900c77b22e191
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] check_filters_data not matched, block_hash: 0x916ed3be65b2d25f48b25bc1a047c48bbdd219d1460dd298af0488cfe0bd1931
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::components::block_filters_process] peer SessionId(4), matched blocks: 0
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::filter::block_filter] FilterProtocol.received peer=SessionId(4), message=BlockFilters
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client] peer SessionId(2): send get last state proof
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(1): update last state
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(1), message=SendLastState
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(2): update last state
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(2), message=SendLastState
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(2): headers count: reorg: 100, sampled: 0, last_n: 5
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(2) skip checking TAU since no sampled headers
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify extra hash for block-7916468 (0x294109f63850f6ffbc9189f1e9955e8dc6f3bc5d98195b2759a6661b694d71a2)
    [2023-01-06T09:09:27Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify mmr proof
    [2023-01-06T09:09:27Z ERROR ckb_light_client::protocols::light_client] Long fork detected, please check if ckb-light-client is connected to the same network ckb node. If you connected ckb-light-client to a dev chain for testing purpose you should remove the storage of ckb-light-client to recover.
    thread 'GlobalRt-0' panicked at 'long fork detected', src/protocols/light_client/mod.rs:353:21
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    [2023-01-06T09:09:27Z INFO  ckb_network::network] p2p service event: ListenClose { address: "/ip4/0.0.0.0/tcp/8118" }
    [2023-01-06T09:09:27Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(1)
    [2023-01-06T09:09:27Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(2)
    [2023-01-06T09:09:27Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(3)
    [2023-01-06T09:09:27Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(1)
    [2023-01-06T09:09:27Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(2)
    [2023-01-06T09:09:27Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(3)
    [2023-01-06T09:09:27Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(4)
    [2023-01-06T09:09:27Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(4)
    [2023-01-06T09:09:27Z INFO  ckb_stop_handler] StopHandler(network) 
gpBlockchain commented 1 year ago
[2023-01-08T10:09:29Z DEBUG ckb_light_client::protocols::filter::block_filter] found proved peer SessionId(4), start_number: 1, prove_state number: 7938432
[2023-01-08T10:09:30Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(3): update last state
[2023-01-08T10:09:30Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(3), message=SendLastState
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] no fetching headers/transactions needed
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] peer SessionId(3): send get last state proof
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] peer SessionId(1): send get last state proof
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] peer SessionId(2): send get last state proof
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] peer SessionId(4): send get last state proof
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(1): update last state
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(1), message=SendLastState
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(1): headers count: reorg: 0, sampled: 0, last_n: 3
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(1) skip checking TAU since no sampled headers
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify extra hash for block-7938435 (0xc93bce7909a0848161e416fadc107f616e152cdad8cd37fe0b388f7210412d92)
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify mmr proof
[2023-01-08T10:09:32Z DEBUG ckb_light_client::protocols::light_client::components::send_last_state_proof] block proof verify passed for peer: SessionId(1)
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(1), message=SendLastStateProof
[2023-01-08T10:09:32Z DEBUG ckb_light_client::protocols::filter::block_filter] found proved peer SessionId(1), start_number: 1, prove_state number: 7938435
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(2): update last state
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(2), message=SendLastState
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(3): update last state
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(3), message=SendLastState
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(4): update last state
[2023-01-08T10:09:32Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(4), message=SendLastState
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(2): headers count: reorg: 0, sampled: 0, last_n: 2
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(2) skip checking TAU since no sampled headers
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify extra hash for block-7938434 (0x67d4273cfb2f6237fe21257c6391fe2b1fce4ea2c699c7b479403f842b2e27a6)
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify mmr proof
[2023-01-08T10:09:33Z DEBUG ckb_light_client::protocols::light_client::components::send_last_state_proof] block proof verify passed for peer: SessionId(2)
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(2), message=SendLastStateProof
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state] peer SessionId(1): update last state
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(1), message=SendLastState
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(4): headers count: reorg: 0, sampled: 0, last_n: 2
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(4) skip checking TAU since no sampled headers
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify extra hash for block-7938434 (0x67d4273cfb2f6237fe21257c6391fe2b1fce4ea2c699c7b479403f842b2e27a6)
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify mmr proof
[2023-01-08T10:09:33Z DEBUG ckb_light_client::protocols::light_client::components::send_last_state_proof] block proof verify passed for peer: SessionId(4)
[2023-01-08T10:09:33Z TRACE ckb_light_client::protocols::light_client] LightClient.received peer=SessionId(4), message=SendLastStateProof
[2023-01-08T10:09:34Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(3): headers count: reorg: 100, sampled: 0, last_n: 5
[2023-01-08T10:09:34Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] peer SessionId(3) skip checking TAU since no sampled headers
[2023-01-08T10:09:34Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify extra hash for block-7938436 (0xf79270cb1d7cfbe356c93763fec31a36751b0d7599cfb6eede1b8fdc172450cb)
[2023-01-08T10:09:34Z TRACE ckb_light_client::protocols::light_client::components::send_last_state_proof] passed: verify mmr proof
[2023-01-08T10:09:34Z ERROR ckb_light_client::protocols::light_client] Long fork detected, please check if ckb-light-client is connected to the same network ckb node. If you connected ckb-light-client to a dev chain for testing purpose you should remove the storage of ckb-light-client to recover.
thread 'GlobalRt-1' panicked at 'long fork detected', src/protocols/light_client/mod.rs:353:21
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
[2023-01-08T10:09:34Z INFO  ckb_network::network] p2p service event: ListenClose { address: "/ip4/0.0.0.0/tcp/8118" }
[2023-01-08T10:09:34Z INFO  ckb_stop_handler] StopHandler(network) send signal
[2023-01-08T10:09:34Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(2)
[2023-01-08T10:09:34Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(3)
[2023-01-08T10:09:34Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(2)
[2023-01-08T10:09:34Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(3)
[2023-01-08T10:09:34Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(4)
[2023-01-08T10:09:34Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(4)
[2023-01-08T10:09:34Z INFO  ckb_light_client::protocols::synchronizer] SyncProtocol.disconnected peer=SessionId(1)
[2023-01-08T10:09:34Z DEBUG ckb_light_client::protocols::filter::block_filter] FilterProtocol.disconnected peer=SessionId(1)
[2023-01-08T10:09:34Z INFO  ckb_light_client] Done.