@antseed/node 0.2.138 → 0.2.140
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/README.md +0 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +28 -5
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +118 -39
- package/dist/node.js.map +1 -1
- package/dist/p2p/identity-envelope.d.ts +51 -0
- package/dist/p2p/identity-envelope.d.ts.map +1 -0
- package/dist/p2p/identity-envelope.js +157 -0
- package/dist/p2p/identity-envelope.js.map +1 -0
- package/dist/p2p/identity.d.ts +32 -2
- package/dist/p2p/identity.d.ts.map +1 -1
- package/dist/p2p/identity.js +133 -10
- package/dist/p2p/identity.js.map +1 -1
- package/dist/payments/evm/trust-signals-client.d.ts +9 -0
- package/dist/payments/evm/trust-signals-client.d.ts.map +1 -1
- package/dist/payments/evm/trust-signals-client.js +17 -4
- package/dist/payments/evm/trust-signals-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-envelope.js","sourceRoot":"","sources":["../../src/p2p/identity-envelope.ts"],"names":[],"mappings":"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"}
|
package/dist/p2p/identity.d.ts
CHANGED
|
@@ -16,16 +16,46 @@ export interface IdentityStore {
|
|
|
16
16
|
/** Persist the private key hex string. */
|
|
17
17
|
save(hexKey: string): Promise<void>;
|
|
18
18
|
}
|
|
19
|
+
export interface FileIdentityStoreOptions {
|
|
20
|
+
/**
|
|
21
|
+
* Unlocks an encrypted key file, and encrypts new ones. Defaults to
|
|
22
|
+
* ANTSEED_PASSPHRASE / ANTSEED_PASSPHRASE_FILE; null means no passphrase.
|
|
23
|
+
*/
|
|
24
|
+
passphrase?: string | null;
|
|
25
|
+
}
|
|
19
26
|
/**
|
|
20
|
-
* Stores identity private key as a
|
|
27
|
+
* Stores identity private key as a file on disk (default behavior): 64 hex
|
|
28
|
+
* chars, or a passphrase-encrypted envelope (see identity-envelope.ts).
|
|
21
29
|
*/
|
|
22
30
|
export declare class FileIdentityStore implements IdentityStore {
|
|
31
|
+
private readonly options;
|
|
23
32
|
private readonly keyPath;
|
|
24
33
|
private readonly encryptedKeyPath;
|
|
25
34
|
private readonly dir;
|
|
26
|
-
constructor(configDir?: string);
|
|
35
|
+
constructor(configDir?: string, options?: FileIdentityStoreOptions);
|
|
36
|
+
private passphrase;
|
|
37
|
+
/** The key file's content, or null when there is none. */
|
|
38
|
+
private readKeyFile;
|
|
27
39
|
load(): Promise<string | null>;
|
|
40
|
+
/** Written encrypted when a passphrase is configured. */
|
|
28
41
|
save(hexKey: string): Promise<void>;
|
|
42
|
+
/** How the key file is stored, or null when there is none. */
|
|
43
|
+
format(): Promise<"plaintext" | "encrypted" | null>;
|
|
44
|
+
/** The wallet address, read without the passphrase; null when there is no key file. */
|
|
45
|
+
address(): Promise<string | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Whether this passphrase unlocks the encrypted key file; null when the
|
|
48
|
+
* file is missing or plaintext. Throws when the file is unreadable or damaged.
|
|
49
|
+
*/
|
|
50
|
+
unlocksWith(passphrase: string): Promise<boolean | null>;
|
|
51
|
+
/** Encrypts a plaintext key file in place; false when it already is encrypted. */
|
|
52
|
+
protect(): Promise<boolean>;
|
|
53
|
+
/** Decrypts an encrypted key file in place; false when it already is plaintext. */
|
|
54
|
+
unprotect(): Promise<boolean>;
|
|
55
|
+
private validHex;
|
|
56
|
+
private decrypt;
|
|
57
|
+
/** Owner-only and atomic, so a crash never leaves a half-written key. */
|
|
58
|
+
private writeKeyFile;
|
|
29
59
|
}
|
|
30
60
|
export declare function identityFromPrivateKeyHex(hex: string): Identity;
|
|
31
61
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/p2p/identity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/p2p/identity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAYzD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAMlC,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/B,0CAA0C;IAC1C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAKD;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IAKrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAEjB,SAAS,CAAC,EAAE,MAAM,EAAmB,OAAO,GAAE,wBAA6B;IAMvF,OAAO,CAAC,UAAU;IAIlB,0DAA0D;YAC5C,WAAW;IASnB,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBpC,yDAAyD;IACnD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzC,8DAA8D;IACxD,MAAM,IAAI,OAAO,CAAC,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;IAMzD,uFAAuF;IACjF,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOvC;;;OAGG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgB9D,kFAAkF;IAC5E,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAejC,mFAAmF;IAC7E,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAQnC,OAAO,CAAC,QAAQ;YAMF,OAAO;IAiBrB,yEAAyE;YAC3D,YAAY;CAW3B;AAYD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAK/D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmCvG;AAGD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/p2p/identity.js
CHANGED
|
@@ -1,36 +1,50 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
|
-
import { access, readFile, writeFile, mkdir } from "node:fs/promises";
|
|
2
|
+
import { access, readFile, writeFile, mkdir, rename, rm } from "node:fs/promises";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import { Wallet } from "ethers";
|
|
6
6
|
import { toPeerId } from "../types/peer.js";
|
|
7
7
|
import { hexToBytes, bytesToHex } from "../utils/hex.js";
|
|
8
|
+
import { PASSPHRASE_ENV, PASSPHRASE_FILE_ENV, assertNewIdentityPassphrase, decryptIdentityKey, encryptIdentityKey, identityEnvelopeAddress, isIdentityEnvelope, resolveIdentityPassphrase, } from "./identity-envelope.js";
|
|
8
9
|
export { hexToBytes, bytesToHex };
|
|
9
10
|
const CONFIG_DIR = join(homedir(), ".antseed");
|
|
10
11
|
const PRIVATE_KEY_FILE = "identity.key";
|
|
11
12
|
const ENCRYPTED_PRIVATE_KEY_FILE = "identity.enc";
|
|
13
|
+
/** Decrypted keys by envelope, so repeated loads in one process skip the deliberately slow scrypt. */
|
|
14
|
+
const decryptedKeys = new Map();
|
|
12
15
|
/**
|
|
13
|
-
* Stores identity private key as a
|
|
16
|
+
* Stores identity private key as a file on disk (default behavior): 64 hex
|
|
17
|
+
* chars, or a passphrase-encrypted envelope (see identity-envelope.ts).
|
|
14
18
|
*/
|
|
15
19
|
export class FileIdentityStore {
|
|
20
|
+
options;
|
|
16
21
|
keyPath;
|
|
17
22
|
encryptedKeyPath;
|
|
18
23
|
dir;
|
|
19
|
-
constructor(configDir) {
|
|
24
|
+
constructor(configDir, options = {}) {
|
|
25
|
+
this.options = options;
|
|
20
26
|
this.dir = configDir ?? CONFIG_DIR;
|
|
21
27
|
this.keyPath = join(this.dir, PRIVATE_KEY_FILE);
|
|
22
28
|
this.encryptedKeyPath = join(this.dir, ENCRYPTED_PRIVATE_KEY_FILE);
|
|
23
29
|
}
|
|
24
|
-
|
|
30
|
+
passphrase() {
|
|
31
|
+
return this.options.passphrase !== undefined ? this.options.passphrase : resolveIdentityPassphrase();
|
|
32
|
+
}
|
|
33
|
+
/** The key file's content, or null when there is none. */
|
|
34
|
+
async readKeyFile() {
|
|
25
35
|
try {
|
|
26
|
-
|
|
27
|
-
return hexKey;
|
|
36
|
+
return (await readFile(this.keyPath, "utf-8")).trim();
|
|
28
37
|
}
|
|
29
38
|
catch (error) {
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
}
|
|
39
|
+
if (isMissingFileError(error))
|
|
40
|
+
return null;
|
|
41
|
+
throw new Error(`Unable to read identity at ${this.keyPath}; refusing to create a replacement identity.`, { cause: error });
|
|
33
42
|
}
|
|
43
|
+
}
|
|
44
|
+
async load() {
|
|
45
|
+
const stored = await this.readKeyFile();
|
|
46
|
+
if (stored !== null)
|
|
47
|
+
return isIdentityEnvelope(stored) ? this.decrypt(stored) : stored;
|
|
34
48
|
try {
|
|
35
49
|
await access(this.encryptedKeyPath);
|
|
36
50
|
}
|
|
@@ -43,9 +57,118 @@ export class FileIdentityStore {
|
|
|
43
57
|
'The CLI cannot decrypt Electron safeStorage identities and will not create a second wallet in the same data directory. ' +
|
|
44
58
|
'Back up the private key from the AI VPN and import it for CLI use, launch the CLI through the AI VPN, or choose a different --data-dir.');
|
|
45
59
|
}
|
|
60
|
+
/** Written encrypted when a passphrase is configured. */
|
|
46
61
|
async save(hexKey) {
|
|
62
|
+
const passphrase = this.passphrase();
|
|
63
|
+
if (!passphrase)
|
|
64
|
+
return this.writeKeyFile(hexKey);
|
|
65
|
+
assertNewIdentityPassphrase(passphrase);
|
|
66
|
+
await this.writeKeyFile(await encryptIdentityKey(hexKey, passphrase));
|
|
67
|
+
}
|
|
68
|
+
/** How the key file is stored, or null when there is none. */
|
|
69
|
+
async format() {
|
|
70
|
+
const stored = await this.readKeyFile();
|
|
71
|
+
if (stored === null)
|
|
72
|
+
return null;
|
|
73
|
+
return isIdentityEnvelope(stored) ? "encrypted" : "plaintext";
|
|
74
|
+
}
|
|
75
|
+
/** The wallet address, read without the passphrase; null when there is no key file. */
|
|
76
|
+
async address() {
|
|
77
|
+
const stored = await this.readKeyFile();
|
|
78
|
+
if (stored === null)
|
|
79
|
+
return null;
|
|
80
|
+
if (isIdentityEnvelope(stored))
|
|
81
|
+
return identityEnvelopeAddress(stored);
|
|
82
|
+
return identityFromPrivateKeyHex(this.validHex(stored)).wallet.address;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Whether this passphrase unlocks the encrypted key file; null when the
|
|
86
|
+
* file is missing or plaintext. Throws when the file is unreadable or damaged.
|
|
87
|
+
*/
|
|
88
|
+
async unlocksWith(passphrase) {
|
|
89
|
+
const stored = await this.readKeyFile();
|
|
90
|
+
if (stored === null || !isIdentityEnvelope(stored))
|
|
91
|
+
return null;
|
|
92
|
+
const cached = decryptedKeys.get(stored);
|
|
93
|
+
if (cached?.passphrase === passphrase)
|
|
94
|
+
return true;
|
|
95
|
+
let hexKey;
|
|
96
|
+
try {
|
|
97
|
+
hexKey = await decryptIdentityKey(stored, passphrase);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (error.message.startsWith("Wrong passphrase"))
|
|
101
|
+
return false;
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
decryptedKeys.set(stored, { passphrase, hexKey });
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
/** Encrypts a plaintext key file in place; false when it already is encrypted. */
|
|
108
|
+
async protect() {
|
|
109
|
+
const passphrase = this.passphrase();
|
|
110
|
+
if (!passphrase)
|
|
111
|
+
throw new Error(`Set ${PASSPHRASE_ENV} or ${PASSPHRASE_FILE_ENV} to the passphrase that should protect the key.`);
|
|
112
|
+
const stored = await this.readKeyFile();
|
|
113
|
+
if (stored === null)
|
|
114
|
+
throw new Error(`No identity at ${this.keyPath}.`);
|
|
115
|
+
if (isIdentityEnvelope(stored))
|
|
116
|
+
return false;
|
|
117
|
+
assertNewIdentityPassphrase(passphrase);
|
|
118
|
+
const hexKey = this.validHex(stored);
|
|
119
|
+
const envelope = await encryptIdentityKey(hexKey, passphrase);
|
|
120
|
+
// The plaintext is about to be replaced: make sure the passphrase opens what replaces it.
|
|
121
|
+
if (await decryptIdentityKey(envelope, passphrase) !== hexKey)
|
|
122
|
+
throw new Error(`Encrypting ${this.keyPath} failed its check; the file was left as it was.`);
|
|
123
|
+
await this.writeKeyFile(envelope);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
/** Decrypts an encrypted key file in place; false when it already is plaintext. */
|
|
127
|
+
async unprotect() {
|
|
128
|
+
const stored = await this.readKeyFile();
|
|
129
|
+
if (stored === null)
|
|
130
|
+
throw new Error(`No identity at ${this.keyPath}.`);
|
|
131
|
+
if (!isIdentityEnvelope(stored))
|
|
132
|
+
return false;
|
|
133
|
+
await this.writeKeyFile(await this.decrypt(stored));
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
validHex(stored) {
|
|
137
|
+
const hexKey = stored.replace(/^0x/, "");
|
|
138
|
+
if (!/^[0-9a-fA-F]{64}$/.test(hexKey))
|
|
139
|
+
throw new Error(`Identity at ${this.keyPath} is invalid: expected 64 hex characters.`);
|
|
140
|
+
return hexKey.toLowerCase();
|
|
141
|
+
}
|
|
142
|
+
async decrypt(envelope) {
|
|
143
|
+
const passphrase = this.passphrase();
|
|
144
|
+
if (!passphrase) {
|
|
145
|
+
throw new Error(`Identity at ${this.keyPath} is encrypted; set ${PASSPHRASE_ENV} or ${PASSPHRASE_FILE_ENV} to unlock it.`);
|
|
146
|
+
}
|
|
147
|
+
const cached = decryptedKeys.get(envelope);
|
|
148
|
+
if (cached?.passphrase === passphrase)
|
|
149
|
+
return cached.hexKey;
|
|
150
|
+
let hexKey;
|
|
151
|
+
try {
|
|
152
|
+
hexKey = await decryptIdentityKey(envelope, passphrase);
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
throw new Error(`Cannot unlock identity at ${this.keyPath}: ${error.message}`, { cause: error });
|
|
156
|
+
}
|
|
157
|
+
decryptedKeys.set(envelope, { passphrase, hexKey });
|
|
158
|
+
return hexKey;
|
|
159
|
+
}
|
|
160
|
+
/** Owner-only and atomic, so a crash never leaves a half-written key. */
|
|
161
|
+
async writeKeyFile(content) {
|
|
47
162
|
await mkdir(this.dir, { recursive: true });
|
|
48
|
-
|
|
163
|
+
const temp = `${this.keyPath}.${randomBytes(6).toString("hex")}.tmp`;
|
|
164
|
+
try {
|
|
165
|
+
await writeFile(temp, content, { mode: 0o600, flag: "wx" });
|
|
166
|
+
await rename(temp, this.keyPath);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
await rm(temp, { force: true });
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
49
172
|
}
|
|
50
173
|
}
|
|
51
174
|
function isMissingFileError(error) {
|
package/dist/p2p/identity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/p2p/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/p2p/identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,5 +50,14 @@ export declare class TrustSignalsClient {
|
|
|
50
50
|
* id are omitted from the result.
|
|
51
51
|
*/
|
|
52
52
|
read(sellers: readonly string[]): Promise<Map<string, TrustSignals>>;
|
|
53
|
+
/**
|
|
54
|
+
* Like `read`, and also reports which sellers the registry confirmed have
|
|
55
|
+
* no agent id, so a caller can tell them apart from sellers whose agent-id
|
|
56
|
+
* read failed (e.g. a throttled call), which are in neither.
|
|
57
|
+
*/
|
|
58
|
+
readWithMisses(sellers: readonly string[]): Promise<{
|
|
59
|
+
signals: Map<string, TrustSignals>;
|
|
60
|
+
unregistered: Set<string>;
|
|
61
|
+
}>;
|
|
53
62
|
}
|
|
54
63
|
//# sourceMappingURL=trust-signals-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust-signals-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/trust-signals-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAG1D;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAiED,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,mBAAmB,CAA+B;gBAGvC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,qBAAqB;YAGtC,KAAK;IAenB;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"trust-signals-client.d.ts","sourceRoot":"","sources":["../../../src/payments/evm/trust-signals-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAG1D;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,cAAc,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAiED,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,mBAAmB,CAA+B;gBAGvC,SAAS,EAAE,gBAAgB,EAC3B,UAAU,EAAE,qBAAqB;YAGtC,KAAK;IAenB;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAI1E;;;;OAIG;IACG,cAAc,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;CA6E7H"}
|
|
@@ -84,9 +84,18 @@ export class TrustSignalsClient {
|
|
|
84
84
|
* id are omitted from the result.
|
|
85
85
|
*/
|
|
86
86
|
async read(sellers) {
|
|
87
|
+
return (await this.readWithMisses(sellers)).signals;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Like `read`, and also reports which sellers the registry confirmed have
|
|
91
|
+
* no agent id, so a caller can tell them apart from sellers whose agent-id
|
|
92
|
+
* read failed (e.g. a throttled call), which are in neither.
|
|
93
|
+
*/
|
|
94
|
+
async readWithMisses(sellers) {
|
|
87
95
|
const out = new Map();
|
|
96
|
+
const unregistered = new Set();
|
|
88
97
|
if (sellers.length === 0)
|
|
89
|
-
return out;
|
|
98
|
+
return { signals: out, unregistered };
|
|
90
99
|
const { sellerRegistry, channels, sellerPools, usageAccounting, washTradingRegistry } = this._addresses;
|
|
91
100
|
// Round 1: agent ids, wash verdicts, current epoch.
|
|
92
101
|
const round1 = new Round();
|
|
@@ -102,8 +111,12 @@ export class TrustSignalsClient {
|
|
|
102
111
|
const agentIds = new Map();
|
|
103
112
|
for (const call of round1Calls) {
|
|
104
113
|
const agentId = toSafeNumber(round1.value(call.agentId));
|
|
105
|
-
if (
|
|
114
|
+
if (agentId === undefined)
|
|
106
115
|
continue;
|
|
116
|
+
if (agentId <= 0) {
|
|
117
|
+
unregistered.add(call.seller);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
107
120
|
agentIds.set(call.seller, agentId);
|
|
108
121
|
const signals = { agentId };
|
|
109
122
|
const flagged = round1.value(call.washFlagged);
|
|
@@ -115,7 +128,7 @@ export class TrustSignalsClient {
|
|
|
115
128
|
out.set(call.seller, signals);
|
|
116
129
|
}
|
|
117
130
|
if (agentIds.size === 0)
|
|
118
|
-
return out;
|
|
131
|
+
return { signals: out, unregistered };
|
|
119
132
|
// Round 2: channel stats, pool power, last epoch's recognized usage.
|
|
120
133
|
const poolsEnabled = Boolean(sellerPools) && epoch !== undefined;
|
|
121
134
|
const usageEnabled = Boolean(usageAccounting) && epoch !== undefined;
|
|
@@ -156,7 +169,7 @@ export class TrustSignalsClient {
|
|
|
156
169
|
signals.usageShareBps = epoch === 0 ? 0 : shareBps(points, totalPoints);
|
|
157
170
|
}
|
|
158
171
|
}
|
|
159
|
-
return out;
|
|
172
|
+
return { signals: out, unregistered };
|
|
160
173
|
}
|
|
161
174
|
}
|
|
162
175
|
//# sourceMappingURL=trust-signals-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust-signals-client.js","sourceRoot":"","sources":["../../../src/payments/evm/trust-signals-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"trust-signals-client.js","sourceRoot":"","sources":["../../../src/payments/evm/trust-signals-client.ts"],"names":[],"mappings":"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"}
|