Implementing smoldot (substrate-connect) on a fork of the polkadot-JS. Connecting to a light node boot node works most of the time, but is intermittent.
When we are able to connect via light client, we can navigate through the entire website very well BUT we cannot send transactions of any kind. Each time a transaction is sent, we get either the infinite blue spinning circle and no result OR (one time only) we got a Dropped error.
We noticed a number of drops and reconnects in the web socket. We see these when connected to a normal RPC node as well so that is not unique to the light client.
What are we missing?
The chain spec header is:
{
"name": "Geode",
"id": "geode_mainnet",
"chainType": "Live",
"bootNodes": [
"/ip4/167.86.91.139/tcp/30336/ws/p2p/12D3KooWE6KQEVWgzzJvecLzAdzEyAozKb1wNhY61nCNxHociEQb",
"/ip4/167.86.91.139/tcp/30334/ws/p2p/12D3KooWCTdxBFVwMs8yrm63SEJMcWWfGDdGvR4NWyhfMVyyQyBu",
"/ip4/207.244.232.237/tcp/30334/ws/p2p/12D3KooWS6Zw8jy5yu5a2ShWBYk5E41GZ6wMVDyEBeCjBwGm2hUi",
"/ip4/207.244.232.237/tcp/30336/ws/p2p/12D3KooWKmnUoPDwD9PDsZ4V9inUH7tE3XrGnHHbVJaXucCziY5T"
],
"telemetryEndpoints": null,
"protocolId": "geode",
"properties": {
"tokenSymbol": "GEODE"
},
"forkBlocks": null,
"badBlocks": null,
"lightSyncState": null,
"codeSubstitutes": {},
"genesis": {...
WSS and Certificates Setup: The second boot node ("/ip4/167.86.91.139/tcp/30334/ws/p2p/12D3KooWCTdxBFVwMs8yrm63SEJMcWWfGDdGvR4NWyhfMVyyQyBu")as an example, has these flags to set the listen addresses.
--chain ./GeodeSpec20230211RAW.json \
--listen-addr=/ip4/0.0.0.0/tcp/30333 \
--listen-addr=/ip4/0.0.0.0/tcp/30334/ws \
And the following WSS/Certificates setup:
server {
server_name getgeode.com www.getgeode.com;
location / {
proxy_buffers 16 4k;
proxy_buffer_size 2k;
proxy_pass http://localhost:30334;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
}
I have verified that all relevant ports are allowed in the firewall (UFW).