viem 0.0.0-main.20240306T020214 → 0.0.0-main.20240306T211153

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/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # viem
2
2
 
3
+ ## 2.7.20
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1901](https://github.com/wevm/viem/pull/1901) [`094c8b5da0555fde0c9456f58b2a948233b705ee`](https://github.com/wevm/viem/commit/094c8b5da0555fde0c9456f58b2a948233b705ee) Thanks [@YanYuanFE](https://github.com/YanYuanFE)! - Added Mint Sepolia chain.
8
+
9
+ - [#1892](https://github.com/wevm/viem/pull/1892) [`fc6698322f798dd951b11e5dc1879d27ae7b3fe7`](https://github.com/wevm/viem/commit/fc6698322f798dd951b11e5dc1879d27ae7b3fe7) Thanks [@PierreOssun](https://github.com/PierreOssun)! - Add Astar zkEVM & testnet chains.
10
+
11
+ - [#1906](https://github.com/wevm/viem/pull/1906) [`a82924d0aaf8a4644d6c620209a3d79d9ab0ac92`](https://github.com/wevm/viem/commit/a82924d0aaf8a4644d6c620209a3d79d9ab0ac92) Thanks [@RobbyUitbeijerse](https://github.com/RobbyUitbeijerse)! - Added Beam chains.
12
+
3
13
  ## 2.7.19
4
14
 
5
15
  ### Patch Changes
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildProveWithdrawal = void 0;
3
+ exports.maybeAddProofNode = exports.buildProveWithdrawal = void 0;
4
4
  const getBlock_js_1 = require("../../../actions/public/getBlock.js");
5
5
  const getProof_js_1 = require("../../../actions/public/getProof.js");
6
+ const fromRlp_js_1 = require("../../../utils/encoding/fromRlp.js");
7
+ const toRlp_js_1 = require("../../../utils/encoding/toRlp.js");
8
+ const keccak256_js_1 = require("../../../utils/hash/keccak256.js");
6
9
  const contracts_js_1 = require("../contracts.js");
7
10
  const getWithdrawalHashStorageSlot_js_1 = require("../utils/getWithdrawalHashStorageSlot.js");
8
11
  const outputRootProofVersion = '0x0000000000000000000000000000000000000000000000000000000000000000';
@@ -31,9 +34,26 @@ async function buildProveWithdrawal(client, args) {
31
34
  version: outputRootProofVersion,
32
35
  },
33
36
  targetChain: chain,
34
- withdrawalProof: proof.storageProof[0].proof,
37
+ withdrawalProof: maybeAddProofNode((0, keccak256_js_1.keccak256)(slot), proof.storageProof[0].proof),
35
38
  withdrawal,
36
39
  };
37
40
  }
38
41
  exports.buildProveWithdrawal = buildProveWithdrawal;
42
+ function maybeAddProofNode(key, proof) {
43
+ const lastProofRlp = proof[proof.length - 1];
44
+ const lastProof = (0, fromRlp_js_1.fromRlp)(lastProofRlp);
45
+ if (lastProof.length !== 17)
46
+ return proof;
47
+ const modifiedProof = [...proof];
48
+ for (const item of lastProof) {
49
+ if (!Array.isArray(item))
50
+ continue;
51
+ const suffix = item[0].slice(3);
52
+ if (typeof suffix !== 'string' || !key.endsWith(suffix))
53
+ continue;
54
+ modifiedProof.push((0, toRlp_js_1.toRlp)(item));
55
+ }
56
+ return modifiedProof;
57
+ }
58
+ exports.maybeAddProofNode = maybeAddProofNode;
39
59
  //# sourceMappingURL=buildProveWithdrawal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildProveWithdrawal.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildProveWithdrawal.ts"],"names":[],"mappings":";;;AACA,qEAG4C;AAC5C,qEAG4C;AAe5C,kDAA2C;AAE3C,8FAGiD;AAIjD,MAAM,sBAAsB,GAC1B,oEAA6E,CAAA;AAiExE,KAAK,UAAU,oBAAoB,CAMxC,MAAyC,EACzC,IAKC;IAID,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAClE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,CAAA;IACrC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEhC,MAAM,IAAI,GAAG,IAAA,8DAA4B,EAAC,EAAE,cAAc,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,IAAA,sBAAQ,EAAC,MAAM,EAAE;YACf,OAAO,EAAE,wBAAS,CAAC,mBAAmB,CAAC,OAAO;YAC9C,WAAW,EAAE,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,aAAa;SAC3B,CAAC;QACF,IAAA,sBAAQ,EAAC,MAAM,EAAE;YACf,WAAW,EAAE,aAAa;SAC3B,CAAC;KACH,CAAC,CAAA;IAEF,OAAO;QACL,OAAO;QACP,aAAa,EAAE,MAAM,CAAC,WAAW;QACjC,eAAe,EAAE;YACf,eAAe,EAAE,KAAK,CAAC,IAAI;YAC3B,wBAAwB,EAAE,KAAK,CAAC,WAAW;YAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,sBAAsB;SAChC;QACD,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;QAC5C,UAAU;KAMX,CAAA;AACH,CAAC;AAlDD,oDAkDC"}
1
+ {"version":3,"file":"buildProveWithdrawal.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildProveWithdrawal.ts"],"names":[],"mappings":";;;AACA,qEAG4C;AAC5C,qEAG4C;AAgB5C,mEAA4D;AAC5D,+DAAwD;AACxD,mEAA4D;AAC5D,kDAA2C;AAE3C,8FAGiD;AAIjD,MAAM,sBAAsB,GAC1B,oEAA6E,CAAA;AAiExE,KAAK,UAAU,oBAAoB,CAMxC,MAAyC,EACzC,IAKC;IAID,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAClE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,CAAA;IACrC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEhC,MAAM,IAAI,GAAG,IAAA,8DAA4B,EAAC,EAAE,cAAc,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,IAAA,sBAAQ,EAAC,MAAM,EAAE;YACf,OAAO,EAAE,wBAAS,CAAC,mBAAmB,CAAC,OAAO;YAC9C,WAAW,EAAE,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,aAAa;SAC3B,CAAC;QACF,IAAA,sBAAQ,EAAC,MAAM,EAAE;YACf,WAAW,EAAE,aAAa;SAC3B,CAAC;KACH,CAAC,CAAA;IAEF,OAAO;QACL,OAAO;QACP,aAAa,EAAE,MAAM,CAAC,WAAW;QACjC,eAAe,EAAE;YACf,eAAe,EAAE,KAAK,CAAC,IAAI;YAC3B,wBAAwB,EAAE,KAAK,CAAC,WAAW;YAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,sBAAsB;SAChC;QACD,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,iBAAiB,CAChC,IAAA,wBAAS,EAAC,IAAI,CAAC,EACf,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAC5B;QACD,UAAU;KAMX,CAAA;AACH,CAAC;AArDD,oDAqDC;AAED,SAAgB,iBAAiB,CAAC,GAAW,EAAE,KAAqB;IAClE,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAG,IAAA,oBAAO,EAAC,YAAY,CAAC,CAAA;IACvC,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA;IAEzC,MAAM,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;IAChC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAE7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAQ;QAQlC,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAQ;QACjE,aAAa,CAAC,IAAI,CAAC,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC;AArBD,8CAqBC"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '0.0.0-main.20240306T020214';
4
+ exports.version = '0.0.0-main.20240306T211153';
5
5
  //# sourceMappingURL=version.js.map
@@ -1,5 +1,9 @@
1
1
  import { getBlock, } from '../../../actions/public/getBlock.js';
2
2
  import { getProof, } from '../../../actions/public/getProof.js';
3
+ import {} from '../../../types/misc.js';
4
+ import { fromRlp } from '../../../utils/encoding/fromRlp.js';
5
+ import { toRlp } from '../../../utils/encoding/toRlp.js';
6
+ import { keccak256 } from '../../../utils/hash/keccak256.js';
3
7
  import { contracts } from '../contracts.js';
4
8
  import { getWithdrawalHashStorageSlot, } from '../utils/getWithdrawalHashStorageSlot.js';
5
9
  const outputRootProofVersion = '0x0000000000000000000000000000000000000000000000000000000000000000';
@@ -52,8 +56,32 @@ export async function buildProveWithdrawal(client, args) {
52
56
  version: outputRootProofVersion,
53
57
  },
54
58
  targetChain: chain,
55
- withdrawalProof: proof.storageProof[0].proof,
59
+ withdrawalProof: maybeAddProofNode(keccak256(slot), proof.storageProof[0].proof),
56
60
  withdrawal,
57
61
  };
58
62
  }
63
+ export function maybeAddProofNode(key, proof) {
64
+ const lastProofRlp = proof[proof.length - 1];
65
+ const lastProof = fromRlp(lastProofRlp);
66
+ if (lastProof.length !== 17)
67
+ return proof;
68
+ const modifiedProof = [...proof];
69
+ for (const item of lastProof) {
70
+ // Find any nodes located inside of the branch node.
71
+ if (!Array.isArray(item))
72
+ continue;
73
+ // Check if the key inside the node matches the key we're looking for. We remove the first
74
+ // two characters (0x) and then we remove one more character (the first nibble) since this
75
+ // is the identifier for the type of node we're looking at. In this case we don't actually
76
+ // care what type of node it is because a branch node would only ever be the final proof
77
+ // element if (1) it includes the leaf node we're looking for or (2) it stores the value
78
+ // within itself. If (1) then this logic will work, if (2) then this won't find anything
79
+ // and we won't append any proof elements, which is exactly what we would want.
80
+ const suffix = item[0].slice(3);
81
+ if (typeof suffix !== 'string' || !key.endsWith(suffix))
82
+ continue;
83
+ modifiedProof.push(toRlp(item));
84
+ }
85
+ return modifiedProof;
86
+ }
59
87
  //# sourceMappingURL=buildProveWithdrawal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildProveWithdrawal.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildProveWithdrawal.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,QAAQ,GACT,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAEL,QAAQ,GACT,MAAM,qCAAqC,CAAA;AAe5C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAEL,4BAA4B,GAC7B,MAAM,0CAA0C,CAAA;AAIjD,MAAM,sBAAsB,GAC1B,oEAA6E,CAAA;AAyC/E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAMxC,MAAyC,EACzC,IAKC;IAID,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAClE,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,CAAA;IACrC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;IAEhC,MAAM,IAAI,GAAG,4BAA4B,CAAC,EAAE,cAAc,EAAE,CAAC,CAAA;IAC7D,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,QAAQ,CAAC,MAAM,EAAE;YACf,OAAO,EAAE,SAAS,CAAC,mBAAmB,CAAC,OAAO;YAC9C,WAAW,EAAE,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,aAAa;SAC3B,CAAC;QACF,QAAQ,CAAC,MAAM,EAAE;YACf,WAAW,EAAE,aAAa;SAC3B,CAAC;KACH,CAAC,CAAA;IAEF,OAAO;QACL,OAAO;QACP,aAAa,EAAE,MAAM,CAAC,WAAW;QACjC,eAAe,EAAE;YACf,eAAe,EAAE,KAAK,CAAC,IAAI;YAC3B,wBAAwB,EAAE,KAAK,CAAC,WAAW;YAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,sBAAsB;SAChC;QACD,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;QAC5C,UAAU;KAMX,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"buildProveWithdrawal.js","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildProveWithdrawal.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const version = '0.0.0-main.20240306T020214';
1
+ export const version = '0.0.0-main.20240306T211153';
2
2
  //# sourceMappingURL=version.js.map
@@ -6,6 +6,7 @@ import type { Transport } from '../../../clients/transports/createTransport.js';
6
6
  import type { ErrorType } from '../../../errors/utils.js';
7
7
  import type { Account, DeriveAccount, GetAccountParameter } from '../../../types/account.js';
8
8
  import type { Chain, DeriveChain, GetChainParameter } from '../../../types/chain.js';
9
+ import { type Hex } from '../../../types/misc.js';
9
10
  import type { Prettify } from '../../../types/utils.js';
10
11
  import type { Withdrawal } from '../types/withdrawal.js';
11
12
  import { type GetWithdrawalHashStorageSlotErrorType } from '../utils/getWithdrawalHashStorageSlot.js';
@@ -45,4 +46,5 @@ export type BuildProveWithdrawalErrorType = GetBlockErrorType | GetProofErrorTyp
45
46
  * })
46
47
  */
47
48
  export declare function buildProveWithdrawal<chain extends Chain | undefined, account extends Account | undefined, chainOverride extends Chain | undefined = undefined, accountOverride extends Account | Address | undefined = undefined>(client: Client<Transport, chain, account>, args: BuildProveWithdrawalParameters<chain, account, chainOverride, accountOverride>): Promise<BuildProveWithdrawalReturnType<chain, account, chainOverride, accountOverride>>;
49
+ export declare function maybeAddProofNode(key: string, proof: readonly Hex[]): readonly `0x${string}`[];
48
50
  //# sourceMappingURL=buildProveWithdrawal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildProveWithdrawal.d.ts","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildProveWithdrawal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildProveWithdrawal.d.ts","sourceRoot":"","sources":["../../../../chains/opStack/actions/buildProveWithdrawal.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const version = "0.0.0-main.20240306T020214";
1
+ export declare const version = "0.0.0-main.20240306T211153";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -20,7 +20,11 @@ import type {
20
20
  DeriveChain,
21
21
  GetChainParameter,
22
22
  } from '../../../types/chain.js'
23
+ import { type Hex } from '../../../types/misc.js'
23
24
  import type { Prettify } from '../../../types/utils.js'
25
+ import { fromRlp } from '../../../utils/encoding/fromRlp.js'
26
+ import { toRlp } from '../../../utils/encoding/toRlp.js'
27
+ import { keccak256 } from '../../../utils/hash/keccak256.js'
24
28
  import { contracts } from '../contracts.js'
25
29
  import type { Withdrawal } from '../types/withdrawal.js'
26
30
  import {
@@ -138,7 +142,10 @@ export async function buildProveWithdrawal<
138
142
  version: outputRootProofVersion,
139
143
  },
140
144
  targetChain: chain,
141
- withdrawalProof: proof.storageProof[0].proof,
145
+ withdrawalProof: maybeAddProofNode(
146
+ keccak256(slot),
147
+ proof.storageProof[0].proof,
148
+ ),
142
149
  withdrawal,
143
150
  } as unknown as BuildProveWithdrawalReturnType<
144
151
  chain,
@@ -147,3 +154,26 @@ export async function buildProveWithdrawal<
147
154
  accountOverride
148
155
  >
149
156
  }
157
+
158
+ export function maybeAddProofNode(key: string, proof: readonly Hex[]) {
159
+ const lastProofRlp = proof[proof.length - 1]
160
+ const lastProof = fromRlp(lastProofRlp)
161
+ if (lastProof.length !== 17) return proof
162
+
163
+ const modifiedProof = [...proof]
164
+ for (const item of lastProof) {
165
+ // Find any nodes located inside of the branch node.
166
+ if (!Array.isArray(item)) continue
167
+ // Check if the key inside the node matches the key we're looking for. We remove the first
168
+ // two characters (0x) and then we remove one more character (the first nibble) since this
169
+ // is the identifier for the type of node we're looking at. In this case we don't actually
170
+ // care what type of node it is because a branch node would only ever be the final proof
171
+ // element if (1) it includes the leaf node we're looking for or (2) it stores the value
172
+ // within itself. If (1) then this logic will work, if (2) then this won't find anything
173
+ // and we won't append any proof elements, which is exactly what we would want.
174
+ const suffix = item[0].slice(3)
175
+ if (typeof suffix !== 'string' || !key.endsWith(suffix)) continue
176
+ modifiedProof.push(toRlp(item))
177
+ }
178
+ return modifiedProof
179
+ }
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '0.0.0-main.20240306T020214'
1
+ export const version = '0.0.0-main.20240306T211153'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "0.0.0-main.20240306T020214",
4
+ "version": "0.0.0-main.20240306T211153",
5
5
  "type": "module",
6
6
  "main": "./_cjs/index.js",
7
7
  "module": "./_esm/index.js",