mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-08-10 12:40:34 +02:00
Add private Infonet swarm discovery and gate propagation.
Signed peer manifest pull/announce on the seed, immediate hashchain push for gate messages, seed-only Docker defaults, and stale-genesis sync diagnostics. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -60,6 +60,10 @@ export default function BootstrapView({ marketId, onBack }: BootstrapViewProps)
|
||||
nodeStatus?.bootstrap?.bootstrap_seed_peer_count ?? nodeStatus?.bootstrap?.default_sync_peer_count ?? 0,
|
||||
);
|
||||
const syncPeerCount = Number(nodeStatus?.bootstrap?.sync_peer_count || 0);
|
||||
const swarmSyncPeerCount = Number(nodeStatus?.bootstrap?.swarm_sync_peer_count || 0);
|
||||
const manifestLoaded = Boolean(nodeStatus?.bootstrap?.manifest_loaded);
|
||||
const swarmPull = nodeStatus?.bootstrap?.swarm_manifest_pull;
|
||||
const swarmPullOk = Boolean(swarmPull?.ok) && !swarmPull?.skipped;
|
||||
const lastPeerUrl = String(nodeStatus?.sync_runtime?.last_peer_url || '').trim();
|
||||
const privateTransportRequired = Boolean(nodeStatus?.private_transport_required);
|
||||
|
||||
@@ -146,7 +150,7 @@ export default function BootstrapView({ marketId, onBack }: BootstrapViewProps)
|
||||
Refresh
|
||||
</button>
|
||||
</div>
|
||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-2 text-xs">
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-4 gap-2 text-xs">
|
||||
<div>
|
||||
<div className="text-gray-500">Transport</div>
|
||||
<div className="text-cyan-300 font-mono break-all">
|
||||
@@ -163,6 +167,19 @@ export default function BootstrapView({ marketId, onBack }: BootstrapViewProps)
|
||||
<div className="text-gray-500">Sync Path</div>
|
||||
<div className="text-white font-mono">
|
||||
{syncPeerCount} peers / {seedPeerCount} seeds
|
||||
{swarmSyncPeerCount > 0 ? ` (${swarmSyncPeerCount} swarm)` : ''}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div className="text-gray-500">Swarm Manifest</div>
|
||||
<div className={swarmPullOk || manifestLoaded ? 'text-green-400' : 'text-amber-400'}>
|
||||
{swarmPullOk
|
||||
? `LIVE (${Number(swarmPull?.merged_peer_count || swarmPull?.peer_count || 0)} peers)`
|
||||
: manifestLoaded
|
||||
? 'LOCAL FILE'
|
||||
: swarmPull?.skipped
|
||||
? 'WAITING'
|
||||
: 'NOT LOADED'}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -92,7 +92,7 @@ export default function NetworkStats() {
|
||||
<span className="text-gray-700">|</span>
|
||||
<span>EVENTS <span className="text-white">{stats.infonetEvents}</span></span>
|
||||
<span className="text-gray-700">|</span>
|
||||
<span title="Configured peers this node pulls from. Usually this is just the seed unless another device is added as a sync peer.">
|
||||
<span title="Peers this node syncs from (seed + swarm-discovered participants).">
|
||||
SYNC PEERS <span className="text-white">{stats.syncPeers}</span>
|
||||
</span>
|
||||
{stats.seedPeers > stats.syncPeers ? (
|
||||
|
||||
@@ -25,6 +25,17 @@ export interface InfonetBootstrapSnapshot {
|
||||
bootstrap_seed_peer_count?: number;
|
||||
default_sync_peer_count?: number;
|
||||
last_bootstrap_error?: string;
|
||||
swarm_sync_peer_count?: number;
|
||||
swarm_push_peer_count?: number;
|
||||
swarm_manifest_pull?: {
|
||||
ok?: boolean;
|
||||
skipped?: boolean;
|
||||
reason?: string;
|
||||
detail?: string;
|
||||
peer_count?: number;
|
||||
merged_peer_count?: number;
|
||||
seed_peer_url?: string;
|
||||
};
|
||||
}
|
||||
|
||||
export interface InfonetSyncRuntimeSnapshot {
|
||||
|
||||
Reference in New Issue
Block a user