@antseed/node 0.2.118 → 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.
- package/dist/discovery/display-name.d.ts +8 -0
- package/dist/discovery/display-name.d.ts.map +1 -0
- package/dist/discovery/display-name.js +17 -0
- package/dist/discovery/display-name.js.map +1 -0
- package/dist/discovery/domain-verification.d.ts.map +1 -1
- package/dist/discovery/domain-verification.js +2 -1
- package/dist/discovery/domain-verification.js.map +1 -1
- package/dist/discovery/github-verification.d.ts.map +1 -1
- package/dist/discovery/github-verification.js +5 -1
- package/dist/discovery/github-verification.js.map +1 -1
- package/dist/discovery/index.d.ts +1 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/service-catalog.d.ts +2 -1
- package/dist/discovery/service-catalog.d.ts.map +1 -1
- package/dist/discovery/service-catalog.js +2 -0
- package/dist/discovery/service-catalog.js.map +1 -1
- package/dist/discovery/verifier-capabilities.d.ts +9 -0
- package/dist/discovery/verifier-capabilities.d.ts.map +1 -0
- package/dist/discovery/verifier-capabilities.js +35 -0
- package/dist/discovery/verifier-capabilities.js.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +15 -3
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +114 -82
- package/dist/node.js.map +1 -1
- package/dist/p2p/identity.js +1 -1
- package/dist/p2p/identity.js.map +1 -1
- package/dist/payments/evm/multicall.d.ts +2 -1
- package/dist/payments/evm/multicall.d.ts.map +1 -1
- package/dist/payments/evm/multicall.js +1 -1
- package/dist/payments/evm/multicall.js.map +1 -1
- package/dist/payments/evm/trust-signals-client.d.ts +54 -0
- package/dist/payments/evm/trust-signals-client.d.ts.map +1 -0
- package/dist/payments/evm/trust-signals-client.js +162 -0
- package/dist/payments/evm/trust-signals-client.js.map +1 -0
- package/dist/payments/generated-contract-addresses.d.ts +14 -4
- package/dist/payments/generated-contract-addresses.d.ts.map +1 -1
- package/dist/payments/generated-contract-addresses.js +14 -4
- package/dist/payments/generated-contract-addresses.js.map +1 -1
- package/dist/reputation/identity-history.d.ts +75 -0
- package/dist/reputation/identity-history.d.ts.map +1 -0
- package/dist/reputation/identity-history.js +258 -0
- package/dist/reputation/identity-history.js.map +1 -0
- package/dist/reputation/model-reputation.d.ts +3 -2
- package/dist/reputation/model-reputation.d.ts.map +1 -1
- package/dist/reputation/model-reputation.js +2 -9
- package/dist/reputation/model-reputation.js.map +1 -1
- package/dist/reputation/public-json.d.ts +9 -0
- package/dist/reputation/public-json.d.ts.map +1 -0
- package/dist/reputation/public-json.js +98 -0
- package/dist/reputation/public-json.js.map +1 -0
- package/dist/reputation/sybil-risk.d.ts +35 -0
- package/dist/reputation/sybil-risk.d.ts.map +1 -0
- package/dist/reputation/sybil-risk.js +136 -0
- package/dist/reputation/sybil-risk.js.map +1 -0
- package/dist/reputation/trust-score.d.ts +83 -0
- package/dist/reputation/trust-score.d.ts.map +1 -0
- package/dist/reputation/trust-score.js +91 -0
- package/dist/reputation/trust-score.js.map +1 -0
- package/dist/routing/default-router.d.ts +0 -1
- package/dist/routing/default-router.d.ts.map +1 -1
- package/dist/routing/default-router.js +2 -12
- package/dist/routing/default-router.js.map +1 -1
- package/dist/routing/model-route-ranking.d.ts +0 -1
- package/dist/routing/model-route-ranking.d.ts.map +1 -1
- package/dist/routing/model-route-ranking.js.map +1 -1
- package/dist/types/peer.d.ts +27 -18
- package/dist/types/peer.d.ts.map +1 -1
- package/dist/verification/tee-status.d.ts +35 -0
- package/dist/verification/tee-status.d.ts.map +1 -0
- package/dist/verification/tee-status.js +21 -0
- package/dist/verification/tee-status.js.map +1 -0
- package/package.json +15 -7
- package/dist/reputation/on-chain-reputation.d.ts +0 -84
- package/dist/reputation/on-chain-reputation.d.ts.map +0 -1
- package/dist/reputation/on-chain-reputation.js +0 -290
- package/dist/reputation/on-chain-reputation.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-route-ranking.js","sourceRoot":"","sources":["../../src/routing/model-route-ranking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAUnF,MAAM,CAAC,MAAM,iCAAiC,GAA4B;IACxE,eAAe,EAAE,KAAK;IACtB,qBAAqB,EAAE,EAAE;IACzB,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,EAAE;CACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-route-ranking.js","sourceRoot":"","sources":["../../src/routing/model-route-ranking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAUnF,MAAM,CAAC,MAAM,iCAAiC,GAA4B;IACxE,eAAe,EAAE,KAAK;IACtB,qBAAqB,EAAE,EAAE;IACzB,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,cAAc,EAAE,EAAE;CACnB,CAAC;AAoBF,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACjC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,eAAe,GAAG,CAAC,GAAG,MAAM,CAAC;AAEnC,SAAS,gBAAgB,CAAC,MAAc;IACtC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,SAAS,CAAC,MAAgB;IACjC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA0B;IAClE,MAAM,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAC;IACjD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAClF,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAA0B;IAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC;IAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACrF,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC;IACvC,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,CAAC;IACzC,IACE,OAAO,KAAK,KAAK,QAAQ;WACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;WACvB,KAAK,GAAG,CAAC;WACT,OAAO,MAAM,KAAK,QAAQ;WAC1B,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;WACxB,MAAM,GAAG,CAAC,EACb,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAA0B,EAC1B,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,MAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACvF,OAAO,KAAK,GAAG,GAAG,IAAI,eAAe,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,WAAoC;IAEpC,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA0B,EAC1B,WAAoC;IAEpC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,WAAW,CAAC,aAAa,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,UAAU,KAAK,IAAI,IAAI,UAAU,IAAI,WAAW,CAAC,aAAa,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAQ,EACR,WAAoC,EACpC,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,IAAI,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QACxC,KAAK,IAAI,oBAAoB,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC3G,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC,CAAC;QACN,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,IAAI,sBAAsB,GAAG,aAAa,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,WAAW,CAAC,eAAe,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACpD,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,CAAC;IAC5C,IACE,OAAO,UAAU,KAAK,QAAQ;WAC3B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;WAC3B,UAAU,GAAG,WAAW,CAAC,qBAAqB,EACjD,CAAC;QACD,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;QAClE,KAAK,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,KAAK,IAAI,qBAAqB,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,wBAAwB,CAC/B,CAAsB,EACtB,CAAsB,EACtB,WAAoC,EACpC,GAAW;IAEX,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,wEAAwE;IACxE,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,CAAC;WAC7E,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;WACjB,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAW,EACX,WAAoC,EACpC,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;SACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;SAChE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,MAAW,EACX,WAAoC,EACpC,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,OAAO,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC;SAC7C,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC;AACvE,CAAC"}
|
package/dist/types/peer.d.ts
CHANGED
|
@@ -6,7 +6,10 @@ import type { PeerId } from '@antseed/protocol/peer-id';
|
|
|
6
6
|
export type { TokenPricingUsdPerMillion } from '@antseed/protocol/peer-metadata';
|
|
7
7
|
export type { ProviderPricingMatrixEntry, ProviderServiceCategoryMatrixEntry, ProviderServiceApiProtocolMatrixEntry, ProviderServiceUnitBillingModelMatrixEntry, ProviderServiceCapabilityMatrixEntry, } from '@antseed/protocol/peer-pricing';
|
|
8
8
|
import type { ProviderPricingMatrixEntry, ProviderServiceCategoryMatrixEntry, ProviderServiceApiProtocolMatrixEntry, ProviderServiceUnitBillingModelMatrixEntry, ProviderServiceCapabilityMatrixEntry } from '@antseed/protocol/peer-pricing';
|
|
9
|
+
import type { TrustBreakdown } from '../reputation/trust-score.js';
|
|
9
10
|
export interface PeerVerificationResults {
|
|
11
|
+
/** Buyer-collected public history for verified identities (GitHub portfolio, domain registration). */
|
|
12
|
+
identityHistory?: import('../reputation/identity-history.js').IdentityHistoryEvidence;
|
|
10
13
|
/** True when every announced external claim verified successfully. */
|
|
11
14
|
verified: boolean;
|
|
12
15
|
/** Buyer-local time when the latest verification pass completed. */
|
|
@@ -59,37 +62,43 @@ export interface PeerInfo {
|
|
|
59
62
|
maxConcurrency?: number;
|
|
60
63
|
/** Current number of requests the peer is handling. */
|
|
61
64
|
currentLoad?: number;
|
|
62
|
-
/**
|
|
63
|
-
* On-chain ERC-8004 agent ID from `AntseedStaking.getAgentId`.
|
|
64
|
-
* Read by the buyer directly from the chain.
|
|
65
|
-
*/
|
|
65
|
+
/** On-chain ERC-8004 agent ID, resolved through the seller registry. */
|
|
66
66
|
onChainAgentId?: number;
|
|
67
|
-
/**
|
|
68
|
-
* On-chain seller stake in micro-USDC from `AntseedStaking.getStake`.
|
|
69
|
-
* Read by the buyer directly from the chain.
|
|
70
|
-
*/
|
|
71
|
-
onChainStakeUsdcMicros?: number;
|
|
72
|
-
/** Buyer-computed displayed on-chain score (0-100). */
|
|
67
|
+
/** Buyer-computed trust score (0-100). See `computeTrustScore`. */
|
|
73
68
|
onChainReputationScore?: number;
|
|
74
|
-
/**
|
|
75
|
-
|
|
76
|
-
/**
|
|
69
|
+
/** Parts that make up `onChainReputationScore`. */
|
|
70
|
+
trust?: TrustBreakdown;
|
|
71
|
+
/** Local sybil-risk heuristic in [0, 1]. Display-only; not part of the trust score. */
|
|
77
72
|
onChainSybilRisk?: number;
|
|
78
73
|
/** Sybil signals that fired for this peer. */
|
|
79
74
|
onChainSybilFlags?: string[];
|
|
80
|
-
/**
|
|
75
|
+
/** Lifetime settled channel count from `AntseedChannels`. */
|
|
81
76
|
onChainChannelCount?: number;
|
|
82
|
-
/**
|
|
77
|
+
/** Lifetime ghost (timed-out, unsettled) channel count from `AntseedChannels`. */
|
|
83
78
|
onChainGhostCount?: number;
|
|
84
|
-
/**
|
|
79
|
+
/** Lifetime settled volume in micro-USDC from `AntseedChannels`. */
|
|
85
80
|
onChainTotalVolumeUsdcMicros?: number;
|
|
86
81
|
/** Unix seconds of the most recent settlement. */
|
|
87
82
|
onChainLastSettledAtSec?: number;
|
|
88
|
-
/** Unix seconds when the seller first staked. */
|
|
83
|
+
/** Unix seconds when the seller first staked on the legacy USDC staking contract, when known. */
|
|
89
84
|
onChainStakedAtSec?: number;
|
|
85
|
+
/** Current recognized-usage epoch at the time of the read. */
|
|
86
|
+
onChainUsageEpoch?: number;
|
|
87
|
+
/** Seller pool's share of all pools' recognized-usage points in the previous epoch, in basis points. */
|
|
88
|
+
onChainUsageShareBps?: number;
|
|
89
|
+
/** Recognized usage points (micro-USDC) credited to the seller in the previous epoch. */
|
|
90
|
+
onChainUsageLastEpochUsdcMicros?: number;
|
|
91
|
+
/** ANTS actively staked in the seller's pool this epoch (whole ANTS). */
|
|
92
|
+
onChainPoolStakeAnts?: number;
|
|
93
|
+
/** Seller pool's share of total network staking power this epoch, in basis points. */
|
|
94
|
+
onChainPoolPowerShareBps?: number;
|
|
95
|
+
/** True when `AntseedWashTradingRegistry.isProvenWashTrader` is set for the seller. */
|
|
96
|
+
onChainWashFlagged?: boolean;
|
|
97
|
+
/** Proven wash share of the seller's volume, in basis points. */
|
|
98
|
+
onChainWashShareBps?: number;
|
|
90
99
|
/**
|
|
91
100
|
* Unix ms when the buyer last refreshed on-chain stats for this peer.
|
|
92
|
-
* Used to throttle repeat
|
|
101
|
+
* Used to throttle repeat chain reads across discovery cycles.
|
|
93
102
|
*/
|
|
94
103
|
onChainStatsFetchedAt?: number;
|
|
95
104
|
/** Full peer metadata, if available (set after metadata resolution). */
|
package/dist/types/peer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/types/peer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAGpF,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,YAAY,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,YAAY,EACV,0BAA0B,EAC1B,kCAAkC,EAClC,qCAAqC,EACrC,0CAA0C,EAC1C,oCAAoC,GACrC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACV,0BAA0B,EAC1B,kCAAkC,EAClC,qCAAqC,EACrC,0CAA0C,EAC1C,oCAAoC,EACrC,MAAM,gCAAgC,CAAC;AAExC,MAAM,WAAW,uBAAuB;IACtC,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,qFAAqF;IACrF,MAAM,EAAE,wBAAwB,EAAE,CAAC;CACpC;AAED,sCAAsC;AACtC,MAAM,WAAW,QAAQ;IACvB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7D,0DAA0D;IAC1D,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC/E,0DAA0D;IAC1D,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;IACpF,yEAAyE;IACzE,gCAAgC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;IAC9F,mEAAmE;IACnE,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oCAAoC,CAAC,CAAC;IACnF,sEAAsE;IACtE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,6EAA6E;IAC7E,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/types/peer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare const TEE_VERIFIER_ID = "antseed-verifier";
|
|
2
|
+
export declare const TEE_MAX_AGE_MS: number;
|
|
3
|
+
export declare const TEE_BADGE_MAX_AGE_MS: number;
|
|
4
|
+
export declare const TEE_REQUIRED_CLAIMS: readonly ["antseed-verifier:seller-node-tee-genuine", "antseed-verifier:seller-bound"];
|
|
5
|
+
export interface TeeClaim {
|
|
6
|
+
claim: string;
|
|
7
|
+
ok: boolean;
|
|
8
|
+
detail?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface TeeEvidence {
|
|
11
|
+
peerId: string;
|
|
12
|
+
verifierId: string;
|
|
13
|
+
verifierVersion?: string;
|
|
14
|
+
fingerprint: string;
|
|
15
|
+
checkedAt: number;
|
|
16
|
+
expiresAt: number;
|
|
17
|
+
sellerNodeVerified: boolean;
|
|
18
|
+
claims: TeeClaim[];
|
|
19
|
+
reason?: string;
|
|
20
|
+
checking?: boolean;
|
|
21
|
+
unavailable?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface TeeSnapshot {
|
|
24
|
+
sessionId: string;
|
|
25
|
+
verificationEnabled: boolean;
|
|
26
|
+
evidence: TeeEvidence[];
|
|
27
|
+
}
|
|
28
|
+
export interface DesktopTeeStatus {
|
|
29
|
+
snapshot: TeeSnapshot | null;
|
|
30
|
+
error?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function passedSellerNodeClaims(claims: readonly TeeClaim[]): boolean;
|
|
33
|
+
export declare function isFreshSellerNodeEvidence(evidence: TeeEvidence | undefined, now?: number): boolean;
|
|
34
|
+
export declare function teeControlFileName(port: number): string;
|
|
35
|
+
//# sourceMappingURL=tee-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tee-status.d.ts","sourceRoot":"","sources":["../../src/verification/tee-status.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,qBAAqB,CAAA;AACjD,eAAO,MAAM,cAAc,QAAa,CAAA;AACxC,eAAO,MAAM,oBAAoB,QAAmB,CAAA;AACpD,eAAO,MAAM,mBAAmB,wFAGtB,CAAA;AAEV,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AACD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AACD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,EAAE,WAAW,EAAE,CAAA;CACxB;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,OAAO,CAK3E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,EAAE,GAAG,SAAa,GAAG,OAAO,CAGtG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const TEE_VERIFIER_ID = 'antseed-verifier';
|
|
2
|
+
export const TEE_MAX_AGE_MS = 5 * 60_000;
|
|
3
|
+
export const TEE_BADGE_MAX_AGE_MS = 24 * 60 * 60_000;
|
|
4
|
+
export const TEE_REQUIRED_CLAIMS = [
|
|
5
|
+
'antseed-verifier:seller-node-tee-genuine',
|
|
6
|
+
'antseed-verifier:seller-bound',
|
|
7
|
+
];
|
|
8
|
+
export function passedSellerNodeClaims(claims) {
|
|
9
|
+
return TEE_REQUIRED_CLAIMS.every((required) => {
|
|
10
|
+
const matches = claims.filter((claim) => claim.claim === required);
|
|
11
|
+
return matches.length > 0 && matches.every((claim) => claim.ok === true);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function isFreshSellerNodeEvidence(evidence, now = Date.now()) {
|
|
15
|
+
return evidence?.sellerNodeVerified === true && !evidence.checking
|
|
16
|
+
&& !evidence.unavailable && evidence.expiresAt > now;
|
|
17
|
+
}
|
|
18
|
+
export function teeControlFileName(port) {
|
|
19
|
+
return `buyer-verification-${port}.json`;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=tee-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tee-status.js","sourceRoot":"","sources":["../../src/verification/tee-status.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAA;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,MAAM,CAAA;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAA;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,0CAA0C;IAC1C,+BAA+B;CACvB,CAAA;AA8BV,MAAM,UAAU,sBAAsB,CAAC,MAA2B;IAChE,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAA;QAClE,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAiC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC3F,OAAO,QAAQ,EAAE,kBAAkB,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ;WAC7D,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,sBAAsB,IAAI,OAAO,CAAA;AAC1C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antseed/node",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.119",
|
|
4
4
|
"description": "Antseed Network protocol SDK — P2P inference marketplace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -41,6 +41,14 @@
|
|
|
41
41
|
"import": "./dist/types/index.js",
|
|
42
42
|
"types": "./dist/types/index.d.ts"
|
|
43
43
|
},
|
|
44
|
+
"./verifier-capabilities": {
|
|
45
|
+
"import": "./dist/discovery/verifier-capabilities.js",
|
|
46
|
+
"types": "./dist/discovery/verifier-capabilities.d.ts"
|
|
47
|
+
},
|
|
48
|
+
"./tee-status": {
|
|
49
|
+
"import": "./dist/verification/tee-status.js",
|
|
50
|
+
"types": "./dist/verification/tee-status.d.ts"
|
|
51
|
+
},
|
|
44
52
|
"./model-identity": {
|
|
45
53
|
"import": "./dist/model-identity.js",
|
|
46
54
|
"types": "./dist/model-identity.d.ts"
|
|
@@ -49,9 +57,9 @@
|
|
|
49
57
|
"import": "./dist/routing/model-route-ranking.js",
|
|
50
58
|
"types": "./dist/routing/model-route-ranking.d.ts"
|
|
51
59
|
},
|
|
52
|
-
"./
|
|
53
|
-
"import": "./dist/reputation/
|
|
54
|
-
"types": "./dist/reputation/
|
|
60
|
+
"./trust-score": {
|
|
61
|
+
"import": "./dist/reputation/trust-score.js",
|
|
62
|
+
"types": "./dist/reputation/trust-score.d.ts"
|
|
55
63
|
}
|
|
56
64
|
},
|
|
57
65
|
"dependencies": {
|
|
@@ -61,9 +69,9 @@
|
|
|
61
69
|
"ethers": "~6.16.0",
|
|
62
70
|
"node-datachannel": "^0.7.0",
|
|
63
71
|
"tokenx": "^1.3.0",
|
|
64
|
-
"@antseed/api-adapter": "0.1.
|
|
65
|
-
"@antseed/
|
|
66
|
-
"@antseed/
|
|
72
|
+
"@antseed/api-adapter": "0.1.47",
|
|
73
|
+
"@antseed/protocol": "0.1.4",
|
|
74
|
+
"@antseed/buyer-core": "0.1.10"
|
|
67
75
|
},
|
|
68
76
|
"optionalDependencies": {
|
|
69
77
|
"keytar": "^7.9.0"
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import type { PeerInfo } from '../types/peer.js';
|
|
2
|
-
export declare const ON_CHAIN_TRUST_TICKET_TARGET_USDC = 2;
|
|
3
|
-
export declare const ON_CHAIN_TRUST_TICKET_MIN = 0.5;
|
|
4
|
-
export declare const ON_CHAIN_TRUST_TICKET_MAX = 1.5;
|
|
5
|
-
export declare const ON_CHAIN_TRUST_RECENCY_FRESH_DAYS = 14;
|
|
6
|
-
export declare const ON_CHAIN_TRUST_RECENCY_STALE_DAYS = 60;
|
|
7
|
-
export declare const ON_CHAIN_TRUST_RECENCY_DORMANT_FACTOR = 0.25;
|
|
8
|
-
export declare const ON_CHAIN_TRUST_STAKE_THRESHOLD_USDC = 1;
|
|
9
|
-
export declare const ON_CHAIN_TRUST_NO_STAKE_FACTOR = 0.5;
|
|
10
|
-
export declare const ON_CHAIN_TRUST_INITIAL_CREDIT_USDC = 25;
|
|
11
|
-
export declare const ON_CHAIN_TRUST_DAILY_CREDIT_USDC = 125;
|
|
12
|
-
export declare const ON_CHAIN_TRUST_MATURITY_DAYS = 30;
|
|
13
|
-
export declare const ON_CHAIN_TRUST_CHANNEL_CONFIDENCE_CAP = 1000;
|
|
14
|
-
export declare const ON_CHAIN_TRUST_GHOST_PENALTY_WEIGHT = 2.5;
|
|
15
|
-
export declare const ON_CHAIN_TRUST_MIN_GHOST_FACTOR = 0.25;
|
|
16
|
-
export declare const ON_CHAIN_TRUST_LOW_TICKET_USDC = 0.25;
|
|
17
|
-
export declare const ON_CHAIN_TRUST_LOW_TICKET_MIN_CHANNELS = 50;
|
|
18
|
-
export declare const ON_CHAIN_TRUST_LOW_TICKET_FACTOR = 0.65;
|
|
19
|
-
export declare const ON_CHAIN_TRUST_HIGH_TICKET_USDC = 50;
|
|
20
|
-
export declare const ON_CHAIN_TRUST_HIGH_TICKET_MAX_CHANNELS = 20;
|
|
21
|
-
export declare const ON_CHAIN_TRUST_HIGH_TICKET_FACTOR = 0.75;
|
|
22
|
-
export declare const ON_CHAIN_SCORE_LOG_CAP_USDC = 10000;
|
|
23
|
-
export declare const ON_CHAIN_SCORE_LOG_CAP_EXPONENT: number;
|
|
24
|
-
export declare const ON_CHAIN_VERIFICATION_DOMAIN_POINTS = 5;
|
|
25
|
-
export declare const ON_CHAIN_VERIFICATION_GITHUB_POINTS = 3;
|
|
26
|
-
export declare const ON_CHAIN_VERIFICATION_MAX_POINTS = 8;
|
|
27
|
-
export declare const SYBIL_WEIGHT_SUBFLOOR_TICKET = 0.3;
|
|
28
|
-
export declare const SYBIL_WEIGHT_BURN_RATE = 0.25;
|
|
29
|
-
export declare const SYBIL_WEIGHT_NARROW_CUSTOM = 0.25;
|
|
30
|
-
export declare const SYBIL_WEIGHT_YOUNG_HIGH_VOL = 0.2;
|
|
31
|
-
export declare const SYBIL_SUBFLOOR_TICKET_USDC = 1;
|
|
32
|
-
export declare const SYBIL_SUBFLOOR_MIN_CHANNELS = 50;
|
|
33
|
-
export declare const SYBIL_BURN_RATE_THRESHOLD = 30;
|
|
34
|
-
export declare const SYBIL_BURN_RATE_SATURATION = 80;
|
|
35
|
-
export declare const SYBIL_YOUNG_MAX_DAYS = 14;
|
|
36
|
-
export declare const SYBIL_YOUNG_CHANNEL_FLOOR = 100;
|
|
37
|
-
export declare const SYBIL_YOUNG_CHANNEL_SATURATION = 400;
|
|
38
|
-
export declare const SYBIL_ADVERTISED_CHEAP_INPUT_USD_PER_MILLION = 0.1;
|
|
39
|
-
export type SybilFlag = 'subfloor_ticket' | 'burn_rate' | 'narrow_custom' | 'young_high_vol';
|
|
40
|
-
export interface SybilRiskResult {
|
|
41
|
-
risk: number;
|
|
42
|
-
flags: SybilFlag[];
|
|
43
|
-
signals: Record<SybilFlag, number>;
|
|
44
|
-
}
|
|
45
|
-
export interface SybilContext {
|
|
46
|
-
serviceCounts: Map<string, number>;
|
|
47
|
-
}
|
|
48
|
-
export interface OnChainTrustBreakdown {
|
|
49
|
-
trust: number;
|
|
50
|
-
volumeUsdc: number;
|
|
51
|
-
creditedVolumeUsdc: number;
|
|
52
|
-
volumeCreditCapUsdc: number;
|
|
53
|
-
channels: number;
|
|
54
|
-
avgChannelUsdc: number;
|
|
55
|
-
ticketBonus: number;
|
|
56
|
-
ticketGate: number;
|
|
57
|
-
recencyGate: number;
|
|
58
|
-
stakeGate: number;
|
|
59
|
-
ageGate: number;
|
|
60
|
-
channelConfidence: number;
|
|
61
|
-
ghostGate: number;
|
|
62
|
-
scoreMultiplier: number;
|
|
63
|
-
verificationBonusPoints: number;
|
|
64
|
-
daysSinceLastSettled: number | null;
|
|
65
|
-
daysSinceStaked: number | null;
|
|
66
|
-
}
|
|
67
|
-
export declare function computeVerificationScoreBonus(peer: Pick<PeerInfo, 'verificationResults'>): number;
|
|
68
|
-
/**
|
|
69
|
-
* Compute raw on-chain trust, or `null` when chain stats are unavailable.
|
|
70
|
-
*
|
|
71
|
-
* Trust is anchored to settled USDC, but volume credit vests with seller age.
|
|
72
|
-
* Channel count, ghost rate, last-settled recency, stake, and ticket shape gate
|
|
73
|
-
* the displayed score instead of multiplying settled volume directly.
|
|
74
|
-
*/
|
|
75
|
-
export declare function computeOnChainTrustBreakdown(peer: Pick<PeerInfo, 'onChainChannelCount' | 'onChainGhostCount' | 'onChainTotalVolumeUsdcMicros' | 'onChainLastSettledAtSec' | 'onChainStakedAtSec' | 'onChainStakeUsdcMicros' | 'verificationResults'>, nowMs?: number): OnChainTrustBreakdown | null;
|
|
76
|
-
export declare function computeOnChainTrust(peer: Parameters<typeof computeOnChainTrustBreakdown>[0], nowMs?: number): number | null;
|
|
77
|
-
export declare function buildSybilContext(peers: ReadonlyArray<PeerInfo>): SybilContext;
|
|
78
|
-
/** Heuristic wash-trading risk in [0, 1]. */
|
|
79
|
-
export declare function computeOnChainSybilRisk(peer: PeerInfo, ctx: SybilContext, nowMs?: number): SybilRiskResult;
|
|
80
|
-
export declare function scoreFromTrust(trust: number): number;
|
|
81
|
-
export declare function computeOnChainScoreWithRisk(peer: PeerInfo, risk: number, nowMs?: number): number | null;
|
|
82
|
-
export declare function computeOnChainScore(peer: PeerInfo, ctx?: SybilContext, nowMs?: number): number | null;
|
|
83
|
-
export declare function computeOnChainReputationScore(peer: PeerInfo, nowMs?: number): number | null;
|
|
84
|
-
//# sourceMappingURL=on-chain-reputation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"on-chain-reputation.d.ts","sourceRoot":"","sources":["../../src/reputation/on-chain-reputation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
export const ON_CHAIN_TRUST_TICKET_TARGET_USDC = 2.0;
|
|
2
|
-
export const ON_CHAIN_TRUST_TICKET_MIN = 0.5;
|
|
3
|
-
export const ON_CHAIN_TRUST_TICKET_MAX = 1.5;
|
|
4
|
-
export const ON_CHAIN_TRUST_RECENCY_FRESH_DAYS = 14;
|
|
5
|
-
export const ON_CHAIN_TRUST_RECENCY_STALE_DAYS = 60;
|
|
6
|
-
export const ON_CHAIN_TRUST_RECENCY_DORMANT_FACTOR = 0.25;
|
|
7
|
-
export const ON_CHAIN_TRUST_STAKE_THRESHOLD_USDC = 1.0;
|
|
8
|
-
export const ON_CHAIN_TRUST_NO_STAKE_FACTOR = 0.5;
|
|
9
|
-
export const ON_CHAIN_TRUST_INITIAL_CREDIT_USDC = 25;
|
|
10
|
-
export const ON_CHAIN_TRUST_DAILY_CREDIT_USDC = 125;
|
|
11
|
-
export const ON_CHAIN_TRUST_MATURITY_DAYS = 30;
|
|
12
|
-
export const ON_CHAIN_TRUST_CHANNEL_CONFIDENCE_CAP = 1_000;
|
|
13
|
-
export const ON_CHAIN_TRUST_GHOST_PENALTY_WEIGHT = 2.5;
|
|
14
|
-
export const ON_CHAIN_TRUST_MIN_GHOST_FACTOR = 0.25;
|
|
15
|
-
export const ON_CHAIN_TRUST_LOW_TICKET_USDC = 0.25;
|
|
16
|
-
export const ON_CHAIN_TRUST_LOW_TICKET_MIN_CHANNELS = 50;
|
|
17
|
-
export const ON_CHAIN_TRUST_LOW_TICKET_FACTOR = 0.65;
|
|
18
|
-
export const ON_CHAIN_TRUST_HIGH_TICKET_USDC = 50;
|
|
19
|
-
export const ON_CHAIN_TRUST_HIGH_TICKET_MAX_CHANNELS = 20;
|
|
20
|
-
export const ON_CHAIN_TRUST_HIGH_TICKET_FACTOR = 0.75;
|
|
21
|
-
export const ON_CHAIN_SCORE_LOG_CAP_USDC = 10_000;
|
|
22
|
-
export const ON_CHAIN_SCORE_LOG_CAP_EXPONENT = Math.log10(1 + ON_CHAIN_SCORE_LOG_CAP_USDC);
|
|
23
|
-
export const ON_CHAIN_VERIFICATION_DOMAIN_POINTS = 5;
|
|
24
|
-
export const ON_CHAIN_VERIFICATION_GITHUB_POINTS = 3;
|
|
25
|
-
export const ON_CHAIN_VERIFICATION_MAX_POINTS = 8;
|
|
26
|
-
export const SYBIL_WEIGHT_SUBFLOOR_TICKET = 0.30;
|
|
27
|
-
export const SYBIL_WEIGHT_BURN_RATE = 0.25;
|
|
28
|
-
export const SYBIL_WEIGHT_NARROW_CUSTOM = 0.25;
|
|
29
|
-
export const SYBIL_WEIGHT_YOUNG_HIGH_VOL = 0.20;
|
|
30
|
-
export const SYBIL_SUBFLOOR_TICKET_USDC = 1.0;
|
|
31
|
-
export const SYBIL_SUBFLOOR_MIN_CHANNELS = 50;
|
|
32
|
-
export const SYBIL_BURN_RATE_THRESHOLD = 30;
|
|
33
|
-
export const SYBIL_BURN_RATE_SATURATION = 80;
|
|
34
|
-
export const SYBIL_YOUNG_MAX_DAYS = 14;
|
|
35
|
-
export const SYBIL_YOUNG_CHANNEL_FLOOR = 100;
|
|
36
|
-
export const SYBIL_YOUNG_CHANNEL_SATURATION = 400;
|
|
37
|
-
export const SYBIL_ADVERTISED_CHEAP_INPUT_USD_PER_MILLION = 0.10;
|
|
38
|
-
function clamp(value, lo, hi) {
|
|
39
|
-
if (!Number.isFinite(value))
|
|
40
|
-
return lo;
|
|
41
|
-
if (value <= lo)
|
|
42
|
-
return lo;
|
|
43
|
-
if (value >= hi)
|
|
44
|
-
return hi;
|
|
45
|
-
return value;
|
|
46
|
-
}
|
|
47
|
-
function nonNegativeFinite(value) {
|
|
48
|
-
return typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : null;
|
|
49
|
-
}
|
|
50
|
-
function logConfidence(value, cap) {
|
|
51
|
-
if (!Number.isFinite(value) || value <= 0)
|
|
52
|
-
return 0;
|
|
53
|
-
return clamp(Math.log10(1 + value) / Math.log10(1 + cap), 0, 1);
|
|
54
|
-
}
|
|
55
|
-
export function computeVerificationScoreBonus(peer) {
|
|
56
|
-
const results = peer.verificationResults;
|
|
57
|
-
if (!results)
|
|
58
|
-
return 0;
|
|
59
|
-
const verifiedDomains = results.domains.filter((result) => result.verified).length;
|
|
60
|
-
const verifiedGithub = results.github.filter((result) => result.verified).length;
|
|
61
|
-
return clamp(verifiedDomains * ON_CHAIN_VERIFICATION_DOMAIN_POINTS
|
|
62
|
-
+ verifiedGithub * ON_CHAIN_VERIFICATION_GITHUB_POINTS, 0, ON_CHAIN_VERIFICATION_MAX_POINTS);
|
|
63
|
-
}
|
|
64
|
-
function collectPeerServices(peer) {
|
|
65
|
-
const out = new Set();
|
|
66
|
-
const pricing = peer.providerPricing;
|
|
67
|
-
if (!pricing)
|
|
68
|
-
return [];
|
|
69
|
-
for (const entry of Object.values(pricing)) {
|
|
70
|
-
if (entry.services) {
|
|
71
|
-
for (const name of Object.keys(entry.services)) {
|
|
72
|
-
const trimmed = name.trim();
|
|
73
|
-
if (trimmed.length > 0)
|
|
74
|
-
out.add(trimmed);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return Array.from(out);
|
|
79
|
-
}
|
|
80
|
-
function minAdvertisedInputUsdPerMillion(peer) {
|
|
81
|
-
let best = null;
|
|
82
|
-
const consider = (value) => {
|
|
83
|
-
if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {
|
|
84
|
-
if (best === null || value < best)
|
|
85
|
-
best = value;
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
const pricing = peer.providerPricing;
|
|
89
|
-
if (pricing) {
|
|
90
|
-
for (const entry of Object.values(pricing)) {
|
|
91
|
-
consider(entry.defaults?.inputUsdPerMillion);
|
|
92
|
-
if (entry.services) {
|
|
93
|
-
for (const s of Object.values(entry.services)) {
|
|
94
|
-
consider(s.inputUsdPerMillion);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
consider(peer.defaultInputUsdPerMillion);
|
|
100
|
-
return best;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Compute raw on-chain trust, or `null` when chain stats are unavailable.
|
|
104
|
-
*
|
|
105
|
-
* Trust is anchored to settled USDC, but volume credit vests with seller age.
|
|
106
|
-
* Channel count, ghost rate, last-settled recency, stake, and ticket shape gate
|
|
107
|
-
* the displayed score instead of multiplying settled volume directly.
|
|
108
|
-
*/
|
|
109
|
-
export function computeOnChainTrustBreakdown(peer, nowMs = Date.now()) {
|
|
110
|
-
const channels = nonNegativeFinite(peer.onChainChannelCount);
|
|
111
|
-
const volumeMicros = nonNegativeFinite(peer.onChainTotalVolumeUsdcMicros);
|
|
112
|
-
if (channels == null || volumeMicros == null)
|
|
113
|
-
return null;
|
|
114
|
-
const volumeUsdc = volumeMicros / 1_000_000;
|
|
115
|
-
const avgChannelUsdc = channels > 0 ? volumeUsdc / channels : 0;
|
|
116
|
-
const lastSettledAtSec = nonNegativeFinite(peer.onChainLastSettledAtSec);
|
|
117
|
-
const daysSinceLastSettled = lastSettledAtSec && lastSettledAtSec > 0
|
|
118
|
-
? Math.max(0, (nowMs - lastSettledAtSec * 1000) / 86_400_000)
|
|
119
|
-
: null;
|
|
120
|
-
let recencyGate;
|
|
121
|
-
if (daysSinceLastSettled === null) {
|
|
122
|
-
recencyGate = 0;
|
|
123
|
-
}
|
|
124
|
-
else if (daysSinceLastSettled < ON_CHAIN_TRUST_RECENCY_FRESH_DAYS) {
|
|
125
|
-
recencyGate = 1;
|
|
126
|
-
}
|
|
127
|
-
else if (daysSinceLastSettled < ON_CHAIN_TRUST_RECENCY_STALE_DAYS) {
|
|
128
|
-
recencyGate = ON_CHAIN_TRUST_RECENCY_DORMANT_FACTOR;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
recencyGate = 0;
|
|
132
|
-
}
|
|
133
|
-
const stakeUsdc = (nonNegativeFinite(peer.onChainStakeUsdcMicros) ?? 0) / 1_000_000;
|
|
134
|
-
const stakeGate = stakeUsdc >= ON_CHAIN_TRUST_STAKE_THRESHOLD_USDC
|
|
135
|
-
? 1
|
|
136
|
-
: ON_CHAIN_TRUST_NO_STAKE_FACTOR;
|
|
137
|
-
const ticketBonus = clamp(avgChannelUsdc / ON_CHAIN_TRUST_TICKET_TARGET_USDC, ON_CHAIN_TRUST_TICKET_MIN, ON_CHAIN_TRUST_TICKET_MAX);
|
|
138
|
-
const stakedAtSec = nonNegativeFinite(peer.onChainStakedAtSec);
|
|
139
|
-
const daysSinceStaked = stakedAtSec && stakedAtSec > 0
|
|
140
|
-
? Math.max(0, (nowMs - stakedAtSec * 1000) / 86_400_000)
|
|
141
|
-
: null;
|
|
142
|
-
// Some migrated/facade accounts have no usable staking timestamp. Only
|
|
143
|
-
// infer maturity once verified activity reaches the channel-confidence
|
|
144
|
-
// cap; ordinary accounts with an unknown age retain the $25 new-seller
|
|
145
|
-
// volume cap.
|
|
146
|
-
const inferredMatureAccount = daysSinceStaked === null
|
|
147
|
-
&& stakeUsdc >= ON_CHAIN_TRUST_STAKE_THRESHOLD_USDC
|
|
148
|
-
&& channels >= ON_CHAIN_TRUST_CHANNEL_CONFIDENCE_CAP;
|
|
149
|
-
const maturityDays = daysSinceStaked
|
|
150
|
-
?? (inferredMatureAccount ? ON_CHAIN_TRUST_MATURITY_DAYS : 0);
|
|
151
|
-
const volumeCreditCapUsdc = ON_CHAIN_TRUST_INITIAL_CREDIT_USDC
|
|
152
|
-
+ maturityDays * ON_CHAIN_TRUST_DAILY_CREDIT_USDC;
|
|
153
|
-
const creditedVolumeUsdc = Math.min(volumeUsdc, volumeCreditCapUsdc);
|
|
154
|
-
const ageGate = clamp(maturityDays / ON_CHAIN_TRUST_MATURITY_DAYS, 0.20, 1);
|
|
155
|
-
const channelConfidence = 0.35
|
|
156
|
-
+ 0.65 * logConfidence(channels, ON_CHAIN_TRUST_CHANNEL_CONFIDENCE_CAP);
|
|
157
|
-
const ghosts = nonNegativeFinite(peer.onChainGhostCount) ?? 0;
|
|
158
|
-
const ghostRate = channels + ghosts > 0 ? ghosts / (channels + ghosts) : 0;
|
|
159
|
-
const ghostGate = clamp(1 - ghostRate * ON_CHAIN_TRUST_GHOST_PENALTY_WEIGHT, ON_CHAIN_TRUST_MIN_GHOST_FACTOR, 1);
|
|
160
|
-
let ticketGate = 1;
|
|
161
|
-
if (channels >= ON_CHAIN_TRUST_LOW_TICKET_MIN_CHANNELS && avgChannelUsdc < ON_CHAIN_TRUST_LOW_TICKET_USDC) {
|
|
162
|
-
ticketGate = ON_CHAIN_TRUST_LOW_TICKET_FACTOR;
|
|
163
|
-
}
|
|
164
|
-
else if (channels > 0 && channels < ON_CHAIN_TRUST_HIGH_TICKET_MAX_CHANNELS && avgChannelUsdc > ON_CHAIN_TRUST_HIGH_TICKET_USDC) {
|
|
165
|
-
ticketGate = ON_CHAIN_TRUST_HIGH_TICKET_FACTOR;
|
|
166
|
-
}
|
|
167
|
-
const scoreMultiplier = channelConfidence
|
|
168
|
-
* ageGate
|
|
169
|
-
* ghostGate
|
|
170
|
-
* recencyGate
|
|
171
|
-
* stakeGate
|
|
172
|
-
* ticketGate;
|
|
173
|
-
const verificationBonusPoints = computeVerificationScoreBonus(peer);
|
|
174
|
-
const trust = creditedVolumeUsdc;
|
|
175
|
-
return {
|
|
176
|
-
trust,
|
|
177
|
-
volumeUsdc,
|
|
178
|
-
creditedVolumeUsdc,
|
|
179
|
-
volumeCreditCapUsdc,
|
|
180
|
-
channels,
|
|
181
|
-
avgChannelUsdc,
|
|
182
|
-
ticketBonus,
|
|
183
|
-
ticketGate,
|
|
184
|
-
recencyGate,
|
|
185
|
-
stakeGate,
|
|
186
|
-
ageGate,
|
|
187
|
-
channelConfidence,
|
|
188
|
-
ghostGate,
|
|
189
|
-
scoreMultiplier,
|
|
190
|
-
verificationBonusPoints,
|
|
191
|
-
daysSinceLastSettled,
|
|
192
|
-
daysSinceStaked,
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
export function computeOnChainTrust(peer, nowMs = Date.now()) {
|
|
196
|
-
return computeOnChainTrustBreakdown(peer, nowMs)?.trust ?? null;
|
|
197
|
-
}
|
|
198
|
-
export function buildSybilContext(peers) {
|
|
199
|
-
const serviceCounts = new Map();
|
|
200
|
-
for (const peer of peers) {
|
|
201
|
-
for (const name of collectPeerServices(peer)) {
|
|
202
|
-
serviceCounts.set(name, (serviceCounts.get(name) ?? 0) + 1);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
return { serviceCounts };
|
|
206
|
-
}
|
|
207
|
-
/** Heuristic wash-trading risk in [0, 1]. */
|
|
208
|
-
export function computeOnChainSybilRisk(peer, ctx, nowMs = Date.now()) {
|
|
209
|
-
const channels = nonNegativeFinite(peer.onChainChannelCount) ?? 0;
|
|
210
|
-
const volumeUsdc = (nonNegativeFinite(peer.onChainTotalVolumeUsdcMicros) ?? 0) / 1_000_000;
|
|
211
|
-
const avgChannelUsdc = channels > 0 ? volumeUsdc / channels : 0;
|
|
212
|
-
const stakedAtSec = nonNegativeFinite(peer.onChainStakedAtSec);
|
|
213
|
-
const daysSinceStaked = stakedAtSec && stakedAtSec > 0
|
|
214
|
-
? Math.max(0, (nowMs - stakedAtSec * 1000) / 86_400_000)
|
|
215
|
-
: null;
|
|
216
|
-
const channelsPerDay = daysSinceStaked !== null && daysSinceStaked > 0
|
|
217
|
-
? channels / daysSinceStaked
|
|
218
|
-
: null;
|
|
219
|
-
const services = collectPeerServices(peer);
|
|
220
|
-
const advertisedInput = minAdvertisedInputUsdPerMillion(peer);
|
|
221
|
-
let narrowCustom = 0;
|
|
222
|
-
if (services.length > 0 && services.length <= 2) {
|
|
223
|
-
const allExclusive = services.every((s) => (ctx.serviceCounts.get(s) ?? 0) <= 1);
|
|
224
|
-
if (allExclusive)
|
|
225
|
-
narrowCustom = services.length === 1 ? 1.0 : 0.5;
|
|
226
|
-
}
|
|
227
|
-
let burnRate = 0;
|
|
228
|
-
if (narrowCustom > 0 && channelsPerDay !== null) {
|
|
229
|
-
burnRate = clamp((channelsPerDay - SYBIL_BURN_RATE_THRESHOLD)
|
|
230
|
-
/ (SYBIL_BURN_RATE_SATURATION - SYBIL_BURN_RATE_THRESHOLD), 0, 1);
|
|
231
|
-
}
|
|
232
|
-
let subfloorTicket = 0;
|
|
233
|
-
const advertisedCheap = advertisedInput != null
|
|
234
|
-
&& advertisedInput <= SYBIL_ADVERTISED_CHEAP_INPUT_USD_PER_MILLION;
|
|
235
|
-
if (!advertisedCheap && channels >= SYBIL_SUBFLOOR_MIN_CHANNELS && avgChannelUsdc < SYBIL_SUBFLOOR_TICKET_USDC) {
|
|
236
|
-
subfloorTicket = clamp((SYBIL_SUBFLOOR_TICKET_USDC - avgChannelUsdc) / SYBIL_SUBFLOOR_TICKET_USDC, 0, 1);
|
|
237
|
-
}
|
|
238
|
-
let youngHighVol = 0;
|
|
239
|
-
if (daysSinceStaked !== null
|
|
240
|
-
&& daysSinceStaked < SYBIL_YOUNG_MAX_DAYS
|
|
241
|
-
&& channels > SYBIL_YOUNG_CHANNEL_FLOOR) {
|
|
242
|
-
const ageComponent = clamp((SYBIL_YOUNG_MAX_DAYS - daysSinceStaked) / SYBIL_YOUNG_MAX_DAYS, 0, 1);
|
|
243
|
-
const volComponent = clamp((channels - SYBIL_YOUNG_CHANNEL_FLOOR)
|
|
244
|
-
/ (SYBIL_YOUNG_CHANNEL_SATURATION - SYBIL_YOUNG_CHANNEL_FLOOR), 0, 0.5);
|
|
245
|
-
youngHighVol = Math.min(1, ageComponent + volComponent);
|
|
246
|
-
}
|
|
247
|
-
const signals = {
|
|
248
|
-
subfloor_ticket: subfloorTicket,
|
|
249
|
-
burn_rate: burnRate,
|
|
250
|
-
narrow_custom: narrowCustom,
|
|
251
|
-
young_high_vol: youngHighVol,
|
|
252
|
-
};
|
|
253
|
-
const risk = Math.min(1, SYBIL_WEIGHT_SUBFLOOR_TICKET * subfloorTicket
|
|
254
|
-
+ SYBIL_WEIGHT_BURN_RATE * burnRate
|
|
255
|
-
+ SYBIL_WEIGHT_NARROW_CUSTOM * narrowCustom
|
|
256
|
-
+ SYBIL_WEIGHT_YOUNG_HIGH_VOL * youngHighVol);
|
|
257
|
-
const flags = Object.keys(signals)
|
|
258
|
-
.filter((k) => signals[k] > 0.05)
|
|
259
|
-
.sort((a, b) => signals[b] - signals[a]);
|
|
260
|
-
return { risk, flags, signals };
|
|
261
|
-
}
|
|
262
|
-
export function scoreFromTrust(trust) {
|
|
263
|
-
if (!Number.isFinite(trust) || trust <= 0)
|
|
264
|
-
return 0;
|
|
265
|
-
return Math.min(100, (100 / ON_CHAIN_SCORE_LOG_CAP_EXPONENT) * Math.log10(1 + trust));
|
|
266
|
-
}
|
|
267
|
-
function scoreFromBreakdown(breakdown, risk) {
|
|
268
|
-
const baseScore = scoreFromTrust(breakdown.trust);
|
|
269
|
-
const chainScore = baseScore * breakdown.scoreMultiplier * (1 - clamp(risk, 0, 1));
|
|
270
|
-
if (chainScore <= 0)
|
|
271
|
-
return chainScore;
|
|
272
|
-
return Math.min(100, chainScore + breakdown.verificationBonusPoints);
|
|
273
|
-
}
|
|
274
|
-
export function computeOnChainScoreWithRisk(peer, risk, nowMs = Date.now()) {
|
|
275
|
-
const breakdown = computeOnChainTrustBreakdown(peer, nowMs);
|
|
276
|
-
if (breakdown === null)
|
|
277
|
-
return null;
|
|
278
|
-
return scoreFromBreakdown(breakdown, risk);
|
|
279
|
-
}
|
|
280
|
-
export function computeOnChainScore(peer, ctx, nowMs = Date.now()) {
|
|
281
|
-
const breakdown = computeOnChainTrustBreakdown(peer, nowMs);
|
|
282
|
-
if (breakdown === null)
|
|
283
|
-
return null;
|
|
284
|
-
const risk = ctx ? computeOnChainSybilRisk(peer, ctx, nowMs).risk : 0;
|
|
285
|
-
return scoreFromBreakdown(breakdown, risk);
|
|
286
|
-
}
|
|
287
|
-
export function computeOnChainReputationScore(peer, nowMs = Date.now()) {
|
|
288
|
-
return computeOnChainScore(peer, undefined, nowMs);
|
|
289
|
-
}
|
|
290
|
-
//# sourceMappingURL=on-chain-reputation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"on-chain-reputation.js","sourceRoot":"","sources":["../../src/reputation/on-chain-reputation.ts"],"names":[],"mappings":"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"}
|