@antseed/node 0.2.89 → 0.2.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/buyer-request-handler.d.ts.map +1 -1
- package/dist/buyer-request-handler.js +4 -3
- package/dist/buyer-request-handler.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/payments/buyer-payment-manager.d.ts +11 -0
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +127 -15
- package/dist/payments/buyer-payment-manager.js.map +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -1
- package/dist/payments/buyer-payment-negotiator.js +4 -2
- package/dist/payments/buyer-payment-negotiator.js.map +1 -1
- package/dist/payments/channel-store.d.ts +13 -0
- package/dist/payments/channel-store.d.ts.map +1 -1
- package/dist/payments/channel-store.js +54 -0
- package/dist/payments/channel-store.js.map +1 -1
- package/dist/payments/evm/base-evm-client.d.ts.map +1 -1
- package/dist/payments/evm/base-evm-client.js +11 -4
- package/dist/payments/evm/base-evm-client.js.map +1 -1
- package/dist/payments/evm/signatures.d.ts +33 -1
- package/dist/payments/evm/signatures.d.ts.map +1 -1
- package/dist/payments/evm/signatures.js +15 -3
- package/dist/payments/evm/signatures.js.map +1 -1
- package/dist/payments/index.d.ts +2 -2
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +1 -1
- package/dist/payments/index.js.map +1 -1
- package/dist/seller-request-handler.d.ts +5 -1
- package/dist/seller-request-handler.d.ts.map +1 -1
- package/dist/seller-request-handler.js +95 -22
- package/dist/seller-request-handler.js.map +1 -1
- package/dist/storage/migrations/channels/{003_create_usage_verification_tables.d.ts → 003_create_service_totals.d.ts} +1 -1
- package/dist/storage/migrations/channels/003_create_service_totals.d.ts.map +1 -0
- package/dist/storage/migrations/channels/003_create_service_totals.js +21 -0
- package/dist/storage/migrations/channels/003_create_service_totals.js.map +1 -0
- package/dist/storage/migrations/channels/index.d.ts.map +1 -1
- package/dist/storage/migrations/channels/index.js +2 -1
- package/dist/storage/migrations/channels/index.js.map +1 -1
- package/dist/types/buyer.d.ts +1 -1
- package/package.json +1 -1
- package/dist/p2p/verification-codec.d.ts +0 -16
- package/dist/p2p/verification-codec.d.ts.map +0 -1
- package/dist/p2p/verification-codec.js +0 -121
- package/dist/p2p/verification-codec.js.map +0 -1
- package/dist/p2p/verification-mux.d.ts +0 -30
- package/dist/p2p/verification-mux.d.ts.map +0 -1
- package/dist/p2p/verification-mux.js +0 -89
- package/dist/p2p/verification-mux.js.map +0 -1
- package/dist/payments/evm/usage-verification-client.d.ts +0 -72
- package/dist/payments/evm/usage-verification-client.d.ts.map +0 -1
- package/dist/payments/evm/usage-verification-client.js +0 -141
- package/dist/payments/evm/usage-verification-client.js.map +0 -1
- package/dist/payments/usage-verification-manager.d.ts +0 -68
- package/dist/payments/usage-verification-manager.d.ts.map +0 -1
- package/dist/payments/usage-verification-manager.js +0 -316
- package/dist/payments/usage-verification-manager.js.map +0 -1
- package/dist/payments/usage-verification-store.d.ts +0 -56
- package/dist/payments/usage-verification-store.d.ts.map +0 -1
- package/dist/payments/usage-verification-store.js +0 -146
- package/dist/payments/usage-verification-store.js.map +0 -1
- package/dist/storage/migrations/channels/003_create_usage_verification_tables.d.ts.map +0 -1
- package/dist/storage/migrations/channels/003_create_usage_verification_tables.js +0 -54
- package/dist/storage/migrations/channels/003_create_usage_verification_tables.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verification-mux.js","sourceRoot":"","sources":["../../src/p2p/verification-mux.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { type AbstractSigner } from 'ethers';
|
|
2
|
-
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
-
import type { UsageClaimMessage } from './signatures.js';
|
|
4
|
-
export interface UsageVerificationClientConfig {
|
|
5
|
-
rpcUrl: string;
|
|
6
|
-
fallbackRpcUrls?: string[];
|
|
7
|
-
contractAddress: string;
|
|
8
|
-
evmChainId?: number;
|
|
9
|
-
}
|
|
10
|
-
export interface UsageStatsInfo {
|
|
11
|
-
inputTokens: bigint;
|
|
12
|
-
cachedInputTokens: bigint;
|
|
13
|
-
freshInputTokens: bigint;
|
|
14
|
-
outputTokens: bigint;
|
|
15
|
-
requestCount: bigint;
|
|
16
|
-
costUsdc: bigint;
|
|
17
|
-
attestationCount: bigint;
|
|
18
|
-
partialRevealCount: bigint;
|
|
19
|
-
lastUpdatedAt: number;
|
|
20
|
-
}
|
|
21
|
-
export interface UsageCommitPairInput {
|
|
22
|
-
claimHash: string;
|
|
23
|
-
channelId: string;
|
|
24
|
-
buyer: string;
|
|
25
|
-
seller: string;
|
|
26
|
-
sellerAgentId: bigint;
|
|
27
|
-
serviceKey: string;
|
|
28
|
-
buyerRevealHash: string;
|
|
29
|
-
sellerRevealHash: string;
|
|
30
|
-
expectedEpoch: bigint;
|
|
31
|
-
buyerSig: string;
|
|
32
|
-
sellerSig: string;
|
|
33
|
-
}
|
|
34
|
-
export interface UsageRevealedEvent {
|
|
35
|
-
blockNumber: number;
|
|
36
|
-
txHash: string;
|
|
37
|
-
logIndex: number;
|
|
38
|
-
claimHash: string;
|
|
39
|
-
channelId: string;
|
|
40
|
-
serviceKey: string;
|
|
41
|
-
epoch: bigint;
|
|
42
|
-
buyer: string;
|
|
43
|
-
seller: string;
|
|
44
|
-
sellerAgentId: bigint;
|
|
45
|
-
providerName: string;
|
|
46
|
-
serviceName: string;
|
|
47
|
-
inputTokensDelta: bigint;
|
|
48
|
-
cachedInputTokensDelta: bigint;
|
|
49
|
-
freshInputTokensDelta: bigint;
|
|
50
|
-
outputTokensDelta: bigint;
|
|
51
|
-
requestCountDelta: bigint;
|
|
52
|
-
costUsdcDelta: bigint;
|
|
53
|
-
paymentCumulativeAmount: bigint;
|
|
54
|
-
}
|
|
55
|
-
export declare class UsageVerificationClient extends BaseEvmClient {
|
|
56
|
-
constructor(config: UsageVerificationClientConfig);
|
|
57
|
-
currentEpoch(): Promise<bigint>;
|
|
58
|
-
domainSeparator(): Promise<string>;
|
|
59
|
-
hashUsageClaim(claim: UsageClaimMessage): Promise<string>;
|
|
60
|
-
revealHash(claimHash: string, nonce: string): Promise<string>;
|
|
61
|
-
commitPair(signer: AbstractSigner, input: UsageCommitPairInput): Promise<string>;
|
|
62
|
-
revealPair(signer: AbstractSigner, claim: UsageClaimMessage, buyerNonce: string, sellerNonce: string): Promise<string>;
|
|
63
|
-
revealPartial(signer: AbstractSigner, claim: UsageClaimMessage, nonce: string, party: number): Promise<string>;
|
|
64
|
-
getSellerServiceStats(sellerAgentId: bigint | number, serviceKey: string, epoch: bigint | number): Promise<UsageStatsInfo>;
|
|
65
|
-
getBuyerServiceStats(buyer: string, serviceKey: string, epoch: bigint | number): Promise<UsageStatsInfo>;
|
|
66
|
-
getUsageRevealedEvents(params: {
|
|
67
|
-
fromBlock: number;
|
|
68
|
-
toBlock: number;
|
|
69
|
-
}): Promise<UsageRevealedEvent[]>;
|
|
70
|
-
getBlockNumber(): Promise<number>;
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=usage-verification-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-verification-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/usage-verification-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { Contract, ethers } from 'ethers';
|
|
2
|
-
import { BaseEvmClient } from './base-evm-client.js';
|
|
3
|
-
const USAGE_VERIFICATION_ABI = [
|
|
4
|
-
'function currentEpoch() external view returns (uint256)',
|
|
5
|
-
'function domainSeparator() external view returns (bytes32)',
|
|
6
|
-
'function hashUsageClaim((uint256 version, bytes32 channelId, address buyer, address seller, uint256 sellerAgentId, bytes32 serviceKey, string providerName, string serviceName, uint256 cumulativeInputTokens, uint256 cumulativeCachedInputTokens, uint256 cumulativeFreshInputTokens, uint256 cumulativeOutputTokens, uint256 cumulativeRequestCount, uint256 cumulativeCostUsdc, uint256 paymentCumulativeAmount) claim) external pure returns (bytes32)',
|
|
7
|
-
'function revealHash(bytes32 claimHash, bytes32 nonce) external pure returns (bytes32)',
|
|
8
|
-
'function commitPair((bytes32 claimHash, bytes32 channelId, address buyer, address seller, uint256 sellerAgentId, bytes32 serviceKey, bytes32 buyerRevealHash, bytes32 sellerRevealHash, uint256 expectedEpoch, bytes buyerSig, bytes sellerSig) input) external',
|
|
9
|
-
'function revealPair((uint256 version, bytes32 channelId, address buyer, address seller, uint256 sellerAgentId, bytes32 serviceKey, string providerName, string serviceName, uint256 cumulativeInputTokens, uint256 cumulativeCachedInputTokens, uint256 cumulativeFreshInputTokens, uint256 cumulativeOutputTokens, uint256 cumulativeRequestCount, uint256 cumulativeCostUsdc, uint256 paymentCumulativeAmount) claim, bytes32 buyerNonce, bytes32 sellerNonce) external',
|
|
10
|
-
'function revealPartial((uint256 version, bytes32 channelId, address buyer, address seller, uint256 sellerAgentId, bytes32 serviceKey, string providerName, string serviceName, uint256 cumulativeInputTokens, uint256 cumulativeCachedInputTokens, uint256 cumulativeFreshInputTokens, uint256 cumulativeOutputTokens, uint256 cumulativeRequestCount, uint256 cumulativeCostUsdc, uint256 paymentCumulativeAmount) claim, bytes32 nonce, uint8 party) external',
|
|
11
|
-
'function getSellerServiceStats(uint256 sellerAgentId, bytes32 serviceKey, uint256 epoch) external view returns (uint256 inputTokens, uint256 cachedInputTokens, uint256 freshInputTokens, uint256 outputTokens, uint256 requestCount, uint256 costUsdc, uint256 attestationCount, uint256 partialRevealCount, uint64 lastUpdatedAt)',
|
|
12
|
-
'function getBuyerServiceStats(address buyer, bytes32 serviceKey, uint256 epoch) external view returns (uint256 inputTokens, uint256 cachedInputTokens, uint256 freshInputTokens, uint256 outputTokens, uint256 requestCount, uint256 costUsdc, uint256 attestationCount, uint256 partialRevealCount, uint64 lastUpdatedAt)',
|
|
13
|
-
'event UsageRevealed(bytes32 indexed claimHash, bytes32 indexed channelId, bytes32 indexed serviceKey, uint256 epoch, address buyer, address seller, uint256 sellerAgentId, string providerName, string serviceName, uint256 inputTokensDelta, uint256 cachedInputTokensDelta, uint256 freshInputTokensDelta, uint256 outputTokensDelta, uint256 requestCountDelta, uint256 costUsdcDelta, uint256 paymentCumulativeAmount)',
|
|
14
|
-
];
|
|
15
|
-
export class UsageVerificationClient extends BaseEvmClient {
|
|
16
|
-
constructor(config) {
|
|
17
|
-
super(config.rpcUrl, config.contractAddress, config.fallbackRpcUrls, config.evmChainId);
|
|
18
|
-
}
|
|
19
|
-
async currentEpoch() {
|
|
20
|
-
const contract = new Contract(this._contractAddress, USAGE_VERIFICATION_ABI, this._provider);
|
|
21
|
-
return contract.getFunction('currentEpoch')();
|
|
22
|
-
}
|
|
23
|
-
async domainSeparator() {
|
|
24
|
-
const contract = new Contract(this._contractAddress, USAGE_VERIFICATION_ABI, this._provider);
|
|
25
|
-
return contract.getFunction('domainSeparator')();
|
|
26
|
-
}
|
|
27
|
-
async hashUsageClaim(claim) {
|
|
28
|
-
const contract = new Contract(this._contractAddress, USAGE_VERIFICATION_ABI, this._provider);
|
|
29
|
-
return contract.getFunction('hashUsageClaim')(claimToTuple(claim));
|
|
30
|
-
}
|
|
31
|
-
async revealHash(claimHash, nonce) {
|
|
32
|
-
const contract = new Contract(this._contractAddress, USAGE_VERIFICATION_ABI, this._provider);
|
|
33
|
-
return contract.getFunction('revealHash')(claimHash, nonce);
|
|
34
|
-
}
|
|
35
|
-
async commitPair(signer, input) {
|
|
36
|
-
return this._execWrite(signer, USAGE_VERIFICATION_ABI, 'commitPair', inputToTuple(input));
|
|
37
|
-
}
|
|
38
|
-
async revealPair(signer, claim, buyerNonce, sellerNonce) {
|
|
39
|
-
return this._execWrite(signer, USAGE_VERIFICATION_ABI, 'revealPair', claimToTuple(claim), buyerNonce, sellerNonce);
|
|
40
|
-
}
|
|
41
|
-
async revealPartial(signer, claim, nonce, party) {
|
|
42
|
-
return this._execWrite(signer, USAGE_VERIFICATION_ABI, 'revealPartial', claimToTuple(claim), nonce, party);
|
|
43
|
-
}
|
|
44
|
-
async getSellerServiceStats(sellerAgentId, serviceKey, epoch) {
|
|
45
|
-
const contract = new Contract(this._contractAddress, USAGE_VERIFICATION_ABI, this._provider);
|
|
46
|
-
const result = await contract.getFunction('getSellerServiceStats')(sellerAgentId, serviceKey, epoch);
|
|
47
|
-
return statsFromTuple(result);
|
|
48
|
-
}
|
|
49
|
-
async getBuyerServiceStats(buyer, serviceKey, epoch) {
|
|
50
|
-
const contract = new Contract(this._contractAddress, USAGE_VERIFICATION_ABI, this._provider);
|
|
51
|
-
const result = await contract.getFunction('getBuyerServiceStats')(buyer, serviceKey, epoch);
|
|
52
|
-
return statsFromTuple(result);
|
|
53
|
-
}
|
|
54
|
-
async getUsageRevealedEvents(params) {
|
|
55
|
-
const iface = new ethers.Interface(USAGE_VERIFICATION_ABI);
|
|
56
|
-
const topic = iface.getEvent('UsageRevealed').topicHash;
|
|
57
|
-
const logs = await this._provider.getLogs({
|
|
58
|
-
address: this._contractAddress,
|
|
59
|
-
fromBlock: params.fromBlock,
|
|
60
|
-
toBlock: params.toBlock,
|
|
61
|
-
topics: [topic],
|
|
62
|
-
});
|
|
63
|
-
return logs.map((log) => {
|
|
64
|
-
const parsed = iface.parseLog({ topics: [...log.topics], data: log.data });
|
|
65
|
-
if (!parsed || parsed.name !== 'UsageRevealed')
|
|
66
|
-
throw new Error('Unexpected usage verification event');
|
|
67
|
-
return {
|
|
68
|
-
blockNumber: log.blockNumber,
|
|
69
|
-
txHash: log.transactionHash,
|
|
70
|
-
logIndex: log.index,
|
|
71
|
-
claimHash: parsed.args[0],
|
|
72
|
-
channelId: parsed.args[1],
|
|
73
|
-
serviceKey: parsed.args[2],
|
|
74
|
-
epoch: parsed.args[3],
|
|
75
|
-
buyer: parsed.args[4].toLowerCase(),
|
|
76
|
-
seller: parsed.args[5].toLowerCase(),
|
|
77
|
-
sellerAgentId: parsed.args[6],
|
|
78
|
-
providerName: parsed.args[7],
|
|
79
|
-
serviceName: parsed.args[8],
|
|
80
|
-
inputTokensDelta: parsed.args[9],
|
|
81
|
-
cachedInputTokensDelta: parsed.args[10],
|
|
82
|
-
freshInputTokensDelta: parsed.args[11],
|
|
83
|
-
outputTokensDelta: parsed.args[12],
|
|
84
|
-
requestCountDelta: parsed.args[13],
|
|
85
|
-
costUsdcDelta: parsed.args[14],
|
|
86
|
-
paymentCumulativeAmount: parsed.args[15],
|
|
87
|
-
};
|
|
88
|
-
}).sort((a, b) => a.blockNumber !== b.blockNumber ? a.blockNumber - b.blockNumber : a.logIndex - b.logIndex);
|
|
89
|
-
}
|
|
90
|
-
async getBlockNumber() {
|
|
91
|
-
return this._provider.getBlockNumber();
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function claimToTuple(claim) {
|
|
95
|
-
return [
|
|
96
|
-
claim.version,
|
|
97
|
-
claim.channelId,
|
|
98
|
-
claim.buyer,
|
|
99
|
-
claim.seller,
|
|
100
|
-
claim.sellerAgentId,
|
|
101
|
-
claim.serviceKey,
|
|
102
|
-
claim.providerName,
|
|
103
|
-
claim.serviceName,
|
|
104
|
-
claim.cumulativeInputTokens,
|
|
105
|
-
claim.cumulativeCachedInputTokens,
|
|
106
|
-
claim.cumulativeFreshInputTokens,
|
|
107
|
-
claim.cumulativeOutputTokens,
|
|
108
|
-
claim.cumulativeRequestCount,
|
|
109
|
-
claim.cumulativeCostUsdc,
|
|
110
|
-
claim.paymentCumulativeAmount,
|
|
111
|
-
];
|
|
112
|
-
}
|
|
113
|
-
function inputToTuple(input) {
|
|
114
|
-
return [
|
|
115
|
-
input.claimHash,
|
|
116
|
-
input.channelId,
|
|
117
|
-
input.buyer,
|
|
118
|
-
input.seller,
|
|
119
|
-
input.sellerAgentId,
|
|
120
|
-
input.serviceKey,
|
|
121
|
-
input.buyerRevealHash,
|
|
122
|
-
input.sellerRevealHash,
|
|
123
|
-
input.expectedEpoch,
|
|
124
|
-
input.buyerSig,
|
|
125
|
-
input.sellerSig,
|
|
126
|
-
];
|
|
127
|
-
}
|
|
128
|
-
function statsFromTuple(result) {
|
|
129
|
-
return {
|
|
130
|
-
inputTokens: result[0],
|
|
131
|
-
cachedInputTokens: result[1],
|
|
132
|
-
freshInputTokens: result[2],
|
|
133
|
-
outputTokens: result[3],
|
|
134
|
-
requestCount: result[4],
|
|
135
|
-
costUsdc: result[5],
|
|
136
|
-
attestationCount: result[6],
|
|
137
|
-
partialRevealCount: result[7],
|
|
138
|
-
lastUpdatedAt: Number(result[8]),
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=usage-verification-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-verification-client.js","sourceRoot":"","sources":["../../../src/payments/evm/usage-verification-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import type { AbstractSigner } from 'ethers';
|
|
2
|
-
import type { Identity } from '../p2p/identity.js';
|
|
3
|
-
import type { VerificationMux } from '../p2p/verification-mux.js';
|
|
4
|
-
import type { StakingClient } from './evm/staking-client.js';
|
|
5
|
-
import { UsageVerificationClient } from './evm/usage-verification-client.js';
|
|
6
|
-
import type { UsageVerificationClientConfig } from './evm/usage-verification-client.js';
|
|
7
|
-
import type { StoredChannel } from './channel-store.js';
|
|
8
|
-
import type { VerificationCommitRequestPayload, VerificationCommitResponsePayload, VerificationRevealPackagePayload, VerificationRevealResponsePayload, VerificationUsageClaimPayload } from '../types/protocol.js';
|
|
9
|
-
import type { UsageClaimMessage } from './evm/signatures.js';
|
|
10
|
-
import { type ServicePricing } from './pricing.js';
|
|
11
|
-
export interface UsageVerificationConfig extends UsageVerificationClientConfig {
|
|
12
|
-
chainId: number;
|
|
13
|
-
dataDir: string;
|
|
14
|
-
}
|
|
15
|
-
export interface SellerUsageRecordInput {
|
|
16
|
-
requestId: string;
|
|
17
|
-
channel: StoredChannel;
|
|
18
|
-
providerName: string;
|
|
19
|
-
serviceName: string;
|
|
20
|
-
inputTokens: bigint;
|
|
21
|
-
cachedInputTokens: bigint;
|
|
22
|
-
freshInputTokens: bigint;
|
|
23
|
-
outputTokens: bigint;
|
|
24
|
-
costUsdc: bigint;
|
|
25
|
-
paymentCumulativeAmount: bigint;
|
|
26
|
-
mux: VerificationMux;
|
|
27
|
-
}
|
|
28
|
-
export declare class SellerUsageVerificationManager {
|
|
29
|
-
private _signer;
|
|
30
|
-
private readonly _client;
|
|
31
|
-
private readonly _store;
|
|
32
|
-
private readonly _domain;
|
|
33
|
-
private readonly _stakingClient?;
|
|
34
|
-
constructor(identity: Identity, config: UsageVerificationConfig, stakingClient?: StakingClient);
|
|
35
|
-
get client(): UsageVerificationClient;
|
|
36
|
-
setSigner(signer: AbstractSigner): void;
|
|
37
|
-
recordAndRequestCommit(input: SellerUsageRecordInput): Promise<void>;
|
|
38
|
-
handleCommitResponse(payload: VerificationCommitResponsePayload, mux: VerificationMux): Promise<void>;
|
|
39
|
-
retryCommittedReveals(limit?: number): Promise<void>;
|
|
40
|
-
handleRevealResponse(payload: VerificationRevealResponsePayload, mux: VerificationMux): Promise<void>;
|
|
41
|
-
close(): void;
|
|
42
|
-
private _resolveSellerAgentId;
|
|
43
|
-
}
|
|
44
|
-
export declare class BuyerUsageVerificationManager {
|
|
45
|
-
private readonly _identity;
|
|
46
|
-
private _signer;
|
|
47
|
-
private readonly _domain;
|
|
48
|
-
private readonly _store;
|
|
49
|
-
private readonly _requestService;
|
|
50
|
-
constructor(identity: Identity, config: UsageVerificationConfig);
|
|
51
|
-
setSigner(signer: AbstractSigner): void;
|
|
52
|
-
trackRequestService(requestId: string, service: string): void;
|
|
53
|
-
handleCommitRequest(payload: VerificationCommitRequestPayload, mux: VerificationMux): Promise<void>;
|
|
54
|
-
handleRevealPackage(payload: VerificationRevealPackagePayload, mux: VerificationMux): void;
|
|
55
|
-
handleRevealAck(payload: {
|
|
56
|
-
claimHash: string;
|
|
57
|
-
txHash?: string;
|
|
58
|
-
}): void;
|
|
59
|
-
close(): void;
|
|
60
|
-
}
|
|
61
|
-
export declare function claimPayloadToMessage(claim: VerificationUsageClaimPayload): UsageClaimMessage;
|
|
62
|
-
export declare function computeUsageCostFromTokens(params: {
|
|
63
|
-
freshInputTokens: number;
|
|
64
|
-
cachedInputTokens: number;
|
|
65
|
-
outputTokens: number;
|
|
66
|
-
pricing: ServicePricing;
|
|
67
|
-
}): bigint;
|
|
68
|
-
//# sourceMappingURL=usage-verification-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-verification-manager.d.ts","sourceRoot":"","sources":["../../src/payments/usage-verification-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from 'node:crypto';
|
|
2
|
-
import { UsageVerificationClient } from './evm/usage-verification-client.js';
|
|
3
|
-
import { UsageVerificationStore } from './usage-verification-store.js';
|
|
4
|
-
import { computeServiceKey, computeUsageClaimHash, computeUsageRevealHash, makeUsageVerificationDomain, signUsageCommit, USAGE_CLAIM_VERSION, USAGE_PARTY_BUYER, USAGE_PARTY_SELLER, } from './evm/signatures.js';
|
|
5
|
-
import { debugWarn } from '../utils/debug.js';
|
|
6
|
-
import { computeCostUsdc } from './pricing.js';
|
|
7
|
-
export class SellerUsageVerificationManager {
|
|
8
|
-
_signer;
|
|
9
|
-
_client;
|
|
10
|
-
_store;
|
|
11
|
-
_domain;
|
|
12
|
-
_stakingClient;
|
|
13
|
-
constructor(identity, config, stakingClient) {
|
|
14
|
-
this._signer = identity.wallet;
|
|
15
|
-
this._client = new UsageVerificationClient(config);
|
|
16
|
-
this._store = new UsageVerificationStore(config.dataDir);
|
|
17
|
-
this._domain = makeUsageVerificationDomain(config.chainId, config.contractAddress);
|
|
18
|
-
this._stakingClient = stakingClient;
|
|
19
|
-
}
|
|
20
|
-
get client() { return this._client; }
|
|
21
|
-
setSigner(signer) { this._signer = signer; }
|
|
22
|
-
async recordAndRequestCommit(input) {
|
|
23
|
-
const epoch = (await this._client.currentEpoch()).toString();
|
|
24
|
-
const serviceKey = computeServiceKey(input.providerName, input.serviceName);
|
|
25
|
-
const existing = this._store.getSnapshot(input.channel.sessionId, serviceKey, epoch);
|
|
26
|
-
const now = Date.now();
|
|
27
|
-
const sellerAgentId = await this._resolveSellerAgentId(input.channel.sellerEvmAddr);
|
|
28
|
-
const snapshot = {
|
|
29
|
-
channelId: input.channel.sessionId,
|
|
30
|
-
serviceKey,
|
|
31
|
-
providerName: input.providerName,
|
|
32
|
-
serviceName: input.serviceName,
|
|
33
|
-
epoch,
|
|
34
|
-
buyerEvmAddr: input.channel.buyerEvmAddr,
|
|
35
|
-
sellerEvmAddr: input.channel.sellerEvmAddr,
|
|
36
|
-
sellerAgentId: sellerAgentId.toString(),
|
|
37
|
-
cumulativeInputTokens: ((existing ? BigInt(existing.cumulativeInputTokens) : 0n) + input.inputTokens).toString(),
|
|
38
|
-
cumulativeCachedInputTokens: ((existing ? BigInt(existing.cumulativeCachedInputTokens) : 0n) + input.cachedInputTokens).toString(),
|
|
39
|
-
cumulativeFreshInputTokens: ((existing ? BigInt(existing.cumulativeFreshInputTokens) : 0n) + input.freshInputTokens).toString(),
|
|
40
|
-
cumulativeOutputTokens: ((existing ? BigInt(existing.cumulativeOutputTokens) : 0n) + input.outputTokens).toString(),
|
|
41
|
-
cumulativeRequestCount: ((existing ? BigInt(existing.cumulativeRequestCount) : 0n) + 1n).toString(),
|
|
42
|
-
cumulativeCostUsdc: ((existing ? BigInt(existing.cumulativeCostUsdc) : 0n) + input.costUsdc).toString(),
|
|
43
|
-
paymentCumulativeAmount: input.paymentCumulativeAmount.toString(),
|
|
44
|
-
createdAt: existing?.createdAt ?? now,
|
|
45
|
-
updatedAt: now,
|
|
46
|
-
};
|
|
47
|
-
this._store.upsertSnapshot(snapshot);
|
|
48
|
-
const claim = snapshotToClaim(snapshot);
|
|
49
|
-
const claimMsg = claimPayloadToMessage(claim);
|
|
50
|
-
const claimHash = computeUsageClaimHash(claimMsg);
|
|
51
|
-
const sellerNonce = randomNonce();
|
|
52
|
-
const sellerRevealHash = computeUsageRevealHash(claimHash, sellerNonce);
|
|
53
|
-
const expectedEpoch = BigInt(epoch);
|
|
54
|
-
const sellerSig = await signUsageCommit(this._signer, this._domain, {
|
|
55
|
-
claimHash,
|
|
56
|
-
revealHash: sellerRevealHash,
|
|
57
|
-
expectedEpoch,
|
|
58
|
-
party: USAGE_PARTY_SELLER,
|
|
59
|
-
});
|
|
60
|
-
this._store.upsertAttestation({
|
|
61
|
-
claimHash,
|
|
62
|
-
requestId: input.requestId,
|
|
63
|
-
channelId: input.channel.sessionId,
|
|
64
|
-
serviceKey,
|
|
65
|
-
epoch,
|
|
66
|
-
claim,
|
|
67
|
-
buyerRevealHash: null,
|
|
68
|
-
sellerRevealHash,
|
|
69
|
-
buyerNonce: null,
|
|
70
|
-
sellerNonce,
|
|
71
|
-
buyerSig: null,
|
|
72
|
-
sellerSig,
|
|
73
|
-
commitTxHash: null,
|
|
74
|
-
revealTxHash: null,
|
|
75
|
-
status: 'pending_buyer',
|
|
76
|
-
createdAt: now,
|
|
77
|
-
updatedAt: now,
|
|
78
|
-
});
|
|
79
|
-
input.mux.sendCommitRequest({
|
|
80
|
-
requestId: input.requestId,
|
|
81
|
-
claim,
|
|
82
|
-
claimHash,
|
|
83
|
-
revealHash: sellerRevealHash,
|
|
84
|
-
expectedEpoch: epoch,
|
|
85
|
-
sellerSig,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
async handleCommitResponse(payload, mux) {
|
|
89
|
-
const attestation = this._store.getAttestation(payload.claimHash);
|
|
90
|
-
if (!attestation)
|
|
91
|
-
return;
|
|
92
|
-
if (!payload.accepted || !payload.buyerSig || !payload.revealHash) {
|
|
93
|
-
this._store.updateAttestationStatus(payload.claimHash, 'failed');
|
|
94
|
-
debugWarn(`[UsageVerification] Buyer rejected usage commit ${payload.claimHash.slice(0, 18)}...: ${payload.reason ?? 'unknown'}`);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const updated = {
|
|
98
|
-
...attestation,
|
|
99
|
-
buyerRevealHash: payload.revealHash,
|
|
100
|
-
buyerSig: payload.buyerSig,
|
|
101
|
-
status: 'buyer_signed',
|
|
102
|
-
updatedAt: Date.now(),
|
|
103
|
-
};
|
|
104
|
-
this._store.upsertAttestation(updated);
|
|
105
|
-
let commitTxHash;
|
|
106
|
-
try {
|
|
107
|
-
commitTxHash = await this._client.commitPair(this._signer, {
|
|
108
|
-
claimHash: updated.claimHash,
|
|
109
|
-
channelId: updated.channelId,
|
|
110
|
-
buyer: updated.claim.buyer,
|
|
111
|
-
seller: updated.claim.seller,
|
|
112
|
-
sellerAgentId: BigInt(updated.claim.sellerAgentId),
|
|
113
|
-
serviceKey: updated.serviceKey,
|
|
114
|
-
buyerRevealHash: payload.revealHash,
|
|
115
|
-
sellerRevealHash: updated.sellerRevealHash,
|
|
116
|
-
expectedEpoch: BigInt(updated.epoch),
|
|
117
|
-
buyerSig: payload.buyerSig,
|
|
118
|
-
sellerSig: updated.sellerSig,
|
|
119
|
-
});
|
|
120
|
-
this._store.updateAttestationStatus(updated.claimHash, 'committed', { commitTxHash });
|
|
121
|
-
mux.sendCommitProof({ requestId: updated.requestId, claimHash: updated.claimHash, txHash: commitTxHash });
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
this._store.updateAttestationStatus(updated.claimHash, 'failed');
|
|
125
|
-
debugWarn(`[UsageVerification] commitPair failed: ${err instanceof Error ? err.message : err}`);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
mux.sendRevealPackage({
|
|
129
|
-
requestId: updated.requestId,
|
|
130
|
-
claim: updated.claim,
|
|
131
|
-
claimHash: updated.claimHash,
|
|
132
|
-
nonce: updated.sellerNonce,
|
|
133
|
-
party: 'seller',
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
async retryCommittedReveals(limit = 25) {
|
|
137
|
-
const committed = this._store.listAttestationsByStatus('committed', limit);
|
|
138
|
-
for (const attestation of committed) {
|
|
139
|
-
if (!attestation.buyerNonce || !attestation.sellerNonce)
|
|
140
|
-
continue;
|
|
141
|
-
try {
|
|
142
|
-
const txHash = await this._client.revealPair(this._signer, claimPayloadToMessage(attestation.claim), attestation.buyerNonce, attestation.sellerNonce);
|
|
143
|
-
this._store.updateAttestationStatus(attestation.claimHash, 'revealed', { revealTxHash: txHash });
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
// Payment coverage may still be pending; leave as committed for the next retry.
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
async handleRevealResponse(payload, mux) {
|
|
151
|
-
const attestation = this._store.getAttestation(payload.claimHash);
|
|
152
|
-
if (!attestation || !payload.accepted || !payload.nonce)
|
|
153
|
-
return;
|
|
154
|
-
if (!attestation.sellerNonce)
|
|
155
|
-
return;
|
|
156
|
-
this._store.upsertAttestation({ ...attestation, buyerNonce: payload.nonce, updatedAt: Date.now() });
|
|
157
|
-
try {
|
|
158
|
-
const txHash = await this._client.revealPair(this._signer, claimPayloadToMessage(attestation.claim), payload.nonce, attestation.sellerNonce);
|
|
159
|
-
this._store.updateAttestationStatus(attestation.claimHash, 'revealed', { revealTxHash: txHash });
|
|
160
|
-
mux.sendRevealAck({ requestId: attestation.requestId, claimHash: attestation.claimHash, txHash });
|
|
161
|
-
}
|
|
162
|
-
catch (err) {
|
|
163
|
-
// Most commonly payment coverage has not landed yet. Keep committed state
|
|
164
|
-
// so a future retry can reveal after settlement.
|
|
165
|
-
this._store.updateAttestationStatus(attestation.claimHash, 'committed');
|
|
166
|
-
debugWarn(`[UsageVerification] revealPair deferred: ${err instanceof Error ? err.message : err}`);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
close() { this._store.close(); }
|
|
170
|
-
async _resolveSellerAgentId(seller) {
|
|
171
|
-
if (!this._stakingClient)
|
|
172
|
-
return 0n;
|
|
173
|
-
try {
|
|
174
|
-
return BigInt(await this._stakingClient.getAgentId(seller));
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
return 0n;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
export class BuyerUsageVerificationManager {
|
|
182
|
-
_identity;
|
|
183
|
-
_signer;
|
|
184
|
-
_domain;
|
|
185
|
-
_store;
|
|
186
|
-
_requestService = new Map();
|
|
187
|
-
constructor(identity, config) {
|
|
188
|
-
this._identity = identity;
|
|
189
|
-
this._signer = identity.wallet;
|
|
190
|
-
this._domain = makeUsageVerificationDomain(config.chainId, config.contractAddress);
|
|
191
|
-
this._store = new UsageVerificationStore(config.dataDir);
|
|
192
|
-
}
|
|
193
|
-
setSigner(signer) { this._signer = signer; }
|
|
194
|
-
trackRequestService(requestId, service) {
|
|
195
|
-
this._requestService.set(requestId, service);
|
|
196
|
-
}
|
|
197
|
-
async handleCommitRequest(payload, mux) {
|
|
198
|
-
const expectedService = this._requestService.get(payload.requestId);
|
|
199
|
-
if (expectedService && expectedService !== payload.claim.serviceName) {
|
|
200
|
-
mux.sendCommitResponse({
|
|
201
|
-
requestId: payload.requestId,
|
|
202
|
-
accepted: false,
|
|
203
|
-
claimHash: payload.claimHash,
|
|
204
|
-
reason: `service mismatch: expected ${expectedService}, got ${payload.claim.serviceName}`,
|
|
205
|
-
});
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
if (payload.claim.buyer.toLowerCase() !== this._identity.wallet.address.toLowerCase()) {
|
|
209
|
-
mux.sendCommitResponse({ requestId: payload.requestId, accepted: false, claimHash: payload.claimHash, reason: 'buyer mismatch' });
|
|
210
|
-
return;
|
|
211
|
-
}
|
|
212
|
-
const claimHash = computeUsageClaimHash(claimPayloadToMessage(payload.claim));
|
|
213
|
-
if (claimHash !== payload.claimHash) {
|
|
214
|
-
mux.sendCommitResponse({ requestId: payload.requestId, accepted: false, claimHash: payload.claimHash, reason: 'claim hash mismatch' });
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
const buyerNonce = randomNonce();
|
|
218
|
-
const buyerRevealHash = computeUsageRevealHash(claimHash, buyerNonce);
|
|
219
|
-
const buyerSig = await signUsageCommit(this._signer, this._domain, {
|
|
220
|
-
claimHash,
|
|
221
|
-
revealHash: buyerRevealHash,
|
|
222
|
-
expectedEpoch: BigInt(payload.expectedEpoch),
|
|
223
|
-
party: USAGE_PARTY_BUYER,
|
|
224
|
-
});
|
|
225
|
-
const now = Date.now();
|
|
226
|
-
this._store.upsertAttestation({
|
|
227
|
-
claimHash,
|
|
228
|
-
requestId: payload.requestId,
|
|
229
|
-
channelId: payload.claim.channelId,
|
|
230
|
-
serviceKey: payload.claim.serviceKey,
|
|
231
|
-
epoch: payload.expectedEpoch,
|
|
232
|
-
claim: payload.claim,
|
|
233
|
-
buyerRevealHash,
|
|
234
|
-
sellerRevealHash: payload.revealHash,
|
|
235
|
-
buyerNonce,
|
|
236
|
-
sellerNonce: null,
|
|
237
|
-
buyerSig,
|
|
238
|
-
sellerSig: payload.sellerSig,
|
|
239
|
-
commitTxHash: null,
|
|
240
|
-
revealTxHash: null,
|
|
241
|
-
status: 'buyer_signed',
|
|
242
|
-
createdAt: now,
|
|
243
|
-
updatedAt: now,
|
|
244
|
-
});
|
|
245
|
-
mux.sendCommitResponse({
|
|
246
|
-
requestId: payload.requestId,
|
|
247
|
-
accepted: true,
|
|
248
|
-
claimHash,
|
|
249
|
-
revealHash: buyerRevealHash,
|
|
250
|
-
buyerSig,
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
handleRevealPackage(payload, mux) {
|
|
254
|
-
const attestation = this._store.getAttestation(payload.claimHash);
|
|
255
|
-
if (!attestation || !attestation.buyerNonce) {
|
|
256
|
-
mux.sendRevealResponse({ requestId: payload.requestId, accepted: false, claimHash: payload.claimHash, reason: 'unknown claim' });
|
|
257
|
-
return;
|
|
258
|
-
}
|
|
259
|
-
this._store.upsertAttestation({ ...attestation, sellerNonce: payload.nonce, status: 'committed', updatedAt: Date.now() });
|
|
260
|
-
mux.sendRevealResponse({
|
|
261
|
-
requestId: payload.requestId,
|
|
262
|
-
accepted: true,
|
|
263
|
-
claimHash: payload.claimHash,
|
|
264
|
-
nonce: attestation.buyerNonce,
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
handleRevealAck(payload) {
|
|
268
|
-
this._store.updateAttestationStatus(payload.claimHash, 'revealed', { revealTxHash: payload.txHash });
|
|
269
|
-
}
|
|
270
|
-
close() { this._store.close(); }
|
|
271
|
-
}
|
|
272
|
-
export function claimPayloadToMessage(claim) {
|
|
273
|
-
return {
|
|
274
|
-
version: BigInt(claim.version),
|
|
275
|
-
channelId: claim.channelId,
|
|
276
|
-
buyer: claim.buyer,
|
|
277
|
-
seller: claim.seller,
|
|
278
|
-
sellerAgentId: BigInt(claim.sellerAgentId),
|
|
279
|
-
serviceKey: claim.serviceKey,
|
|
280
|
-
providerName: claim.providerName,
|
|
281
|
-
serviceName: claim.serviceName,
|
|
282
|
-
cumulativeInputTokens: BigInt(claim.cumulativeInputTokens),
|
|
283
|
-
cumulativeCachedInputTokens: BigInt(claim.cumulativeCachedInputTokens),
|
|
284
|
-
cumulativeFreshInputTokens: BigInt(claim.cumulativeFreshInputTokens),
|
|
285
|
-
cumulativeOutputTokens: BigInt(claim.cumulativeOutputTokens),
|
|
286
|
-
cumulativeRequestCount: BigInt(claim.cumulativeRequestCount),
|
|
287
|
-
cumulativeCostUsdc: BigInt(claim.cumulativeCostUsdc),
|
|
288
|
-
paymentCumulativeAmount: BigInt(claim.paymentCumulativeAmount),
|
|
289
|
-
};
|
|
290
|
-
}
|
|
291
|
-
function snapshotToClaim(snapshot) {
|
|
292
|
-
return {
|
|
293
|
-
version: USAGE_CLAIM_VERSION.toString(),
|
|
294
|
-
channelId: snapshot.channelId,
|
|
295
|
-
buyer: snapshot.buyerEvmAddr,
|
|
296
|
-
seller: snapshot.sellerEvmAddr,
|
|
297
|
-
sellerAgentId: snapshot.sellerAgentId,
|
|
298
|
-
serviceKey: snapshot.serviceKey,
|
|
299
|
-
providerName: snapshot.providerName,
|
|
300
|
-
serviceName: snapshot.serviceName,
|
|
301
|
-
cumulativeInputTokens: snapshot.cumulativeInputTokens,
|
|
302
|
-
cumulativeCachedInputTokens: snapshot.cumulativeCachedInputTokens,
|
|
303
|
-
cumulativeFreshInputTokens: snapshot.cumulativeFreshInputTokens,
|
|
304
|
-
cumulativeOutputTokens: snapshot.cumulativeOutputTokens,
|
|
305
|
-
cumulativeRequestCount: snapshot.cumulativeRequestCount,
|
|
306
|
-
cumulativeCostUsdc: snapshot.cumulativeCostUsdc,
|
|
307
|
-
paymentCumulativeAmount: snapshot.paymentCumulativeAmount,
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
function randomNonce() {
|
|
311
|
-
return '0x' + randomBytes(32).toString('hex');
|
|
312
|
-
}
|
|
313
|
-
export function computeUsageCostFromTokens(params) {
|
|
314
|
-
return computeCostUsdc(params.freshInputTokens, params.outputTokens, params.pricing, params.cachedInputTokens);
|
|
315
|
-
}
|
|
316
|
-
//# sourceMappingURL=usage-verification-manager.js.map
|