@antseed/node 0.2.117 → 0.2.119

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.
Files changed (162) hide show
  1. package/README.md +30 -0
  2. package/dist/discovery/display-name.d.ts +8 -0
  3. package/dist/discovery/display-name.d.ts.map +1 -0
  4. package/dist/discovery/display-name.js +17 -0
  5. package/dist/discovery/display-name.js.map +1 -0
  6. package/dist/discovery/domain-verification.d.ts.map +1 -1
  7. package/dist/discovery/domain-verification.js +2 -1
  8. package/dist/discovery/domain-verification.js.map +1 -1
  9. package/dist/discovery/github-verification.d.ts.map +1 -1
  10. package/dist/discovery/github-verification.js +5 -1
  11. package/dist/discovery/github-verification.js.map +1 -1
  12. package/dist/discovery/index.d.ts +1 -0
  13. package/dist/discovery/index.d.ts.map +1 -1
  14. package/dist/discovery/index.js +1 -0
  15. package/dist/discovery/index.js.map +1 -1
  16. package/dist/discovery/service-catalog.d.ts +2 -1
  17. package/dist/discovery/service-catalog.d.ts.map +1 -1
  18. package/dist/discovery/service-catalog.js +2 -0
  19. package/dist/discovery/service-catalog.js.map +1 -1
  20. package/dist/discovery/verifier-capabilities.d.ts +9 -0
  21. package/dist/discovery/verifier-capabilities.d.ts.map +1 -0
  22. package/dist/discovery/verifier-capabilities.js +35 -0
  23. package/dist/discovery/verifier-capabilities.js.map +1 -0
  24. package/dist/index.d.ts +20 -2
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +19 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/node.d.ts +17 -3
  29. package/dist/node.d.ts.map +1 -1
  30. package/dist/node.js +117 -82
  31. package/dist/node.js.map +1 -1
  32. package/dist/p2p/identity.js +1 -1
  33. package/dist/p2p/identity.js.map +1 -1
  34. package/dist/payments/chain-config.d.ts +53 -0
  35. package/dist/payments/chain-config.d.ts.map +1 -1
  36. package/dist/payments/chain-config.js +43 -23
  37. package/dist/payments/chain-config.js.map +1 -1
  38. package/dist/payments/contract-stack.d.ts +53 -0
  39. package/dist/payments/contract-stack.d.ts.map +1 -0
  40. package/dist/payments/contract-stack.js +97 -0
  41. package/dist/payments/contract-stack.js.map +1 -0
  42. package/dist/payments/evm/ants-token-client.d.ts +7 -0
  43. package/dist/payments/evm/ants-token-client.d.ts.map +1 -1
  44. package/dist/payments/evm/ants-token-client.js +37 -1
  45. package/dist/payments/evm/ants-token-client.js.map +1 -1
  46. package/dist/payments/evm/emissions-client.d.ts +3 -0
  47. package/dist/payments/evm/emissions-client.d.ts.map +1 -1
  48. package/dist/payments/evm/emissions-client.js +13 -0
  49. package/dist/payments/evm/emissions-client.js.map +1 -1
  50. package/dist/payments/evm/emissions-gate-client.d.ts +51 -0
  51. package/dist/payments/evm/emissions-gate-client.d.ts.map +1 -0
  52. package/dist/payments/evm/emissions-gate-client.js +55 -0
  53. package/dist/payments/evm/emissions-gate-client.js.map +1 -0
  54. package/dist/payments/evm/multicall.d.ts +22 -0
  55. package/dist/payments/evm/multicall.d.ts.map +1 -0
  56. package/dist/payments/evm/multicall.js +73 -0
  57. package/dist/payments/evm/multicall.js.map +1 -0
  58. package/dist/payments/evm/points-policy-registry-client.d.ts +21 -0
  59. package/dist/payments/evm/points-policy-registry-client.d.ts.map +1 -0
  60. package/dist/payments/evm/points-policy-registry-client.js +34 -0
  61. package/dist/payments/evm/points-policy-registry-client.js.map +1 -0
  62. package/dist/payments/evm/position-init-client.d.ts +18 -0
  63. package/dist/payments/evm/position-init-client.d.ts.map +1 -0
  64. package/dist/payments/evm/position-init-client.js +19 -0
  65. package/dist/payments/evm/position-init-client.js.map +1 -0
  66. package/dist/payments/evm/registry-client.d.ts +17 -0
  67. package/dist/payments/evm/registry-client.d.ts.map +1 -0
  68. package/dist/payments/evm/registry-client.js +24 -0
  69. package/dist/payments/evm/registry-client.js.map +1 -0
  70. package/dist/payments/evm/seller-pools-client.d.ts +95 -0
  71. package/dist/payments/evm/seller-pools-client.d.ts.map +1 -0
  72. package/dist/payments/evm/seller-pools-client.js +193 -0
  73. package/dist/payments/evm/seller-pools-client.js.map +1 -0
  74. package/dist/payments/evm/seller-pools-rewards-client.d.ts +36 -0
  75. package/dist/payments/evm/seller-pools-rewards-client.d.ts.map +1 -0
  76. package/dist/payments/evm/seller-pools-rewards-client.js +126 -0
  77. package/dist/payments/evm/seller-pools-rewards-client.js.map +1 -0
  78. package/dist/payments/evm/seller-registry-client.d.ts +28 -0
  79. package/dist/payments/evm/seller-registry-client.d.ts.map +1 -0
  80. package/dist/payments/evm/seller-registry-client.js +60 -0
  81. package/dist/payments/evm/seller-registry-client.js.map +1 -0
  82. package/dist/payments/evm/seller-rewards-pool-client.d.ts +24 -0
  83. package/dist/payments/evm/seller-rewards-pool-client.d.ts.map +1 -0
  84. package/dist/payments/evm/seller-rewards-pool-client.js +27 -0
  85. package/dist/payments/evm/seller-rewards-pool-client.js.map +1 -0
  86. package/dist/payments/evm/trust-signals-client.d.ts +54 -0
  87. package/dist/payments/evm/trust-signals-client.d.ts.map +1 -0
  88. package/dist/payments/evm/trust-signals-client.js +162 -0
  89. package/dist/payments/evm/trust-signals-client.js.map +1 -0
  90. package/dist/payments/evm/usage-accounting-client.d.ts +49 -0
  91. package/dist/payments/evm/usage-accounting-client.d.ts.map +1 -0
  92. package/dist/payments/evm/usage-accounting-client.js +82 -0
  93. package/dist/payments/evm/usage-accounting-client.js.map +1 -0
  94. package/dist/payments/evm/usage-rewards-client.d.ts +43 -0
  95. package/dist/payments/evm/usage-rewards-client.d.ts.map +1 -0
  96. package/dist/payments/evm/usage-rewards-client.js +62 -0
  97. package/dist/payments/evm/usage-rewards-client.js.map +1 -0
  98. package/dist/payments/evm/wash-trading-registry-client.d.ts +105 -0
  99. package/dist/payments/evm/wash-trading-registry-client.d.ts.map +1 -0
  100. package/dist/payments/evm/wash-trading-registry-client.js +170 -0
  101. package/dist/payments/evm/wash-trading-registry-client.js.map +1 -0
  102. package/dist/payments/generated-contract-addresses.d.ts +59 -0
  103. package/dist/payments/generated-contract-addresses.d.ts.map +1 -0
  104. package/dist/payments/generated-contract-addresses.js +60 -0
  105. package/dist/payments/generated-contract-addresses.js.map +1 -0
  106. package/dist/payments/index.d.ts +28 -0
  107. package/dist/payments/index.d.ts.map +1 -1
  108. package/dist/payments/index.js +14 -0
  109. package/dist/payments/index.js.map +1 -1
  110. package/dist/payments/reward-claims.d.ts +28 -0
  111. package/dist/payments/reward-claims.d.ts.map +1 -0
  112. package/dist/payments/reward-claims.js +67 -0
  113. package/dist/payments/reward-claims.js.map +1 -0
  114. package/dist/payments/reward-preview.d.ts +19 -0
  115. package/dist/payments/reward-preview.d.ts.map +1 -0
  116. package/dist/payments/reward-preview.js +36 -0
  117. package/dist/payments/reward-preview.js.map +1 -0
  118. package/dist/payments/seller-payment-manager.d.ts +9 -0
  119. package/dist/payments/seller-payment-manager.d.ts.map +1 -1
  120. package/dist/payments/seller-payment-manager.js +45 -0
  121. package/dist/payments/seller-payment-manager.js.map +1 -1
  122. package/dist/reputation/identity-history.d.ts +75 -0
  123. package/dist/reputation/identity-history.d.ts.map +1 -0
  124. package/dist/reputation/identity-history.js +258 -0
  125. package/dist/reputation/identity-history.js.map +1 -0
  126. package/dist/reputation/model-reputation.d.ts +3 -2
  127. package/dist/reputation/model-reputation.d.ts.map +1 -1
  128. package/dist/reputation/model-reputation.js +2 -9
  129. package/dist/reputation/model-reputation.js.map +1 -1
  130. package/dist/reputation/public-json.d.ts +9 -0
  131. package/dist/reputation/public-json.d.ts.map +1 -0
  132. package/dist/reputation/public-json.js +98 -0
  133. package/dist/reputation/public-json.js.map +1 -0
  134. package/dist/reputation/sybil-risk.d.ts +35 -0
  135. package/dist/reputation/sybil-risk.d.ts.map +1 -0
  136. package/dist/reputation/sybil-risk.js +136 -0
  137. package/dist/reputation/sybil-risk.js.map +1 -0
  138. package/dist/reputation/trust-score.d.ts +83 -0
  139. package/dist/reputation/trust-score.d.ts.map +1 -0
  140. package/dist/reputation/trust-score.js +91 -0
  141. package/dist/reputation/trust-score.js.map +1 -0
  142. package/dist/routing/default-router.d.ts +0 -1
  143. package/dist/routing/default-router.d.ts.map +1 -1
  144. package/dist/routing/default-router.js +2 -12
  145. package/dist/routing/default-router.js.map +1 -1
  146. package/dist/routing/model-route-ranking.d.ts +0 -1
  147. package/dist/routing/model-route-ranking.d.ts.map +1 -1
  148. package/dist/routing/model-route-ranking.js.map +1 -1
  149. package/dist/seller-request-handler.d.ts.map +1 -1
  150. package/dist/seller-request-handler.js +12 -0
  151. package/dist/seller-request-handler.js.map +1 -1
  152. package/dist/types/peer.d.ts +27 -18
  153. package/dist/types/peer.d.ts.map +1 -1
  154. package/dist/verification/tee-status.d.ts +35 -0
  155. package/dist/verification/tee-status.d.ts.map +1 -0
  156. package/dist/verification/tee-status.js +21 -0
  157. package/dist/verification/tee-status.js.map +1 -0
  158. package/package.json +14 -6
  159. package/dist/reputation/on-chain-reputation.d.ts +0 -84
  160. package/dist/reputation/on-chain-reputation.d.ts.map +0 -1
  161. package/dist/reputation/on-chain-reputation.js +0 -290
  162. package/dist/reputation/on-chain-reputation.js.map +0 -1
package/dist/node.d.ts CHANGED
@@ -73,8 +73,14 @@ export interface NodePaymentsConfig {
73
73
  usdcAddress?: string;
74
74
  /** ERC-8004 IdentityRegistry contract address */
75
75
  identityRegistryAddress?: string;
76
- /** AntseedStaking contract address */
76
+ /** AntseedSellerRegistry (or legacy AntseedStaking) contract address: seller → agent id. */
77
77
  stakingAddress?: string;
78
+ /** AntseedSellerPools contract address (buyer trust score: pool staking power). */
79
+ sellerPoolsAddress?: string;
80
+ /** AntseedUsageAccounting contract address (buyer trust score: recognized usage per epoch). */
81
+ usageAccountingAddress?: string;
82
+ /** AntseedWashTradingRegistry contract address (buyer trust score: proven wash traders). */
83
+ washTradingRegistryAddress?: string;
78
84
  /** Chain ID for EIP-712 domain. Default: 8453 (Base) */
79
85
  chainId?: number;
80
86
  /** Default maximum USDC per spending auth. Default: 500000 ($0.50) */
@@ -85,6 +91,8 @@ export interface NodePaymentsConfig {
85
91
  minBudgetPerRequest?: string;
86
92
  /** Minimum unsettled delta (base units) required before idle settle submits a tx. Default: "2000" (~$0.002). */
87
93
  minSettleDelta?: string;
94
+ /** Serve channels whose buyer already requested close on-chain, risking uncollectible work. Default: false. */
95
+ serveWhileClosePending?: boolean;
88
96
  /** Optional seller-side slack for estimate-only reserve preflight checks. Unset disables estimate-only rejection. */
89
97
  reserveEstimateOverdraftUsdc?: string;
90
98
  /** Maximum USDC the buyer authorizes per single request (base units). Default: "500000" ($0.50). */
@@ -219,6 +227,8 @@ export declare class AntseedNode extends EventEmitter {
219
227
  private _buyerFreeUsageManager;
220
228
  private _sellerFreeUsageManager;
221
229
  private _stakingClient;
230
+ /** Batched reader for the on-chain inputs of the buyer trust score. */
231
+ private _trustSignalsClient;
222
232
  private _sellerAddressResolver;
223
233
  private _identityClient;
224
234
  private _paymentMuxes;
@@ -257,6 +267,7 @@ export declare class AntseedNode extends EventEmitter {
257
267
  private _partialPeerEnrichmentChain;
258
268
  /** Serializes non-blocking external claim verification for discovered peers. */
259
269
  private _externalVerificationChain;
270
+ private _identityHistoryCollector;
260
271
  private _externalVerificationCache;
261
272
  private _externalVerificationInFlight;
262
273
  constructor(config: NodeConfig);
@@ -350,7 +361,9 @@ export declare class AntseedNode extends EventEmitter {
350
361
  * enriches its results, so volume / last-settled / ghost counts are
351
362
  * available when chain RPC is configured.
352
363
  */
353
- findPeer(peerId: string): Promise<PeerInfo | null>;
364
+ findPeer(peerId: string, options?: {
365
+ awaitExternalVerification?: boolean;
366
+ }): Promise<PeerInfo | null>;
354
367
  /**
355
368
  * Verify claimed on-chain stats against actual contract data, and
356
369
  * populate volume / last-settled which are never announced by sellers.
@@ -364,7 +377,8 @@ export declare class AntseedNode extends EventEmitter {
364
377
  * configured — callers can safely invoke this regardless.
365
378
  */
366
379
  private _enrichPeersWithOnChainStats;
367
- private _applyTrustAndSybil;
380
+ /** Recompute the trust score and the display-only sybil heuristic. */
381
+ private _applyTrust;
368
382
  /**
369
383
  * Eagerly open a connection to a peer and wire up the mux.
370
384
  * Subsequent sendRequest / sendRequestStream calls will reuse this connection.
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/node.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import { EventEmitter } from "node:events";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
+ import { IDENTITY_HISTORY_TTL_MS, IdentityHistoryCollector } from './reputation/identity-history.js';
5
+ import { computeTrustScore } from './reputation/trust-score.js';
6
+ import { TrustSignalsClient } from './payments/evm/trust-signals-client.js';
4
7
  import { loadOrCreateIdentity } from "./p2p/identity.js";
5
8
  import { peerIdToAddress } from "./types/peer.js";
6
9
  import { MeteringStorage } from "./metering/storage.js";
@@ -31,6 +34,7 @@ import { signUtf8 } from "./p2p/identity.js";
31
34
  import { BalanceManager, DepositsClient, ChannelsClient, FreeUsageClient, BuyerFreeUsageManager, SellerFreeUsageManager, StakingClient, ChannelStore, CHANNEL_KIND, CHANNEL_ROLE, CHANNEL_STATUS, } from "./payments/index.js";
32
35
  import { debugLog, debugWarn } from "./utils/debug.js";
33
36
  import { parsePublicAddress } from "./discovery/public-address.js";
37
+ import { sanitizePeerDisplayName } from "./discovery/display-name.js";
34
38
  import { BuyerPaymentManager } from "./payments/buyer-payment-manager.js";
35
39
  import { BuyerPaymentNegotiator } from "./payments/buyer-payment-negotiator.js";
36
40
  import { RpcHealthMonitor } from "./payments/rpc-health.js";
@@ -40,8 +44,16 @@ import { SellerPaymentManager } from "./payments/seller-payment-manager.js";
40
44
  import { IdentityClient } from "./payments/evm/identity-client.js";
41
45
  import { SellerRequestHandler } from "./seller-request-handler.js";
42
46
  import { BuyerRequestHandler, } from "./buyer-request-handler.js";
43
- import { buildSybilContext, computeOnChainScore, computeOnChainScoreWithRisk, computeOnChainSybilRisk, computeOnChainTrust, } from "./reputation/on-chain-reputation.js";
47
+ import { buildSybilContext, computeOnChainSybilRisk, } from "./reputation/sybil-risk.js";
44
48
  import { buyerFault } from "./errors.js";
49
+ /** Store the trust score on the peer; leaves the fields untouched when the peer is unscored. */
50
+ function applyTrust(peer) {
51
+ const trust = computeTrustScore(peer);
52
+ if (!trust)
53
+ return;
54
+ peer.trust = trust;
55
+ peer.onChainReputationScore = trust.score;
56
+ }
45
57
  const EMPTY_BUYER_USAGE = {
46
58
  totalRequests: 0,
47
59
  totalInputTokens: '0',
@@ -52,7 +64,7 @@ const EMPTY_BUYER_USAGE = {
52
64
  channels: [],
53
65
  services: [],
54
66
  };
55
- const EXTERNAL_VERIFICATION_RESULT_TTL_MS = 15 * 60_000;
67
+ const EXTERNAL_VERIFICATION_RESULT_TTL_MS = IDENTITY_HISTORY_TTL_MS;
56
68
  /** How long one relayer gets exclusive first refusal on a sweep offer before
57
69
  * it passes to the next candidate. The relayer replies 'submitted' right
58
70
  * after its local checks + one Base RPC simulation (~1-2s on healthy RPCs),
@@ -88,6 +100,8 @@ export class AntseedNode extends EventEmitter {
88
100
  _buyerFreeUsageManager = null;
89
101
  _sellerFreeUsageManager = null;
90
102
  _stakingClient = null;
103
+ /** Batched reader for the on-chain inputs of the buyer trust score. */
104
+ _trustSignalsClient = null;
91
105
  _sellerAddressResolver = null;
92
106
  _identityClient = null;
93
107
  _paymentMuxes = new Map();
@@ -126,6 +140,7 @@ export class AntseedNode extends EventEmitter {
126
140
  _partialPeerEnrichmentChain = Promise.resolve();
127
141
  /** Serializes non-blocking external claim verification for discovered peers. */
128
142
  _externalVerificationChain = Promise.resolve();
143
+ _identityHistoryCollector;
129
144
  _externalVerificationCache = new Map();
130
145
  _externalVerificationInFlight = new Set();
131
146
  constructor(config) {
@@ -387,6 +402,7 @@ export class AntseedNode extends EventEmitter {
387
402
  this._buyerFreeUsageManager = null;
388
403
  this._sellerFreeUsageManager = null;
389
404
  this._stakingClient = null;
405
+ this._trustSignalsClient = null;
390
406
  this._identityClient = null;
391
407
  this._sellerAddressResolver = null;
392
408
  this._buyerPaymentManager = null;
@@ -482,12 +498,12 @@ export class AntseedNode extends EventEmitter {
482
498
  });
483
499
  }
484
500
  _queuePartialPeerEnrichment(peers) {
485
- if (peers.length === 0 || !this._channelsClient || !this._stakingClient) {
501
+ if (peers.length === 0 || !this._trustSignalsClient) {
486
502
  return;
487
503
  }
488
- const peersToEnrich = peers.map((peer) => ({ ...peer }));
504
+ const peersToEnrich = peers;
489
505
  this._partialPeerEnrichmentChain = this._partialPeerEnrichmentChain.then(async () => {
490
- if (!this._started || !this._channelsClient || !this._stakingClient) {
506
+ if (!this._started || !this._trustSignalsClient) {
491
507
  return;
492
508
  }
493
509
  await this._enrichPeersWithOnChainStats(peersToEnrich);
@@ -522,6 +538,8 @@ export class AntseedNode extends EventEmitter {
522
538
  const queued = [];
523
539
  const nowMs = Date.now();
524
540
  for (const peer of peers) {
541
+ if (this._externalVerificationInFlight.size >= 512)
542
+ break;
525
543
  const claimsKey = this._externalVerificationClaimsKey(peer);
526
544
  if (!claimsKey)
527
545
  continue;
@@ -535,7 +553,7 @@ export class AntseedNode extends EventEmitter {
535
553
  continue;
536
554
  }
537
555
  this._externalVerificationInFlight.add(cacheKey);
538
- queued.push({ ...peer });
556
+ queued.push(peer);
539
557
  }
540
558
  if (queued.length === 0)
541
559
  return;
@@ -594,17 +612,19 @@ export class AntseedNode extends EventEmitter {
594
612
  domains,
595
613
  github,
596
614
  };
615
+ this._identityHistoryCollector ??= new IdentityHistoryCollector();
616
+ results.identityHistory = await this._identityHistoryCollector.collect(results);
617
+ if (this._externalVerificationCache.size >= 512) {
618
+ this._externalVerificationCache.delete(this._externalVerificationCache.keys().next().value);
619
+ }
597
620
  this._externalVerificationCache.set(peer.peerId, {
598
621
  claimsKey,
599
622
  checkedAtMs,
600
623
  results,
601
624
  });
602
- const verifiedPeer = { ...peer, verificationResults: results };
603
- const risk = typeof verifiedPeer.onChainSybilRisk === 'number'
604
- ? verifiedPeer.onChainSybilRisk
605
- : 0;
606
- verifiedPeer.onChainReputationScore = computeOnChainScoreWithRisk(verifiedPeer, risk) ?? verifiedPeer.onChainReputationScore;
607
- return verifiedPeer;
625
+ peer.verificationResults = results;
626
+ applyTrust(peer);
627
+ return peer;
608
628
  }
609
629
  catch (err) {
610
630
  debugWarn(`[Node] External verification failed for ${peer.peerId.slice(0, 12)}...: ${err instanceof Error ? err.message : err}`);
@@ -635,7 +655,7 @@ export class AntseedNode extends EventEmitter {
635
655
  * enriches its results, so volume / last-settled / ghost counts are
636
656
  * available when chain RPC is configured.
637
657
  */
638
- async findPeer(peerId) {
658
+ async findPeer(peerId, options) {
639
659
  if (!this._peerLookup) {
640
660
  throw buyerFault("Node not started or not in buyer mode", "node-not-started");
641
661
  }
@@ -659,7 +679,12 @@ export class AntseedNode extends EventEmitter {
659
679
  const best = results.reduce((acc, r) => r.metadata.timestamp > acc.metadata.timestamp ? r : acc);
660
680
  const peer = this._lookupResultToPeerInfo(best);
661
681
  this._attachCachedExternalVerificationResults([peer]);
662
- this._queueExternalVerification([peer]);
682
+ if (options?.awaitExternalVerification && !peer.verificationResults && this._externalVerificationClaimsKey(peer)) {
683
+ await this._verifyExternalClaimsForPeer(peer);
684
+ }
685
+ else {
686
+ this._queueExternalVerification([peer]);
687
+ }
663
688
  await this._enrichPeersWithOnChainStats([peer]);
664
689
  return peer;
665
690
  }
@@ -676,81 +701,81 @@ export class AntseedNode extends EventEmitter {
676
701
  * configured — callers can safely invoke this regardless.
677
702
  */
678
703
  async _enrichPeersWithOnChainStats(peers) {
679
- if (!this._channelsClient || !this._stakingClient || peers.length === 0) {
704
+ const client = this._trustSignalsClient;
705
+ if (!client || peers.length === 0) {
680
706
  return;
681
707
  }
682
- const channelsClient = this._channelsClient;
683
- const stakingClient = this._stakingClient;
684
708
  const resolver = this._sellerAddressResolver;
685
- const DISCOVERY_RPC_CONCURRENCY = 8;
686
- // Throttle on-chain reads across rapid discovery cycles. 60s is short
687
- // enough that freshness feels real-time in the UI, and long enough that
688
- // back-to-back `discoverPeers()` calls don't hammer the RPC endpoint.
689
- const ON_CHAIN_STATS_TTL_MS = 60_000;
709
+ // Every stale peer is read in one batched pass (two Multicall3 round
710
+ // trips), so the refresh interval bounds RPC usage per discovery cycle
711
+ // instead of the peer count.
712
+ const ON_CHAIN_STATS_TTL_MS = 120_000;
690
713
  const nowMs = Date.now();
691
- const queue = peers.slice();
692
714
  const peersWithCompleteStats = new Set();
693
- const verifyOne = async (p) => {
694
- if (typeof p.onChainStatsFetchedAt === 'number'
695
- && nowMs - p.onChainStatsFetchedAt < ON_CHAIN_STATS_TTL_MS) {
715
+ const stale = [];
716
+ for (const p of peers) {
717
+ if (typeof p.onChainStatsFetchedAt === 'number' && nowMs - p.onChainStatsFetchedAt < ON_CHAIN_STATS_TTL_MS) {
696
718
  peersWithCompleteStats.add(p);
697
- return;
719
+ continue;
698
720
  }
699
721
  try {
700
- const evmAddress = resolver
722
+ const address = resolver
701
723
  ? await resolver.resolveSellerAddress(p.peerId, p.metadata)
702
724
  : peerIdToAddress(p.peerId);
703
- const [agentId, stake, stakedAt] = await Promise.all([
704
- stakingClient.getAgentId(evmAddress),
705
- stakingClient.getStake(evmAddress).catch(() => null),
706
- stakingClient.getStakedAt(evmAddress).catch(() => null),
707
- ]);
708
- const stats = await channelsClient.getAgentStats(agentId);
709
- if (stake === null || stakedAt === null) {
710
- return;
711
- }
712
- p.onChainAgentId = agentId;
713
- p.onChainStakeUsdcMicros = stake <= BigInt(Number.MAX_SAFE_INTEGER)
714
- ? Number(stake)
715
- : Number.MAX_SAFE_INTEGER;
716
- p.onChainChannelCount = stats.channelCount;
717
- p.onChainGhostCount = stats.ghostCount;
718
- // totalVolumeUsdc is base-6 USDC. Clamp to safe-int range before
719
- // narrowing to Number — ~9M USDC fits Number.MAX_SAFE_INTEGER.
720
- const volumeMicros = stats.totalVolumeUsdc;
721
- p.onChainTotalVolumeUsdcMicros = volumeMicros <= BigInt(Number.MAX_SAFE_INTEGER)
722
- ? Number(volumeMicros)
723
- : Number.MAX_SAFE_INTEGER;
724
- p.onChainLastSettledAtSec = stats.lastSettledAt;
725
- // Some migrated/facade staking accounts return zero for `stakedAt`,
726
- // and transient RPC failures used to be coerced to zero as well. A
727
- // zero read must not erase a previously verified positive timestamp.
728
- if (typeof stakedAt === 'number' && Number.isFinite(stakedAt) && stakedAt > 0) {
729
- p.onChainStakedAtSec = stakedAt;
730
- }
731
- p.onChainStatsFetchedAt = Date.now();
732
- peersWithCompleteStats.add(p);
725
+ stale.push({ peer: p, address });
733
726
  }
734
727
  catch {
735
- // Per-peer verification failure — preserve the previous complete
736
- // snapshot, or leave a newly discovered peer unenriched.
728
+ // Unresolvable seller address: leave the previous snapshot in place.
737
729
  }
738
- };
739
- const workers = [];
740
- for (let i = 0; i < Math.min(DISCOVERY_RPC_CONCURRENCY, queue.length); i++) {
741
- workers.push((async () => {
742
- for (;;) {
743
- const next = queue.shift();
744
- if (!next)
745
- return;
746
- await verifyOne(next);
747
- }
748
- })());
749
730
  }
750
- await Promise.all(workers);
751
- this._applyTrustAndSybil(peers, peersWithCompleteStats);
752
- }
753
- _applyTrustAndSybil(peers, peersToUpdate) {
731
+ if (stale.length === 0) {
732
+ this._applyTrust(peers, peersWithCompleteStats);
733
+ return;
734
+ }
735
+ let signals;
736
+ try {
737
+ signals = await client.read(stale.map((entry) => entry.address));
738
+ }
739
+ catch (err) {
740
+ debugWarn(`[Node] On-chain trust signal read failed: ${err instanceof Error ? err.message : err}`);
741
+ this._applyTrust(peers, peersWithCompleteStats);
742
+ return;
743
+ }
744
+ for (const { peer: p, address } of stale) {
745
+ const read = signals.get(address);
746
+ // A peer without an agent id (or a failed batch entry) keeps its
747
+ // previous complete snapshot, or stays unenriched when newly discovered.
748
+ if (!read)
749
+ continue;
750
+ p.onChainAgentId = read.agentId;
751
+ if (read.channelCount !== undefined)
752
+ p.onChainChannelCount = read.channelCount;
753
+ if (read.ghostCount !== undefined)
754
+ p.onChainGhostCount = read.ghostCount;
755
+ if (read.totalVolumeUsdcMicros !== undefined)
756
+ p.onChainTotalVolumeUsdcMicros = read.totalVolumeUsdcMicros;
757
+ if (read.lastSettledAtSec !== undefined)
758
+ p.onChainLastSettledAtSec = read.lastSettledAtSec;
759
+ if (read.usageEpoch !== undefined) {
760
+ p.onChainUsageEpoch = read.usageEpoch;
761
+ p.onChainUsageShareBps = read.usageShareBps;
762
+ p.onChainUsageLastEpochUsdcMicros = read.usageLastEpochUsdcMicros;
763
+ }
764
+ if (read.poolStakeAnts !== undefined)
765
+ p.onChainPoolStakeAnts = read.poolStakeAnts;
766
+ if (read.poolPowerShareBps !== undefined)
767
+ p.onChainPoolPowerShareBps = read.poolPowerShareBps;
768
+ if (read.washFlagged !== undefined)
769
+ p.onChainWashFlagged = read.washFlagged;
770
+ if (read.washShareBps !== undefined)
771
+ p.onChainWashShareBps = read.washShareBps;
772
+ p.onChainStatsFetchedAt = Date.now();
773
+ peersWithCompleteStats.add(p);
774
+ }
775
+ this._applyTrust(peers, peersWithCompleteStats);
776
+ }
777
+ /** Recompute the trust score and the display-only sybil heuristic. */
778
+ _applyTrust(peers, peersToUpdate) {
754
779
  if (peers.length === 0)
755
780
  return;
756
781
  const ctx = peers.length >= 2
@@ -759,16 +784,12 @@ export class AntseedNode extends EventEmitter {
759
784
  for (const p of peers) {
760
785
  if (peersToUpdate && !peersToUpdate.has(p))
761
786
  continue;
762
- const trust = computeOnChainTrust(p);
763
- if (trust === null)
764
- continue;
765
- p.onChainTrustScore = trust;
766
- if (ctx) {
787
+ if (ctx && typeof p.onChainChannelCount === 'number') {
767
788
  const sybil = computeOnChainSybilRisk(p, ctx);
768
789
  p.onChainSybilRisk = sybil.risk;
769
790
  p.onChainSybilFlags = sybil.flags;
770
791
  }
771
- p.onChainReputationScore = computeOnChainScore(p, ctx) ?? undefined;
792
+ applyTrust(p);
772
793
  }
773
794
  }
774
795
  /**
@@ -1620,6 +1641,16 @@ export class AntseedNode extends EventEmitter {
1620
1641
  });
1621
1642
  debugLog(`[Node] StakingClient initialized (contract=${payments.stakingAddress.slice(0, 10)}...)`);
1622
1643
  }
1644
+ if (this._channelsClient && payments.stakingAddress && payments.channelsAddress) {
1645
+ this._trustSignalsClient = new TrustSignalsClient(this._channelsClient.provider, {
1646
+ sellerRegistry: payments.stakingAddress,
1647
+ channels: payments.channelsAddress,
1648
+ ...(payments.sellerPoolsAddress ? { sellerPools: payments.sellerPoolsAddress } : {}),
1649
+ ...(payments.usageAccountingAddress ? { usageAccounting: payments.usageAccountingAddress } : {}),
1650
+ ...(payments.washTradingRegistryAddress ? { washTradingRegistry: payments.washTradingRegistryAddress } : {}),
1651
+ });
1652
+ debugLog(`[Node] TrustSignalsClient initialized (pools=${Boolean(payments.sellerPoolsAddress)} usage=${Boolean(payments.usageAccountingAddress)} wash=${Boolean(payments.washTradingRegistryAddress)})`);
1653
+ }
1623
1654
  // Initialize IdentityClient (ERC-8004 IdentityRegistry)
1624
1655
  if (payments.rpcUrl && payments.identityRegistryAddress) {
1625
1656
  this._identityClient = new IdentityClient({
@@ -1641,6 +1672,9 @@ export class AntseedNode extends EventEmitter {
1641
1672
  dataDir: paymentsDir,
1642
1673
  ...(payments.minBudgetPerRequest ? { minBudgetPerRequest: payments.minBudgetPerRequest } : {}),
1643
1674
  ...(payments.minSettleDelta ? { minSettleDelta: payments.minSettleDelta } : {}),
1675
+ ...(payments.serveWhileClosePending !== undefined
1676
+ ? { serveWhileClosePending: payments.serveWhileClosePending }
1677
+ : {}),
1644
1678
  };
1645
1679
  this._sellerPaymentManager = new SellerPaymentManager(this._identity, sellerConfig, this._channelStore);
1646
1680
  debugLog(`[Node] SellerPaymentManager initialized`);
@@ -1943,6 +1977,7 @@ export class AntseedNode extends EventEmitter {
1943
1977
  return `${result.host}:${result.port}`;
1944
1978
  }
1945
1979
  _lookupResultToPeerInfo(result) {
1980
+ const displayName = sanitizePeerDisplayName(result.metadata.displayName);
1946
1981
  const providers = result.metadata.providers.map((p) => p.provider);
1947
1982
  const firstProvider = result.metadata.providers[0];
1948
1983
  const providerPricingEntries = {};
@@ -2027,7 +2062,7 @@ export class AntseedNode extends EventEmitter {
2027
2062
  const hasProviderServiceCapabilities = Object.keys(providerServiceCapabilityEntries).length > 0;
2028
2063
  return {
2029
2064
  peerId: result.metadata.peerId,
2030
- displayName: result.metadata.displayName,
2065
+ displayName,
2031
2066
  // `metadata.timestamp` is signed by the seller and can reflect the
2032
2067
  // seller's wall clock, not this buyer's. Freshness validation in
2033
2068
  // PeerLookup already handles seller/buyer clock skew using the HTTP Date