@zerc20/storage-sdk 0.1.0 → 0.3.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/formats.d.ts CHANGED
@@ -33,8 +33,11 @@ export declare const codeKey: (seed: Uint8Array, chainId: bigint, tokenId: numbe
33
33
  /** The owner's own lane key: notes to self (merge outputs and change) and burn blocks, which only the owner's
34
34
  * devices write and read. */
35
35
  export declare const ownKey: (seed: Uint8Array) => Uint8Array;
36
- /** The lane key of the owner's point of sale `n`, handed to that point of sale alone: it records there the burn
37
- * addresses it makes for the owner, ahead of handing them out. */
36
+ /** The key the owner's own burn addresses derive from. It only makes salts, which cannot spend, so it is derived from
37
+ * the view key: a wallet hands out burn addresses while its seed is away. */
38
+ export declare const burnKey: (seed: Uint8Array) => Uint8Array;
39
+ /** The key of the owner's point of sale `n`, handed to that point of sale alone: its burn key, and the key of the lane
40
+ * where it records the addresses it makes for the owner, ahead of handing them out. */
38
41
  export declare const posKey: (seed: Uint8Array, n: number) => Uint8Array;
39
42
  /** The slot of record `slotIndex` on `chainId` in the lane of `laneKey`. */
40
43
  export declare const slotId: (laneKey: Uint8Array, chainId: bigint, slotIndex: number) => Uint8Array;
@@ -108,9 +111,10 @@ export interface Deposit extends Stamped {
108
111
  burnAddress: Uint8Array;
109
112
  }
110
113
  /** Burn addresses `first, first + 1, ..` of `tokenId` on `chainId`, by their salts, which their owner may have handed
111
- * out. Whoever hands one out records its block first, so every device of the owner finds the payments to it. In the
112
- * own lane they are zERC20-v2's `keys::burn` indices; in a point of sale's lane, its `keys::pos_burn` counters. Salts,
113
- * because deriving an address takes about 2^16 hashes, and checking one from its salt takes one. */
114
+ * out. Whoever hands one out records its block first, so every device of the owner finds the payments to it. Their
115
+ * indices are those of zERC20-v2's `keys::derive_burn_address`: under the owner's `burnKey` in the own lane, under the
116
+ * point of sale's key in its lane. Salts, because deriving an address takes about 2^16 hashes, and checking one from
117
+ * its salt takes one. */
114
118
  export interface BurnBlock {
115
119
  chainId: bigint;
116
120
  tokenId: number;
@@ -155,9 +159,9 @@ export declare function readLaneRecord(lane: LaneKind, chainId: bigint, slotInde
155
159
  export interface ReceiveCode {
156
160
  chainId: bigint;
157
161
  tokenId: number;
158
- /** zERC20-v2's `keys::burn` address of the code's index. */
162
+ /** zERC20-v2's `keys::derive_burn_address` address of the code's index. */
159
163
  burnAddress: Uint8Array;
160
- /** The zERC20 public key the paying note commits to: the code's own (`keys::code_secret`), not the address's, so
164
+ /** The zERC20 public key the paying note commits to: the code's own (`keys::code_spend_secret`), not the address's, so
161
165
  * codes cannot be linked to each other or to the address. */
162
166
  publicKey: Uint8Array;
163
167
  key: Uint8Array;
package/dist/formats.js CHANGED
@@ -43,8 +43,11 @@ export const codeKey = (seed, chainId, tokenId, index) => kdf(seed, 'code', [u64
43
43
  /** The owner's own lane key: notes to self (merge outputs and change) and burn blocks, which only the owner's
44
44
  * devices write and read. */
45
45
  export const ownKey = (seed) => kdf(seed, 'own');
46
- /** The lane key of the owner's point of sale `n`, handed to that point of sale alone: it records there the burn
47
- * addresses it makes for the owner, ahead of handing them out. */
46
+ /** The key the owner's own burn addresses derive from. It only makes salts, which cannot spend, so it is derived from
47
+ * the view key: a wallet hands out burn addresses while its seed is away. */
48
+ export const burnKey = (seed) => kdf(seed, 'burn');
49
+ /** The key of the owner's point of sale `n`, handed to that point of sale alone: its burn key, and the key of the lane
50
+ * where it records the addresses it makes for the owner, ahead of handing them out. */
48
51
  export const posKey = (seed, n) => kdf(seed, 'pos', [u32be(n)]);
49
52
  /** The slot of record `slotIndex` on `chainId` in the lane of `laneKey`. */
50
53
  export const slotId = (laneKey, chainId, slotIndex) => kdf(laneKey, 'slot', [u64be(chainId), u32be(slotIndex)]);
@@ -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,7 +1,7 @@
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, 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';
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
5
  export { commit, nextPosLane, planBurnBlock, planDeposit, planPayCode, planPosLane, planReceipt, planSelf, planSend, writePosBlock, } from './send.js';
6
6
  export { type ChainLane, type NewRecord, type StoredLane, type SyncState, emptyState, exportState, importState, refresh, } from './sync.js';
7
7
  export { type Recipient, type Signer, type ViewKey, eip191Signer, lookupRecipient, notifyKey, notifySecret, openEscrow, registeredViewKey, register, verifyRegistration, viewKey, } from './viewKey.js';
package/dist/index.js CHANGED
@@ -8,15 +8,16 @@
8
8
  // reads only what is new. Keep the state with `exportState`.
9
9
  // - Payments (`planSend`, `planDeposit`, `planPayCode`, and `planSelf` for merge outputs and change, with what each
10
10
  // was), submitted with `commit`; `planReceipt` for what leaves no note to self.
11
- // - Burn blocks (`planBurnBlock`): which burn addresses the owner's devices hand out. Each of a wallet's own is also
12
- // a receive code (`encodeCode`), paid by a deposit or by a note, any amount, any number of times.
11
+ // - Burn blocks (`planBurnBlock`): which burn addresses the owner's devices hand out, made from `burnKey`. Each of a
12
+ // wallet's own is also a receive code (`encodeCode`), paid by a deposit or by a note, any amount, any number of
13
+ // times.
13
14
  // - Points of sale (`planPosLane`): a lane whose key (`posKey`) the owner hands to one point of sale, which records
14
15
  // there the burn addresses it hands out (`writePosBlock`), for every device of the owner to find.
15
16
  //
16
17
  // Payers are not verified: a record's `peer` is only what was claimed.
17
18
  export { idlFactory } from './candid.js';
18
19
  export { CanisterClient, StorageError } from './canister.js';
19
- export { BURN_BLOCK, FR_BE, addressInbox, codeKey, decodeCode, encodeCode, posKey, } from './formats.js';
20
+ export { BURN_BLOCK, FR_BE, addressInbox, codeKey, decodeCode, burnKey, encodeCode, posKey, } from './formats.js';
20
21
  export { commit, nextPosLane, planBurnBlock, planDeposit, planPayCode, planPosLane, planReceipt, planSelf, planSend, writePosBlock, } from './send.js';
21
22
  export { emptyState, exportState, importState, refresh, } from './sync.js';
22
23
  export { eip191Signer, lookupRecipient, notifyKey, notifySecret, openEscrow, registeredViewKey, register, verifyRegistration, viewKey, } from './viewKey.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,oGAAoG;AACpG,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,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,YAAY,EACZ,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,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,YAAY,EACZ,KAAK,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,QAAQ,EACR,UAAU,GACX,MAAM,WAAW,CAAC"}
package/dist/viewKey.d.ts CHANGED
@@ -9,9 +9,9 @@ export interface ViewKey {
9
9
  address: Uint8Array;
10
10
  seed: Uint8Array;
11
11
  }
12
- /** `address`'s view key, from the root seed of the address's zERC20 identity (in zERC20-v2, `keccak256` of a
13
- * canonical `personal_sign` signature). */
14
- export declare function viewKey(rootSeed: Uint8Array, address: Uint8Array): ViewKey;
12
+ /** `address`'s view key in `canister`, from the root seed of the address's zERC20 identity (in zERC20-v2, `keccak256`
13
+ * of a canonical `personal_sign` signature). */
14
+ export declare function viewKey(rootSeed: Uint8Array, address: Uint8Array, canister: Principal): ViewKey;
15
15
  /** The X25519 secret that opens announcements to `view`'s address inbox. */
16
16
  export declare const notifySecret: (view: ViewKey) => Uint8Array;
17
17
  /** The key payers encrypt announcements to, which names `view`'s registration. */
package/dist/viewKey.js CHANGED
@@ -1,9 +1,11 @@
1
1
  // View keys and registration.
2
2
  //
3
3
  // An address's view key derives from the root seed of the address's zERC20 identity, so restoring a wallet needs
4
- // nothing from the canister. Registering (one wallet signature) publishes what payers need: the address's zERC20
5
- // public key and the key payers encrypt channel announcements to. It also escrows the view key to the auditor,
6
- // whom vetKD alone can give the key to it. A later registration, from another root seed, replaces it.
4
+ // nothing from the canister. It derives from the canister's id too: a testnet and mainnet share root seeds, and a key
5
+ // escrowed in one canister, which that canister's auditor, controllers and vetKD key can open, must open nothing in
6
+ // another. Registering (one wallet signature) publishes what payers need: the address's zERC20 public key and the key
7
+ // payers encrypt channel announcements to. It also escrows the view key to the auditor, whom vetKD alone can give the
8
+ // key to it. A later registration, from another root seed, replaces it.
7
9
  import { EncryptedVetKey, IbeCiphertext, IbeIdentity, IbeSeed, } from '@dfinity/vetkeys';
8
10
  import { x25519 } from '@noble/curves/ed25519.js';
9
11
  import { secp256k1 } from '@noble/curves/secp256k1.js';
@@ -11,12 +13,12 @@ import { keccak_256 } from '@noble/hashes/sha3.js';
11
13
  import { compare, concat, equal, kdf, nowNs, utf8 } from './crypto.js';
12
14
  import { FR_BE, addressInbox } from './formats.js';
13
15
  import { MAX_TTL_NS, registerMessage, vetkdInput } from './wire.js';
14
- /** `address`'s view key, from the root seed of the address's zERC20 identity (in zERC20-v2, `keccak256` of a
15
- * canonical `personal_sign` signature). */
16
- export function viewKey(rootSeed, address) {
16
+ /** `address`'s view key in `canister`, from the root seed of the address's zERC20 identity (in zERC20-v2, `keccak256`
17
+ * of a canonical `personal_sign` signature). */
18
+ export function viewKey(rootSeed, address, canister) {
17
19
  if (rootSeed.length !== 32)
18
20
  throw new Error('the root seed must be 32 bytes');
19
- return { address, seed: kdf(rootSeed, 'view', [address]) };
21
+ return { address, seed: kdf(rootSeed, 'view', [address, canister.toUint8Array()]) };
20
22
  }
21
23
  /** The X25519 secret that opens announcements to `view`'s address inbox. */
22
24
  export const notifySecret = (view) => kdf(view.seed, 'notify');
@@ -27,7 +29,7 @@ export const notifyKey = (view) => x25519.getPublicKey(notifySecret(view));
27
29
  * before registering (one wallet signature) or throwing. Throws if the address is registered with another root seed;
28
30
  * `register` to take it over. */
29
31
  export async function registeredViewKey(client, rootSeed, signer, address, publicKey) {
30
- const view = viewKey(rootSeed, address);
32
+ const view = viewKey(rootSeed, address, client.canisterId);
31
33
  const ours = (r) => r && equal(r.notify_key, notifyKey(view)) && equal(r.public_key, publicKey);
32
34
  if (ours(await client.registration(address)))
33
35
  return view;
@@ -1 +1 @@
1
- {"version":3,"file":"viewKey.js","sourceRoot":"","sources":["../src/viewKey.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewKey.js","sourceRoot":"","sources":["../src/viewKey.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zerc20/storage-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.3.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",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/kbizikav/zerc20-v2-new.git",
9
+ "url": "git+https://github.com/zerc20io/zERC20v2.git",
10
10
  "directory": "storage/sdk"
11
11
  },
12
12
  "main": "dist/index.js",
package/src/formats.ts CHANGED
@@ -57,8 +57,12 @@ export const codeKey = (seed: Uint8Array, chainId: bigint, tokenId: number, inde
57
57
  * devices write and read. */
58
58
  export const ownKey = (seed: Uint8Array): Uint8Array => kdf(seed, 'own');
59
59
 
60
- /** The lane key of the owner's point of sale `n`, handed to that point of sale alone: it records there the burn
61
- * addresses it makes for the owner, ahead of handing them out. */
60
+ /** The key the owner's own burn addresses derive from. It only makes salts, which cannot spend, so it is derived from
61
+ * the view key: a wallet hands out burn addresses while its seed is away. */
62
+ export const burnKey = (seed: Uint8Array): Uint8Array => kdf(seed, 'burn');
63
+
64
+ /** The key of the owner's point of sale `n`, handed to that point of sale alone: its burn key, and the key of the lane
65
+ * where it records the addresses it makes for the owner, ahead of handing them out. */
62
66
  export const posKey = (seed: Uint8Array, n: number): Uint8Array => kdf(seed, 'pos', [u32be(n)]);
63
67
 
64
68
  /** The slot of record `slotIndex` on `chainId` in the lane of `laneKey`. */
@@ -140,9 +144,10 @@ export interface Deposit extends Stamped {
140
144
  }
141
145
 
142
146
  /** Burn addresses `first, first + 1, ..` of `tokenId` on `chainId`, by their salts, which their owner may have handed
143
- * out. Whoever hands one out records its block first, so every device of the owner finds the payments to it. In the
144
- * own lane they are zERC20-v2's `keys::burn` indices; in a point of sale's lane, its `keys::pos_burn` counters. Salts,
145
- * because deriving an address takes about 2^16 hashes, and checking one from its salt takes one. */
147
+ * out. Whoever hands one out records its block first, so every device of the owner finds the payments to it. Their
148
+ * indices are those of zERC20-v2's `keys::derive_burn_address`: under the owner's `burnKey` in the own lane, under the
149
+ * point of sale's key in its lane. Salts, because deriving an address takes about 2^16 hashes, and checking one from
150
+ * its salt takes one. */
146
151
  export interface BurnBlock {
147
152
  chainId: bigint;
148
153
  tokenId: number;
@@ -322,9 +327,9 @@ export function readLaneRecord(
322
327
  export interface ReceiveCode {
323
328
  chainId: bigint;
324
329
  tokenId: number;
325
- /** zERC20-v2's `keys::burn` address of the code's index. */
330
+ /** zERC20-v2's `keys::derive_burn_address` address of the code's index. */
326
331
  burnAddress: Uint8Array;
327
- /** The zERC20 public key the paying note commits to: the code's own (`keys::code_secret`), not the address's, so
332
+ /** The zERC20 public key the paying note commits to: the code's own (`keys::code_spend_secret`), not the address's, so
328
333
  * codes cannot be linked to each other or to the address. */
329
334
  publicKey: Uint8Array;
330
335
  key: Uint8Array;
package/src/index.ts CHANGED
@@ -8,8 +8,9 @@
8
8
  // reads only what is new. Keep the state with `exportState`.
9
9
  // - Payments (`planSend`, `planDeposit`, `planPayCode`, and `planSelf` for merge outputs and change, with what each
10
10
  // was), submitted with `commit`; `planReceipt` for what leaves no note to self.
11
- // - Burn blocks (`planBurnBlock`): which burn addresses the owner's devices hand out. Each of a wallet's own is also
12
- // a receive code (`encodeCode`), paid by a deposit or by a note, any amount, any number of times.
11
+ // - Burn blocks (`planBurnBlock`): which burn addresses the owner's devices hand out, made from `burnKey`. Each of a
12
+ // wallet's own is also a receive code (`encodeCode`), paid by a deposit or by a note, any amount, any number of
13
+ // times.
13
14
  // - Points of sale (`planPosLane`): a lane whose key (`posKey`) the owner hands to one point of sale, which records
14
15
  // there the burn addresses it hands out (`writePosBlock`), for every device of the owner to find.
15
16
  //
@@ -24,6 +25,7 @@ export {
24
25
  addressInbox,
25
26
  codeKey,
26
27
  decodeCode,
28
+ burnKey,
27
29
  encodeCode,
28
30
  posKey,
29
31
  type BurnBlock,
package/src/viewKey.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  // View keys and registration.
2
2
  //
3
3
  // An address's view key derives from the root seed of the address's zERC20 identity, so restoring a wallet needs
4
- // nothing from the canister. Registering (one wallet signature) publishes what payers need: the address's zERC20
5
- // public key and the key payers encrypt channel announcements to. It also escrows the view key to the auditor,
6
- // whom vetKD alone can give the key to it. A later registration, from another root seed, replaces it.
4
+ // nothing from the canister. It derives from the canister's id too: a testnet and mainnet share root seeds, and a key
5
+ // escrowed in one canister, which that canister's auditor, controllers and vetKD key can open, must open nothing in
6
+ // another. Registering (one wallet signature) publishes what payers need: the address's zERC20 public key and the key
7
+ // payers encrypt channel announcements to. It also escrows the view key to the auditor, whom vetKD alone can give the
8
+ // key to it. A later registration, from another root seed, replaces it.
7
9
 
8
10
  import {
9
11
  DerivedPublicKey,
@@ -32,11 +34,11 @@ export interface ViewKey {
32
34
  seed: Uint8Array;
33
35
  }
34
36
 
35
- /** `address`'s view key, from the root seed of the address's zERC20 identity (in zERC20-v2, `keccak256` of a
36
- * canonical `personal_sign` signature). */
37
- export function viewKey(rootSeed: Uint8Array, address: Uint8Array): ViewKey {
37
+ /** `address`'s view key in `canister`, from the root seed of the address's zERC20 identity (in zERC20-v2, `keccak256`
38
+ * of a canonical `personal_sign` signature). */
39
+ export function viewKey(rootSeed: Uint8Array, address: Uint8Array, canister: Principal): ViewKey {
38
40
  if (rootSeed.length !== 32) throw new Error('the root seed must be 32 bytes');
39
- return { address, seed: kdf(rootSeed, 'view', [address]) };
41
+ return { address, seed: kdf(rootSeed, 'view', [address, canister.toUint8Array()]) };
40
42
  }
41
43
 
42
44
  /** The X25519 secret that opens announcements to `view`'s address inbox. */
@@ -56,7 +58,7 @@ export async function registeredViewKey(
56
58
  address: Uint8Array,
57
59
  publicKey: Uint8Array,
58
60
  ): Promise<ViewKey> {
59
- const view = viewKey(rootSeed, address);
61
+ const view = viewKey(rootSeed, address, client.canisterId);
60
62
  const ours = (r: Registration | null) => r && equal(r.notify_key, notifyKey(view)) && equal(r.public_key, publicKey);
61
63
  if (ours(await client.registration(address))) return view;
62
64
  const [r] = await client.replicated.registration(address, []);