From 0a2f7bede0bbc5ca959d6e6610069da6c634dad6 Mon Sep 17 00:00:00 2001 From: ndk Date: Wed, 12 Nov 2025 15:30:52 +0100 Subject: [PATCH 1/6] added read example with smalldot --- examples/smoldot_read.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 examples/smoldot_read.js diff --git a/examples/smoldot_read.js b/examples/smoldot_read.js new file mode 100644 index 0000000..886eb6c --- /dev/null +++ b/examples/smoldot_read.js @@ -0,0 +1,17 @@ +import * as smoldot from 'smoldot'; +import fs from 'fs'; + +const chainSpec = fs.readFileSync('./node/chain-specs/bulletin-polkadot.json', 'utf8'); +const client = smoldot.start( {logCallback: LogCallback}); + +await client + .addChain({ chainSpec }) + .then((chain) => { + chain.sendJsonRpc(`{"jsonrpc":"2.0","id":12,"method":"chain_getFinalizedHead","params":[]}`); + return chain; + }) + .then(async (chain) => { + const response = await chain.nextJsonRpcResponse(); + console.log("✅ JSON-RPC response:", response); + }) + .then(() => client.terminate()) From f59f66cc274ef848a8a078fcdb0a71059a44c223 Mon Sep 17 00:00:00 2001 From: ndk Date: Wed, 12 Nov 2025 15:33:07 +0100 Subject: [PATCH 2/6] removed log callback --- examples/smoldot_read.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/smoldot_read.js b/examples/smoldot_read.js index 886eb6c..53a2824 100644 --- a/examples/smoldot_read.js +++ b/examples/smoldot_read.js @@ -2,7 +2,7 @@ import * as smoldot from 'smoldot'; import fs from 'fs'; const chainSpec = fs.readFileSync('./node/chain-specs/bulletin-polkadot.json', 'utf8'); -const client = smoldot.start( {logCallback: LogCallback}); +const client = smoldot.start(); await client .addChain({ chainSpec }) From 4eee06157646d0789a4ec7ab49c120ff0d264aaf Mon Sep 17 00:00:00 2001 From: ndk Date: Fri, 14 Nov 2025 09:43:32 +0100 Subject: [PATCH 3/6] added smoldot + read to live chain --- examples/smoldot_read.js | 43 +++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/examples/smoldot_read.js b/examples/smoldot_read.js index 53a2824..ab53caf 100644 --- a/examples/smoldot_read.js +++ b/examples/smoldot_read.js @@ -1,17 +1,32 @@ import * as smoldot from 'smoldot'; -import fs from 'fs'; +import { cryptoWaitReady } from '@polkadot/util-crypto'; +import { ApiPromise, WsProvider } from '@polkadot/api'; -const chainSpec = fs.readFileSync('./node/chain-specs/bulletin-polkadot.json', 'utf8'); -const client = smoldot.start(); -await client - .addChain({ chainSpec }) - .then((chain) => { - chain.sendJsonRpc(`{"jsonrpc":"2.0","id":12,"method":"chain_getFinalizedHead","params":[]}`); - return chain; - }) - .then(async (chain) => { - const response = await chain.nextJsonRpcResponse(); - console.log("✅ JSON-RPC response:", response); - }) - .then(() => client.terminate()) +async function main() { + await cryptoWaitReady(); + + const ws = new WsProvider('wss://bulletin.rpc.amforc.com'); + const api = await ApiPromise.create({ provider: ws }); + await api.isReady; + + // true: raw chain spec + const chainSpec = await api.rpc.syncstate.genSyncSpec(true); + + const client = smoldot.start(); + + await client + .addChain({ chainSpec: chainSpec.toString() }) + .then((chain) => { + chain.sendJsonRpc(`{"jsonrpc":"2.0","id":12,"method":"chain_getFinalizedHead","params":[]}`); + return chain; + }) + .then(async (chain) => { + const response = await chain.nextJsonRpcResponse(); + console.log("✅ JSON-RPC response:", response); + return chain; + }) + .then(() => client.terminate()); +} + +await main(); \ No newline at end of file From d70d0bab1aff3177d1052ab82aacf6ff7c8b4262 Mon Sep 17 00:00:00 2001 From: ndk Date: Fri, 14 Nov 2025 14:56:15 +0100 Subject: [PATCH 4/6] added newline --- examples/smoldot_read.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/smoldot_read.js b/examples/smoldot_read.js index ab53caf..5c3e881 100644 --- a/examples/smoldot_read.js +++ b/examples/smoldot_read.js @@ -29,4 +29,4 @@ async function main() { .then(() => client.terminate()); } -await main(); \ No newline at end of file +await main(); From 3fc5af26e2ddabce4cfc686758d6832592da0e8e Mon Sep 17 00:00:00 2001 From: Branislav Kontur Date: Fri, 14 Nov 2025 23:59:05 +0100 Subject: [PATCH 5/6] Update examples/smoldot_read.js --- examples/smoldot_read.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/smoldot_read.js b/examples/smoldot_read.js index 5c3e881..b331fda 100644 --- a/examples/smoldot_read.js +++ b/examples/smoldot_read.js @@ -6,11 +6,13 @@ import { ApiPromise, WsProvider } from '@polkadot/api'; async function main() { await cryptoWaitReady(); - const ws = new WsProvider('wss://bulletin.rpc.amforc.com'); + // Download the raw chain spec from an RPC node. + // Note: The dApps or the actual application should not connect to any external RPC node, + // but should instead use chain specs provided directly. + // 12346 is Bob's validator rpc port, because Alice does not have `bootNodes`. + const ws = new WsProvider('ws://localhost:12346'); const api = await ApiPromise.create({ provider: ws }); await api.isReady; - - // true: raw chain spec const chainSpec = await api.rpc.syncstate.genSyncSpec(true); const client = smoldot.start(); From 7feb40469f7652d53c14334623e55683689f283c Mon Sep 17 00:00:00 2001 From: ndk Date: Mon, 17 Nov 2025 08:33:00 +0100 Subject: [PATCH 6/6] fixed formatting --- examples/smoldot_read.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/smoldot_read.js b/examples/smoldot_read.js index b331fda..0854d9e 100644 --- a/examples/smoldot_read.js +++ b/examples/smoldot_read.js @@ -8,8 +8,8 @@ async function main() { // Download the raw chain spec from an RPC node. // Note: The dApps or the actual application should not connect to any external RPC node, - // but should instead use chain specs provided directly. - // 12346 is Bob's validator rpc port, because Alice does not have `bootNodes`. + // but should instead use chain specs provided directly. + // 12346 is Bob's validator rpc port, because Alice does not have `bootNodes`. const ws = new WsProvider('ws://localhost:12346'); const api = await ApiPromise.create({ provider: ws }); await api.isReady;