@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
@@ -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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"}