viem 0.3.10 → 0.3.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -40,6 +40,12 @@
40
40
  </a>
41
41
  </p>
42
42
 
43
+ <br>
44
+
45
+ > **Note**
46
+ >
47
+ > viem is in the Gitcoin Grants Beta Round until May 9. [Click here to support development.](https://explorer.gitcoin.co/#/round/1/0xdf22a2c8f6ba9376ff17ee13e6154b784ee92094/0xdf22a2c8f6ba9376ff17ee13e6154b784ee92094-4) Thank you 🙏
48
+
43
49
  ## Features
44
50
 
45
51
  - Abstractions over the [JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/) to make your life easier
@@ -6,7 +6,11 @@ const index_js_2 = require("../../errors/index.js");
6
6
  const index_js_3 = require("../../utils/index.js");
7
7
  const readContract_js_1 = require("./readContract.js");
8
8
  async function multicall(client, args) {
9
- const { allowFailure = true, blockNumber, blockTag, contracts: contracts_, multicallAddress: multicallAddress_, } = args;
9
+ const { allowFailure = true, batchSize: batchSize_, blockNumber, blockTag, contracts: contracts_, multicallAddress: multicallAddress_, } = args;
10
+ const batchSize = batchSize_ ??
11
+ ((typeof client.batch?.multicall === 'object' &&
12
+ client.batch.multicall.batchSize) ||
13
+ 1024);
10
14
  const contracts = contracts_;
11
15
  let multicallAddress = multicallAddress_;
12
16
  if (!multicallAddress) {
@@ -18,18 +22,31 @@ async function multicall(client, args) {
18
22
  contract: 'multicall3',
19
23
  });
20
24
  }
21
- const calls = contracts.map(({ abi, address, args, functionName }) => {
25
+ const chunkedCalls = [[]];
26
+ let currentChunk = 0;
27
+ let currentChunkSize = 0;
28
+ for (let i = 0; i < contracts.length; i++) {
29
+ const { abi, address, args, functionName } = contracts[i];
22
30
  try {
23
31
  const callData = (0, index_js_3.encodeFunctionData)({
24
32
  abi,
25
33
  args,
26
34
  functionName,
27
35
  });
28
- return {
29
- allowFailure: true,
30
- callData,
31
- target: address,
32
- };
36
+ currentChunkSize += callData.length;
37
+ if (batchSize > 0 && currentChunkSize > batchSize) {
38
+ currentChunk++;
39
+ currentChunkSize = (callData.length - 2) / 2;
40
+ chunkedCalls[currentChunk] = [];
41
+ }
42
+ chunkedCalls[currentChunk] = [
43
+ ...chunkedCalls[currentChunk],
44
+ {
45
+ allowFailure: true,
46
+ callData,
47
+ target: address,
48
+ },
49
+ ];
33
50
  }
34
51
  catch (err) {
35
52
  const error = (0, index_js_3.getContractError)(err, {
@@ -41,22 +58,26 @@ async function multicall(client, args) {
41
58
  });
42
59
  if (!allowFailure)
43
60
  throw error;
44
- return {
45
- allowFailure: true,
46
- callData: '0x',
47
- target: address,
48
- };
61
+ chunkedCalls[currentChunk] = [
62
+ ...chunkedCalls[currentChunk],
63
+ {
64
+ allowFailure: true,
65
+ callData: '0x',
66
+ target: address,
67
+ },
68
+ ];
49
69
  }
50
- });
51
- const results = await (0, readContract_js_1.readContract)(client, {
70
+ }
71
+ const results = await Promise.all(chunkedCalls.map((calls) => (0, readContract_js_1.readContract)(client, {
52
72
  abi: index_js_1.multicall3Abi,
53
73
  address: multicallAddress,
54
74
  args: [calls],
55
75
  blockNumber,
56
76
  blockTag,
57
77
  functionName: 'aggregate3',
58
- });
59
- return results.map(({ returnData, success }, i) => {
78
+ })));
79
+ return results.flat().flatMap(({ returnData, success }, i) => {
80
+ const calls = chunkedCalls.flat();
60
81
  const { callData } = calls[i];
61
82
  const { abi, address, functionName, args } = contracts[i];
62
83
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":";;;AAEA,uDAAwD;AAExD,oDAG8B;AAS9B,mDAK6B;AAG7B,uDAAgD;AAyDzC,KAAK,UAAU,SAAS,CAK7B,MAAuC,EACvC,IAAoD;IAEpD,MAAM,EACJ,YAAY,GAAG,IAAI,EACnB,SAAS,EAAE,UAAU,EACrB,WAAW,EACX,QAAQ,EACR,SAAS,EAAE,UAAU,EACrB,gBAAgB,EAAE,iBAAiB,GACpC,GAAG,IAAI,CAAA;IAER,MAAM,SAAS,GACb,UAAU;QACV,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,SAAS,KAAK,QAAQ;YAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;YACjC,IAAK,CAAC,CAAA;IAGV,MAAM,SAAS,GAAG,UAA0D,CAAA;IAE5E,IAAI,gBAAgB,GAAG,iBAAiB,CAAA;IACxC,IAAI,CAAC,gBAAgB,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK;YACf,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAA;QAEH,gBAAgB,GAAG,IAAA,kCAAuB,EAAC;YACzC,WAAW;YACX,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAA;KACH;IAQD,MAAM,YAAY,GAAsB,CAAC,EAAE,CAAC,CAAA;IAC5C,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACzD,IAAI;YACF,MAAM,QAAQ,GAAG,IAAA,6BAAkB,EAAC;gBAClC,GAAG;gBACH,IAAI;gBACJ,YAAY;aAC8B,CAAC,CAAA;YAE7C,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAA;YACnC,IAAI,SAAS,GAAG,CAAC,IAAI,gBAAgB,GAAG,SAAS,EAAE;gBACjD,YAAY,EAAE,CAAA;gBACd,gBAAgB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC5C,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;aAChC;YAED,YAAY,CAAC,YAAY,CAAC,GAAG;gBAC3B,GAAG,YAAY,CAAC,YAAY,CAAC;gBAC7B;oBACE,YAAY,EAAE,IAAI;oBAClB,QAAQ;oBACR,MAAM,EAAE,OAAO;iBAChB;aACF,CAAA;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,IAAA,2BAAgB,EAAC,GAAgB,EAAE;gBAC/C,GAAG;gBACH,OAAO;gBACP,IAAI;gBACJ,QAAQ,EAAE,0BAA0B;gBACpC,YAAY;aACb,CAAC,CAAA;YACF,IAAI,CAAC,YAAY;gBAAE,MAAM,KAAK,CAAA;YAC9B,YAAY,CAAC,YAAY,CAAC,GAAG;gBAC3B,GAAG,YAAY,CAAC,YAAY,CAAC;gBAC7B;oBACE,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAW;oBACrB,MAAM,EAAE,OAAO;iBAChB;aACF,CAAA;SACF;KACF;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,IAAA,8BAAY,EAAC,MAAM,EAAE;QACnB,GAAG,EAAE,wBAAa;QAClB,OAAO,EAAE,gBAAiB;QAC1B,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,WAAW;QACX,QAAQ;QACR,YAAY,EAAE,YAAY;KAC3B,CAAC,CACH,CACF,CAAA;IAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC7B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACzD,IAAI;YACF,IAAI,QAAQ,KAAK,IAAI;gBAAE,MAAM,IAAI,mCAAwB,EAAE,CAAA;YAC3D,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,2BAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;YAC9D,MAAM,MAAM,GAAG,IAAA,+BAAoB,EAAC;gBAClC,GAAG;gBACH,IAAI,EAAE,UAAU;gBAChB,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAA;YACF,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;SAC7D;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,IAAA,2BAAgB,EAAC,GAAgB,EAAE;gBAC/C,GAAG;gBACH,OAAO;gBACP,IAAI;gBACJ,QAAQ,EAAE,0BAA0B;gBACpC,YAAY;aACb,CAAC,CAAA;YACF,IAAI,CAAC,YAAY;gBAAE,MAAM,KAAK,CAAA;YAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;SACvD;IACH,CAAC,CAAgD,CAAA;AACnD,CAAC;AAnID,8BAmIC"}
@@ -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.3.10';
4
+ exports.version = '0.3.12';
5
5
  //# sourceMappingURL=version.js.map
@@ -5,10 +5,12 @@ const index_js_1 = require("../../errors/index.js");
5
5
  const index_js_2 = require("../encoding/index.js");
6
6
  const index_js_3 = require("../hash/index.js");
7
7
  const isAddress_js_1 = require("./isAddress.js");
8
- function checksumAddress(address_) {
9
- const hexAddress = address_.substring(2).toLowerCase();
8
+ function checksumAddress(address_, chainId) {
9
+ const hexAddress = chainId
10
+ ? `${chainId}${address_.toLowerCase()}`
11
+ : address_.substring(2).toLowerCase();
10
12
  const hash = (0, index_js_3.keccak256)((0, index_js_2.stringToBytes)(hexAddress), 'bytes');
11
- const address = hexAddress.split('');
13
+ const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split('');
12
14
  for (let i = 0; i < 40; i += 2) {
13
15
  if (hash[i >> 1] >> 4 >= 8 && address[i]) {
14
16
  address[i] = address[i].toUpperCase();
@@ -20,10 +22,10 @@ function checksumAddress(address_) {
20
22
  return `0x${address.join('')}`;
21
23
  }
22
24
  exports.checksumAddress = checksumAddress;
23
- function getAddress(address) {
25
+ function getAddress(address, chainId) {
24
26
  if (!(0, isAddress_js_1.isAddress)(address))
25
27
  throw new index_js_1.InvalidAddressError({ address });
26
- return checksumAddress(address);
28
+ return checksumAddress(address, chainId);
27
29
  }
28
30
  exports.getAddress = getAddress;
29
31
  //# sourceMappingURL=getAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAddress.js","sourceRoot":"","sources":["../../../../src/utils/address/getAddress.ts"],"names":[],"mappings":";;;AAAA,oDAA2D;AAE3D,mDAAoD;AACpD,+CAA4C;AAC5C,iDAA0C;AAE1C,SAAgB,eAAe,CAAC,QAAiB;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACtD,MAAM,IAAI,GAAG,IAAA,oBAAS,EAAC,IAAA,wBAAa,EAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAA;IAE1D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;QAC9B,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACxC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SACtC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAChD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SAC9C;KACF;IAED,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChC,CAAC;AAfD,0CAeC;AAED,SAAgB,UAAU,CAAC,OAAe;IACxC,IAAI,CAAC,IAAA,wBAAS,EAAC,OAAO,CAAC;QAAE,MAAM,IAAI,8BAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACnE,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC;AAHD,gCAGC"}
1
+ {"version":3,"file":"getAddress.js","sourceRoot":"","sources":["../../../../src/utils/address/getAddress.ts"],"names":[],"mappings":";;;AAAA,oDAA2D;AAE3D,mDAAoD;AACpD,+CAA4C;AAC5C,iDAA0C;AAE1C,SAAgB,eAAe,CAAC,QAAiB,EAAE,OAAgB;IACjE,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE;QACvC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACvC,MAAM,IAAI,GAAG,IAAA,oBAAS,EAAC,IAAA,wBAAa,EAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAA;IAE1D,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CACnE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;QAC9B,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACxC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SACtC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAChD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SAC9C;KACF;IAED,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChC,CAAC;AAnBD,0CAmBC;AAED,SAAgB,UAAU,CAAC,OAAe,EAAE,OAAgB;IAC1D,IAAI,CAAC,IAAA,wBAAS,EAAC,OAAO,CAAC;QAAE,MAAM,IAAI,8BAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACnE,OAAO,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC;AAHD,gCAGC"}
@@ -12,7 +12,8 @@ const isDeterministicError = (error) => {
12
12
  error.code !== -32042 &&
13
13
  error.code !== -32603);
14
14
  if (error instanceof index_js_1.HttpRequestError && error.status)
15
- return (error.status !== 408 &&
15
+ return (error.status !== 403 &&
16
+ error.status !== 408 &&
16
17
  error.status !== 413 &&
17
18
  error.status !== 429 &&
18
19
  error.status !== 500 &&
@@ -1 +1 @@
1
- {"version":3,"file":"buildRequest.js","sourceRoot":"","sources":["../../../src/utils/buildRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildRequest.js","sourceRoot":"","sources":["../../../src/utils/buildRequest.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,11 @@ import { AbiDecodingZeroDataError, RawContractError, } from '../../errors/index.
3
3
  import { decodeFunctionResult, encodeFunctionData, getChainContractAddress, getContractError, } from '../../utils/index.js';
4
4
  import { readContract } from './readContract.js';
5
5
  export async function multicall(client, args) {
6
- const { allowFailure = true, blockNumber, blockTag, contracts: contracts_, multicallAddress: multicallAddress_, } = args;
6
+ const { allowFailure = true, batchSize: batchSize_, blockNumber, blockTag, contracts: contracts_, multicallAddress: multicallAddress_, } = args;
7
+ const batchSize = batchSize_ ??
8
+ ((typeof client.batch?.multicall === 'object' &&
9
+ client.batch.multicall.batchSize) ||
10
+ 1024);
7
11
  const contracts = contracts_;
8
12
  let multicallAddress = multicallAddress_;
9
13
  if (!multicallAddress) {
@@ -15,18 +19,31 @@ export async function multicall(client, args) {
15
19
  contract: 'multicall3',
16
20
  });
17
21
  }
18
- const calls = contracts.map(({ abi, address, args, functionName }) => {
22
+ const chunkedCalls = [[]];
23
+ let currentChunk = 0;
24
+ let currentChunkSize = 0;
25
+ for (let i = 0; i < contracts.length; i++) {
26
+ const { abi, address, args, functionName } = contracts[i];
19
27
  try {
20
28
  const callData = encodeFunctionData({
21
29
  abi,
22
30
  args,
23
31
  functionName,
24
32
  });
25
- return {
26
- allowFailure: true,
27
- callData,
28
- target: address,
29
- };
33
+ currentChunkSize += callData.length;
34
+ if (batchSize > 0 && currentChunkSize > batchSize) {
35
+ currentChunk++;
36
+ currentChunkSize = (callData.length - 2) / 2;
37
+ chunkedCalls[currentChunk] = [];
38
+ }
39
+ chunkedCalls[currentChunk] = [
40
+ ...chunkedCalls[currentChunk],
41
+ {
42
+ allowFailure: true,
43
+ callData,
44
+ target: address,
45
+ },
46
+ ];
30
47
  }
31
48
  catch (err) {
32
49
  const error = getContractError(err, {
@@ -38,22 +55,26 @@ export async function multicall(client, args) {
38
55
  });
39
56
  if (!allowFailure)
40
57
  throw error;
41
- return {
42
- allowFailure: true,
43
- callData: '0x',
44
- target: address,
45
- };
58
+ chunkedCalls[currentChunk] = [
59
+ ...chunkedCalls[currentChunk],
60
+ {
61
+ allowFailure: true,
62
+ callData: '0x',
63
+ target: address,
64
+ },
65
+ ];
46
66
  }
47
- });
48
- const results = await readContract(client, {
67
+ }
68
+ const results = await Promise.all(chunkedCalls.map((calls) => readContract(client, {
49
69
  abi: multicall3Abi,
50
70
  address: multicallAddress,
51
71
  args: [calls],
52
72
  blockNumber,
53
73
  blockTag,
54
74
  functionName: 'aggregate3',
55
- });
56
- return results.map(({ returnData, success }, i) => {
75
+ })));
76
+ return results.flat().flatMap(({ returnData, success }, i) => {
77
+ const calls = chunkedCalls.flat();
57
78
  const { callData } = calls[i];
58
79
  const { abi, address, functionName, args } = contracts[i];
59
80
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export const version = '0.3.10';
1
+ export const version = '0.3.12';
2
2
  //# sourceMappingURL=version.js.map
@@ -2,10 +2,12 @@ import { InvalidAddressError } from '../../errors/index.js';
2
2
  import { stringToBytes } from '../encoding/index.js';
3
3
  import { keccak256 } from '../hash/index.js';
4
4
  import { isAddress } from './isAddress.js';
5
- export function checksumAddress(address_) {
6
- const hexAddress = address_.substring(2).toLowerCase();
5
+ export function checksumAddress(address_, chainId) {
6
+ const hexAddress = chainId
7
+ ? `${chainId}${address_.toLowerCase()}`
8
+ : address_.substring(2).toLowerCase();
7
9
  const hash = keccak256(stringToBytes(hexAddress), 'bytes');
8
- const address = hexAddress.split('');
10
+ const address = (chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress).split('');
9
11
  for (let i = 0; i < 40; i += 2) {
10
12
  if (hash[i >> 1] >> 4 >= 8 && address[i]) {
11
13
  address[i] = address[i].toUpperCase();
@@ -16,9 +18,9 @@ export function checksumAddress(address_) {
16
18
  }
17
19
  return `0x${address.join('')}`;
18
20
  }
19
- export function getAddress(address) {
21
+ export function getAddress(address, chainId) {
20
22
  if (!isAddress(address))
21
23
  throw new InvalidAddressError({ address });
22
- return checksumAddress(address);
24
+ return checksumAddress(address, chainId);
23
25
  }
24
26
  //# sourceMappingURL=getAddress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAddress.js","sourceRoot":"","sources":["../../../../src/utils/address/getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACtD,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAA;IAE1D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;QAC9B,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACxC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SACtC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAChD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SAC9C;KACF;IAED,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACnE,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"getAddress.js","sourceRoot":"","sources":["../../../../src/utils/address/getAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,UAAU,eAAe,CAAC,QAAiB,EAAE,OAAgB;IACjE,MAAM,UAAU,GAAG,OAAO;QACxB,CAAC,CAAC,GAAG,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE;QACvC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;IACvC,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAA;IAE1D,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CACnE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;QAC9B,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACxC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SACtC;QACD,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;YAChD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;SAC9C;KACF;IAED,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,OAAgB;IAC1D,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACnE,OAAO,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AAC1C,CAAC"}
@@ -9,7 +9,8 @@ export const isDeterministicError = (error) => {
9
9
  error.code !== -32042 &&
10
10
  error.code !== -32603);
11
11
  if (error instanceof HttpRequestError && error.status)
12
- return (error.status !== 408 &&
12
+ return (error.status !== 403 &&
13
+ error.status !== 408 &&
13
14
  error.status !== 413 &&
14
15
  error.status !== 429 &&
15
16
  error.status !== 500 &&
@@ -1 +1 @@
1
- {"version":3,"file":"buildRequest.js","sourceRoot":"","sources":["../../../src/utils/buildRequest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildRequest.js","sourceRoot":"","sources":["../../../src/utils/buildRequest.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ import type { MulticallResults } from '../../types/multicall.js';
5
5
  import type { CallParameters } from './call.js';
6
6
  export type MulticallParameters<TContracts extends ContractFunctionConfig[] = ContractFunctionConfig[], TAllowFailure extends boolean = true> = Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
7
7
  allowFailure?: TAllowFailure;
8
+ /** The maximum size (in bytes) for each calldata chunk. Set to `0` to disable the size limit. @default 1_024 */
9
+ batchSize?: number;
8
10
  contracts: Narrow<readonly [...MulticallContracts<TContracts>]>;
9
11
  multicallAddress?: Address;
10
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAOrE,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,sBAAsB,EAEtB,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAQhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,CAAC,GAAG;IACrD,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,SAAS,CAC7B,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,UAAU,SAAS,sBAAsB,EAAE,EAC3C,aAAa,SAAS,OAAO,GAAG,IAAI,EAEpC,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EACvC,IAAI,EAAE,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,GACnD,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAsFzD"}
1
+ {"version":3,"file":"multicall.d.ts","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAOrE,OAAO,KAAK,EACV,OAAO,EACP,KAAK,EACL,sBAAsB,EAEtB,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAQhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,CAAC,GAAG;IACrD,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,gHAAgH;IAChH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC/D,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,mBAAmB,CAC7B,UAAU,SAAS,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,EACtE,aAAa,SAAS,OAAO,GAAG,IAAI,IAClC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAsB,SAAS,CAC7B,MAAM,SAAS,KAAK,GAAG,SAAS,EAChC,UAAU,SAAS,sBAAsB,EAAE,EAC3C,aAAa,SAAS,OAAO,GAAG,IAAI,EAEpC,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EACvC,IAAI,EAAE,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,GACnD,OAAO,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CA4HzD"}
@@ -1,2 +1,2 @@
1
- export declare const version = "0.3.10";
1
+ export declare const version = "0.3.12";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,4 +1,4 @@
1
1
  import type { Address } from '../../types/index.js';
2
- export declare function checksumAddress(address_: Address): Address;
3
- export declare function getAddress(address: string): Address;
2
+ export declare function checksumAddress(address_: Address, chainId?: number): Address;
3
+ export declare function getAddress(address: string, chainId?: number): Address;
4
4
  //# sourceMappingURL=getAddress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getAddress.d.ts","sourceRoot":"","sources":["../../../../src/utils/address/getAddress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAKnD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAe1D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGnD"}
1
+ {"version":3,"file":"getAddress.d.ts","sourceRoot":"","sources":["../../../../src/utils/address/getAddress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAKnD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAmB5E;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAGrE"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildRequest.d.ts","sourceRoot":"","sources":["../../../src/utils/buildRequest.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,oBAAoB,UAAW,KAAK,YAoBhD,CAAA;AAED,wBAAgB,YAAY,CAAC,QAAQ,SAAS,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EACvE,OAAO,EAAE,QAAQ,EACjB,EACE,UAAgB,EAChB,UAAc,GACf,GAAE;IAED,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACf,YA+CP"}
1
+ {"version":3,"file":"buildRequest.d.ts","sourceRoot":"","sources":["../../../src/utils/buildRequest.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,oBAAoB,UAAW,KAAK,YAqBhD,CAAA;AAED,wBAAgB,YAAY,CAAC,QAAQ,SAAS,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,EACvE,OAAO,EAAE,QAAQ,EACjB,EACE,UAAgB,EAChB,UAAc,GACf,GAAE;IAED,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACf,YA+CP"}
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "isomorphic-ws": "5.0.0",
13
13
  "ws": "8.12.0"
14
14
  },
15
- "version": "0.3.10",
15
+ "version": "0.3.12",
16
16
  "files": [
17
17
  "dist",
18
18
  "!dist/**/*.tsbuildinfo",
@@ -29,6 +29,8 @@ export type MulticallParameters<
29
29
  TAllowFailure extends boolean = true,
30
30
  > = Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
31
31
  allowFailure?: TAllowFailure
32
+ /** The maximum size (in bytes) for each calldata chunk. Set to `0` to disable the size limit. @default 1_024 */
33
+ batchSize?: number
32
34
  contracts: Narrow<readonly [...MulticallContracts<TContracts>]>
33
35
  multicallAddress?: Address
34
36
  }
@@ -87,12 +89,19 @@ export async function multicall<
87
89
  ): Promise<MulticallReturnType<TContracts, TAllowFailure>> {
88
90
  const {
89
91
  allowFailure = true,
92
+ batchSize: batchSize_,
90
93
  blockNumber,
91
94
  blockTag,
92
95
  contracts: contracts_,
93
96
  multicallAddress: multicallAddress_,
94
97
  } = args
95
98
 
99
+ const batchSize =
100
+ batchSize_ ??
101
+ ((typeof client.batch?.multicall === 'object' &&
102
+ client.batch.multicall.batchSize) ||
103
+ 1_024)
104
+
96
105
  // Fix type cast from `Narrow` in type definition.
97
106
  const contracts = contracts_ as readonly [...MulticallContracts<TContracts>]
98
107
 
@@ -110,18 +119,39 @@ export async function multicall<
110
119
  })
111
120
  }
112
121
 
113
- const calls = contracts.map(({ abi, address, args, functionName }) => {
122
+ type Aggregate3Calls = {
123
+ allowFailure: boolean
124
+ callData: Hex
125
+ target: Address
126
+ }[]
127
+
128
+ const chunkedCalls: Aggregate3Calls[] = [[]]
129
+ let currentChunk = 0
130
+ let currentChunkSize = 0
131
+ for (let i = 0; i < contracts.length; i++) {
132
+ const { abi, address, args, functionName } = contracts[i]
114
133
  try {
115
134
  const callData = encodeFunctionData({
116
135
  abi,
117
136
  args,
118
137
  functionName,
119
138
  } as unknown as EncodeFunctionDataParameters)
120
- return {
121
- allowFailure: true,
122
- callData,
123
- target: address,
139
+
140
+ currentChunkSize += callData.length
141
+ if (batchSize > 0 && currentChunkSize > batchSize) {
142
+ currentChunk++
143
+ currentChunkSize = (callData.length - 2) / 2
144
+ chunkedCalls[currentChunk] = []
124
145
  }
146
+
147
+ chunkedCalls[currentChunk] = [
148
+ ...chunkedCalls[currentChunk],
149
+ {
150
+ allowFailure: true,
151
+ callData,
152
+ target: address,
153
+ },
154
+ ]
125
155
  } catch (err) {
126
156
  const error = getContractError(err as BaseError, {
127
157
  abi,
@@ -131,22 +161,32 @@ export async function multicall<
131
161
  functionName,
132
162
  })
133
163
  if (!allowFailure) throw error
134
- return {
135
- allowFailure: true,
136
- callData: '0x' as Hex,
137
- target: address,
138
- }
164
+ chunkedCalls[currentChunk] = [
165
+ ...chunkedCalls[currentChunk],
166
+ {
167
+ allowFailure: true,
168
+ callData: '0x' as Hex,
169
+ target: address,
170
+ },
171
+ ]
139
172
  }
140
- })
141
- const results = await readContract(client, {
142
- abi: multicall3Abi,
143
- address: multicallAddress,
144
- args: [calls],
145
- blockNumber,
146
- blockTag,
147
- functionName: 'aggregate3',
148
- })
149
- return results.map(({ returnData, success }, i) => {
173
+ }
174
+
175
+ const results = await Promise.all(
176
+ chunkedCalls.map((calls) =>
177
+ readContract(client, {
178
+ abi: multicall3Abi,
179
+ address: multicallAddress!,
180
+ args: [calls],
181
+ blockNumber,
182
+ blockTag,
183
+ functionName: 'aggregate3',
184
+ }),
185
+ ),
186
+ )
187
+
188
+ return results.flat().flatMap(({ returnData, success }, i) => {
189
+ const calls = chunkedCalls.flat()
150
190
  const { callData } = calls[i]
151
191
  const { abi, address, functionName, args } = contracts[i]
152
192
  try {
@@ -1 +1 @@
1
- export const version = '0.3.10'
1
+ export const version = '0.3.12'
@@ -4,11 +4,15 @@ import { stringToBytes } from '../encoding/index.js'
4
4
  import { keccak256 } from '../hash/index.js'
5
5
  import { isAddress } from './isAddress.js'
6
6
 
7
- export function checksumAddress(address_: Address): Address {
8
- const hexAddress = address_.substring(2).toLowerCase()
7
+ export function checksumAddress(address_: Address, chainId?: number): Address {
8
+ const hexAddress = chainId
9
+ ? `${chainId}${address_.toLowerCase()}`
10
+ : address_.substring(2).toLowerCase()
9
11
  const hash = keccak256(stringToBytes(hexAddress), 'bytes')
10
12
 
11
- const address = hexAddress.split('')
13
+ const address = (
14
+ chainId ? hexAddress.substring(`${chainId}0x`.length) : hexAddress
15
+ ).split('')
12
16
  for (let i = 0; i < 40; i += 2) {
13
17
  if (hash[i >> 1] >> 4 >= 8 && address[i]) {
14
18
  address[i] = address[i].toUpperCase()
@@ -21,7 +25,7 @@ export function checksumAddress(address_: Address): Address {
21
25
  return `0x${address.join('')}`
22
26
  }
23
27
 
24
- export function getAddress(address: string): Address {
28
+ export function getAddress(address: string, chainId?: number): Address {
25
29
  if (!isAddress(address)) throw new InvalidAddressError({ address })
26
- return checksumAddress(address)
30
+ return checksumAddress(address, chainId)
27
31
  }
@@ -37,6 +37,7 @@ export const isDeterministicError = (error: Error) => {
37
37
  )
38
38
  if (error instanceof HttpRequestError && error.status)
39
39
  return (
40
+ error.status !== 403 &&
40
41
  error.status !== 408 &&
41
42
  error.status !== 413 &&
42
43
  error.status !== 429 &&