@zerc20/storage-sdk 0.4.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/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) {
@@ -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 && r.depositAddress;
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 and a value below 2^248');
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
- return { ...head, kind: 'deposit-address', depositAddress: plain.slice(25, 45) };
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) {
@@ -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 { commit, nextPosLane, planBurnBlock, planDeposit, planPayCode, planPosLane, planReceipt, planSelf, planSend, writePosBlock, } from './send.js';
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
9
  export { REGISTER_POW_BITS, actionsDigest, powOk, registerDigest, registerMessage, requiredPowBits, solvePow, vetkdInput, } from './wire.js';
package/dist/index.js CHANGED
@@ -12,13 +12,14 @@
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 (`writePosBlock`), for every device of the owner to find.
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 { commit, nextPosLane, planBurnBlock, planDeposit, planPayCode, planPosLane, planReceipt, planSelf, planSend, writePosBlock, } from './send.js';
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
25
  export { REGISTER_POW_BITS, actionsDigest, powOk, registerDigest, registerMessage, requiredPowBits, solvePow, vetkdInput, } from './wire.js';
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,oGAAoG;AACpG,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,GAWP,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,GACd,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"}
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>;
@@ -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
- /** Writes `block` to the lane of `laneKey`, as the point of sale that alone holds the key, at the lane's first empty
40
- * slot from `from` on; returns the slot after it. A slot someone else took first is passed over, and the same salts
41
- * written twice are found once. */
42
- export declare function writePosBlock(client: CanisterClient, laneKey: Uint8Array, block: BurnBlock, from?: number): Promise<number>;
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 (`writePosBlock`).
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
- /** Writes `block` to the lane of `laneKey`, as the point of sale that alone holds the key, at the lane's first empty
113
- * slot from `from` on; returns the slot after it. A slot someone else took first is passed over, and the same salts
114
- * written twice are found once. */
115
- export async function writePosBlock(client, laneKey, block, from = 0) {
116
- const plaintext = burnBlockPlaintext(block);
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, block.chainId, i), from);
125
+ const at = await sequenceEnd(client, (i) => slotId(laneKey, chainId, i), from);
119
126
  try {
120
- await submit(client, [put(laneKey, block.chainId, at, plaintext)]);
121
- return at + 1;
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":"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"}
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
- async function readSequences(client, kind, sequences) {
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":"AAAA,kGAAkG;AAClG,+FAA+F;AAC/F,kGAAkG;AAClG,6FAA6F;AAK7F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAIL,YAAY,EACZ,UAAU,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,WAAW,EACX,MAAM,EACN,MAAM,EACN,WAAW,EACX,cAAc,EACd,UAAU,EACV,OAAO,EACP,MAAM,GACP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEnD,uEAAuE;AACvE,MAAM,KAAK,GAAG,EAAE,CAAC;AAmEjB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,MAAgB,EAAa,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,MAAM;IACN,gBAAgB,EAAE,CAAC;IACnB,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAChC,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,IAAI;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,UAAU,CAAC,IAAa,EAAE,KAAgB;IACxD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAa,EAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAErG;;;;;;;;;oHASoH;AACpH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAsB,EACtB,IAAa,EACb,KAAgB,EAChB,OAA2B,EAAE;IAE7B,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACpC,2FAA2F;IAC3F,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACjE,MAAM,GAAG,GACP,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B;uCACmC;IACnC,MAAM,GAAG,GAAG,CAAC,OAAiB,EAAE,EAAE,CAChC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;QAC7B,MAAM,QAAQ,GACZ,GAAG,EAAE,IAAI,KAAK,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAClB,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAClC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC;YACrB,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACrF,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,OAAO,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACpF,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACL;kDAC8C;IAC9C,MAAM,IAAI,GAAG,CAAC,SAAiC,EAAE,KAAiB,EAAE,EAAE,CACpE,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CACzC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjG,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QAC7C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC,CAAC,CACH,CAAC;IAEJ,4GAA4G;IAC5G,0GAA0G;IAC1G,MAAM,GAAG,GAAW;QAClB,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI,CAAC,GAAG;QAChB,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QACjB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;KACnB,CAAC;IACF,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5C,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,YAAY,CAAC;QACnD,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5G,CAAC,CAAC;IACH,kFAAkF;IAClF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACxG,MAAM,IAAI,GAAG,CAAC,GAAQ,EAAE,GAAe,EAAE,EAAE;QACzC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO;QACpC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU;YAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,SAAS;QACtC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBACvB,IAAI,EAAE,IAAI;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;gBACnC,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,MAAM,EAAE,EAAE;aACX,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,MAAM,CAAC,OAAO;YACpB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAW;YACjC,IAAI,EAAE,CAAC;YACP,KAAK;YACL,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC;YAClC,MAAM,EAAE,EAAE;SACX,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,iHAAiH;IACjH,6CAA6C;IAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,MAAM,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACxB,IAAI,EAAE,CAAC;YACP,KAAK;YACL,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC;YAChC,MAAM,EAAE,EAAE;SACX,CAAC,CAAC;IACL,CAAC;IAED,mHAAmH;IACnH,uEAAuE;IACvE,MAAM,OAAO,GAAa;QACxB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAU,EAAE,CAAC,CAAC;YACtC,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;YAC7D,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SACnE,CAAC,CAAC;QACH,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAU,EAAE,CAAC,CAAC;YAC5C,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACnD,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;SACvG,CAAC,CAAC;KACJ,CAAC;IACF,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,SAAS,EAAE,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACxE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;IACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED,4CAA4C;AAC5C,KAAK,UAAU,OAAO,CAAC,MAAsB,EAAE,KAAa;IAC1D,MAAM,GAAG,GAAiB,EAAE,CAAC;IAC7B,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY;YAAE,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,qCAAqC;AACrC,KAAK,UAAU,SAAS,CAAC,MAAsB,EAAE,KAAiB,EAAE,KAAa;IAC/E,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,SAAS,CAAC;QACR,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,OAAO,KAAK,CAAC;IAC3C,CAAC;AACH,CAAC;AAUD;8FAC8F;AAC9F,KAAK,UAAU,aAAa,CAAC,MAAsB,EAAE,IAAU,EAAE,SAAqB;IACpF,MAAM,KAAK,GAAe,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACxF,OAAO,CAAC,KAAK,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sDAAsD;AACtD,KAAK,UAAU,QAAQ,CAAC,KAA6B,EAAE,IAAU,EAAE,GAAiB;IAClF,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7G,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED;wBACwB;AACxB,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAsB,EACtB,IAAmC,EACnC,IAAI,GAAG,CAAC;IAER,OAAO,IAAI,GAAG,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAChG,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAU,EAAE;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,CAAC,8BAA8B,CAAC,CAAC;AAEvD,yFAAyF;AACzF,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,KAAgB;IACzD,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAU,EAAE,EAAE,CACnD,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC5F,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;yBACyB;AACzB,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,KAAiB;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IACzF,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAU,EAAE,EAAE;QACnE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,EAAY,CAAC,CAAC;QACpF,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAY,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC,CAAc,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zerc20/storage-sdk",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "TypeScript SDK for zerc20-storage: private note delivery for zERC20 on the Internet Computer.",
5
5
  "type": "module",
6
6
  "license": "Unlicense",
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
- | { kind: 'deposit-address'; depositAddress: Uint8Array }
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 && r.depositAddress;
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 and a value below 2^248');
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) return { ...head, kind: 'deposit-address', depositAddress: plain.slice(25, 45) };
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 (`writePosBlock`), for every device of the owner to find.
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
- writePosBlock,
54
+ MAX_POS_BLOCKS,
55
+ writePosBlocks,
53
56
  } from './send.js';
54
57
  export {
55
58
  type ChainLane,
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 (`writePosBlock`).
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
- /** Writes `block` to the lane of `laneKey`, as the point of sale that alone holds the key, at the lane's first empty
170
- * slot from `from` on; returns the slot after it. A slot someone else took first is passed over, and the same salts
171
- * written twice are found once. */
172
- export async function writePosBlock(
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
- block: BurnBlock,
180
+ blocks: BurnBlock[],
176
181
  from = 0,
177
182
  ): Promise<number> {
178
- const plaintext = burnBlockPlaintext(block);
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, block.chainId, i), from);
188
+ const at = await sequenceEnd(client, (i) => slotId(laneKey, chainId, i), from);
181
189
  try {
182
- await submit(client, [put(laneKey, block.chainId, at, plaintext)]);
183
- return at + 1;
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
- async function readSequences(client: CanisterClient, kind: Kind, sequences: Sequence[]): Promise<Filled[][]> {
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));