@zerc20/storage-sdk 0.3.0 → 0.5.0
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/candid.d.ts +7 -5
- package/dist/candid.js +3 -10
- package/dist/candid.js.map +1 -1
- package/dist/crypto.d.ts +2 -0
- package/dist/crypto.js +6 -0
- package/dist/crypto.js.map +1 -1
- package/dist/formats.d.ts +25 -1
- package/dist/formats.js +42 -6
- package/dist/formats.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/passkey.d.ts +7 -0
- package/dist/passkey.js +49 -0
- package/dist/passkey.js.map +1 -0
- package/dist/send.d.ts +8 -4
- package/dist/send.js +16 -9
- package/dist/send.js.map +1 -1
- package/dist/sync.d.ts +16 -0
- package/dist/sync.js +6 -4
- package/dist/sync.js.map +1 -1
- package/dist/wire.d.ts +0 -2
- package/dist/wire.js +0 -6
- package/dist/wire.js.map +1 -1
- package/package.json +1 -1
- package/src/candid.ts +6 -15
- package/src/crypto.ts +9 -0
- package/src/formats.ts +66 -6
- package/src/index.ts +5 -3
- package/src/passkey.ts +50 -0
- package/src/send.ts +21 -10
- package/src/sync.ts +6 -4
- package/src/wire.ts +0 -15
package/dist/candid.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ActorMethod } from '@icp-sdk/core/agent';
|
|
2
2
|
import type { IDL } from '@icp-sdk/core/candid';
|
|
3
|
+
import type { Principal } from '@icp-sdk/core/principal';
|
|
3
4
|
export type KindName = 'Outgoing' | 'Lane';
|
|
4
5
|
export type Kind = {
|
|
5
6
|
[K in KindName]: {
|
|
@@ -24,8 +25,6 @@ export interface AuditRequest {
|
|
|
24
25
|
target: Uint8Array;
|
|
25
26
|
notify_key: Uint8Array;
|
|
26
27
|
transport_public_key: Uint8Array;
|
|
27
|
-
expiry_ns: bigint;
|
|
28
|
-
signature: Uint8Array;
|
|
29
28
|
}
|
|
30
29
|
export interface Registration {
|
|
31
30
|
address: Uint8Array;
|
|
@@ -40,12 +39,10 @@ export interface Slot {
|
|
|
40
39
|
at_ns: bigint;
|
|
41
40
|
}
|
|
42
41
|
export interface AuditRecord {
|
|
43
|
-
auditor:
|
|
42
|
+
auditor: Principal;
|
|
44
43
|
target: Uint8Array;
|
|
45
44
|
notify_key: Uint8Array;
|
|
46
45
|
transport_public_key: Uint8Array;
|
|
47
|
-
expiry_ns: bigint;
|
|
48
|
-
signature: Uint8Array;
|
|
49
46
|
at_ns: bigint;
|
|
50
47
|
}
|
|
51
48
|
export type CanisterError = {
|
|
@@ -63,6 +60,11 @@ export interface Service {
|
|
|
63
60
|
register: ActorMethod<[Registration, bigint], Result<null>>;
|
|
64
61
|
registration: ActorMethod<[Uint8Array, [] | [Uint8Array]], [] | [Registration]>;
|
|
65
62
|
audit_escrow_key: ActorMethod<[AuditRequest], Result<Uint8Array>>;
|
|
63
|
+
validate_audit_escrow_key: ActorMethod<[AuditRequest], {
|
|
64
|
+
Ok: string;
|
|
65
|
+
} | {
|
|
66
|
+
Err: string;
|
|
67
|
+
}>;
|
|
66
68
|
get_audits: ActorMethod<[bigint, number], AuditRecord[]>;
|
|
67
69
|
submit: ActorMethod<[Action[], bigint], Result<null>>;
|
|
68
70
|
get_announcements: ActorMethod<[Uint8Array, number, number], Uint8Array[]>;
|
package/dist/candid.js
CHANGED
|
@@ -10,13 +10,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
10
10
|
OpenChannel: IDL.Record({ inbox: Blob, enc_announcement: Blob, outgoing_id: Blob, enc_outgoing: Blob }),
|
|
11
11
|
Put: IDL.Record({ kind: Kind, id: Blob, data: Blob }),
|
|
12
12
|
});
|
|
13
|
-
const AuditRequest = IDL.Record({
|
|
14
|
-
target: Blob,
|
|
15
|
-
notify_key: Blob,
|
|
16
|
-
transport_public_key: Blob,
|
|
17
|
-
expiry_ns: IDL.Nat64,
|
|
18
|
-
signature: Blob,
|
|
19
|
-
});
|
|
13
|
+
const AuditRequest = IDL.Record({ target: Blob, notify_key: Blob, transport_public_key: Blob });
|
|
20
14
|
const Registration = IDL.Record({
|
|
21
15
|
address: Blob,
|
|
22
16
|
public_key: Blob,
|
|
@@ -27,12 +21,10 @@ export const idlFactory = ({ IDL }) => {
|
|
|
27
21
|
});
|
|
28
22
|
const Slot = IDL.Record({ data: Blob, at_ns: IDL.Nat64 });
|
|
29
23
|
const AuditRecord = IDL.Record({
|
|
30
|
-
auditor:
|
|
24
|
+
auditor: IDL.Principal,
|
|
31
25
|
target: Blob,
|
|
32
26
|
notify_key: Blob,
|
|
33
27
|
transport_public_key: Blob,
|
|
34
|
-
expiry_ns: IDL.Nat64,
|
|
35
|
-
signature: Blob,
|
|
36
28
|
at_ns: IDL.Nat64,
|
|
37
29
|
});
|
|
38
30
|
return IDL.Service({
|
|
@@ -40,6 +32,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
40
32
|
register: IDL.Func([Registration, IDL.Nat64], [UnitResult], []),
|
|
41
33
|
registration: IDL.Func([Blob, IDL.Opt(Blob)], [IDL.Opt(Registration)], ['query']),
|
|
42
34
|
audit_escrow_key: IDL.Func([AuditRequest], [BlobResult], []),
|
|
35
|
+
validate_audit_escrow_key: IDL.Func([AuditRequest], [IDL.Variant({ Ok: IDL.Text, Err: IDL.Text })], ['query']),
|
|
43
36
|
get_audits: IDL.Func([IDL.Nat64, IDL.Nat32], [IDL.Vec(AuditRecord)], ['query']),
|
|
44
37
|
submit: IDL.Func([IDL.Vec(Action), IDL.Nat64], [UnitResult], []),
|
|
45
38
|
get_announcements: IDL.Func([Blob, IDL.Nat32, IDL.Nat32], [IDL.Vec(Blob)], ['query']),
|
package/dist/candid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candid.js","sourceRoot":"","sources":["../src/candid.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,wCAAwC;
|
|
1
|
+
{"version":3,"file":"candid.js","sourceRoot":"","sources":["../src/candid.ts"],"names":[],"mappings":"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"}
|
package/dist/crypto.d.ts
CHANGED
|
@@ -2,8 +2,10 @@ import { bytesToHex, hexToBytes, randomBytes } from '@noble/hashes/utils.js';
|
|
|
2
2
|
export { bytesToHex as hex, hexToBytes as unhex, randomBytes };
|
|
3
3
|
export declare const utf8: (text: string) => Uint8Array;
|
|
4
4
|
export declare function concat(...parts: Uint8Array[]): Uint8Array;
|
|
5
|
+
export declare function u16be(n: number): Uint8Array;
|
|
5
6
|
export declare function u32be(n: number): Uint8Array;
|
|
6
7
|
export declare function u64be(n: bigint): Uint8Array;
|
|
8
|
+
export declare const readU16: (bytes: Uint8Array, at: number) => number;
|
|
7
9
|
export declare const readU32: (bytes: Uint8Array, at: number) => number;
|
|
8
10
|
export declare const readU64: (bytes: Uint8Array, at: number) => bigint;
|
|
9
11
|
export declare function equal(a: Uint8Array, b: Uint8Array): boolean;
|
package/dist/crypto.js
CHANGED
|
@@ -15,6 +15,11 @@ export function concat(...parts) {
|
|
|
15
15
|
}
|
|
16
16
|
return out;
|
|
17
17
|
}
|
|
18
|
+
export function u16be(n) {
|
|
19
|
+
const out = new Uint8Array(2);
|
|
20
|
+
new DataView(out.buffer).setUint16(0, n, false);
|
|
21
|
+
return out;
|
|
22
|
+
}
|
|
18
23
|
export function u32be(n) {
|
|
19
24
|
const out = new Uint8Array(4);
|
|
20
25
|
new DataView(out.buffer).setUint32(0, n, false);
|
|
@@ -25,6 +30,7 @@ export function u64be(n) {
|
|
|
25
30
|
new DataView(out.buffer).setBigUint64(0, n, false);
|
|
26
31
|
return out;
|
|
27
32
|
}
|
|
33
|
+
export const readU16 = (bytes, at) => new DataView(bytes.buffer, bytes.byteOffset).getUint16(at, false);
|
|
28
34
|
export const readU32 = (bytes, at) => new DataView(bytes.buffer, bytes.byteOffset).getUint32(at, false);
|
|
29
35
|
export const readU64 = (bytes, at) => new DataView(bytes.buffer, bytes.byteOffset).getBigUint64(at, false);
|
|
30
36
|
export function equal(a, b) {
|
package/dist/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
|
package/dist/formats.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Principal } from '@icp-sdk/core/principal';
|
|
1
2
|
/** A sealed slot's plaintext: the blob less the nonce and the tag. */
|
|
2
3
|
export declare const SLOT_PLAIN: number;
|
|
3
4
|
/** An inbox announcement's plaintext: also less the ephemeral key. */
|
|
@@ -18,6 +19,7 @@ export declare const POS_LANE = 8;
|
|
|
18
19
|
export declare const SENT_TO_ADDRESS = 16;
|
|
19
20
|
export declare const SENT_TO_CODE = 17;
|
|
20
21
|
export declare const CHANNEL = 32;
|
|
22
|
+
export declare const PASSKEY_SEED = 48;
|
|
21
23
|
export declare const RECEIVE_CODE = 64;
|
|
22
24
|
/** The inbox announcements of channels to `address` go to, under its registration's notify key: another
|
|
23
25
|
* registration, another inbox, so payers then open fresh channels. */
|
|
@@ -44,6 +46,11 @@ export declare const slotId: (laneKey: Uint8Array, chainId: bigint, slotIndex: n
|
|
|
44
46
|
export declare const sealKey: (laneKey: Uint8Array) => Uint8Array;
|
|
45
47
|
export declare const outgoingId: (seed: Uint8Array, index: number) => Uint8Array;
|
|
46
48
|
export declare const outgoingKey: (seed: Uint8Array) => Uint8Array;
|
|
49
|
+
/** Slot `index` of the seeds kept for a passkey, from its PRF output `prf`: the passkey alone finds them, on any device
|
|
50
|
+
* it syncs to. The canister is bound in, as for view keys, so that the same passkey's slots in two canisters do not
|
|
51
|
+
* match. */
|
|
52
|
+
export declare const passkeySeedId: (prf: Uint8Array, canister: Principal, index: number) => Uint8Array;
|
|
53
|
+
export declare const passkeySeedKey: (prf: Uint8Array, canister: Principal) => Uint8Array;
|
|
47
54
|
/** What an on-chain note commits to besides its owner's `public_key`:
|
|
48
55
|
* `note_hash = Poseidon(chain_id, public_key, value, token_id, note_salt)`. */
|
|
49
56
|
export interface NoteOpening {
|
|
@@ -82,7 +89,21 @@ export type OwnReceipt = {
|
|
|
82
89
|
} | {
|
|
83
90
|
kind: 'deposit-address';
|
|
84
91
|
depositAddress: Uint8Array;
|
|
92
|
+
/** Absent where the record does not tell them. */
|
|
93
|
+
args?: DepositArgs;
|
|
85
94
|
});
|
|
95
|
+
/** What a deposit address was registered with besides its token and burn address: with those, all the factory derives
|
|
96
|
+
* it from, so all a flush of it takes, without the relayer that registered it. */
|
|
97
|
+
export interface DepositArgs {
|
|
98
|
+
/** Big-endian, below 2^248: what the relayer takes out of each payment through it. */
|
|
99
|
+
fee: Uint8Array;
|
|
100
|
+
feeRecipient: Uint8Array;
|
|
101
|
+
/** The key that signs where each refund goes. */
|
|
102
|
+
refundSigner: Uint8Array;
|
|
103
|
+
/** The app that handed it out, and its share of what is left after the fee (bps); zero where no app did. */
|
|
104
|
+
referrer: Uint8Array;
|
|
105
|
+
referralBps: number;
|
|
106
|
+
}
|
|
86
107
|
/** Where a record sat in its lane, and when the canister first stored it (kept in the clear). */
|
|
87
108
|
interface Stamped {
|
|
88
109
|
/** Position in the lane's sequence for its chain (0, 1, 2, …), which locates its slot. Not the on-chain
|
|
@@ -145,7 +166,7 @@ export declare function notePlaintext(opening: NoteOpening, extra?: {
|
|
|
145
166
|
* the salt is out of range. */
|
|
146
167
|
export declare function depositPlaintext(tokenId: number, value: Uint8Array, burnSalt: Uint8Array, burnAddress: Uint8Array): Uint8Array | null;
|
|
147
168
|
/** `token_id(4) ‖ burn_address(20) ‖` then a return's `index(8) ‖ recipient(20) ‖ amount(31) ‖ tx_hash(32)`, or a
|
|
148
|
-
* deposit address's `deposit_address(20)
|
|
169
|
+
* deposit address's `deposit_address(20) ‖ 1 ‖ args`, its zeros in place of `1 ‖ args` without them. */
|
|
149
170
|
export declare function ownReceiptPlaintext(r: OwnReceipt): Uint8Array;
|
|
150
171
|
/** `token_id(4) ‖ first(4) ‖ count(1) ‖ salt(32) × count`. */
|
|
151
172
|
export declare function burnBlockPlaintext(b: BurnBlock): Uint8Array;
|
|
@@ -180,6 +201,9 @@ export type Target = {
|
|
|
180
201
|
/** `address(20) ‖ notify_key(32)`, or the code's body. */
|
|
181
202
|
export declare function targetPlaintext(t: Target): Uint8Array;
|
|
182
203
|
export declare function readTarget(plain: Uint8Array): Target | null;
|
|
204
|
+
/** `seed(32)`. */
|
|
205
|
+
export declare function passkeySeedPlaintext(seed: Uint8Array): Uint8Array;
|
|
206
|
+
export declare function readPasskeySeed(plain: Uint8Array): Uint8Array | null;
|
|
183
207
|
/** A channel's announcement, `payer(20) ‖ channel_seed(32)`: who claims to open it, and the seed its lane key derives
|
|
184
208
|
* from. */
|
|
185
209
|
export declare function channelPlaintext(payer: Uint8Array, seed: Uint8Array): Uint8Array;
|
package/dist/formats.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// later version can append a field that an older reader passes over; a record an older reader must not misread takes
|
|
6
6
|
// a new type, which that reader drops.
|
|
7
7
|
import { bech32m } from '@scure/base';
|
|
8
|
-
import { compare, concat, kdf, readU32, readU64, taggedHash, u32be, u64be, unhex } from './crypto.js';
|
|
8
|
+
import { compare, concat, kdf, readU16, readU32, readU64, taggedHash, u16be, u32be, u64be, unhex } from './crypto.js';
|
|
9
9
|
import { BLOB_LEN } from './wire.js';
|
|
10
10
|
/** A sealed slot's plaintext: the blob less the nonce and the tag. */
|
|
11
11
|
export const SLOT_PLAIN = BLOB_LEN - 12 - 16;
|
|
@@ -27,6 +27,7 @@ export const POS_LANE = 0x08;
|
|
|
27
27
|
export const SENT_TO_ADDRESS = 0x10;
|
|
28
28
|
export const SENT_TO_CODE = 0x11;
|
|
29
29
|
export const CHANNEL = 0x20;
|
|
30
|
+
export const PASSKEY_SEED = 0x30;
|
|
30
31
|
export const RECEIVE_CODE = 0x40;
|
|
31
32
|
// ---- ids and keys ----
|
|
32
33
|
/** The inbox announcements of channels to `address` go to, under its registration's notify key: another
|
|
@@ -54,6 +55,11 @@ export const slotId = (laneKey, chainId, slotIndex) => kdf(laneKey, 'slot', [u64
|
|
|
54
55
|
export const sealKey = (laneKey) => kdf(laneKey, 'seal');
|
|
55
56
|
export const outgoingId = (seed, index) => kdf(seed, 'outgoing-id', [u32be(index)]);
|
|
56
57
|
export const outgoingKey = (seed) => kdf(seed, 'outgoing');
|
|
58
|
+
/** Slot `index` of the seeds kept for a passkey, from its PRF output `prf`: the passkey alone finds them, on any device
|
|
59
|
+
* it syncs to. The canister is bound in, as for view keys, so that the same passkey's slots in two canisters do not
|
|
60
|
+
* match. */
|
|
61
|
+
export const passkeySeedId = (prf, canister, index) => kdf(prf, 'passkey-seed-id', [canister.toUint8Array(), u32be(index)]);
|
|
62
|
+
export const passkeySeedKey = (prf, canister) => kdf(prf, 'passkey-seed', [canister.toUint8Array()]);
|
|
57
63
|
/** The lanes each record type belongs in. A code's notes name their payer, and only the own lane's say what they are
|
|
58
64
|
* the change or the output of. */
|
|
59
65
|
const LANES = {
|
|
@@ -123,19 +129,29 @@ export function depositPlaintext(tokenId, value, burnSalt, burnAddress) {
|
|
|
123
129
|
return record(DEPOSIT, concat(u32be(tokenId), v, burnSalt, burnAddress));
|
|
124
130
|
}
|
|
125
131
|
/** `token_id(4) ‖ burn_address(20) ‖` then a return's `index(8) ‖ recipient(20) ‖ amount(31) ‖ tx_hash(32)`, or a
|
|
126
|
-
* deposit address's `deposit_address(20)
|
|
132
|
+
* deposit address's `deposit_address(20) ‖ 1 ‖ args`, its zeros in place of `1 ‖ args` without them. */
|
|
127
133
|
export function ownReceiptPlaintext(r) {
|
|
128
134
|
const amount = r.kind === 'returned' && valueBytes(r.amount);
|
|
135
|
+
const args = r.kind === 'deposit-address' && r.args && depositArgsBytes(r.args);
|
|
129
136
|
const rest = r.kind === 'returned'
|
|
130
137
|
? amount &&
|
|
131
138
|
r.recipient.length === 20 &&
|
|
132
139
|
r.txHash.length === 32 &&
|
|
133
140
|
concat(u64be(BigInt(r.index)), r.recipient, amount, r.txHash)
|
|
134
|
-
: r.depositAddress.length === 20 &&
|
|
141
|
+
: r.depositAddress.length === 20 &&
|
|
142
|
+
(r.args === undefined ? r.depositAddress : args && concat(r.depositAddress, Uint8Array.of(1), args));
|
|
135
143
|
if (!rest || r.burnAddress.length !== 20)
|
|
136
|
-
throw new Error('an own receipt holds 20-byte addresses, a 32-byte hash
|
|
144
|
+
throw new Error('an own receipt holds 20-byte addresses, a 32-byte hash, values below 2^248 and a 16-bit rate');
|
|
137
145
|
return record(r.kind === 'returned' ? RETURNED : DEPOSIT_ADDRESS, concat(u32be(r.tokenId), r.burnAddress, rest));
|
|
138
146
|
}
|
|
147
|
+
/** `fee(31) ‖ fee_recipient(20) ‖ refund_signer(20) ‖ referrer(20) ‖ referral_bps(2)`, or `null` if one is out of
|
|
148
|
+
* range. */
|
|
149
|
+
function depositArgsBytes(a) {
|
|
150
|
+
const fee = valueBytes(a.fee);
|
|
151
|
+
const addresses = [a.feeRecipient, a.refundSigner, a.referrer];
|
|
152
|
+
const bps = Number.isInteger(a.referralBps) && a.referralBps >= 0 && a.referralBps <= 0xffff;
|
|
153
|
+
return fee && bps && addresses.every((x) => x.length === 20) ? concat(fee, ...addresses, u16be(a.referralBps)) : null;
|
|
154
|
+
}
|
|
139
155
|
/** `token_id(4) ‖ first(4) ‖ count(1) ‖ salt(32) × count`. */
|
|
140
156
|
export function burnBlockPlaintext(b) {
|
|
141
157
|
if (b.salts.length === 0 || b.salts.length > BURN_BLOCK || b.salts.some((s) => s.length !== 32)) {
|
|
@@ -165,8 +181,19 @@ export function readLaneRecord(lane, chainId, slotIndex, atNs, plain) {
|
|
|
165
181
|
return { kind: 'pos-lane', ...stamp, n: readU32(plain, 1) };
|
|
166
182
|
if (type === RETURNED || type === DEPOSIT_ADDRESS) {
|
|
167
183
|
const head = { ...stamp, chainId, tokenId, burnAddress: plain.slice(5, 25) };
|
|
168
|
-
if (type === DEPOSIT_ADDRESS)
|
|
169
|
-
|
|
184
|
+
if (type === DEPOSIT_ADDRESS) {
|
|
185
|
+
const depositAddress = plain.slice(25, 45);
|
|
186
|
+
if (plain[45] !== 1)
|
|
187
|
+
return { ...head, kind: 'deposit-address', depositAddress };
|
|
188
|
+
const args = {
|
|
189
|
+
fee: wideValue(plain.subarray(46, 77)),
|
|
190
|
+
feeRecipient: plain.slice(77, 97),
|
|
191
|
+
refundSigner: plain.slice(97, 117),
|
|
192
|
+
referrer: plain.slice(117, 137),
|
|
193
|
+
referralBps: readU16(plain, 137),
|
|
194
|
+
};
|
|
195
|
+
return { ...head, kind: 'deposit-address', depositAddress, args };
|
|
196
|
+
}
|
|
170
197
|
const [recipient, amount, txHash] = [plain.slice(33, 53), wideValue(plain.subarray(53, 84)), plain.slice(84, 116)];
|
|
171
198
|
return { ...head, kind: 'returned', index: Number(readU64(plain, 25)), recipient, amount, txHash };
|
|
172
199
|
}
|
|
@@ -228,6 +255,15 @@ export function readTarget(plain) {
|
|
|
228
255
|
return readCodeBody(plain.subarray(1, 97));
|
|
229
256
|
return null;
|
|
230
257
|
}
|
|
258
|
+
/** `seed(32)`. */
|
|
259
|
+
export function passkeySeedPlaintext(seed) {
|
|
260
|
+
if (seed.length !== 32)
|
|
261
|
+
throw new Error('a seed is 32 bytes');
|
|
262
|
+
return record(PASSKEY_SEED, seed);
|
|
263
|
+
}
|
|
264
|
+
export function readPasskeySeed(plain) {
|
|
265
|
+
return plain.length === SLOT_PLAIN && plain[0] === PASSKEY_SEED ? plain.slice(1, 33) : null;
|
|
266
|
+
}
|
|
231
267
|
/** A channel's announcement, `payer(20) ‖ channel_seed(32)`: who claims to open it, and the seed its lane key derives
|
|
232
268
|
* from. */
|
|
233
269
|
export function channelPlaintext(payer, seed) {
|
package/dist/formats.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export type { Action, AuditRecord, AuditRequest, CanisterError, Kind, Registration, Service, Slot } from './candid.js';
|
|
2
2
|
export { idlFactory } from './candid.js';
|
|
3
3
|
export { CanisterClient, StorageError } from './canister.js';
|
|
4
|
-
export { BURN_BLOCK, FR_BE, addressInbox, codeKey, decodeCode, burnKey, encodeCode, posKey, type BurnBlock, type Deposit, type LaneRecord, type Note, type NoteOpening, type OwnReceipt, type PosLane, type Receipt, type ReceiveCode, type Via, } from './formats.js';
|
|
5
|
-
export {
|
|
4
|
+
export { BURN_BLOCK, FR_BE, addressInbox, codeKey, decodeCode, burnKey, encodeCode, posKey, type BurnBlock, type Deposit, type DepositArgs, type LaneRecord, type Note, type NoteOpening, type OwnReceipt, type PosLane, type Receipt, type ReceiveCode, type Via, } from './formats.js';
|
|
5
|
+
export { fetchPasskeySeed, storePasskeySeed } from './passkey.js';
|
|
6
|
+
export { commit, nextPosLane, planBurnBlock, planDeposit, planPayCode, planPosLane, planReceipt, planSelf, planSend, MAX_POS_BLOCKS, writePosBlocks, } from './send.js';
|
|
6
7
|
export { type ChainLane, type NewRecord, type StoredLane, type SyncState, emptyState, exportState, importState, refresh, } from './sync.js';
|
|
7
8
|
export { type Recipient, type Signer, type ViewKey, eip191Signer, lookupRecipient, notifyKey, notifySecret, openEscrow, registeredViewKey, register, verifyRegistration, viewKey, } from './viewKey.js';
|
|
8
|
-
export { REGISTER_POW_BITS, actionsDigest,
|
|
9
|
+
export { REGISTER_POW_BITS, actionsDigest, powOk, registerDigest, registerMessage, requiredPowBits, solvePow, vetkdInput, } from './wire.js';
|
package/dist/index.js
CHANGED
|
@@ -12,14 +12,15 @@
|
|
|
12
12
|
// wallet's own is also a receive code (`encodeCode`), paid by a deposit or by a note, any amount, any number of
|
|
13
13
|
// times.
|
|
14
14
|
// - Points of sale (`planPosLane`): a lane whose key (`posKey`) the owner hands to one point of sale, which records
|
|
15
|
-
// there the burn addresses it hands out (`
|
|
15
|
+
// there the burn addresses it hands out (`writePosBlocks`), for every device of the owner to find.
|
|
16
16
|
//
|
|
17
17
|
// Payers are not verified: a record's `peer` is only what was claimed.
|
|
18
18
|
export { idlFactory } from './candid.js';
|
|
19
19
|
export { CanisterClient, StorageError } from './canister.js';
|
|
20
20
|
export { BURN_BLOCK, FR_BE, addressInbox, codeKey, decodeCode, burnKey, encodeCode, posKey, } from './formats.js';
|
|
21
|
-
export {
|
|
21
|
+
export { fetchPasskeySeed, storePasskeySeed } from './passkey.js';
|
|
22
|
+
export { commit, nextPosLane, planBurnBlock, planDeposit, planPayCode, planPosLane, planReceipt, planSelf, planSend, MAX_POS_BLOCKS, writePosBlocks, } from './send.js';
|
|
22
23
|
export { emptyState, exportState, importState, refresh, } from './sync.js';
|
|
23
24
|
export { eip191Signer, lookupRecipient, notifyKey, notifySecret, openEscrow, registeredViewKey, register, verifyRegistration, viewKey, } from './viewKey.js';
|
|
24
|
-
export { REGISTER_POW_BITS, actionsDigest,
|
|
25
|
+
export { REGISTER_POW_BITS, actionsDigest, powOk, registerDigest, registerMessage, requiredPowBits, solvePow, vetkdInput, } from './wire.js';
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,wHAAwH;AACxH,iHAAiH;AACjH,gHAAgH;AAChH,yCAAyC;AACzC,iHAAiH;AACjH,+DAA+D;AAC/D,oHAAoH;AACpH,kFAAkF;AAClF,qHAAqH;AACrH,kHAAkH;AAClH,WAAW;AACX,oHAAoH;AACpH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,wHAAwH;AACxH,iHAAiH;AACjH,gHAAgH;AAChH,yCAAyC;AACzC,iHAAiH;AACjH,+DAA+D;AAC/D,oHAAoH;AACpH,kFAAkF;AAClF,qHAAqH;AACrH,kHAAkH;AAClH,WAAW;AACX,oHAAoH;AACpH,qGAAqG;AACrG,EAAE;AACF,uEAAuE;AAGvE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,UAAU,EACV,KAAK,EACL,YAAY,EACZ,OAAO,EACP,UAAU,EACV,OAAO,EACP,UAAU,EACV,MAAM,GAYP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAKL,UAAU,EACV,WAAW,EACX,WAAW,EACX,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,YAAY,EACZ,eAAe,EACf,SAAS,EACT,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,kBAAkB,EAClB,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,QAAQ,EACR,UAAU,GACX,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type CanisterClient } from './canister.js';
|
|
2
|
+
/** The seed kept for the passkey whose PRF output is `prf`, or `null` if none is. The last one counts, so that a later
|
|
3
|
+
* version appends a record rather than rewrite one. */
|
|
4
|
+
export declare function fetchPasskeySeed(client: CanisterClient, prf: Uint8Array): Promise<Uint8Array | null>;
|
|
5
|
+
/** Keeps `seed` for the passkey whose PRF output is `prf`, unless it is the one kept already: a retry, or a device that
|
|
6
|
+
* kept it only on its own, writes nothing twice. */
|
|
7
|
+
export declare function storePasskeySeed(client: CanisterClient, prf: Uint8Array, seed: Uint8Array): Promise<void>;
|
package/dist/passkey.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Seeds kept for passkeys. A wallet whose account was restored from its recovery phrase opens it with a passkey whose
|
|
2
|
+
// PRF output is not the seed, so the seed is sealed in Outgoing slots whose ids and key only that PRF output derives:
|
|
3
|
+
// the passkey, synced to another device, finds and opens it there. Outgoing slots join no log and every blob has one
|
|
4
|
+
// length, so the canister tells these from no other record.
|
|
5
|
+
import { StorageError } from './canister.js';
|
|
6
|
+
import { equal, open, seal } from './crypto.js';
|
|
7
|
+
import { passkeySeedId, passkeySeedKey, passkeySeedPlaintext, readPasskeySeed } from './formats.js';
|
|
8
|
+
import { readSequences } from './sync.js';
|
|
9
|
+
const OUTGOING = { Outgoing: null };
|
|
10
|
+
/** Submits a store makes before it gives up: each `Occupied` means someone who saw the slot's id asked for wrote first. */
|
|
11
|
+
const STORE_TRIES = 3;
|
|
12
|
+
/** The seeds kept for `prf`'s passkey, in slot order, and the first empty slot. A slot that does not open is passed
|
|
13
|
+
* over: someone who saw its id asked for may have written it first. */
|
|
14
|
+
async function kept(client, prf) {
|
|
15
|
+
const key = passkeySeedKey(prf, client.canisterId);
|
|
16
|
+
const idAt = (i) => passkeySeedId(prf, client.canisterId, i);
|
|
17
|
+
const [filled] = await readSequences(client, OUTGOING, [{ next: 0, idAt }]);
|
|
18
|
+
const seeds = filled.flatMap(({ id, slot }) => {
|
|
19
|
+
const plain = open(key, id, slot.data);
|
|
20
|
+
const seed = plain && readPasskeySeed(plain);
|
|
21
|
+
return seed ? [seed] : [];
|
|
22
|
+
});
|
|
23
|
+
return { seeds, end: filled.length };
|
|
24
|
+
}
|
|
25
|
+
/** The seed kept for the passkey whose PRF output is `prf`, or `null` if none is. The last one counts, so that a later
|
|
26
|
+
* version appends a record rather than rewrite one. */
|
|
27
|
+
export async function fetchPasskeySeed(client, prf) {
|
|
28
|
+
return (await kept(client, prf)).seeds.at(-1) ?? null;
|
|
29
|
+
}
|
|
30
|
+
/** Keeps `seed` for the passkey whose PRF output is `prf`, unless it is the one kept already: a retry, or a device that
|
|
31
|
+
* kept it only on its own, writes nothing twice. */
|
|
32
|
+
export async function storePasskeySeed(client, prf, seed) {
|
|
33
|
+
for (let tries = 1;; tries++) {
|
|
34
|
+
const { seeds, end } = await kept(client, prf);
|
|
35
|
+
const last = seeds.at(-1);
|
|
36
|
+
if (last && equal(last, seed))
|
|
37
|
+
return;
|
|
38
|
+
const id = passkeySeedId(prf, client.canisterId, end);
|
|
39
|
+
const data = seal(passkeySeedKey(prf, client.canisterId), id, passkeySeedPlaintext(seed));
|
|
40
|
+
try {
|
|
41
|
+
return await client.submit([{ Put: { kind: OUTGOING, id, data } }]);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
if (!(e instanceof StorageError && e.occupied) || tries === STORE_TRIES)
|
|
45
|
+
throw e;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=passkey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../src/passkey.ts"],"names":[],"mappings":"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"}
|
package/dist/send.d.ts
CHANGED
|
@@ -36,10 +36,14 @@ export declare const nextPosLane: (state: SyncState) => number;
|
|
|
36
36
|
/** The record of point of sale `n` in the own lane, so that every device of the owner reads its lane (`posKey`). Plan
|
|
37
37
|
* it with `n = nextPosLane(state)` inside `commit`'s plan: after `Occupied`, another device took that number. */
|
|
38
38
|
export declare function planPosLane(view: ViewKey, state: SyncState, chainId: bigint, n: number): Action[];
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
/** The most burn blocks one `writePosBlocks` takes: the canister's actions per batch. */
|
|
40
|
+
export declare const MAX_POS_BLOCKS = 16;
|
|
41
|
+
/** Writes `blocks`, all of one chain, to the lane of `laneKey`, as the point of sale that alone holds the key, in one
|
|
42
|
+
* batch at the lane's first empty slots from `from` on; returns the slot after the last. A batch is written whole or
|
|
43
|
+
* not at all, and from the first empty slot, so the lane's filled slots stay a run from 0 that readers read to its end:
|
|
44
|
+
* a batch that finds a slot taken found the first, and tries again past it. The same salts written twice are found
|
|
45
|
+
* once. */
|
|
46
|
+
export declare function writePosBlocks(client: CanisterClient, laneKey: Uint8Array, blocks: BurnBlock[], from?: number): Promise<number>;
|
|
43
47
|
/** Submits the actions `plan` builds from `state`, then refreshes; continue from the returned state,
|
|
44
48
|
* or the next plan reuses a slot that is taken. After `Occupied` (another device wrote there first)
|
|
45
49
|
* it refreshes and plans once more. Calls that fail without an answer are retried with the same
|
package/dist/send.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Planning payments, deposits, notes to self, burn blocks and points of sale from a synced state, and submitting them.
|
|
2
|
-
// A point of sale writes its own lane with its key alone (`
|
|
2
|
+
// A point of sale writes its own lane with its key alone (`writePosBlocks`).
|
|
3
3
|
//
|
|
4
4
|
// Write the note here first, then create the on-chain note with the same opening: a note that exists
|
|
5
5
|
// only on chain cannot be found. Receivers match notes one-to-one to on-chain leaves (by
|
|
@@ -109,16 +109,23 @@ export function planPosLane(view, state, chainId, n) {
|
|
|
109
109
|
checkState(view, state);
|
|
110
110
|
return [put(ownKey(view.seed), chainId, nextSlotIndex(state, state.own, chainId), posLanePlaintext(n))];
|
|
111
111
|
}
|
|
112
|
-
/**
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
/** The most burn blocks one `writePosBlocks` takes: the canister's actions per batch. */
|
|
113
|
+
export const MAX_POS_BLOCKS = 16;
|
|
114
|
+
/** Writes `blocks`, all of one chain, to the lane of `laneKey`, as the point of sale that alone holds the key, in one
|
|
115
|
+
* batch at the lane's first empty slots from `from` on; returns the slot after the last. A batch is written whole or
|
|
116
|
+
* not at all, and from the first empty slot, so the lane's filled slots stay a run from 0 that readers read to its end:
|
|
117
|
+
* a batch that finds a slot taken found the first, and tries again past it. The same salts written twice are found
|
|
118
|
+
* once. */
|
|
119
|
+
export async function writePosBlocks(client, laneKey, blocks, from = 0) {
|
|
120
|
+
const chainId = blocks[0]?.chainId;
|
|
121
|
+
if (chainId === undefined || blocks.length > MAX_POS_BLOCKS || blocks.some((b) => b.chainId !== chainId))
|
|
122
|
+
throw new Error(`1 to ${MAX_POS_BLOCKS} burn blocks, all of one chain`);
|
|
123
|
+
const plaintexts = blocks.map(burnBlockPlaintext);
|
|
117
124
|
for (;;) {
|
|
118
|
-
const at = await sequenceEnd(client, (i) => slotId(laneKey,
|
|
125
|
+
const at = await sequenceEnd(client, (i) => slotId(laneKey, chainId, i), from);
|
|
119
126
|
try {
|
|
120
|
-
await submit(client,
|
|
121
|
-
return at +
|
|
127
|
+
await submit(client, plaintexts.map((p, i) => put(laneKey, chainId, at + i, p)));
|
|
128
|
+
return at + blocks.length;
|
|
122
129
|
}
|
|
123
130
|
catch (e) {
|
|
124
131
|
if (!(e instanceof StorageError && e.occupied))
|
package/dist/send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../src/send.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Kind, Slot } from './candid.js';
|
|
1
2
|
import type { CanisterClient } from './canister.js';
|
|
2
3
|
import { type LaneRecord, type Via } from './formats.js';
|
|
3
4
|
import { type ViewKey } from './viewKey.js';
|
|
@@ -72,6 +73,20 @@ export declare function refresh(client: CanisterClient, view: ViewKey, state: Sy
|
|
|
72
73
|
state: SyncState;
|
|
73
74
|
added: NewRecord[];
|
|
74
75
|
}>;
|
|
76
|
+
interface Sequence {
|
|
77
|
+
/** First slot index not read yet. */
|
|
78
|
+
next: number;
|
|
79
|
+
idAt: (index: number) => Uint8Array;
|
|
80
|
+
}
|
|
81
|
+
type Filled = {
|
|
82
|
+
id: Uint8Array;
|
|
83
|
+
slot: Slot;
|
|
84
|
+
};
|
|
85
|
+
/** The filled slots of each sequence from its `next` index up to the first empty one. The first round
|
|
86
|
+
* checks one slot per sequence; sequences with news are then read `BATCH` slots at a time, twice as many each round
|
|
87
|
+
* up to `MAX_READ`, so that a lane of hundreds of records, read on a new device, takes a few round trips. A wider read
|
|
88
|
+
* costs little: the replicated read, the slow one, takes only the slots the single-replica one found filled. */
|
|
89
|
+
export declare function readSequences(client: CanisterClient, kind: Kind, sequences: Sequence[]): Promise<Filled[][]>;
|
|
75
90
|
/** The first empty slot of a lane's sequence from slot `from` on: where a code's first payment goes, or a point of
|
|
76
91
|
* sale's next block. */
|
|
77
92
|
export declare function sequenceEnd(client: CanisterClient, idAt: (index: number) => Uint8Array, from?: number): Promise<number>;
|
|
@@ -80,3 +95,4 @@ export declare function exportState(view: ViewKey, state: SyncState): Uint8Array
|
|
|
80
95
|
/** The state `exportState` encrypted, or `null` if `bytes` is not one for `view` (start over from
|
|
81
96
|
* `emptyState` then). */
|
|
82
97
|
export declare function importState(view: ViewKey, bytes: Uint8Array): SyncState | null;
|
|
98
|
+
export {};
|
package/dist/sync.js
CHANGED
|
@@ -6,7 +6,7 @@ import { concat, equal, hex, kdf, open, openFrom, seal, unhex, utf8 } from './cr
|
|
|
6
6
|
import { addressInbox, channelKey, channelSeed, codeKey, outgoingId, outgoingKey, ownKey, posKey, readChannel, readLaneRecord, readTarget, sealKey, slotId, } from './formats.js';
|
|
7
7
|
import { notifyKey, notifySecret } from './viewKey.js';
|
|
8
8
|
import { MAX_LOG_READ, MAX_READ } from './wire.js';
|
|
9
|
-
/** Slots read per sequence and round trip once a sequence has news. */
|
|
9
|
+
/** Slots read per sequence and round trip once a sequence has news, at first. */
|
|
10
10
|
const BATCH = 16;
|
|
11
11
|
export const emptyState = (view, chains) => ({
|
|
12
12
|
address: view.address,
|
|
@@ -201,11 +201,13 @@ async function readInbox(client, inbox, start) {
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
/** The filled slots of each sequence from its `next` index up to the first empty one. The first round
|
|
204
|
-
* checks one slot per sequence; sequences with news are then read `BATCH` slots at a time
|
|
205
|
-
|
|
204
|
+
* checks one slot per sequence; sequences with news are then read `BATCH` slots at a time, twice as many each round
|
|
205
|
+
* up to `MAX_READ`, so that a lane of hundreds of records, read on a new device, takes a few round trips. A wider read
|
|
206
|
+
* costs little: the replicated read, the slow one, takes only the slots the single-replica one found filled. */
|
|
207
|
+
export async function readSequences(client, kind, sequences) {
|
|
206
208
|
const found = sequences.map(() => []);
|
|
207
209
|
let pending = sequences.map((_, s) => s);
|
|
208
|
-
for (let width = 1; pending.length > 0; width = BATCH) {
|
|
210
|
+
for (let width = 1; pending.length > 0; width = Math.min(width === 1 ? BATCH : width * 2, MAX_READ)) {
|
|
209
211
|
const ids = pending.map((s) => {
|
|
210
212
|
const { next, idAt } = sequences[s];
|
|
211
213
|
return Array.from({ length: width }, (_, i) => idAt(next + found[s].length + i));
|
package/dist/sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/wire.d.ts
CHANGED
|
@@ -17,8 +17,6 @@ export declare const MAX_TTL_NS = 600000000000n;
|
|
|
17
17
|
export declare const vetkdInput: (address: Uint8Array, notifyKey: Uint8Array) => Uint8Array;
|
|
18
18
|
/** What an address owner signs (EIP-191) to register. */
|
|
19
19
|
export declare function registerMessage(canister: Principal, r: Registration): string;
|
|
20
|
-
/** What the auditor signs (EIP-191) to receive the key to the escrow of `target`'s registration with `notifyKey`. */
|
|
21
|
-
export declare function auditMessage(canister: Principal, target: Uint8Array, notifyKey: Uint8Array, transportPublicKey: Uint8Array, expiryNs: bigint): string;
|
|
22
20
|
export declare function registerDigest(r: Registration): Uint8Array;
|
|
23
21
|
export declare function actionsDigest(actions: Action[]): Uint8Array;
|
|
24
22
|
export declare const requiredPowBits: (actions: Action[]) => number;
|
package/dist/wire.js
CHANGED
|
@@ -28,12 +28,6 @@ export function registerMessage(canister, r) {
|
|
|
28
28
|
`public_key: 0x${hex(r.public_key)}\nnotify_key: 0x${hex(r.notify_key)}\n` +
|
|
29
29
|
`escrow_sha256: 0x${hex(sha256(r.escrow))}\nexpiry_ns: ${r.expiry_ns}\ntag: ${REGISTRATION_TAG}`);
|
|
30
30
|
}
|
|
31
|
-
/** What the auditor signs (EIP-191) to receive the key to the escrow of `target`'s registration with `notifyKey`. */
|
|
32
|
-
export function auditMessage(canister, target, notifyKey, transportPublicKey, expiryNs) {
|
|
33
|
-
return (`zERC20 storage audit request\ncanister: ${canister.toText()}\ntarget: 0x${hex(target)}\n` +
|
|
34
|
-
`notify_key: 0x${hex(notifyKey)}\ntransport_public_key: 0x${hex(transportPublicKey)}\nexpiry_ns: ${expiryNs}\n` +
|
|
35
|
-
'tag: zerc20/storage/audit/v1');
|
|
36
|
-
}
|
|
37
31
|
export function registerDigest(r) {
|
|
38
32
|
return taggedHash(REGISTRATION_TAG, [r.address, r.public_key, r.notify_key, r.escrow, u64be(r.expiry_ns)]);
|
|
39
33
|
}
|
package/dist/wire.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA,6GAA6G;AAC7G,iHAAiH;AACjH,mCAAmC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnF,yFAAyF;AACzF,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC3B,2FAA2F;AAC3F,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,qFAAqF;AACrF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC5B,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC5B,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,aAAgB,CAAC;AAE3C,iFAAiF;AACjF,MAAM,SAAS,GAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAErE,+EAA+E;AAC/E,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAE1D;kBACkB;AAClB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAmB,EAAE,SAAqB,EAAc,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAEjH,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,QAAmB,EAAE,CAAe;IAClE,OAAO,CACL,0CAA0C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;QAC7F,iBAAiB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI;QAC1E,oBAAoB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,SAAS,UAAU,gBAAgB,EAAE,CACjG,CAAC;AACJ,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/candid.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import type { ActorMethod } from '@icp-sdk/core/agent';
|
|
5
5
|
import type { IDL } from '@icp-sdk/core/candid';
|
|
6
|
+
import type { Principal } from '@icp-sdk/core/principal';
|
|
6
7
|
|
|
7
8
|
export type KindName = 'Outgoing' | 'Lane';
|
|
8
9
|
export type Kind = { [K in KindName]: { [P in K]: null } }[KindName];
|
|
@@ -22,8 +23,6 @@ export interface AuditRequest {
|
|
|
22
23
|
target: Uint8Array;
|
|
23
24
|
notify_key: Uint8Array;
|
|
24
25
|
transport_public_key: Uint8Array;
|
|
25
|
-
expiry_ns: bigint;
|
|
26
|
-
signature: Uint8Array;
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
export interface Registration {
|
|
@@ -41,12 +40,10 @@ export interface Slot {
|
|
|
41
40
|
}
|
|
42
41
|
|
|
43
42
|
export interface AuditRecord {
|
|
44
|
-
auditor:
|
|
43
|
+
auditor: Principal;
|
|
45
44
|
target: Uint8Array;
|
|
46
45
|
notify_key: Uint8Array;
|
|
47
46
|
transport_public_key: Uint8Array;
|
|
48
|
-
expiry_ns: bigint;
|
|
49
|
-
signature: Uint8Array;
|
|
50
47
|
at_ns: bigint;
|
|
51
48
|
}
|
|
52
49
|
|
|
@@ -58,6 +55,7 @@ export interface Service {
|
|
|
58
55
|
register: ActorMethod<[Registration, bigint], Result<null>>;
|
|
59
56
|
registration: ActorMethod<[Uint8Array, [] | [Uint8Array]], [] | [Registration]>;
|
|
60
57
|
audit_escrow_key: ActorMethod<[AuditRequest], Result<Uint8Array>>;
|
|
58
|
+
validate_audit_escrow_key: ActorMethod<[AuditRequest], { Ok: string } | { Err: string }>;
|
|
61
59
|
get_audits: ActorMethod<[bigint, number], AuditRecord[]>;
|
|
62
60
|
submit: ActorMethod<[Action[], bigint], Result<null>>;
|
|
63
61
|
get_announcements: ActorMethod<[Uint8Array, number, number], Uint8Array[]>;
|
|
@@ -76,13 +74,7 @@ export const idlFactory: IDL.InterfaceFactory = ({ IDL }) => {
|
|
|
76
74
|
OpenChannel: IDL.Record({ inbox: Blob, enc_announcement: Blob, outgoing_id: Blob, enc_outgoing: Blob }),
|
|
77
75
|
Put: IDL.Record({ kind: Kind, id: Blob, data: Blob }),
|
|
78
76
|
});
|
|
79
|
-
const AuditRequest = IDL.Record({
|
|
80
|
-
target: Blob,
|
|
81
|
-
notify_key: Blob,
|
|
82
|
-
transport_public_key: Blob,
|
|
83
|
-
expiry_ns: IDL.Nat64,
|
|
84
|
-
signature: Blob,
|
|
85
|
-
});
|
|
77
|
+
const AuditRequest = IDL.Record({ target: Blob, notify_key: Blob, transport_public_key: Blob });
|
|
86
78
|
const Registration = IDL.Record({
|
|
87
79
|
address: Blob,
|
|
88
80
|
public_key: Blob,
|
|
@@ -93,12 +85,10 @@ export const idlFactory: IDL.InterfaceFactory = ({ IDL }) => {
|
|
|
93
85
|
});
|
|
94
86
|
const Slot = IDL.Record({ data: Blob, at_ns: IDL.Nat64 });
|
|
95
87
|
const AuditRecord = IDL.Record({
|
|
96
|
-
auditor:
|
|
88
|
+
auditor: IDL.Principal,
|
|
97
89
|
target: Blob,
|
|
98
90
|
notify_key: Blob,
|
|
99
91
|
transport_public_key: Blob,
|
|
100
|
-
expiry_ns: IDL.Nat64,
|
|
101
|
-
signature: Blob,
|
|
102
92
|
at_ns: IDL.Nat64,
|
|
103
93
|
});
|
|
104
94
|
return IDL.Service({
|
|
@@ -106,6 +96,7 @@ export const idlFactory: IDL.InterfaceFactory = ({ IDL }) => {
|
|
|
106
96
|
register: IDL.Func([Registration, IDL.Nat64], [UnitResult], []),
|
|
107
97
|
registration: IDL.Func([Blob, IDL.Opt(Blob)], [IDL.Opt(Registration)], ['query']),
|
|
108
98
|
audit_escrow_key: IDL.Func([AuditRequest], [BlobResult], []),
|
|
99
|
+
validate_audit_escrow_key: IDL.Func([AuditRequest], [IDL.Variant({ Ok: IDL.Text, Err: IDL.Text })], ['query']),
|
|
109
100
|
get_audits: IDL.Func([IDL.Nat64, IDL.Nat32], [IDL.Vec(AuditRecord)], ['query']),
|
|
110
101
|
submit: IDL.Func([IDL.Vec(Action), IDL.Nat64], [UnitResult], []),
|
|
111
102
|
get_announcements: IDL.Func([Blob, IDL.Nat32, IDL.Nat32], [IDL.Vec(Blob)], ['query']),
|
package/src/crypto.ts
CHANGED
|
@@ -20,6 +20,12 @@ export function concat(...parts: Uint8Array[]): Uint8Array {
|
|
|
20
20
|
return out;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
export function u16be(n: number): Uint8Array {
|
|
24
|
+
const out = new Uint8Array(2);
|
|
25
|
+
new DataView(out.buffer).setUint16(0, n, false);
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
|
|
23
29
|
export function u32be(n: number): Uint8Array {
|
|
24
30
|
const out = new Uint8Array(4);
|
|
25
31
|
new DataView(out.buffer).setUint32(0, n, false);
|
|
@@ -32,6 +38,9 @@ export function u64be(n: bigint): Uint8Array {
|
|
|
32
38
|
return out;
|
|
33
39
|
}
|
|
34
40
|
|
|
41
|
+
export const readU16 = (bytes: Uint8Array, at: number): number =>
|
|
42
|
+
new DataView(bytes.buffer, bytes.byteOffset).getUint16(at, false);
|
|
43
|
+
|
|
35
44
|
export const readU32 = (bytes: Uint8Array, at: number): number =>
|
|
36
45
|
new DataView(bytes.buffer, bytes.byteOffset).getUint32(at, false);
|
|
37
46
|
|
package/src/formats.ts
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
// later version can append a field that an older reader passes over; a record an older reader must not misread takes
|
|
6
6
|
// a new type, which that reader drops.
|
|
7
7
|
|
|
8
|
+
import type { Principal } from '@icp-sdk/core/principal';
|
|
8
9
|
import { bech32m } from '@scure/base';
|
|
9
|
-
import { compare, concat, kdf, readU32, readU64, taggedHash, u32be, u64be, unhex } from './crypto.js';
|
|
10
|
+
import { compare, concat, kdf, readU16, readU32, readU64, taggedHash, u16be, u32be, u64be, unhex } from './crypto.js';
|
|
10
11
|
import { BLOB_LEN } from './wire.js';
|
|
11
12
|
|
|
12
13
|
/** A sealed slot's plaintext: the blob less the nonce and the tag. */
|
|
@@ -30,6 +31,7 @@ export const POS_LANE = 0x08;
|
|
|
30
31
|
export const SENT_TO_ADDRESS = 0x10;
|
|
31
32
|
export const SENT_TO_CODE = 0x11;
|
|
32
33
|
export const CHANNEL = 0x20;
|
|
34
|
+
export const PASSKEY_SEED = 0x30;
|
|
33
35
|
export const RECEIVE_CODE = 0x40;
|
|
34
36
|
|
|
35
37
|
// ---- ids and keys ----
|
|
@@ -73,6 +75,14 @@ export const sealKey = (laneKey: Uint8Array): Uint8Array => kdf(laneKey, 'seal')
|
|
|
73
75
|
export const outgoingId = (seed: Uint8Array, index: number): Uint8Array => kdf(seed, 'outgoing-id', [u32be(index)]);
|
|
74
76
|
export const outgoingKey = (seed: Uint8Array): Uint8Array => kdf(seed, 'outgoing');
|
|
75
77
|
|
|
78
|
+
/** Slot `index` of the seeds kept for a passkey, from its PRF output `prf`: the passkey alone finds them, on any device
|
|
79
|
+
* it syncs to. The canister is bound in, as for view keys, so that the same passkey's slots in two canisters do not
|
|
80
|
+
* match. */
|
|
81
|
+
export const passkeySeedId = (prf: Uint8Array, canister: Principal, index: number): Uint8Array =>
|
|
82
|
+
kdf(prf, 'passkey-seed-id', [canister.toUint8Array(), u32be(index)]);
|
|
83
|
+
export const passkeySeedKey = (prf: Uint8Array, canister: Principal): Uint8Array =>
|
|
84
|
+
kdf(prf, 'passkey-seed', [canister.toUint8Array()]);
|
|
85
|
+
|
|
76
86
|
// ---- records ----
|
|
77
87
|
|
|
78
88
|
/** What an on-chain note commits to besides its owner's `public_key`:
|
|
@@ -110,9 +120,27 @@ export type OwnReceipt = { chainId: bigint; tokenId: number; burnAddress: Uint8A
|
|
|
110
120
|
amount: Uint8Array;
|
|
111
121
|
txHash: Uint8Array;
|
|
112
122
|
}
|
|
113
|
-
| {
|
|
123
|
+
| {
|
|
124
|
+
kind: 'deposit-address';
|
|
125
|
+
depositAddress: Uint8Array;
|
|
126
|
+
/** Absent where the record does not tell them. */
|
|
127
|
+
args?: DepositArgs;
|
|
128
|
+
}
|
|
114
129
|
);
|
|
115
130
|
|
|
131
|
+
/** What a deposit address was registered with besides its token and burn address: with those, all the factory derives
|
|
132
|
+
* it from, so all a flush of it takes, without the relayer that registered it. */
|
|
133
|
+
export interface DepositArgs {
|
|
134
|
+
/** Big-endian, below 2^248: what the relayer takes out of each payment through it. */
|
|
135
|
+
fee: Uint8Array;
|
|
136
|
+
feeRecipient: Uint8Array;
|
|
137
|
+
/** The key that signs where each refund goes. */
|
|
138
|
+
refundSigner: Uint8Array;
|
|
139
|
+
/** The app that handed it out, and its share of what is left after the fee (bps); zero where no app did. */
|
|
140
|
+
referrer: Uint8Array;
|
|
141
|
+
referralBps: number;
|
|
142
|
+
}
|
|
143
|
+
|
|
116
144
|
/** Where a record sat in its lane, and when the canister first stored it (kept in the clear). */
|
|
117
145
|
interface Stamped {
|
|
118
146
|
/** Position in the lane's sequence for its chain (0, 1, 2, …), which locates its slot. Not the on-chain
|
|
@@ -255,21 +283,32 @@ export function depositPlaintext(
|
|
|
255
283
|
}
|
|
256
284
|
|
|
257
285
|
/** `token_id(4) ‖ burn_address(20) ‖` then a return's `index(8) ‖ recipient(20) ‖ amount(31) ‖ tx_hash(32)`, or a
|
|
258
|
-
* deposit address's `deposit_address(20)
|
|
286
|
+
* deposit address's `deposit_address(20) ‖ 1 ‖ args`, its zeros in place of `1 ‖ args` without them. */
|
|
259
287
|
export function ownReceiptPlaintext(r: OwnReceipt): Uint8Array {
|
|
260
288
|
const amount = r.kind === 'returned' && valueBytes(r.amount);
|
|
289
|
+
const args = r.kind === 'deposit-address' && r.args && depositArgsBytes(r.args);
|
|
261
290
|
const rest =
|
|
262
291
|
r.kind === 'returned'
|
|
263
292
|
? amount &&
|
|
264
293
|
r.recipient.length === 20 &&
|
|
265
294
|
r.txHash.length === 32 &&
|
|
266
295
|
concat(u64be(BigInt(r.index)), r.recipient, amount, r.txHash)
|
|
267
|
-
: r.depositAddress.length === 20 &&
|
|
296
|
+
: r.depositAddress.length === 20 &&
|
|
297
|
+
(r.args === undefined ? r.depositAddress : args && concat(r.depositAddress, Uint8Array.of(1), args));
|
|
268
298
|
if (!rest || r.burnAddress.length !== 20)
|
|
269
|
-
throw new Error('an own receipt holds 20-byte addresses, a 32-byte hash
|
|
299
|
+
throw new Error('an own receipt holds 20-byte addresses, a 32-byte hash, values below 2^248 and a 16-bit rate');
|
|
270
300
|
return record(r.kind === 'returned' ? RETURNED : DEPOSIT_ADDRESS, concat(u32be(r.tokenId), r.burnAddress, rest));
|
|
271
301
|
}
|
|
272
302
|
|
|
303
|
+
/** `fee(31) ‖ fee_recipient(20) ‖ refund_signer(20) ‖ referrer(20) ‖ referral_bps(2)`, or `null` if one is out of
|
|
304
|
+
* range. */
|
|
305
|
+
function depositArgsBytes(a: DepositArgs): Uint8Array | null {
|
|
306
|
+
const fee = valueBytes(a.fee);
|
|
307
|
+
const addresses = [a.feeRecipient, a.refundSigner, a.referrer];
|
|
308
|
+
const bps = Number.isInteger(a.referralBps) && a.referralBps >= 0 && a.referralBps <= 0xffff;
|
|
309
|
+
return fee && bps && addresses.every((x) => x.length === 20) ? concat(fee, ...addresses, u16be(a.referralBps)) : null;
|
|
310
|
+
}
|
|
311
|
+
|
|
273
312
|
/** `token_id(4) ‖ first(4) ‖ count(1) ‖ salt(32) × count`. */
|
|
274
313
|
export function burnBlockPlaintext(b: BurnBlock): Uint8Array {
|
|
275
314
|
if (b.salts.length === 0 || b.salts.length > BURN_BLOCK || b.salts.some((s) => s.length !== 32)) {
|
|
@@ -304,7 +343,18 @@ export function readLaneRecord(
|
|
|
304
343
|
if (type === POS_LANE) return { kind: 'pos-lane', ...stamp, n: readU32(plain, 1) };
|
|
305
344
|
if (type === RETURNED || type === DEPOSIT_ADDRESS) {
|
|
306
345
|
const head = { ...stamp, chainId, tokenId, burnAddress: plain.slice(5, 25) };
|
|
307
|
-
if (type === DEPOSIT_ADDRESS)
|
|
346
|
+
if (type === DEPOSIT_ADDRESS) {
|
|
347
|
+
const depositAddress = plain.slice(25, 45);
|
|
348
|
+
if (plain[45] !== 1) return { ...head, kind: 'deposit-address', depositAddress };
|
|
349
|
+
const args = {
|
|
350
|
+
fee: wideValue(plain.subarray(46, 77)),
|
|
351
|
+
feeRecipient: plain.slice(77, 97),
|
|
352
|
+
refundSigner: plain.slice(97, 117),
|
|
353
|
+
referrer: plain.slice(117, 137),
|
|
354
|
+
referralBps: readU16(plain, 137),
|
|
355
|
+
};
|
|
356
|
+
return { ...head, kind: 'deposit-address', depositAddress, args };
|
|
357
|
+
}
|
|
308
358
|
const [recipient, amount, txHash] = [plain.slice(33, 53), wideValue(plain.subarray(53, 84)), plain.slice(84, 116)];
|
|
309
359
|
return { ...head, kind: 'returned', index: Number(readU64(plain, 25)), recipient, amount, txHash };
|
|
310
360
|
}
|
|
@@ -384,6 +434,16 @@ export function readTarget(plain: Uint8Array): Target | null {
|
|
|
384
434
|
return null;
|
|
385
435
|
}
|
|
386
436
|
|
|
437
|
+
/** `seed(32)`. */
|
|
438
|
+
export function passkeySeedPlaintext(seed: Uint8Array): Uint8Array {
|
|
439
|
+
if (seed.length !== 32) throw new Error('a seed is 32 bytes');
|
|
440
|
+
return record(PASSKEY_SEED, seed);
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
export function readPasskeySeed(plain: Uint8Array): Uint8Array | null {
|
|
444
|
+
return plain.length === SLOT_PLAIN && plain[0] === PASSKEY_SEED ? plain.slice(1, 33) : null;
|
|
445
|
+
}
|
|
446
|
+
|
|
387
447
|
/** A channel's announcement, `payer(20) ‖ channel_seed(32)`: who claims to open it, and the seed its lane key derives
|
|
388
448
|
* from. */
|
|
389
449
|
export function channelPlaintext(payer: Uint8Array, seed: Uint8Array): Uint8Array {
|
package/src/index.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// wallet's own is also a receive code (`encodeCode`), paid by a deposit or by a note, any amount, any number of
|
|
13
13
|
// times.
|
|
14
14
|
// - Points of sale (`planPosLane`): a lane whose key (`posKey`) the owner hands to one point of sale, which records
|
|
15
|
-
// there the burn addresses it hands out (`
|
|
15
|
+
// there the burn addresses it hands out (`writePosBlocks`), for every device of the owner to find.
|
|
16
16
|
//
|
|
17
17
|
// Payers are not verified: a record's `peer` is only what was claimed.
|
|
18
18
|
|
|
@@ -30,6 +30,7 @@ export {
|
|
|
30
30
|
posKey,
|
|
31
31
|
type BurnBlock,
|
|
32
32
|
type Deposit,
|
|
33
|
+
type DepositArgs,
|
|
33
34
|
type LaneRecord,
|
|
34
35
|
type Note,
|
|
35
36
|
type NoteOpening,
|
|
@@ -39,6 +40,7 @@ export {
|
|
|
39
40
|
type ReceiveCode,
|
|
40
41
|
type Via,
|
|
41
42
|
} from './formats.js';
|
|
43
|
+
export { fetchPasskeySeed, storePasskeySeed } from './passkey.js';
|
|
42
44
|
export {
|
|
43
45
|
commit,
|
|
44
46
|
nextPosLane,
|
|
@@ -49,7 +51,8 @@ export {
|
|
|
49
51
|
planReceipt,
|
|
50
52
|
planSelf,
|
|
51
53
|
planSend,
|
|
52
|
-
|
|
54
|
+
MAX_POS_BLOCKS,
|
|
55
|
+
writePosBlocks,
|
|
53
56
|
} from './send.js';
|
|
54
57
|
export {
|
|
55
58
|
type ChainLane,
|
|
@@ -78,7 +81,6 @@ export {
|
|
|
78
81
|
export {
|
|
79
82
|
REGISTER_POW_BITS,
|
|
80
83
|
actionsDigest,
|
|
81
|
-
auditMessage,
|
|
82
84
|
powOk,
|
|
83
85
|
registerDigest,
|
|
84
86
|
registerMessage,
|
package/src/passkey.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Seeds kept for passkeys. A wallet whose account was restored from its recovery phrase opens it with a passkey whose
|
|
2
|
+
// PRF output is not the seed, so the seed is sealed in Outgoing slots whose ids and key only that PRF output derives:
|
|
3
|
+
// the passkey, synced to another device, finds and opens it there. Outgoing slots join no log and every blob has one
|
|
4
|
+
// length, so the canister tells these from no other record.
|
|
5
|
+
|
|
6
|
+
import { type CanisterClient, StorageError } from './canister.js';
|
|
7
|
+
import { equal, open, seal } from './crypto.js';
|
|
8
|
+
import { passkeySeedId, passkeySeedKey, passkeySeedPlaintext, readPasskeySeed } from './formats.js';
|
|
9
|
+
import { readSequences } from './sync.js';
|
|
10
|
+
|
|
11
|
+
const OUTGOING = { Outgoing: null };
|
|
12
|
+
/** Submits a store makes before it gives up: each `Occupied` means someone who saw the slot's id asked for wrote first. */
|
|
13
|
+
const STORE_TRIES = 3;
|
|
14
|
+
|
|
15
|
+
/** The seeds kept for `prf`'s passkey, in slot order, and the first empty slot. A slot that does not open is passed
|
|
16
|
+
* over: someone who saw its id asked for may have written it first. */
|
|
17
|
+
async function kept(client: CanisterClient, prf: Uint8Array): Promise<{ seeds: Uint8Array[]; end: number }> {
|
|
18
|
+
const key = passkeySeedKey(prf, client.canisterId);
|
|
19
|
+
const idAt = (i: number) => passkeySeedId(prf, client.canisterId, i);
|
|
20
|
+
const [filled] = await readSequences(client, OUTGOING, [{ next: 0, idAt }]);
|
|
21
|
+
const seeds = filled.flatMap(({ id, slot }) => {
|
|
22
|
+
const plain = open(key, id, slot.data);
|
|
23
|
+
const seed = plain && readPasskeySeed(plain);
|
|
24
|
+
return seed ? [seed] : [];
|
|
25
|
+
});
|
|
26
|
+
return { seeds, end: filled.length };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** The seed kept for the passkey whose PRF output is `prf`, or `null` if none is. The last one counts, so that a later
|
|
30
|
+
* version appends a record rather than rewrite one. */
|
|
31
|
+
export async function fetchPasskeySeed(client: CanisterClient, prf: Uint8Array): Promise<Uint8Array | null> {
|
|
32
|
+
return (await kept(client, prf)).seeds.at(-1) ?? null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Keeps `seed` for the passkey whose PRF output is `prf`, unless it is the one kept already: a retry, or a device that
|
|
36
|
+
* kept it only on its own, writes nothing twice. */
|
|
37
|
+
export async function storePasskeySeed(client: CanisterClient, prf: Uint8Array, seed: Uint8Array): Promise<void> {
|
|
38
|
+
for (let tries = 1; ; tries++) {
|
|
39
|
+
const { seeds, end } = await kept(client, prf);
|
|
40
|
+
const last = seeds.at(-1);
|
|
41
|
+
if (last && equal(last, seed)) return;
|
|
42
|
+
const id = passkeySeedId(prf, client.canisterId, end);
|
|
43
|
+
const data = seal(passkeySeedKey(prf, client.canisterId), id, passkeySeedPlaintext(seed));
|
|
44
|
+
try {
|
|
45
|
+
return await client.submit([{ Put: { kind: OUTGOING, id, data } }]);
|
|
46
|
+
} catch (e) {
|
|
47
|
+
if (!(e instanceof StorageError && e.occupied) || tries === STORE_TRIES) throw e;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
package/src/send.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Planning payments, deposits, notes to self, burn blocks and points of sale from a synced state, and submitting them.
|
|
2
|
-
// A point of sale writes its own lane with its key alone (`
|
|
2
|
+
// A point of sale writes its own lane with its key alone (`writePosBlocks`).
|
|
3
3
|
//
|
|
4
4
|
// Write the note here first, then create the on-chain note with the same opening: a note that exists
|
|
5
5
|
// only on chain cannot be found. Receivers match notes one-to-one to on-chain leaves (by
|
|
@@ -166,21 +166,32 @@ export function planPosLane(view: ViewKey, state: SyncState, chainId: bigint, n:
|
|
|
166
166
|
return [put(ownKey(view.seed), chainId, nextSlotIndex(state, state.own, chainId), posLanePlaintext(n))];
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
-
/**
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
169
|
+
/** The most burn blocks one `writePosBlocks` takes: the canister's actions per batch. */
|
|
170
|
+
export const MAX_POS_BLOCKS = 16;
|
|
171
|
+
|
|
172
|
+
/** Writes `blocks`, all of one chain, to the lane of `laneKey`, as the point of sale that alone holds the key, in one
|
|
173
|
+
* batch at the lane's first empty slots from `from` on; returns the slot after the last. A batch is written whole or
|
|
174
|
+
* not at all, and from the first empty slot, so the lane's filled slots stay a run from 0 that readers read to its end:
|
|
175
|
+
* a batch that finds a slot taken found the first, and tries again past it. The same salts written twice are found
|
|
176
|
+
* once. */
|
|
177
|
+
export async function writePosBlocks(
|
|
173
178
|
client: CanisterClient,
|
|
174
179
|
laneKey: Uint8Array,
|
|
175
|
-
|
|
180
|
+
blocks: BurnBlock[],
|
|
176
181
|
from = 0,
|
|
177
182
|
): Promise<number> {
|
|
178
|
-
const
|
|
183
|
+
const chainId = blocks[0]?.chainId;
|
|
184
|
+
if (chainId === undefined || blocks.length > MAX_POS_BLOCKS || blocks.some((b) => b.chainId !== chainId))
|
|
185
|
+
throw new Error(`1 to ${MAX_POS_BLOCKS} burn blocks, all of one chain`);
|
|
186
|
+
const plaintexts = blocks.map(burnBlockPlaintext);
|
|
179
187
|
for (;;) {
|
|
180
|
-
const at = await sequenceEnd(client, (i) => slotId(laneKey,
|
|
188
|
+
const at = await sequenceEnd(client, (i) => slotId(laneKey, chainId, i), from);
|
|
181
189
|
try {
|
|
182
|
-
await submit(
|
|
183
|
-
|
|
190
|
+
await submit(
|
|
191
|
+
client,
|
|
192
|
+
plaintexts.map((p, i) => put(laneKey, chainId, at + i, p)),
|
|
193
|
+
);
|
|
194
|
+
return at + blocks.length;
|
|
184
195
|
} catch (e) {
|
|
185
196
|
if (!(e instanceof StorageError && e.occupied)) throw e;
|
|
186
197
|
from = at + 1;
|
package/src/sync.ts
CHANGED
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
import { type ViewKey, notifyKey, notifySecret } from './viewKey.js';
|
|
29
29
|
import { MAX_LOG_READ, MAX_READ } from './wire.js';
|
|
30
30
|
|
|
31
|
-
/** Slots read per sequence and round trip once a sequence has news. */
|
|
31
|
+
/** Slots read per sequence and round trip once a sequence has news, at first. */
|
|
32
32
|
const BATCH = 16;
|
|
33
33
|
|
|
34
34
|
/** One lane on one chain. */
|
|
@@ -307,11 +307,13 @@ interface Sequence {
|
|
|
307
307
|
type Filled = { id: Uint8Array; slot: Slot };
|
|
308
308
|
|
|
309
309
|
/** The filled slots of each sequence from its `next` index up to the first empty one. The first round
|
|
310
|
-
* checks one slot per sequence; sequences with news are then read `BATCH` slots at a time
|
|
311
|
-
|
|
310
|
+
* checks one slot per sequence; sequences with news are then read `BATCH` slots at a time, twice as many each round
|
|
311
|
+
* up to `MAX_READ`, so that a lane of hundreds of records, read on a new device, takes a few round trips. A wider read
|
|
312
|
+
* costs little: the replicated read, the slow one, takes only the slots the single-replica one found filled. */
|
|
313
|
+
export async function readSequences(client: CanisterClient, kind: Kind, sequences: Sequence[]): Promise<Filled[][]> {
|
|
312
314
|
const found: Filled[][] = sequences.map(() => []);
|
|
313
315
|
let pending = sequences.map((_, s) => s);
|
|
314
|
-
for (let width = 1; pending.length > 0; width = BATCH) {
|
|
316
|
+
for (let width = 1; pending.length > 0; width = Math.min(width === 1 ? BATCH : width * 2, MAX_READ)) {
|
|
315
317
|
const ids = pending.map((s) => {
|
|
316
318
|
const { next, idAt } = sequences[s];
|
|
317
319
|
return Array.from({ length: width }, (_, i) => idAt(next + found[s].length + i));
|
package/src/wire.ts
CHANGED
|
@@ -39,21 +39,6 @@ export function registerMessage(canister: Principal, r: Registration): string {
|
|
|
39
39
|
);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
/** What the auditor signs (EIP-191) to receive the key to the escrow of `target`'s registration with `notifyKey`. */
|
|
43
|
-
export function auditMessage(
|
|
44
|
-
canister: Principal,
|
|
45
|
-
target: Uint8Array,
|
|
46
|
-
notifyKey: Uint8Array,
|
|
47
|
-
transportPublicKey: Uint8Array,
|
|
48
|
-
expiryNs: bigint,
|
|
49
|
-
): string {
|
|
50
|
-
return (
|
|
51
|
-
`zERC20 storage audit request\ncanister: ${canister.toText()}\ntarget: 0x${hex(target)}\n` +
|
|
52
|
-
`notify_key: 0x${hex(notifyKey)}\ntransport_public_key: 0x${hex(transportPublicKey)}\nexpiry_ns: ${expiryNs}\n` +
|
|
53
|
-
'tag: zerc20/storage/audit/v1'
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
42
|
export function registerDigest(r: Registration): Uint8Array {
|
|
58
43
|
return taggedHash(REGISTRATION_TAG, [r.address, r.public_key, r.notify_key, r.escrow, u64be(r.expiry_ns)]);
|
|
59
44
|
}
|