@antseed/node 0.2.92 → 0.2.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buyer-request-handler.d.ts +9 -0
- package/dist/buyer-request-handler.d.ts.map +1 -1
- package/dist/buyer-request-handler.js +48 -7
- package/dist/buyer-request-handler.js.map +1 -1
- package/dist/discovery/announcer.d.ts +4 -1
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +53 -0
- package/dist/discovery/announcer.js.map +1 -1
- package/dist/discovery/domain-verification.d.ts +33 -0
- package/dist/discovery/domain-verification.d.ts.map +1 -0
- package/dist/discovery/domain-verification.js +114 -0
- package/dist/discovery/domain-verification.js.map +1 -0
- package/dist/discovery/github-verification.d.ts +30 -0
- package/dist/discovery/github-verification.d.ts.map +1 -0
- package/dist/discovery/github-verification.js +75 -0
- package/dist/discovery/github-verification.js.map +1 -0
- package/dist/discovery/index.d.ts +4 -1
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +4 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/metadata-codec.d.ts +9 -0
- package/dist/discovery/metadata-codec.d.ts.map +1 -1
- package/dist/discovery/metadata-codec.js +175 -0
- package/dist/discovery/metadata-codec.js.map +1 -1
- package/dist/discovery/metadata-validator.d.ts +8 -1
- package/dist/discovery/metadata-validator.d.ts.map +1 -1
- package/dist/discovery/metadata-validator.js +219 -4
- package/dist/discovery/metadata-validator.js.map +1 -1
- package/dist/discovery/peer-metadata.d.ts +35 -1
- package/dist/discovery/peer-metadata.d.ts.map +1 -1
- package/dist/discovery/peer-metadata.js +1 -1
- package/dist/discovery/peer-metadata.js.map +1 -1
- package/dist/discovery/verification-links.d.ts +16 -0
- package/dist/discovery/verification-links.d.ts.map +1 -0
- package/dist/discovery/verification-links.js +71 -0
- package/dist/discovery/verification-links.js.map +1 -0
- package/dist/discovery/verification-utils.d.ts +11 -0
- package/dist/discovery/verification-utils.d.ts.map +1 -0
- package/dist/discovery/verification-utils.js +77 -0
- package/dist/discovery/verification-utils.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +29 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +200 -2
- package/dist/node.js.map +1 -1
- package/dist/p2p/connection-manager.d.ts +3 -0
- package/dist/p2p/connection-manager.d.ts.map +1 -1
- package/dist/p2p/connection-manager.js +30 -4
- package/dist/p2p/connection-manager.js.map +1 -1
- package/dist/p2p/message-protocol.d.ts.map +1 -1
- package/dist/p2p/message-protocol.js +2 -10
- package/dist/p2p/message-protocol.js.map +1 -1
- package/dist/p2p/payment-codec.d.ts.map +1 -1
- package/dist/p2p/payment-codec.js +22 -33
- package/dist/p2p/payment-codec.js.map +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -1
- package/dist/payments/buyer-payment-negotiator.js +3 -8
- package/dist/payments/buyer-payment-negotiator.js.map +1 -1
- package/dist/reputation/on-chain-reputation.d.ts +35 -3
- package/dist/reputation/on-chain-reputation.d.ts.map +1 -1
- package/dist/reputation/on-chain-reputation.js +87 -7
- package/dist/reputation/on-chain-reputation.js.map +1 -1
- package/dist/seller-request-handler.d.ts +5 -2
- package/dist/seller-request-handler.d.ts.map +1 -1
- package/dist/seller-request-handler.js +64 -21
- package/dist/seller-request-handler.js.map +1 -1
- package/dist/storage/migrations/verification/001_create_tables.d.ts +3 -0
- package/dist/storage/migrations/verification/001_create_tables.d.ts.map +1 -0
- package/dist/storage/migrations/verification/001_create_tables.js +31 -0
- package/dist/storage/migrations/verification/001_create_tables.js.map +1 -0
- package/dist/storage/migrations/verification/index.d.ts +3 -0
- package/dist/storage/migrations/verification/index.d.ts.map +1 -0
- package/dist/storage/migrations/verification/index.js +3 -0
- package/dist/storage/migrations/verification/index.js.map +1 -0
- package/dist/types/peer.d.ts +17 -1
- package/dist/types/peer.d.ts.map +1 -1
- package/dist/types/peer.js.map +1 -1
- package/dist/types/protocol.d.ts +21 -0
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +3 -0
- package/dist/types/protocol.js.map +1 -1
- package/dist/utils/json-codec.d.ts +10 -0
- package/dist/utils/json-codec.d.ts.map +1 -0
- package/dist/utils/json-codec.js +52 -0
- package/dist/utils/json-codec.js.map +1 -0
- package/dist/verification/codec.d.ts +4 -0
- package/dist/verification/codec.d.ts.map +1 -0
- package/dist/verification/codec.js +38 -0
- package/dist/verification/codec.js.map +1 -0
- package/dist/verification/index.d.ts +6 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +6 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/response-auth.d.ts +31 -0
- package/dist/verification/response-auth.d.ts.map +1 -0
- package/dist/verification/response-auth.js +111 -0
- package/dist/verification/response-auth.js.map +1 -0
- package/dist/verification/samples.d.ts +29 -0
- package/dist/verification/samples.d.ts.map +1 -0
- package/dist/verification/samples.js +96 -0
- package/dist/verification/samples.js.map +1 -0
- package/dist/verification/storage.d.ts +20 -0
- package/dist/verification/storage.d.ts.map +1 -0
- package/dist/verification/storage.js +108 -0
- package/dist/verification/storage.js.map +1 -0
- package/dist/verification/verification-mux.d.ts +20 -0
- package/dist/verification/verification-mux.d.ts.map +1 -0
- package/dist/verification/verification-mux.js +100 -0
- package/dist/verification/verification-mux.js.map +1 -0
- package/package.json +5 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,9 @@ export { loadOrCreateIdentity, identityFromPrivateKeyHex, FileIdentityStore, hex
|
|
|
7
7
|
export { DHTNode, DEFAULT_DHT_CONFIG } from './discovery/dht-node.js';
|
|
8
8
|
export { OFFICIAL_BOOTSTRAP_NODES, mergeBootstrapNodes, toBootstrapConfig } from './discovery/bootstrap.js';
|
|
9
9
|
export { WELL_KNOWN_SERVICE_CATEGORIES, WELL_KNOWN_SERVICE_API_PROTOCOLS, } from './discovery/peer-metadata.js';
|
|
10
|
+
export { DOMAIN_VERIFICATION_TXT_PREFIX, DOMAIN_VERIFICATION_TXT_NAME_PREFIX, DOMAIN_VERIFICATION_WELL_KNOWN_PATH, DOMAIN_VERIFICATION_WELL_KNOWN_TYPE, buildDomainVerificationTxtValue, buildDomainVerificationWellKnownProof, verifyDomainVerificationClaim, verifyPeerMetadataDomains, } from './discovery/domain-verification.js';
|
|
11
|
+
export { GITHUB_VERIFICATION_PROOF_FILE, GITHUB_VERIFICATION_PROOF_TYPE, buildGithubVerificationProof, buildGithubVerificationProofUrl, verifyGithubVerificationClaim, verifyPeerMetadataGithub, } from './discovery/github-verification.js';
|
|
12
|
+
export { collectPeerVerificationLinks, isGithubName, isGithubRepository, } from './discovery/verification-links.js';
|
|
10
13
|
export { MetadataServer } from './discovery/metadata-server.js';
|
|
11
14
|
export { parsePublicAddress, MAX_PUBLIC_ADDRESS_LENGTH } from './discovery/public-address.js';
|
|
12
15
|
export { MeteringStorage } from './metering/storage.js';
|
|
@@ -27,6 +30,7 @@ export { ChannelStore } from './payments/channel-store.js';
|
|
|
27
30
|
export { getChainConfig, resolveChainConfig, DEFAULT_CHAIN_ID, CHAIN_CONFIGS } from './payments/chain-config.js';
|
|
28
31
|
export { formatUsdc, parseUsdc } from './payments/usdc-utils.js';
|
|
29
32
|
export { ProxyMux } from './proxy/proxy-mux.js';
|
|
33
|
+
export { VerificationMux, VerificationSampler, VerificationStorage, createResponseAuthPayload, verifyResponseAuth, hashRequest, hashResponse, } from './verification/index.js';
|
|
30
34
|
export { resolveProvider } from './proxy/provider-detection.js';
|
|
31
35
|
export { detectRequestServiceApiProtocol, createOpenAIChatToAnthropicStreamingAdapter, createOpenAIChatToResponsesStreamingAdapter, inferProviderDefaultServiceApiProtocols, selectTargetProtocolForRequest, transformAnthropicMessagesRequestToOpenAIChat, transformOpenAIChatResponseToAnthropicMessage, transformOpenAIResponsesRequestToOpenAIChat, transformOpenAIChatResponseToOpenAIResponses, } from './proxy/service-api-adapter.js';
|
|
32
36
|
export { DefaultRouter } from './routing/default-router.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACL,WAAW,GAOZ,MAAM,WAAW,CAAC;AAInB,+BAA+B;AAC/B,cAAc,kBAAkB,CAAC;AAEjC,uCAAuC;AACvC,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAGzB,iBAAiB,EACjB,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EACL,6BAA6B,EAC7B,gCAAgC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/node.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type { SerializedHttpRequest, SerializedHttpResponse } from "./types/http
|
|
|
6
6
|
import { type SellerSessionSnapshot } from "./metering/seller-session-tracker.js";
|
|
7
7
|
import { ConnectionState } from "./types/connection.js";
|
|
8
8
|
import { type SellerContractConfig } from "./discovery/announcer.js";
|
|
9
|
+
import type { PeerVerifications } from "./discovery/peer-metadata.js";
|
|
9
10
|
import type { Provider, ProviderStreamCallbacks } from "./interfaces/seller-provider.js";
|
|
10
11
|
import type { Router } from "./interfaces/buyer-router.js";
|
|
11
12
|
import { type PaymentConfig, type PaymentMethod } from "./payments/index.js";
|
|
@@ -66,11 +67,21 @@ export interface NodePaymentsConfig {
|
|
|
66
67
|
/** Maximum total USDC the buyer will reserve in a single SpendingAuth (base units). Default: "10000000" ($10.00). */
|
|
67
68
|
maxReserveAmountUsdc?: string;
|
|
68
69
|
}
|
|
70
|
+
export interface NodeVerificationConfig {
|
|
71
|
+
/** Random sample rate for storing full buyer request/response evidence. Default: 0.01. */
|
|
72
|
+
sampleRate?: number;
|
|
73
|
+
/** Maximum combined encoded request + response bytes per sample. Default: 16 MiB. */
|
|
74
|
+
maxSampleBytes?: number;
|
|
75
|
+
/** Optional directory for verification samples. Default: <dataDir>/verification_samples. */
|
|
76
|
+
samplesDir?: string;
|
|
77
|
+
}
|
|
69
78
|
export interface NodeConfig {
|
|
70
79
|
role: 'seller' | 'buyer';
|
|
71
80
|
displayName?: string;
|
|
72
81
|
/** Publicly reachable seller address override ("host:port") announced in metadata. */
|
|
73
82
|
publicAddress?: string;
|
|
83
|
+
/** External ownership claims announced in signed peer metadata. */
|
|
84
|
+
verifications?: PeerVerifications;
|
|
74
85
|
dataDir?: string;
|
|
75
86
|
dhtPort?: number;
|
|
76
87
|
signalingPort?: number;
|
|
@@ -96,6 +107,8 @@ export interface NodeConfig {
|
|
|
96
107
|
dhtOperationTimeoutMs?: number;
|
|
97
108
|
/** Optional seller-side payment runtime wiring. */
|
|
98
109
|
payments?: NodePaymentsConfig;
|
|
110
|
+
/** Optional buyer-side verification storage and sampling settings. */
|
|
111
|
+
verification?: NodeVerificationConfig;
|
|
99
112
|
/** Pluggable identity storage backend. When set, takes precedence over dataDir for identity loading. */
|
|
100
113
|
identityStore?: IdentityStore;
|
|
101
114
|
/** Optional explicit config.json path for runtime config reloads. */
|
|
@@ -146,6 +159,7 @@ export declare class AntseedNode extends EventEmitter {
|
|
|
146
159
|
private _sellerAddressResolver;
|
|
147
160
|
private _identityClient;
|
|
148
161
|
private _paymentMuxes;
|
|
162
|
+
private _verificationMuxes;
|
|
149
163
|
/** Seller-side request handler (provider matching, execution, load tracking). */
|
|
150
164
|
private _sellerHandler;
|
|
151
165
|
/** Buyer-side payment manager (initialized when buyer has payment config). */
|
|
@@ -158,6 +172,10 @@ export declare class AntseedNode extends EventEmitter {
|
|
|
158
172
|
private _sellerPaymentManager;
|
|
159
173
|
/** Shared channel store for payment persistence. */
|
|
160
174
|
private _channelStore;
|
|
175
|
+
/** Buyer-side response authentication storage. */
|
|
176
|
+
private _verificationStorage;
|
|
177
|
+
/** Buyer-side plaintext evidence sampler for verified response auths. */
|
|
178
|
+
private _verificationSampler;
|
|
161
179
|
/** Periodic timeout checker interval. */
|
|
162
180
|
private _timeoutCheckerInterval;
|
|
163
181
|
/** Block cursor for CloseRequested event polling. */
|
|
@@ -168,6 +186,10 @@ export declare class AntseedNode extends EventEmitter {
|
|
|
168
186
|
private _backgroundPeerDiscoveryPromise;
|
|
169
187
|
/** Serializes non-blocking on-chain enrichment for incrementally discovered peers. */
|
|
170
188
|
private _partialPeerEnrichmentChain;
|
|
189
|
+
/** Serializes non-blocking external claim verification for discovered peers. */
|
|
190
|
+
private _externalVerificationChain;
|
|
191
|
+
private _externalVerificationCache;
|
|
192
|
+
private _externalVerificationInFlight;
|
|
171
193
|
constructor(config: NodeConfig);
|
|
172
194
|
get peerId(): string | null;
|
|
173
195
|
get identity(): Identity | null;
|
|
@@ -200,6 +222,11 @@ export declare class AntseedNode extends EventEmitter {
|
|
|
200
222
|
startBackgroundPeerDiscoverySweep(): void;
|
|
201
223
|
private _startBackgroundPeerDiscoverySweep;
|
|
202
224
|
private _queuePartialPeerEnrichment;
|
|
225
|
+
private _attachCachedExternalVerificationResults;
|
|
226
|
+
private _queueExternalVerification;
|
|
227
|
+
private _verifyExternalClaimsForPeers;
|
|
228
|
+
private _verifyExternalClaimsForPeer;
|
|
229
|
+
private _externalVerificationClaimsKey;
|
|
203
230
|
/**
|
|
204
231
|
* Look up a single peer by its peerId via the per-peer DHT topic.
|
|
205
232
|
* Much cheaper and more deterministic than walking the wildcard topic:
|
|
@@ -310,8 +337,10 @@ export declare class AntseedNode extends EventEmitter {
|
|
|
310
337
|
private _startBuyer;
|
|
311
338
|
private _handleIncomingConnection;
|
|
312
339
|
private _initializePayments;
|
|
340
|
+
private _initializeVerificationStorage;
|
|
313
341
|
private _getOrCreateConnection;
|
|
314
342
|
private _getOrCreateMux;
|
|
343
|
+
private _getOrCreateVerificationMux;
|
|
315
344
|
private _resolvePublicAddress;
|
|
316
345
|
private _lookupResultToPeerInfo;
|
|
317
346
|
}
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/node.js
CHANGED
|
@@ -11,10 +11,15 @@ import { DHTNode, DEFAULT_DHT_CONFIG, SUBNET_COUNT, } from "./discovery/dht-node
|
|
|
11
11
|
import { toBootstrapConfig, OFFICIAL_BOOTSTRAP_NODES, mergeBootstrapNodes } from "./discovery/bootstrap.js";
|
|
12
12
|
import { ConnectionManager, } from "./p2p/connection-manager.js";
|
|
13
13
|
import { PeerAnnouncer, } from "./discovery/announcer.js";
|
|
14
|
+
import { verifyPeerMetadataDomains } from "./discovery/domain-verification.js";
|
|
15
|
+
import { verifyPeerMetadataGithub } from "./discovery/github-verification.js";
|
|
14
16
|
import { PeerLookup, DEFAULT_LOOKUP_CONFIG, } from "./discovery/peer-lookup.js";
|
|
15
17
|
import { HttpMetadataResolver } from "./discovery/http-metadata-resolver.js";
|
|
16
18
|
import { ProxyMux } from "./proxy/proxy-mux.js";
|
|
17
19
|
import { PaymentMux } from "./p2p/payment-mux.js";
|
|
20
|
+
import { VerificationMux } from "./verification/verification-mux.js";
|
|
21
|
+
import { VerificationStorage } from "./verification/storage.js";
|
|
22
|
+
import { VerificationSampler } from "./verification/samples.js";
|
|
18
23
|
import { FrameDecoder, encodeFrame } from "./p2p/message-protocol.js";
|
|
19
24
|
import { KeepaliveManager, buildPongPayload } from "./p2p/keepalive.js";
|
|
20
25
|
import { MessageType } from "./types/protocol.js";
|
|
@@ -31,7 +36,7 @@ import { SellerPaymentManager } from "./payments/seller-payment-manager.js";
|
|
|
31
36
|
import { IdentityClient } from "./payments/evm/identity-client.js";
|
|
32
37
|
import { SellerRequestHandler } from "./seller-request-handler.js";
|
|
33
38
|
import { BuyerRequestHandler, } from "./buyer-request-handler.js";
|
|
34
|
-
import { buildSybilContext, computeOnChainScore, computeOnChainSybilRisk, computeOnChainTrust, } from "./reputation/on-chain-reputation.js";
|
|
39
|
+
import { buildSybilContext, computeOnChainScore, computeOnChainScoreWithRisk, computeOnChainSybilRisk, computeOnChainTrust, } from "./reputation/on-chain-reputation.js";
|
|
35
40
|
const EMPTY_BUYER_USAGE = {
|
|
36
41
|
totalRequests: 0,
|
|
37
42
|
totalInputTokens: '0',
|
|
@@ -41,6 +46,7 @@ const EMPTY_BUYER_USAGE = {
|
|
|
41
46
|
activeChannels: 0,
|
|
42
47
|
channels: [],
|
|
43
48
|
};
|
|
49
|
+
const EXTERNAL_VERIFICATION_RESULT_TTL_MS = 15 * 60_000;
|
|
44
50
|
export class AntseedNode extends EventEmitter {
|
|
45
51
|
_config;
|
|
46
52
|
_identity = null;
|
|
@@ -64,6 +70,7 @@ export class AntseedNode extends EventEmitter {
|
|
|
64
70
|
_sellerAddressResolver = null;
|
|
65
71
|
_identityClient = null;
|
|
66
72
|
_paymentMuxes = new Map();
|
|
73
|
+
_verificationMuxes = new Map();
|
|
67
74
|
/** Seller-side request handler (provider matching, execution, load tracking). */
|
|
68
75
|
_sellerHandler = null;
|
|
69
76
|
/** Buyer-side payment manager (initialized when buyer has payment config). */
|
|
@@ -76,6 +83,10 @@ export class AntseedNode extends EventEmitter {
|
|
|
76
83
|
_sellerPaymentManager = null;
|
|
77
84
|
/** Shared channel store for payment persistence. */
|
|
78
85
|
_channelStore = null;
|
|
86
|
+
/** Buyer-side response authentication storage. */
|
|
87
|
+
_verificationStorage = null;
|
|
88
|
+
/** Buyer-side plaintext evidence sampler for verified response auths. */
|
|
89
|
+
_verificationSampler = null;
|
|
79
90
|
/** Periodic timeout checker interval. */
|
|
80
91
|
_timeoutCheckerInterval = null;
|
|
81
92
|
/** Block cursor for CloseRequested event polling. */
|
|
@@ -86,6 +97,10 @@ export class AntseedNode extends EventEmitter {
|
|
|
86
97
|
_backgroundPeerDiscoveryPromise = null;
|
|
87
98
|
/** Serializes non-blocking on-chain enrichment for incrementally discovered peers. */
|
|
88
99
|
_partialPeerEnrichmentChain = Promise.resolve();
|
|
100
|
+
/** Serializes non-blocking external claim verification for discovered peers. */
|
|
101
|
+
_externalVerificationChain = Promise.resolve();
|
|
102
|
+
_externalVerificationCache = new Map();
|
|
103
|
+
_externalVerificationInFlight = new Set();
|
|
89
104
|
constructor(config) {
|
|
90
105
|
super();
|
|
91
106
|
this._config = config;
|
|
@@ -205,6 +220,10 @@ export class AntseedNode extends EventEmitter {
|
|
|
205
220
|
// Close all proxy muxes
|
|
206
221
|
this._muxes.clear();
|
|
207
222
|
this._paymentMuxes.clear();
|
|
223
|
+
for (const verificationMux of this._verificationMuxes.values()) {
|
|
224
|
+
verificationMux.close();
|
|
225
|
+
}
|
|
226
|
+
this._verificationMuxes.clear();
|
|
208
227
|
this._decoders.clear();
|
|
209
228
|
// Close all connections
|
|
210
229
|
if (this._connectionManager) {
|
|
@@ -234,6 +253,16 @@ export class AntseedNode extends EventEmitter {
|
|
|
234
253
|
}
|
|
235
254
|
this._metering = null;
|
|
236
255
|
}
|
|
256
|
+
if (this._verificationStorage) {
|
|
257
|
+
try {
|
|
258
|
+
this._verificationStorage.close();
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
// ignore close errors
|
|
262
|
+
}
|
|
263
|
+
this._verificationStorage = null;
|
|
264
|
+
}
|
|
265
|
+
this._verificationSampler = null;
|
|
237
266
|
if (this._timeoutCheckerInterval) {
|
|
238
267
|
clearInterval(this._timeoutCheckerInterval);
|
|
239
268
|
this._timeoutCheckerInterval = null;
|
|
@@ -294,6 +323,8 @@ export class AntseedNode extends EventEmitter {
|
|
|
294
323
|
}
|
|
295
324
|
}
|
|
296
325
|
const filtered = service ? peers.filter((p) => peerOffersService(p, service)) : peers;
|
|
326
|
+
this._attachCachedExternalVerificationResults(filtered);
|
|
327
|
+
this._queueExternalVerification(filtered);
|
|
297
328
|
// On-chain enrichment runs after the metadata filter so we don't waste
|
|
298
329
|
// RPC calls on peers we'll discard.
|
|
299
330
|
await this._enrichPeersWithOnChainStats(filtered);
|
|
@@ -329,7 +360,9 @@ export class AntseedNode extends EventEmitter {
|
|
|
329
360
|
debugLog(`[Node] Background DHT partial ${context.phase}`
|
|
330
361
|
+ `${context.subnet !== undefined ? ` ${context.subnet}/${SUBNET_COUNT - 1}` : ""}`
|
|
331
362
|
+ ` emitted ${peers.length} peer(s) from ${context.endpointCount} endpoint(s)`);
|
|
363
|
+
this._attachCachedExternalVerificationResults(peers);
|
|
332
364
|
this.emit("peers:discovered", peers);
|
|
365
|
+
this._queueExternalVerification(peers);
|
|
333
366
|
this._queuePartialPeerEnrichment(peers);
|
|
334
367
|
});
|
|
335
368
|
debugLog(`[Node] Background DHT sweep returned ${results.length} result(s)`);
|
|
@@ -366,6 +399,124 @@ export class AntseedNode extends EventEmitter {
|
|
|
366
399
|
debugWarn(`[Node] Background DHT partial on-chain enrichment failed: ${err instanceof Error ? err.message : err}`);
|
|
367
400
|
});
|
|
368
401
|
}
|
|
402
|
+
_attachCachedExternalVerificationResults(peers) {
|
|
403
|
+
const nowMs = Date.now();
|
|
404
|
+
for (const peer of peers) {
|
|
405
|
+
const claimsKey = this._externalVerificationClaimsKey(peer);
|
|
406
|
+
if (!claimsKey)
|
|
407
|
+
continue;
|
|
408
|
+
const cached = this._externalVerificationCache.get(peer.peerId);
|
|
409
|
+
if (cached
|
|
410
|
+
&& cached.claimsKey === claimsKey
|
|
411
|
+
&& nowMs - cached.checkedAtMs < EXTERNAL_VERIFICATION_RESULT_TTL_MS) {
|
|
412
|
+
peer.verificationResults = cached.results;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
_queueExternalVerification(peers) {
|
|
417
|
+
const queued = [];
|
|
418
|
+
const nowMs = Date.now();
|
|
419
|
+
for (const peer of peers) {
|
|
420
|
+
const claimsKey = this._externalVerificationClaimsKey(peer);
|
|
421
|
+
if (!claimsKey)
|
|
422
|
+
continue;
|
|
423
|
+
const cacheKey = `${peer.peerId}:${claimsKey}`;
|
|
424
|
+
if (this._externalVerificationInFlight.has(cacheKey))
|
|
425
|
+
continue;
|
|
426
|
+
const cached = this._externalVerificationCache.get(peer.peerId);
|
|
427
|
+
if (cached
|
|
428
|
+
&& cached.claimsKey === claimsKey
|
|
429
|
+
&& nowMs - cached.checkedAtMs < EXTERNAL_VERIFICATION_RESULT_TTL_MS) {
|
|
430
|
+
continue;
|
|
431
|
+
}
|
|
432
|
+
this._externalVerificationInFlight.add(cacheKey);
|
|
433
|
+
queued.push({ ...peer });
|
|
434
|
+
}
|
|
435
|
+
if (queued.length === 0)
|
|
436
|
+
return;
|
|
437
|
+
this._externalVerificationChain = this._externalVerificationChain.then(async () => {
|
|
438
|
+
if (!this._started)
|
|
439
|
+
return;
|
|
440
|
+
const verifiedPeers = await this._verifyExternalClaimsForPeers(queued);
|
|
441
|
+
if (!this._started || verifiedPeers.length === 0)
|
|
442
|
+
return;
|
|
443
|
+
debugLog(`[Node] External verification emitted ${verifiedPeers.length} peer update(s)`);
|
|
444
|
+
this.emit("peers:discovered", verifiedPeers);
|
|
445
|
+
}).catch((err) => {
|
|
446
|
+
debugWarn(`[Node] External verification failed: ${err instanceof Error ? err.message : err}`);
|
|
447
|
+
}).finally(() => {
|
|
448
|
+
for (const peer of queued) {
|
|
449
|
+
const claimsKey = this._externalVerificationClaimsKey(peer);
|
|
450
|
+
if (claimsKey) {
|
|
451
|
+
this._externalVerificationInFlight.delete(`${peer.peerId}:${claimsKey}`);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
async _verifyExternalClaimsForPeers(peers) {
|
|
457
|
+
const queue = peers.slice();
|
|
458
|
+
const verifiedPeers = [];
|
|
459
|
+
const EXTERNAL_VERIFICATION_CONCURRENCY = 2;
|
|
460
|
+
const workers = Array.from({ length: Math.min(EXTERNAL_VERIFICATION_CONCURRENCY, queue.length) }, async () => {
|
|
461
|
+
for (;;) {
|
|
462
|
+
const peer = queue.shift();
|
|
463
|
+
if (!peer)
|
|
464
|
+
return;
|
|
465
|
+
const verified = await this._verifyExternalClaimsForPeer(peer);
|
|
466
|
+
if (verified) {
|
|
467
|
+
verifiedPeers.push(verified);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
await Promise.all(workers);
|
|
472
|
+
return verifiedPeers;
|
|
473
|
+
}
|
|
474
|
+
async _verifyExternalClaimsForPeer(peer) {
|
|
475
|
+
const metadata = peer.metadata;
|
|
476
|
+
const claimsKey = this._externalVerificationClaimsKey(peer);
|
|
477
|
+
if (!metadata || !claimsKey)
|
|
478
|
+
return null;
|
|
479
|
+
try {
|
|
480
|
+
const [domains, github] = await Promise.all([
|
|
481
|
+
verifyPeerMetadataDomains(metadata),
|
|
482
|
+
verifyPeerMetadataGithub(metadata),
|
|
483
|
+
]);
|
|
484
|
+
const checkedAtMs = Date.now();
|
|
485
|
+
const allResults = [...domains, ...github];
|
|
486
|
+
const results = {
|
|
487
|
+
verified: allResults.length > 0 && allResults.every((result) => result.verified),
|
|
488
|
+
checkedAtMs,
|
|
489
|
+
domains,
|
|
490
|
+
github,
|
|
491
|
+
};
|
|
492
|
+
this._externalVerificationCache.set(peer.peerId, {
|
|
493
|
+
claimsKey,
|
|
494
|
+
checkedAtMs,
|
|
495
|
+
results,
|
|
496
|
+
});
|
|
497
|
+
const verifiedPeer = { ...peer, verificationResults: results };
|
|
498
|
+
const risk = typeof verifiedPeer.onChainSybilRisk === 'number'
|
|
499
|
+
? verifiedPeer.onChainSybilRisk
|
|
500
|
+
: 0;
|
|
501
|
+
verifiedPeer.onChainReputationScore = computeOnChainScoreWithRisk(verifiedPeer, risk) ?? verifiedPeer.onChainReputationScore;
|
|
502
|
+
return verifiedPeer;
|
|
503
|
+
}
|
|
504
|
+
catch (err) {
|
|
505
|
+
debugWarn(`[Node] External verification failed for ${peer.peerId.slice(0, 12)}...: ${err instanceof Error ? err.message : err}`);
|
|
506
|
+
return null;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
_externalVerificationClaimsKey(peer) {
|
|
510
|
+
const verifications = peer.metadata?.verifications;
|
|
511
|
+
const domainCount = verifications?.domains?.length ?? 0;
|
|
512
|
+
const githubCount = verifications?.github?.length ?? 0;
|
|
513
|
+
if (domainCount + githubCount === 0)
|
|
514
|
+
return null;
|
|
515
|
+
return JSON.stringify({
|
|
516
|
+
domains: verifications?.domains ?? [],
|
|
517
|
+
github: verifications?.github ?? [],
|
|
518
|
+
});
|
|
519
|
+
}
|
|
369
520
|
/**
|
|
370
521
|
* Look up a single peer by its peerId via the per-peer DHT topic.
|
|
371
522
|
* Much cheaper and more deterministic than walking the wildcard topic:
|
|
@@ -402,6 +553,8 @@ export class AntseedNode extends EventEmitter {
|
|
|
402
553
|
// served metadata matches the id; pick the freshest by timestamp.
|
|
403
554
|
const best = results.reduce((acc, r) => r.metadata.timestamp > acc.metadata.timestamp ? r : acc);
|
|
404
555
|
const peer = this._lookupResultToPeerInfo(best);
|
|
556
|
+
this._attachCachedExternalVerificationResults([peer]);
|
|
557
|
+
this._queueExternalVerification([peer]);
|
|
405
558
|
await this._enrichPeersWithOnChainStats([peer]);
|
|
406
559
|
return peer;
|
|
407
560
|
}
|
|
@@ -699,6 +852,7 @@ export class AntseedNode extends EventEmitter {
|
|
|
699
852
|
}
|
|
700
853
|
const proxyMux = this._muxes.get(peerId);
|
|
701
854
|
const paymentMux = this._paymentMuxes.get(peerId);
|
|
855
|
+
const verificationMux = this._verificationMuxes.get(peerId);
|
|
702
856
|
for (const frame of frames) {
|
|
703
857
|
// Keepalive: respond to Ping, dispatch Pong to manager
|
|
704
858
|
if (frame.type === MessageType.Ping) {
|
|
@@ -721,6 +875,12 @@ export class AntseedNode extends EventEmitter {
|
|
|
721
875
|
debugWarn(`[Node] Failed to handle payment frame from ${peerId.slice(0, 12)}...: ${message}`);
|
|
722
876
|
});
|
|
723
877
|
}
|
|
878
|
+
else if (verificationMux && VerificationMux.isVerificationMessage(frame.type)) {
|
|
879
|
+
verificationMux.handleFrame(frame).catch((err) => {
|
|
880
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
881
|
+
debugWarn(`[Node] Failed to handle verification frame from ${peerId.slice(0, 12)}...: ${message}`);
|
|
882
|
+
});
|
|
883
|
+
}
|
|
724
884
|
else if (proxyMux) {
|
|
725
885
|
proxyMux.handleFrame(frame).catch((err) => {
|
|
726
886
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -745,6 +905,8 @@ export class AntseedNode extends EventEmitter {
|
|
|
745
905
|
this._muxes.get(peerId)?.abortPendingUploads();
|
|
746
906
|
this._muxes.delete(peerId);
|
|
747
907
|
this._paymentMuxes.delete(peerId);
|
|
908
|
+
this._verificationMuxes.get(peerId)?.close();
|
|
909
|
+
this._verificationMuxes.delete(peerId);
|
|
748
910
|
this._decoders.delete(peerId);
|
|
749
911
|
// Clean up buyer-side payment state on disconnect
|
|
750
912
|
this._buyerNegotiator?.onPeerDisconnect(peerId);
|
|
@@ -873,6 +1035,7 @@ export class AntseedNode extends EventEmitter {
|
|
|
873
1035
|
})),
|
|
874
1036
|
...(this._config.displayName ? { displayName: this._config.displayName } : {}),
|
|
875
1037
|
...(this._config.publicAddress ? { publicAddress: this._config.publicAddress } : {}),
|
|
1038
|
+
...(this._config.verifications ? { verifications: this._config.verifications } : {}),
|
|
876
1039
|
region: "unknown",
|
|
877
1040
|
pricing: new Map(this._providers.map((p) => [
|
|
878
1041
|
p.name,
|
|
@@ -897,6 +1060,7 @@ export class AntseedNode extends EventEmitter {
|
|
|
897
1060
|
}
|
|
898
1061
|
// Create seller request handler
|
|
899
1062
|
this._sellerHandler = new SellerRequestHandler({
|
|
1063
|
+
identity,
|
|
900
1064
|
providers: this._providers,
|
|
901
1065
|
sellerPaymentManager: this._sellerPaymentManager,
|
|
902
1066
|
sessionTracker: this._sessionTracker,
|
|
@@ -919,6 +1083,7 @@ export class AntseedNode extends EventEmitter {
|
|
|
919
1083
|
const dhtPort = this._config.dhtPort ?? 0;
|
|
920
1084
|
debugLog(`[Node] Starting buyer — DHT port=${dhtPort}`);
|
|
921
1085
|
const dataDir = this._config.dataDir ?? join(homedir(), ".antseed");
|
|
1086
|
+
this._initializeVerificationStorage(dataDir);
|
|
922
1087
|
await this._initializePayments(dataDir);
|
|
923
1088
|
// Start DHT with ephemeral port
|
|
924
1089
|
this._dht = new DHTNode(this._createDHTConfig(dhtPort, bootstrapNodes));
|
|
@@ -986,9 +1151,13 @@ export class AntseedNode extends EventEmitter {
|
|
|
986
1151
|
maxStreamBufferBytes: this._config.maxStreamBufferBytes,
|
|
987
1152
|
maxStreamDurationMs: this._config.maxStreamDurationMs,
|
|
988
1153
|
}, {
|
|
1154
|
+
localPeerId: identity.peerId,
|
|
989
1155
|
negotiator: this._buyerNegotiator,
|
|
1156
|
+
verificationStorage: this._verificationStorage,
|
|
1157
|
+
verificationSampler: this._verificationSampler,
|
|
990
1158
|
getConnection: (peer) => this._getOrCreateConnection(peer),
|
|
991
1159
|
getMux: (peerId, conn) => this._getOrCreateMux(peerId, conn),
|
|
1160
|
+
getVerificationMux: (peerId, conn) => this._getOrCreateVerificationMux(peerId, conn),
|
|
992
1161
|
registerPaymentMux: (peerId, pmux) => this._paymentMuxes.set(peerId, pmux),
|
|
993
1162
|
});
|
|
994
1163
|
debugLog(`[Node] Buyer ready — DHT running on port ${this._dht.getPort()}`);
|
|
@@ -998,6 +1167,7 @@ export class AntseedNode extends EventEmitter {
|
|
|
998
1167
|
const buyerPeerId = conn.remotePeerId;
|
|
999
1168
|
// Create PaymentMux alongside ProxyMux (seller-side)
|
|
1000
1169
|
const paymentMux = new PaymentMux(conn);
|
|
1170
|
+
const verificationMux = new VerificationMux(conn);
|
|
1001
1171
|
if (this._sellerPaymentManager) {
|
|
1002
1172
|
const spm = this._sellerPaymentManager;
|
|
1003
1173
|
paymentMux.onSpendingAuth((payload) => {
|
|
@@ -1019,7 +1189,8 @@ export class AntseedNode extends EventEmitter {
|
|
|
1019
1189
|
});
|
|
1020
1190
|
}
|
|
1021
1191
|
this._paymentMuxes.set(buyerPeerId, paymentMux);
|
|
1022
|
-
|
|
1192
|
+
this._verificationMuxes.set(buyerPeerId, verificationMux);
|
|
1193
|
+
const { mux } = this._sellerHandler.handleConnection(conn, buyerPeerId, paymentMux, verificationMux);
|
|
1023
1194
|
this._muxes.set(buyerPeerId, mux);
|
|
1024
1195
|
this._wireConnection(conn, buyerPeerId);
|
|
1025
1196
|
this.emit("connection", conn);
|
|
@@ -1156,6 +1327,21 @@ export class AntseedNode extends EventEmitter {
|
|
|
1156
1327
|
debugWarn(`[Node] Failed to load payment balances: ${err instanceof Error ? err.message : err}`);
|
|
1157
1328
|
});
|
|
1158
1329
|
}
|
|
1330
|
+
_initializeVerificationStorage(dataDir) {
|
|
1331
|
+
if (this._verificationStorage)
|
|
1332
|
+
return;
|
|
1333
|
+
try {
|
|
1334
|
+
this._verificationStorage = new VerificationStorage(join(dataDir, "verification.db"));
|
|
1335
|
+
this._verificationSampler = new VerificationSampler(this._config.verification?.samplesDir ?? join(dataDir, "verification_samples"), {
|
|
1336
|
+
sampleRate: this._config.verification?.sampleRate,
|
|
1337
|
+
maxSampleBytes: this._config.verification?.maxSampleBytes,
|
|
1338
|
+
});
|
|
1339
|
+
debugLog("[Node] Verification storage initialized");
|
|
1340
|
+
}
|
|
1341
|
+
catch (err) {
|
|
1342
|
+
debugWarn(`[Node] Verification storage unavailable: ${err instanceof Error ? err.message : err}`);
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1159
1345
|
async _getOrCreateConnection(peer) {
|
|
1160
1346
|
if (!this._connectionManager || !this._identity) {
|
|
1161
1347
|
throw new Error("Node not started");
|
|
@@ -1242,6 +1428,15 @@ export class AntseedNode extends EventEmitter {
|
|
|
1242
1428
|
this._muxes.set(peerId, mux);
|
|
1243
1429
|
return mux;
|
|
1244
1430
|
}
|
|
1431
|
+
_getOrCreateVerificationMux(peerId, conn) {
|
|
1432
|
+
const existing = this._verificationMuxes.get(peerId);
|
|
1433
|
+
if (existing) {
|
|
1434
|
+
return existing;
|
|
1435
|
+
}
|
|
1436
|
+
const mux = new VerificationMux(conn);
|
|
1437
|
+
this._verificationMuxes.set(peerId, mux);
|
|
1438
|
+
return mux;
|
|
1439
|
+
}
|
|
1245
1440
|
_resolvePublicAddress(result) {
|
|
1246
1441
|
const metadataPublicAddress = result.metadata.publicAddress?.trim();
|
|
1247
1442
|
if (metadataPublicAddress && parsePublicAddress(metadataPublicAddress) !== null) {
|
|
@@ -1320,6 +1515,9 @@ export class AntseedNode extends EventEmitter {
|
|
|
1320
1515
|
lastSeen: result.metadata.resolvedAtMs ?? Date.now(),
|
|
1321
1516
|
metadata: result.metadata,
|
|
1322
1517
|
providers,
|
|
1518
|
+
...(result.metadata.capabilities && result.metadata.capabilities.length > 0
|
|
1519
|
+
? { capabilities: [...result.metadata.capabilities] }
|
|
1520
|
+
: {}),
|
|
1323
1521
|
publicAddress: this._resolvePublicAddress(result),
|
|
1324
1522
|
...(hasProviderPricing ? { providerPricing: providerPricingEntries } : {}),
|
|
1325
1523
|
...(hasProviderServiceCategories ? { providerServiceCategories: providerServiceCategoryEntries } : {}),
|