@antseed/node 0.2.163 → 0.2.165
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/health/self-health-error.d.ts +8 -0
- package/dist/health/self-health-error.d.ts.map +1 -1
- package/dist/health/self-health-error.js +22 -0
- package/dist/health/self-health-error.js.map +1 -1
- package/dist/health/upstream-credit.d.ts.map +1 -1
- package/dist/health/upstream-credit.js +3 -2
- package/dist/health/upstream-credit.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +5 -3
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +3 -3
- package/dist/node.js.map +1 -1
- package/dist/payments/chain-config.d.ts +11 -2
- package/dist/payments/chain-config.d.ts.map +1 -1
- package/dist/payments/chain-config.js +12 -1
- package/dist/payments/chain-config.js.map +1 -1
- package/dist/payments/evm/verification-signals-client.d.ts +20 -11
- package/dist/payments/evm/verification-signals-client.d.ts.map +1 -1
- package/dist/payments/evm/verification-signals-client.js +32 -16
- package/dist/payments/evm/verification-signals-client.js.map +1 -1
- package/dist/payments/evm/verifier-client.d.ts +90 -18
- package/dist/payments/evm/verifier-client.d.ts.map +1 -1
- package/dist/payments/evm/verifier-client.js +205 -56
- package/dist/payments/evm/verifier-client.js.map +1 -1
- package/dist/payments/generated-contract-addresses.d.ts +3 -2
- package/dist/payments/generated-contract-addresses.d.ts.map +1 -1
- package/dist/payments/generated-contract-addresses.js +3 -2
- package/dist/payments/generated-contract-addresses.js.map +1 -1
- package/dist/payments/index.d.ts +3 -3
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +2 -2
- package/dist/payments/index.js.map +1 -1
- package/dist/proxy/buyer-response-headers.d.ts +2 -0
- package/dist/proxy/buyer-response-headers.d.ts.map +1 -0
- package/dist/proxy/buyer-response-headers.js +31 -0
- package/dist/proxy/buyer-response-headers.js.map +1 -0
- package/dist/reputation/model-reputation.d.ts +1 -1
- package/dist/reputation/model-reputation.js +1 -1
- package/dist/seller-request-handler.d.ts.map +1 -1
- package/dist/seller-request-handler.js +30 -8
- package/dist/seller-request-handler.js.map +1 -1
- package/dist/types/peer.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { type AbstractProvider } from 'ethers';
|
|
2
2
|
/**
|
|
3
3
|
* Reads which advertised services of a batch of sellers have a live DIFF
|
|
4
|
-
* verdict on `
|
|
4
|
+
* verdict on `AntseedVerificationResults`, the verification results layer,
|
|
5
|
+
* whatever verification method (audit) recorded it. Two Multicall3 round
|
|
6
|
+
* trips per read, plus one on the first read when the results address has to
|
|
7
|
+
* be discovered from the KBF audits contract (`kbf.results()`, cached):
|
|
5
8
|
*
|
|
6
|
-
* round 1:
|
|
7
|
-
*
|
|
8
|
-
* verification.serviceStatus
|
|
9
|
+
* round 1: results.emissionsGate (first read only; it is immutable), and per
|
|
10
|
+
* (agentId, service) results.serviceStatus
|
|
9
11
|
* round 2: emissionsGate.currentEpoch
|
|
10
12
|
*
|
|
11
|
-
* `serviceStatus` holds only recorded results.
|
|
13
|
+
* `serviceStatus` holds only recorded results. KBF records a DIFF once
|
|
12
14
|
* `requiredReports[DIFF]` (2 on Base) distinct approved auditors report it in
|
|
13
15
|
* the same epoch and report round; a DIFF still waiting for its second auditor
|
|
14
|
-
* stays in the contract's report counts and leaves `serviceStatus` at the
|
|
16
|
+
* stays in the KBF contract's report counts and leaves `serviceStatus` at the
|
|
15
17
|
* previous result, so it never cuts reputation here.
|
|
16
18
|
*
|
|
17
19
|
* A recorded verdict is live exactly as the contract counts it:
|
|
18
|
-
* `currentEpoch < verdict.
|
|
19
|
-
* and expired verdicts are not DIFF.
|
|
20
|
+
* `currentEpoch < verdict.validUntilEpoch`, the expiry the recording audit
|
|
21
|
+
* chose. SAME, UNDETERMINED, NONE and expired verdicts are not DIFF.
|
|
20
22
|
*/
|
|
21
23
|
export interface VerificationServiceQuery {
|
|
22
24
|
agentId: number;
|
|
@@ -27,13 +29,20 @@ export declare class VerificationSignalsClient {
|
|
|
27
29
|
private readonly _verificationAddress;
|
|
28
30
|
private readonly _read;
|
|
29
31
|
private _emissionsGate;
|
|
30
|
-
|
|
32
|
+
private _resultsAddress;
|
|
33
|
+
/**
|
|
34
|
+
* @param _verificationAddress The KBF audits contract (`verificationContractAddress`).
|
|
35
|
+
* @param resultsAddress The results layer; read from `kbf.results()` on first use when absent.
|
|
36
|
+
*/
|
|
37
|
+
constructor(provider: AbstractProvider, _verificationAddress: string, resultsAddress?: string);
|
|
38
|
+
/** The results layer address, discovered once from the KBF contract when not configured. */
|
|
39
|
+
private _results;
|
|
31
40
|
/**
|
|
32
41
|
* Live DIFF services per agent id, as verification keys (trimmed,
|
|
33
42
|
* lowercased service names). An agent is missing from the result when any
|
|
34
43
|
* of its reads failed, so a caller can keep its previous answer instead of
|
|
35
|
-
* clearing a penalty on an RPC hiccup. Throws when the epoch
|
|
36
|
-
*
|
|
44
|
+
* clearing a penalty on an RPC hiccup. Throws when the current epoch
|
|
45
|
+
* cannot be read at all.
|
|
37
46
|
*/
|
|
38
47
|
readDiffServices(queries: readonly VerificationServiceQuery[]): Promise<Map<number, string[]>>;
|
|
39
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-signals-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/verification-signals-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAKtE
|
|
1
|
+
{"version":3,"file":"verification-signals-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/verification-signals-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAKtE;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAYD,qBAAa,yBAAyB;IAWlC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAVvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqE;IAC3F,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,eAAe,CAAqB;IAE5C;;;OAGG;gBAED,QAAQ,EAAE,gBAAgB,EACT,oBAAoB,EAAE,MAAM,EAC7C,cAAc,CAAC,EAAE,MAAM;IAMzB,4FAA4F;YAC9E,QAAQ;IAStB;;;;;;OAMG;IACG,gBAAgB,CAAC,OAAO,EAAE,SAAS,wBAAwB,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAuDrG"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Interface, getAddress } from 'ethers';
|
|
2
2
|
import { createCachedMulticallReader } from './multicall.js';
|
|
3
|
-
import {
|
|
3
|
+
import { KBF_AUDITS_ABI, VERIFICATION_RESULTS_ABI, VERIFIER_VERDICT, serviceHash } from './verifier-client.js';
|
|
4
4
|
import { verificationServiceKey } from '../../reputation/model-reputation.js';
|
|
5
5
|
const VERDICT_DIFF = BigInt(VERIFIER_VERDICT.DIFF);
|
|
6
|
-
const
|
|
6
|
+
const RESULTS_IFACE = new Interface(VERIFICATION_RESULTS_ABI);
|
|
7
|
+
const KBF_IFACE = new Interface(KBF_AUDITS_ABI);
|
|
7
8
|
const GATE_IFACE = new Interface(['function currentEpoch() view returns (uint256)']);
|
|
8
9
|
function first(result) {
|
|
9
10
|
return result && result.length > 0 ? result[0] : undefined;
|
|
@@ -12,16 +13,34 @@ export class VerificationSignalsClient {
|
|
|
12
13
|
_verificationAddress;
|
|
13
14
|
_read;
|
|
14
15
|
_emissionsGate;
|
|
15
|
-
|
|
16
|
+
_resultsAddress;
|
|
17
|
+
/**
|
|
18
|
+
* @param _verificationAddress The KBF audits contract (`verificationContractAddress`).
|
|
19
|
+
* @param resultsAddress The results layer; read from `kbf.results()` on first use when absent.
|
|
20
|
+
*/
|
|
21
|
+
constructor(provider, _verificationAddress, resultsAddress) {
|
|
16
22
|
this._verificationAddress = _verificationAddress;
|
|
17
23
|
this._read = createCachedMulticallReader(provider);
|
|
24
|
+
if (resultsAddress)
|
|
25
|
+
this._resultsAddress = getAddress(resultsAddress);
|
|
26
|
+
}
|
|
27
|
+
/** The results layer address, discovered once from the KBF contract when not configured. */
|
|
28
|
+
async _results() {
|
|
29
|
+
if (this._resultsAddress)
|
|
30
|
+
return this._resultsAddress;
|
|
31
|
+
const [result] = await this._read([{ target: this._verificationAddress, iface: KBF_IFACE, method: 'results' }]);
|
|
32
|
+
const address = first(result);
|
|
33
|
+
if (typeof address !== 'string')
|
|
34
|
+
throw new Error('verification results() read failed');
|
|
35
|
+
this._resultsAddress = getAddress(address);
|
|
36
|
+
return this._resultsAddress;
|
|
18
37
|
}
|
|
19
38
|
/**
|
|
20
39
|
* Live DIFF services per agent id, as verification keys (trimmed,
|
|
21
40
|
* lowercased service names). An agent is missing from the result when any
|
|
22
41
|
* of its reads failed, so a caller can keep its previous answer instead of
|
|
23
|
-
* clearing a penalty on an RPC hiccup. Throws when the epoch
|
|
24
|
-
*
|
|
42
|
+
* clearing a penalty on an RPC hiccup. Throws when the current epoch
|
|
43
|
+
* cannot be read at all.
|
|
25
44
|
*/
|
|
26
45
|
async readDiffServices(queries) {
|
|
27
46
|
const out = new Map();
|
|
@@ -39,24 +58,21 @@ export class VerificationSignalsClient {
|
|
|
39
58
|
}
|
|
40
59
|
if (agents.size === 0)
|
|
41
60
|
return out;
|
|
42
|
-
const target = this.
|
|
43
|
-
const requests = [
|
|
61
|
+
const target = await this._results();
|
|
62
|
+
const requests = [];
|
|
44
63
|
const needsGate = this._emissionsGate === undefined;
|
|
45
64
|
if (needsGate)
|
|
46
|
-
requests.push({ target, iface:
|
|
65
|
+
requests.push({ target, iface: RESULTS_IFACE, method: 'emissionsGate' });
|
|
47
66
|
const statusCalls = [];
|
|
48
67
|
for (const [agentId, keys] of agents) {
|
|
49
68
|
for (const key of keys) {
|
|
50
69
|
statusCalls.push({ agentId, key, index: requests.length });
|
|
51
|
-
requests.push({ target, iface:
|
|
70
|
+
requests.push({ target, iface: RESULTS_IFACE, method: 'serviceStatus', args: [BigInt(agentId), serviceHash(key)] });
|
|
52
71
|
}
|
|
53
72
|
}
|
|
54
73
|
const results = await this._read(requests);
|
|
55
|
-
const validity = first(results[0]);
|
|
56
|
-
if (typeof validity !== 'bigint')
|
|
57
|
-
throw new Error('verification validityEpochs read failed');
|
|
58
74
|
if (needsGate) {
|
|
59
|
-
const gate = first(results[
|
|
75
|
+
const gate = first(results[0]);
|
|
60
76
|
if (typeof gate !== 'string')
|
|
61
77
|
throw new Error('verification emissionsGate read failed');
|
|
62
78
|
this._emissionsGate = getAddress(gate);
|
|
@@ -75,12 +91,12 @@ export class VerificationSignalsClient {
|
|
|
75
91
|
continue;
|
|
76
92
|
}
|
|
77
93
|
const verdict = status.verdict ?? status[1];
|
|
78
|
-
const
|
|
79
|
-
if (typeof verdict !== 'bigint' || typeof
|
|
94
|
+
const validUntil = status.validUntilEpoch ?? status[5];
|
|
95
|
+
if (typeof verdict !== 'bigint' || typeof validUntil !== 'bigint') {
|
|
80
96
|
failed.add(call.agentId);
|
|
81
97
|
continue;
|
|
82
98
|
}
|
|
83
|
-
if (verdict === VERDICT_DIFF && currentEpoch <
|
|
99
|
+
if (verdict === VERDICT_DIFF && currentEpoch < validUntil)
|
|
84
100
|
out.get(call.agentId).push(call.key);
|
|
85
101
|
}
|
|
86
102
|
for (const agentId of failed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification-signals-client.js","sourceRoot":"","sources":["../../../src/payments/evm/verification-signals-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAyB,MAAM,QAAQ,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAyB,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"verification-signals-client.js","sourceRoot":"","sources":["../../../src/payments/evm/verification-signals-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,17 +3,23 @@ import { BaseEvmClient } from './base-evm-client.js';
|
|
|
3
3
|
export interface VerifierClientConfig {
|
|
4
4
|
rpcUrl: string;
|
|
5
5
|
fallbackRpcUrls?: string[];
|
|
6
|
+
/**
|
|
7
|
+
* The `AntseedKbfAudits` contract: the KBF audit auditors submit audits to, which also holds the
|
|
8
|
+
* approved auditors. The results layer is discovered from it (`results()`) unless given below.
|
|
9
|
+
*/
|
|
6
10
|
contractAddress: string;
|
|
7
11
|
evmChainId?: number;
|
|
8
12
|
/**
|
|
9
|
-
* Block the
|
|
13
|
+
* Block the KBF audits contract was deployed at. Default lower bound for
|
|
10
14
|
* event queries; without it, queries require an explicit `fromBlock`.
|
|
11
15
|
*/
|
|
12
16
|
deploymentBlock?: number;
|
|
17
|
+
/** `AntseedVerificationResults` address; read from `kbf.results()` when absent. */
|
|
18
|
+
resultsAddress?: string;
|
|
13
19
|
/** Max blocks per `eth_getLogs` window (defaults to 10k). */
|
|
14
20
|
logQueryChunkBlocks?: number;
|
|
15
21
|
}
|
|
16
|
-
/** Mirrors
|
|
22
|
+
/** Mirrors IAntseedVerificationResults.Verdict. */
|
|
17
23
|
export declare const VERIFIER_VERDICT: {
|
|
18
24
|
readonly NONE: 0;
|
|
19
25
|
readonly SAME: 1;
|
|
@@ -23,7 +29,7 @@ export declare const VERIFIER_VERDICT: {
|
|
|
23
29
|
export type VerifierVerdictName = Exclude<keyof typeof VERIFIER_VERDICT, 'NONE'>;
|
|
24
30
|
export type VerifierVerdict = (typeof VERIFIER_VERDICT)[keyof typeof VERIFIER_VERDICT];
|
|
25
31
|
export declare function verifierVerdict(name: VerifierVerdictName): VerifierVerdict;
|
|
26
|
-
/**
|
|
32
|
+
/** AntseedKbfAudits.MAX_RESULTS_PER_AUDIT. */
|
|
27
33
|
export declare const MAX_RESULTS_PER_MODEL_AUDIT = 256;
|
|
28
34
|
export interface ServiceResultInput {
|
|
29
35
|
agentId: bigint;
|
|
@@ -43,7 +49,7 @@ export interface ServiceAuditedEvent {
|
|
|
43
49
|
auditor: string;
|
|
44
50
|
modelHash: string;
|
|
45
51
|
verdict: VerifierVerdict;
|
|
46
|
-
/** The service's report round: it moves on whenever the service's verdict
|
|
52
|
+
/** The service's report round: it moves on whenever any audit moves the service's verdict into or out of DIFF, an auditor is revoked, or the results owner clears the service; only reports of the current round count. */
|
|
47
53
|
round: number;
|
|
48
54
|
/** Distinct auditors reporting `verdict` for this service and model in the epoch and round, this report included. */
|
|
49
55
|
reports: number;
|
|
@@ -83,7 +89,25 @@ export interface AuditorCredits {
|
|
|
83
89
|
auditor: bigint;
|
|
84
90
|
total: bigint;
|
|
85
91
|
}
|
|
86
|
-
|
|
92
|
+
/** How an auditor shows itself in UIs (`AntseedKbfAudits.auditorProfile`). Empty strings when unset. */
|
|
93
|
+
export interface AuditorProfile {
|
|
94
|
+
name: string;
|
|
95
|
+
/** `https://` or `ipfs://` link to a square image. */
|
|
96
|
+
iconUri: string;
|
|
97
|
+
/** `https://` or `ipfs://` website or profile link. */
|
|
98
|
+
url: string;
|
|
99
|
+
}
|
|
100
|
+
/** AntseedKbfAudits profile limits. */
|
|
101
|
+
export declare const MAX_AUDITOR_PROFILE_NAME_BYTES = 64;
|
|
102
|
+
export declare const MAX_AUDITOR_PROFILE_URI_BYTES = 256;
|
|
103
|
+
/** `AntseedVerificationResults.REWARDS_OFF`: an audit's rewards start epoch while its rewards are off. */
|
|
104
|
+
export declare const VERIFICATION_REWARDS_OFF: bigint;
|
|
105
|
+
/** Throws when `profile` would be rejected by `setAuditorProfile`, with the reason. */
|
|
106
|
+
export declare function validateAuditorProfile(profile: AuditorProfile): void;
|
|
107
|
+
/** `AntseedKbfAudits`: the KBF audit auditors submit to. */
|
|
108
|
+
export declare const KBF_AUDITS_ABI: readonly ["function submitModelAudit(uint256 expectedEpoch,bytes32 modelHash,bytes32 evidenceHash,string evidenceUri,(uint256 agentId,bytes32 serviceHash,uint8 verdict)[] results) external", "function requiredReports(uint8 verdict) external view returns (uint8)", "function reportRound(uint256 agentId,bytes32 serviceHash) external view returns (uint256)", "function reportKey(uint256 epoch,uint256 agentId,bytes32 serviceHash,bytes32 modelHash,uint256 round) external pure returns (bytes32)", "function reportOf(bytes32 key,address auditor) external view returns (uint8)", "function reportCount(bytes32 key,uint8 verdict) external view returns (uint256)", "function creditedAudits(uint256 epoch,address auditor,bytes32 modelHash) external view returns (uint256)", "function maxCreditsPerModelPerEpoch() external view returns (uint32)", "function creditsPerAudit() external view returns (uint32)", "function modelCreditsPerAudit(bytes32 modelHash) external view returns (uint32)", "function creditsFor(bytes32 modelHash) external view returns (uint256)", "function validityEpochs() external view returns (uint8)", "function diffReplacementReports() external view returns (uint8)", "function results() external view returns (address)", "function sellerPools() external view returns (address)", "function identityRegistry() external view returns (address)", "function approvedAuditors(address auditor) external view returns (bool)", "function auditorRevocations() external view returns (uint256)", "function agentOwner(uint256 agentId) external view returns (bool known,address owner)", "function auditorProfile(address auditor) external view returns ((string name,string iconUri,string url))", "function setAuditorProfile(string name,string iconUri,string url) external", "event AuditorSet(address indexed auditor,bool approved,uint256 revocations)", "event AuditorProfileSet(address indexed auditor,string name,string iconUri,string url)", "event ModelAudited(bytes32 indexed modelHash,address indexed auditor,uint256 indexed epoch,bytes32 evidenceHash,string evidenceUri,uint256 resultCount)", "event ServiceAudited(uint256 indexed agentId,bytes32 indexed serviceHash,address indexed auditor,bytes32 modelHash,uint8 verdict,uint256 round,uint256 reports,uint256 required)", "event AuditCredited(uint256 indexed epoch,address indexed auditor,bytes32 indexed modelHash,uint256 credits)", "event UnknownAgentSkipped(uint256 indexed agentId,bytes32 indexed modelHash)", "event ValidityEpochsSet(uint8 validityEpochs)", "event CreditsPerAuditSet(uint32 credits)", "event ModelCreditsPerAuditSet(bytes32 indexed modelHash,uint32 credits)"];
|
|
109
|
+
/** `AntseedVerificationResults`: verdicts and verification rewards, for every audit. */
|
|
110
|
+
export declare const VERIFICATION_RESULTS_ABI: readonly ["function serviceStatus(uint256 agentId,bytes32 serviceHash) external view returns ((bytes32 modelHash,uint8 verdict,uint64 updatedAt,uint64 epoch,address audit,uint64 validUntilEpoch))", "function agentStatus(uint256 agentId) external view returns ((uint16 verifiedCount,uint16 diffCount))", "function isVerified(uint256 agentId) external view returns (bool)", "function liveVerdict(uint256 agentId,bytes32 serviceHash) external view returns (uint8)", "function serviceClears(uint256 agentId,bytes32 serviceHash) external view returns (uint256)", "function diffChanges(uint256 agentId,bytes32 serviceHash) external view returns (uint256)", "function emissionsGate() external view returns (address)", "function currentEpoch() external view returns (uint256)", "function isAudit(address audit) external view returns (bool)", "function auditShareBps(address audit) external view returns (uint16)", "function auditShareBpsAt(address audit,uint256 epoch) external view returns (uint16)", "function auditBudget(address audit,uint256 epoch) external view returns (uint256)", "function rewardsStartEpoch(address audit) external view returns (uint64)", "function maxCreditsPerAuditorPerEpoch(address audit) external view returns (uint32)", "function maxAuditorShareBps(address audit) external view returns (uint16)", "function epochCredits(address audit,uint256 epoch) external view returns (uint256)", "function auditorEpochCredits(address audit,uint256 epoch,address auditor) external view returns (uint256)", "function auditorEpochClaimed(address audit,uint256 epoch,address auditor) external view returns (bool)", "function claimAuditorReward(address audit,uint256 epoch) external", "function pendingAuditorReward(address audit,address auditor,uint256 epoch) external view returns (uint256)", "function paused() external view returns (bool)", "event ServiceStatusChanged(uint256 indexed agentId,bytes32 indexed serviceHash,bytes32 modelHash,uint8 previous,uint8 current,address audit,uint256 epoch,uint256 validUntilEpoch)", "event ServiceCleared(uint256 indexed agentId,bytes32 indexed serviceHash,uint256 epoch,uint256 clears)", "event AgentStatusChanged(uint256 indexed agentId,uint16 verifiedCount,uint16 diffCount)", "event Credited(address indexed audit,uint256 indexed epoch,address indexed auditor,uint256 credits)", "event AuditorRewardClaimed(address indexed audit,uint256 indexed epoch,address indexed auditor,uint256 credits,uint256 totalCredits,uint256 grossAmount,uint256 claimableAmount,uint256 reserveAmount)"];
|
|
87
111
|
export declare function serviceHash(service: string): string;
|
|
88
112
|
/** Identifies the model a service was audited as. */
|
|
89
113
|
export declare function modelHash(model: string): string;
|
|
@@ -94,30 +118,75 @@ export interface VerifierServiceStatus {
|
|
|
94
118
|
/** Latest result (SAME, DIFF, or UNDETERMINED); only SAME and DIFF count in the agent's status. */
|
|
95
119
|
verdict: VerifierVerdict;
|
|
96
120
|
updatedAt: bigint;
|
|
97
|
-
/** Emissions epoch the verdict was given in;
|
|
121
|
+
/** Emissions epoch the verdict was given in; 0 when there is none. */
|
|
98
122
|
epoch: bigint;
|
|
123
|
+
/** First epoch the verdict no longer counts in, chosen by the audit that recorded it; 0 when there is none. */
|
|
124
|
+
validUntilEpoch: bigint;
|
|
125
|
+
/** Audit contract that recorded the verdict (e.g. the KBF audits contract); the zero address when there is none. */
|
|
126
|
+
audit: string;
|
|
99
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Reads and writes the split verification contracts on behalf of a KBF verifier:
|
|
130
|
+
*
|
|
131
|
+
* - `AntseedKbfAudits` (`contractAddress`): approved auditors (`AuditorSet` events), audits, report
|
|
132
|
+
* tallies, per-model credits;
|
|
133
|
+
* - `AntseedVerificationResults` (`kbf.results()`): verdicts, epochs, credits and reward claims,
|
|
134
|
+
* keyed by the KBF contract as the audit.
|
|
135
|
+
*
|
|
136
|
+
* The results address is discovered from the KBF contract on first use and cached.
|
|
137
|
+
*/
|
|
100
138
|
export declare class VerifierClient extends BaseEvmClient {
|
|
101
139
|
private _contractInstance;
|
|
140
|
+
private _resultsInstance;
|
|
141
|
+
private readonly _config;
|
|
102
142
|
private readonly _deploymentBlock;
|
|
103
143
|
private readonly _logQueryChunkBlocks;
|
|
104
144
|
constructor(config: VerifierClientConfig);
|
|
105
|
-
/** Block the
|
|
145
|
+
/** Block the KBF audits contract was deployed at, when configured. */
|
|
106
146
|
get deploymentBlock(): number | undefined;
|
|
147
|
+
/** The `AntseedKbfAudits` contract. */
|
|
107
148
|
private _contract;
|
|
108
|
-
/**
|
|
149
|
+
/** The `AntseedVerificationResults` contract the KBF contract records into. */
|
|
150
|
+
private _results;
|
|
151
|
+
/** `AntseedVerificationResults` address (configured, or read from the KBF contract). */
|
|
152
|
+
resultsAddress(): Promise<string>;
|
|
153
|
+
/** Records one auditor's results for every seller audited as one model, on the KBF contract. */
|
|
109
154
|
submitModelAudit(signer: AbstractSigner, input: SubmitModelAuditInput): Promise<string>;
|
|
110
|
-
|
|
155
|
+
/**
|
|
156
|
+
* Claims KBF rewards on the results contract, one transaction per epoch as the contract takes
|
|
157
|
+
* them: `results.claimAuditorReward(kbf, epoch)`. Returns the transaction hashes in order.
|
|
158
|
+
*/
|
|
159
|
+
claimAuditorRewards(signer: AbstractSigner, epochs: readonly (number | bigint)[]): Promise<string[]>;
|
|
160
|
+
/** Claimable KBF reward of a finalized epoch: `results.pendingAuditorReward(kbf, auditor, epoch)`. */
|
|
111
161
|
pendingAuditorReward(auditor: string, epoch: number | bigint): Promise<bigint>;
|
|
112
|
-
/**
|
|
162
|
+
/** KBF credits the auditor earned in `epoch`, and the epoch's KBF total, from the results contract. */
|
|
113
163
|
auditCredits(auditor: string, epoch: number | bigint): Promise<AuditorCredits>;
|
|
114
|
-
|
|
164
|
+
/** Audits of `model` (a model hash) by `auditor` in `epoch` that earned credits; at most `perModel` of `creditLimits`. */
|
|
165
|
+
creditedAudits(epoch: number | bigint, auditor: string, model: string): Promise<bigint>;
|
|
166
|
+
/** Credits one audit of `model` (a model hash) earns now: its own amount on the KBF contract, else the default. */
|
|
167
|
+
creditsFor(model: string): Promise<bigint>;
|
|
168
|
+
/** Per-auditor credit cap (results layer, for the KBF audit, per epoch) and per-model cap on credited audits (KBF contract). */
|
|
115
169
|
creditLimits(): Promise<{
|
|
116
170
|
perAuditor: bigint;
|
|
117
171
|
perModel: bigint;
|
|
118
172
|
}>;
|
|
119
|
-
/**
|
|
173
|
+
/**
|
|
174
|
+
* KBF reward settings on the results contract: the first epoch whose audits earn credits
|
|
175
|
+
* (`VERIFICATION_REWARDS_OFF` while rewards are off), KBF's share of the bucket for `epoch`
|
|
176
|
+
* (default: the latest setting) and the most of that share one auditor can receive, both in bps.
|
|
177
|
+
*/
|
|
178
|
+
rewardSettings(epoch?: number | bigint): Promise<{
|
|
179
|
+
rewardsStartEpoch: bigint;
|
|
180
|
+
shareBps: number;
|
|
181
|
+
maxAuditorShareBps: number;
|
|
182
|
+
}>;
|
|
183
|
+
/** The auditor's display profile on the KBF contract; empty strings when never set. */
|
|
184
|
+
auditorProfile(auditor: string): Promise<AuditorProfile>;
|
|
185
|
+
/** Sets the signer's display profile on the KBF contract (approved auditors only). */
|
|
186
|
+
setAuditorProfile(signer: AbstractSigner, profile: AuditorProfile): Promise<string>;
|
|
187
|
+
/** The emissions gate the results contract pinned at deployment; `expectedEpoch` is checked against it. */
|
|
120
188
|
emissionsGate(): Promise<string>;
|
|
189
|
+
/** Epochs a KBF verdict counts for (KBF contract), including the one it was given in. */
|
|
121
190
|
validityEpochs(): Promise<number>;
|
|
122
191
|
/** The current epoch exactly as `submitModelAudit` checks it. */
|
|
123
192
|
currentEpochWindow(): Promise<{
|
|
@@ -126,20 +195,22 @@ export declare class VerifierClient extends BaseEvmClient {
|
|
|
126
195
|
endsAt: number;
|
|
127
196
|
}>;
|
|
128
197
|
isVerified(agentId: number | bigint): Promise<boolean>;
|
|
129
|
-
/** SAME and DIFF services whose verdicts
|
|
198
|
+
/** SAME and DIFF services whose verdicts still count (`currentEpoch < validUntilEpoch`). */
|
|
130
199
|
agentStatus(agentId: number | bigint): Promise<{
|
|
131
200
|
verifiedCount: number;
|
|
132
201
|
diffCount: number;
|
|
133
202
|
}>;
|
|
134
203
|
serviceStatus(agentId: number | bigint, service: string): Promise<VerifierServiceStatus>;
|
|
135
204
|
serviceStatusByHash(agentId: number | bigint, hash: string): Promise<VerifierServiceStatus>;
|
|
205
|
+
/** Whether `auditor` is approved on the KBF contract. */
|
|
136
206
|
approvedAuditor(auditor: string): Promise<boolean>;
|
|
137
|
-
registry
|
|
207
|
+
/** The identity registry the KBF contract resolves agent owners with. */
|
|
138
208
|
identityRegistry(): Promise<string>;
|
|
139
209
|
agentOwner(agentId: number | bigint): Promise<string>;
|
|
140
210
|
/**
|
|
141
|
-
* The service's current report round: only reports made in it count. It moves on whenever
|
|
142
|
-
* service's verdict
|
|
211
|
+
* The service's current report round: only reports made in it count. It moves on whenever any
|
|
212
|
+
* source moves the service's verdict into or out of DIFF, an auditor is revoked, or the results
|
|
213
|
+
* owner clears the service.
|
|
143
214
|
*/
|
|
144
215
|
reportRound(agentId: number | bigint, serviceHashValue: string): Promise<number>;
|
|
145
216
|
/** Distinct approved auditors each verdict needs in one epoch before it is recorded. */
|
|
@@ -152,8 +223,9 @@ export declare class VerifierClient extends BaseEvmClient {
|
|
|
152
223
|
auditor?: string | null;
|
|
153
224
|
}, fromBlock?: number, toBlock?: number | 'latest'): Promise<ModelAuditedEvent[]>;
|
|
154
225
|
/**
|
|
155
|
-
* Every `AuditorSet` change in block order, with its block timestamp. The
|
|
156
|
-
* its auditors, so replaying these events is how to rebuild the approved set
|
|
226
|
+
* Every `AuditorSet` change of the KBF contract in block order, with its block timestamp. The
|
|
227
|
+
* contract cannot list its auditors, so replaying these events is how to rebuild the approved set
|
|
228
|
+
* at a point in time.
|
|
157
229
|
*/
|
|
158
230
|
queryAuditorSetEvents(fromBlock?: number, toBlock?: number | 'latest'): Promise<AuditorSetEvent[]>;
|
|
159
231
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/verifier-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EAEpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED
|
|
1
|
+
{"version":3,"file":"verifier-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/verifier-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EAEpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,mDAAmD;AACnD,eAAO,MAAM,gBAAgB;;;;;CAKnB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,OAAO,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACjF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAEvF,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe,CAE1E;AAED,8CAA8C;AAC9C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;IACzB,2NAA2N;IAC3N,KAAK,EAAE,MAAM,CAAC;IACd,qHAAqH;IACrH,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wGAAwG;AACxG,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,uCAAuC;AACvC,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,0GAA0G;AAC1G,eAAO,MAAM,wBAAwB,QAAiB,CAAC;AAEvD,uFAAuF;AACvF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAkBpE;AAED,4DAA4D;AAC5D,eAAO,MAAM,cAAc,4kFA+BjB,CAAC;AAEX,wFAAwF;AACxF,eAAO,MAAM,wBAAwB,s+EA2B3B,CAAC;AAaX,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAO/F;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,mGAAmG;IACnG,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,+GAA+G;IAC/G,eAAe,EAAE,MAAM,CAAC;IACxB,oHAAoH;IACpH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;gBAE9C,MAAM,EAAE,oBAAoB;IAOxC,sEAAsE;IACtE,IAAI,eAAe,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,uCAAuC;IACvC,OAAO,CAAC,SAAS;IAKjB,+EAA+E;IAC/E,OAAO,CAAC,QAAQ;IAUhB,wFAAwF;IAClF,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,gGAAgG;IAC1F,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAa7F;;;OAGG;IACG,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAQ1G,sGAAsG;IAChG,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKpF,uGAAuG;IACjG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASpF,0HAA0H;IACpH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7F,mHAAmH;IAC7G,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhD,gIAAgI;IAC1H,YAAY,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IASvE;;;;OAIG;IACG,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IAanI,uFAAuF;IACjF,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAS9D,sFAAsF;IAChF,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAKzF,2GAA2G;IACrG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC,yFAAyF;IACnF,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,iEAAiE;IAC3D,kBAAkB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAWnF,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,4FAA4F;IACtF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAQ5F,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIxF,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAYjG,yDAAyD;IACnD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIxD,yEAAyE;IACnE,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK3D;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItF,wFAAwF;IAClF,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC;IAUjD,iHAAiH;IAC3G,kBAAkB,CACtB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC/B,OAAO,GAAE,MAAM,GAAG,IAAW,EAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,MAAM,GAAG,QAAmB,GACpC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4BjC,kEAAkE;IAC5D,gBAAgB,CACpB,MAAM,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAO,EAC/D,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,GAAE,MAAM,GAAG,QAAmB,GACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0B/B;;;;OAIG;IACG,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,GAAG,QAAmB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA0BlH;;;OAGG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAexE,wDAAwD;IAClD,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C;;;OAGG;YACW,YAAY;CAgB3B"}
|