From 8c8121dce32fa25882e866f5c19b697d38584b6b Mon Sep 17 00:00:00 2001 From: officeyutong Date: Fri, 19 Dec 2025 19:17:46 +0800 Subject: [PATCH] update documents --- wasm/light-client-js/README.md | 93 +++++++++++++++++++++++++++++++--- 1 file changed, 87 insertions(+), 6 deletions(-) diff --git a/wasm/light-client-js/README.md b/wasm/light-client-js/README.md index 64319596..2e5a9aa3 100644 --- a/wasm/light-client-js/README.md +++ b/wasm/light-client-js/README.md @@ -14,8 +14,9 @@ import { LightClient, randomSecretKey } from "light-client-js"; const client = new LightClient(); -const config = ` -chain = "dev" +// Default config for testnet +const testnetConfig = ` +chain = "testnet" [store] path = "data/store" @@ -30,13 +31,23 @@ listen_addresses = ["/ip4/0.0.0.0/tcp/8110"] # 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 = [ - "/ip4/18.167.71.41/tcp/8115/ws/p2p/QmZ3g4ikFdUijFyQdDsuxnvMwgC4uMU4Ux8siwPGPxLnRC", - # "/ip4/18.167.71.41/tcp/8115/wss/p2p/QmZ3g4ikFdUijFyQdDsuxnvMwgC4uMU4Ux8siwPGPxLnRC" + "/dns4/dagon.ckb.guide/tcp/443/wss/p2p/QmX5D6aJiAQ5Fxn4BfVqSn6zrgyuQM1oXVC9yvmzLuHXnx", + "/dns4/javelin.ckb.guide/tcp/443/wss/p2p/QmPcJY2gZLUm66szYA9QaG1P3rzwseWCMgbj6AyNCyW4G2", + "/dns4/diadem.ckb.guide/tcp/443/wss/p2p/QmQMjFrNGaphzfHin3mbYybbJcFMDUihKAcknquYvm9J3W", + "/dns4/bloodstone.ckb.guide/tcp/443/wss/p2p/QmQoTR39rBkpZVgLApDGDoFnJ2YDBS9hYeiib1Z6aoAdEf", + "/dns4/crown.ckb.guide/tcp/443/wss/p2p/QmTt6HeNakL8Fpmevrhdna7J4NzEMf9pLchf1CXtmtSrwb", + "/dns4/mekansm.ckb.guide/tcp/443/wss/p2p/QmT6DFfm18wtbJz3y4aPNn3ac86N4d4p4xtfQRRPf73frC", + "/dns4/circlet.ckb.guide/tcp/443/wss/p2p/Qmd41MaByDprkC5gP1XBKgamZ9DTLNk37zbPgwtiWCzRV6", + "/dns4/vanguard.ckb.guide/tcp/443/wss/p2p/QmWVuW5KquiWDSqgMJRFW1xRtVqkYJrWz6S9NNk6fFn3wh", + "/dns4/chainmail.ckb.guide/tcp/443/wss/p2p/QmfUTZxsse7rFJTJfoUv8bbStoDLETxst5nJEpJozNuAnH", + "/dns4/gleipnir.ckb.guide/tcp/443/wss/p2p/QmSPkAyXqsWpRiS7HpHLTProVdhQWLKFHCXbRjaLpJj7ZL", + "/dns4/parasma.ckb.guide/tcp/443/wss/p2p/QmSJTsMsMGBjzv1oBNwQU36VhQRxc2WQpFoRu1ZifYKrjZ", + "/dns4/bottle.ckb.guide/tcp/443/wss/p2p/QmWcEhsMNRcfJit62EbKgzpgtAJZX1G3Ur4shXjcvLsYDb" ] max_peers = 125 -max_outbound_peers = 2 +max_outbound_peers = 4 # 2 minutes ping_interval_secs = 120 # 20 minutes @@ -51,11 +62,81 @@ discovery_local_address = false bootnode_mode = false ` +// Default config for mainnet +const mainnetConfig = ` +chain = "mainnet" + +[store] +path = "data/store" + +[network] +path = "data/network" + +listen_addresses = ["/ip4/0.0.0.0/tcp/8110"] +### 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 = [ + "/dns4/reaver.ckb.guide/tcp/443/wss/p2p/QmaZMemLXSsxKUrYNucjEbPxVX3rBKsGhWW2muWtWxUWyh", + "/dns4/cheese.ckb.guide/tcp/443/wss/p2p/QmV26bmuBXyiBytbYvr2aTnUg27mgtpBmae6EA8U49otbJ", + "/dns4/maelstrom.ckb.guide/tcp/443/wss/p2p/QmcodzCafKsP9bSa2QPsNoK6UFL3h8ucewvmRV9Re5WfQw", + "/dns4/satanic.ckb.guide/tcp/443/wss/p2p/QmcEK1wUR287qSYdw8eHNWeQrFitQsCaZHHTM9wgvakxnS", + "/dns4/sange.ckb.guide/tcp/443/wss/p2p/QmNRAvtC6L85hwp6vWnqaKonJw3dz1q39B4nXVQErzC4Hx", + "/dns4/cloak.ckb.guide/tcp/443/wss/p2p/QmagxSv7GNwKXQE7mi1iDjFHghjUpbqjBgqSot7PmMJqHA", + "/dns4/lavabuster.ckb.guide/tcp/443/wss/p2p/QmZgcFN3c7zpyzzxn9KNGsQpEyf4D7eCgrmNCnAeCWicw3", + "/dns4/claymore.ckb.guide/tcp/443/wss/p2p/QmSRj57aa9sR2AiTvMyrEea8n1sEM1cDTrfb2VHVJxnGuu", + "/dns4/eaglesong.ckb.guide/tcp/443/wss/p2p/QmbT7QimcrcD5k2znoJiWpxoESxang6z1Gy9wof1rT1LKR", + "/dns4/phylactery.ckb.guide/tcp/443/wss/p2p/QmP48t4MSACDyJUcoRgDAaW42MMv2MZnrTaUGCpVeGvKms", + "/dns4/hyperstone.ckb.guide/tcp/443/wss/p2p/QmRHqhSGMGm5FtnkW8D6T83X7YwaiMAZXCXJJaKzQEo3rb", + "/dns4/kaya.ckb.guide/tcp/443/wss/p2p/QmeSRNTxo9KqCBQSf7yQErn9Jz2gfnP6wHACvg6qyiEM7q", + "/dns4/buckler.ckb.guide/tcp/443/wss/p2p/QmYCRVonLfP18LSoz2WCHaXDorUYxuUMfhtcXK1TuZ1iwF", + "/dns4/bracer.ckb.guide/tcp/443/wss/p2p/QmejEJEbDcGGMp4D6WtftMMVLkR1ZuBfMgyLFDMJymkDt6", + "/dns4/mjollnir.ckb.guide/tcp/443/wss/p2p/QmVi7reKhqVnoBYzW2nJYnrujVeckrZXhwuYbX7P2whPJg", + "/dns4/crystalys.ckb.guide/tcp/443/wss/p2p/QmXJg4iKbQzMpLhX75RyDn89Mv7N2H8vLePBR7kgZf6hYk", + "/dns4/radiance.ckb.guide/tcp/443/wss/p2p/QmQoWrmuFauCn3zZ2mYYKAciG9opTbjzC2wVEfWveZNDt8", + "/dns4/necronomicon.ckb.guide/tcp/443/wss/p2p/QmejugEABNzAofqRhci7HAipLFvoyYKRacd272jNtnQBTE", + "/dns4/khanda.ckb.guide/tcp/443/wss/p2p/Qmf4t1SzFhRWuGcFcgs7r4pXvkACsz3FcaBMcmMKQMMpn7", + "/dns4/yasha.ckb.guide/tcp/443/wss/p2p/QmQidJaxciY3NT2PjsaCR4Gz8vB8kFn3Avwz96u6b3jGc1", + "/dns4/cornucopia.ckb.guide/tcp/443/wss/p2p/QmexvXVDiRt2FBGptgK4gBJusWyyTEEaHeuCAa35EPNkZS", + "/dns4/harpoon.ckb.guide/tcp/443/wss/p2p/QmVeeCh81GTLGRwB7vRHXeTRdUHRYcfn6qKEfewhtiRJZC", + "/dns4/nullifier.ckb.guide/tcp/443/wss/p2p/QmW3P1WYtuz9hitqctKnRZua2deHXhNePNjvtc9Qjnwp4q", + "/dns4/platemail.ckb.guide/tcp/443/wss/p2p/QmNsGNQjYA6iP472bNnNE2GR31kCYBifhY1XcaUxRjZ1py", + "/dns4/broadsword.ckb.guide/tcp/443/wss/p2p/QmShw2vtVt49wJagc1zGQXGS6LkQTcHxnEV3xs6y8MAmQN", + "/dns4/desolator.ckb.guide/tcp/443/wss/p2p/QmeCzzVmSAU5LNYAeXhdJj8TCq335aJMqUxcvZXERBWdgS" +] + + +max_peers = 125 +max_outbound_peers = 4 +# 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 + +` +// Start a mainnet node +await client.start({ type: "MainNet", config: mainnetConfig }, randomSecretKey(), "info"); +// Start a testnet node +// await client.start({ type: "TestNet", config: testnetConfig }, randomSecretKey(), "info"); + -await client.start({ type: "TestNet", config }, randomSecretKey(), "info"); console.log(await client.getTipHeader()) ``` +### About `max_outbound_peers` +`max_outbound_peers` is set to 4 by default, since a light client node must connect at least `max_outbound_peers / 2` nodes to start sync, and if connected to too many nodes, synchorization may also be setopped (See https://github.com/tea2x/quantum-purse/issues/68) + + ### A more complex example https://github.com/Officeyutong/ckb-light-client-wasm-demo