thirdweb 5.60.1-nightly-79c50cb311ffef769b7bdba3006ae67ddf257caf-20241002000323 → 5.60.1

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.
Files changed (110) hide show
  1. package/dist/cjs/chains/utils.js +1 -0
  2. package/dist/cjs/chains/utils.js.map +1 -1
  3. package/dist/cjs/contract/actions/compiler-metadata.js +3 -3
  4. package/dist/cjs/contract/actions/compiler-metadata.js.map +1 -1
  5. package/dist/cjs/contract/deployment/publisher.js +0 -2
  6. package/dist/cjs/contract/deployment/publisher.js.map +1 -1
  7. package/dist/cjs/contract/deployment/utils/bootstrap.js +7 -3
  8. package/dist/cjs/contract/deployment/utils/bootstrap.js.map +1 -1
  9. package/dist/cjs/extensions/prebuilts/deploy-published.js +13 -7
  10. package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
  11. package/dist/cjs/extensions/prebuilts/get-required-transactions.js +5 -0
  12. package/dist/cjs/extensions/prebuilts/get-required-transactions.js.map +1 -1
  13. package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js +6 -1
  14. package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
  15. package/dist/cjs/utils/any-evm/deploy-metadata.js +29 -21
  16. package/dist/cjs/utils/any-evm/deploy-metadata.js.map +1 -1
  17. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js +21 -26
  18. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
  19. package/dist/cjs/version.js +1 -1
  20. package/dist/cjs/version.js.map +1 -1
  21. package/dist/cjs/wallets/in-app/native/ecosystem.js +1 -0
  22. package/dist/cjs/wallets/in-app/native/ecosystem.js.map +1 -1
  23. package/dist/cjs/wallets/in-app/web/ecosystem.js +1 -0
  24. package/dist/cjs/wallets/in-app/web/ecosystem.js.map +1 -1
  25. package/dist/cjs/wallets/smart/lib/bundler.js +1 -3
  26. package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
  27. package/dist/cjs/wallets/smart/lib/constants.js +3 -3
  28. package/dist/cjs/wallets/smart/lib/constants.js.map +1 -1
  29. package/dist/cjs/wallets/smart/lib/paymaster.js +1 -3
  30. package/dist/cjs/wallets/smart/lib/paymaster.js.map +1 -1
  31. package/dist/cjs/wallets/smart/lib/userop.js +1 -3
  32. package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
  33. package/dist/esm/chains/utils.js +1 -0
  34. package/dist/esm/chains/utils.js.map +1 -1
  35. package/dist/esm/contract/actions/compiler-metadata.js +3 -3
  36. package/dist/esm/contract/actions/compiler-metadata.js.map +1 -1
  37. package/dist/esm/contract/deployment/publisher.js +0 -2
  38. package/dist/esm/contract/deployment/publisher.js.map +1 -1
  39. package/dist/esm/contract/deployment/utils/bootstrap.js +7 -3
  40. package/dist/esm/contract/deployment/utils/bootstrap.js.map +1 -1
  41. package/dist/esm/extensions/prebuilts/deploy-published.js +13 -7
  42. package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
  43. package/dist/esm/extensions/prebuilts/get-required-transactions.js +5 -0
  44. package/dist/esm/extensions/prebuilts/get-required-transactions.js.map +1 -1
  45. package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js +6 -1
  46. package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
  47. package/dist/esm/utils/any-evm/deploy-metadata.js +28 -21
  48. package/dist/esm/utils/any-evm/deploy-metadata.js.map +1 -1
  49. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js +21 -26
  50. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
  51. package/dist/esm/version.js +1 -1
  52. package/dist/esm/version.js.map +1 -1
  53. package/dist/esm/wallets/in-app/native/ecosystem.js +1 -0
  54. package/dist/esm/wallets/in-app/native/ecosystem.js.map +1 -1
  55. package/dist/esm/wallets/in-app/web/ecosystem.js +1 -0
  56. package/dist/esm/wallets/in-app/web/ecosystem.js.map +1 -1
  57. package/dist/esm/wallets/smart/lib/bundler.js +2 -4
  58. package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
  59. package/dist/esm/wallets/smart/lib/constants.js +3 -3
  60. package/dist/esm/wallets/smart/lib/constants.js.map +1 -1
  61. package/dist/esm/wallets/smart/lib/paymaster.js +2 -4
  62. package/dist/esm/wallets/smart/lib/paymaster.js.map +1 -1
  63. package/dist/esm/wallets/smart/lib/userop.js +1 -3
  64. package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
  65. package/dist/types/chains/types.d.ts +1 -0
  66. package/dist/types/chains/types.d.ts.map +1 -1
  67. package/dist/types/contract/actions/compiler-metadata.d.ts +1 -1
  68. package/dist/types/contract/actions/compiler-metadata.d.ts.map +1 -1
  69. package/dist/types/contract/deployment/publisher.d.ts +0 -2
  70. package/dist/types/contract/deployment/publisher.d.ts.map +1 -1
  71. package/dist/types/contract/deployment/utils/bootstrap.d.ts +1 -2
  72. package/dist/types/contract/deployment/utils/bootstrap.d.ts.map +1 -1
  73. package/dist/types/extensions/prebuilts/deploy-published.d.ts +0 -2
  74. package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
  75. package/dist/types/extensions/prebuilts/get-required-transactions.d.ts +3 -0
  76. package/dist/types/extensions/prebuilts/get-required-transactions.d.ts.map +1 -1
  77. package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts +1 -1
  78. package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts.map +1 -1
  79. package/dist/types/utils/any-evm/deploy-metadata.d.ts +9 -6
  80. package/dist/types/utils/any-evm/deploy-metadata.d.ts.map +1 -1
  81. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts.map +1 -1
  82. package/dist/types/version.d.ts +1 -1
  83. package/dist/types/version.d.ts.map +1 -1
  84. package/dist/types/wallets/in-app/native/ecosystem.d.ts.map +1 -1
  85. package/dist/types/wallets/in-app/web/ecosystem.d.ts.map +1 -1
  86. package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
  87. package/dist/types/wallets/smart/lib/constants.d.ts +1 -1
  88. package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
  89. package/dist/types/wallets/smart/lib/paymaster.d.ts.map +1 -1
  90. package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
  91. package/package.json +1 -1
  92. package/src/chains/types.ts +1 -0
  93. package/src/chains/utils.ts +1 -0
  94. package/src/contract/actions/compiler-metadata.ts +2 -3
  95. package/src/contract/deployment/publisher.ts +0 -4
  96. package/src/contract/deployment/utils/bootstrap.ts +9 -5
  97. package/src/extensions/prebuilts/deploy-published.ts +14 -10
  98. package/src/extensions/prebuilts/get-required-transactions.ts +5 -0
  99. package/src/extensions/thirdweb/write/publish.test.ts +0 -1
  100. package/src/utils/any-evm/compute-published-contract-deploy-info.ts +9 -2
  101. package/src/utils/any-evm/deploy-metadata.ts +44 -33
  102. package/src/utils/any-evm/zksync/isZkSyncChain.ts +22 -35
  103. package/src/version.ts +1 -1
  104. package/src/wallets/in-app/native/ecosystem.ts +1 -0
  105. package/src/wallets/in-app/web/ecosystem.ts +1 -0
  106. package/src/wallets/smart/lib/bundler.ts +1 -7
  107. package/src/wallets/smart/lib/constants.ts +3 -3
  108. package/src/wallets/smart/lib/paymaster.ts +1 -4
  109. package/src/wallets/smart/lib/userop.ts +1 -6
  110. package/src/wallets/smart/smart-wallet-zksync.test.ts +25 -1
@@ -1 +1 @@
1
- {"version":3,"file":"userop.d.ts","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/userop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAI1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAkCrB,eAAO,MAAM,qBAAqB,oBAAqB,gBAAgB,SAEtE,CAAC;AAMF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,cAAc,GAAG;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,kBAAkB,CAAC,CAY7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,WAAW,EAAE,mBAAmB,CAAC;IACjC,eAAe,EAAE,gBAAgB,CAAC;IAClC,eAAe,EAAE,gBAAgB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;CAC7C,GAAG,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAwE/C;AA0TD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAC5C,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CA0C/C;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,kBAAkB,EAAE,kBAAkB,CAAC;CACxC,gDAkEA"}
1
+ {"version":3,"file":"userop.d.ts","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/userop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,KAAK,gBAAgB,EAEtB,MAAM,+BAA+B,CAAC;AAOvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAExE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAC;AAI1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,KAAK,EACV,cAAc,EAEd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAkCrB,eAAO,MAAM,qBAAqB,oBAAqB,gBAAgB,SAEtE,CAAC;AAMF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,cAAc,GAAG;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,kBAAkB,CAAC,CAY7B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,WAAW,EAAE,mBAAmB,CAAC;IACjC,eAAe,EAAE,gBAAgB,CAAC;IAClC,eAAe,EAAE,gBAAgB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;CAC7C,GAAG,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAwE/C;AAqTD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAC5C,KAAK,EAAE,KAAK,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,OAAO,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CA0C/C;AAiDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,YAAY,EAAE,mBAAmB,EAAE,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;IACvB,kBAAkB,EAAE,kBAAkB,CAAC;CACxC,gDAkEA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.60.1-nightly-79c50cb311ffef769b7bdba3006ae67ddf257caf-20241002000323",
3
+ "version": "5.60.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -82,6 +82,7 @@ export type ChainMetadata = {
82
82
  type: string;
83
83
  bridges?: Readonly<Array<{ url: string }>>;
84
84
  };
85
+ stackType: string;
85
86
  };
86
87
 
87
88
  /**
@@ -365,5 +365,6 @@ function createChainMetadata(
365
365
  url: e.url,
366
366
  standard: "EIP3091",
367
367
  })) || data?.explorers,
368
+ stackType: data?.stackType || "",
368
369
  };
369
370
  }
@@ -30,11 +30,10 @@ export type CompilerMetadata = {
30
30
  export function formatCompilerMetadata(
31
31
  // biome-ignore lint/suspicious/noExplicitAny: TODO: fix later
32
32
  metadata: any,
33
- compilerType?: "solc" | "zksolc",
34
33
  ): CompilerMetadata {
35
34
  let meta = metadata;
36
- if (compilerType === "zksolc") {
37
- meta = metadata.source_metadata || meta;
35
+ if ("source_metadata" in metadata) {
36
+ meta = metadata.source_metadata;
38
37
  }
39
38
  const compilationTarget = meta.settings.compilationTarget;
40
39
  const targets = Object.keys(compilationTarget);
@@ -24,7 +24,6 @@ export async function fetchPublishedContractMetadata(options: {
24
24
  contractId: string;
25
25
  publisher?: string;
26
26
  version?: string;
27
- compilerType?: "solc" | "zksolc";
28
27
  }): Promise<FetchDeployMetadataResult> {
29
28
  const cacheKey = `${options.contractId}-${options.publisher}-${options.version}`;
30
29
  return withCache(
@@ -34,7 +33,6 @@ export async function fetchPublishedContractMetadata(options: {
34
33
  publisherAddress: options.publisher || THIRDWEB_DEPLOYER,
35
34
  contractId: options.contractId,
36
35
  version: options.version,
37
- compilerType: options.compilerType,
38
36
  });
39
37
  if (!publishedContract.publishMetadataUri) {
40
38
  throw new Error(
@@ -44,7 +42,6 @@ export async function fetchPublishedContractMetadata(options: {
44
42
  const data = await fetchDeployMetadata({
45
43
  client: options.client,
46
44
  uri: publishedContract.publishMetadataUri,
47
- compilerType: options.compilerType,
48
45
  });
49
46
  return data;
50
47
  },
@@ -214,7 +211,6 @@ type FetchPublishedContractOptions = {
214
211
  contractId: string;
215
212
  version?: string;
216
213
  client: ThirdwebClient;
217
- compilerType?: "solc" | "zksolc";
218
214
  };
219
215
 
220
216
  /**
@@ -1,5 +1,8 @@
1
1
  import { sendAndConfirmTransaction } from "../../../transaction/actions/send-and-confirm-transaction.js";
2
- import type { FetchDeployMetadataResult } from "../../../utils/any-evm/deploy-metadata.js";
2
+ import {
3
+ type FetchDeployMetadataResult,
4
+ fetchBytecodeFromCompilerMetadata,
5
+ } from "../../../utils/any-evm/deploy-metadata.js";
3
6
  import { isZkSyncChain } from "../../../utils/any-evm/zksync/isZkSyncChain.js";
4
7
  import type { ClientAndChainAndAccount } from "../../../utils/types.js";
5
8
  import { type ThirdwebContract, getContract } from "../../contract.js";
@@ -27,7 +30,6 @@ export async function getOrDeployInfraForPublishedContract(
27
30
  constructorParams?: Record<string, unknown>;
28
31
  publisher?: string;
29
32
  version?: string;
30
- compilerType?: "solc" | "zksolc";
31
33
  },
32
34
  ): Promise<{
33
35
  cloneFactoryContract: ThirdwebContract;
@@ -41,7 +43,6 @@ export async function getOrDeployInfraForPublishedContract(
41
43
  constructorParams,
42
44
  publisher,
43
45
  version,
44
- compilerType,
45
46
  } = args;
46
47
 
47
48
  if (await isZkSyncChain(chain)) {
@@ -55,14 +56,17 @@ export async function getOrDeployInfraForPublishedContract(
55
56
  contractId,
56
57
  publisher,
57
58
  version,
58
- compilerType,
59
59
  });
60
60
  const implementationContract = await zkDeployContractDeterministic({
61
61
  chain,
62
62
  client,
63
63
  account,
64
64
  abi: compilerMetadata.abi,
65
- bytecode: compilerMetadata.bytecode,
65
+ bytecode: await fetchBytecodeFromCompilerMetadata({
66
+ compilerMetadata,
67
+ client,
68
+ chain,
69
+ }),
66
70
  params: constructorParams,
67
71
  });
68
72
  return {
@@ -13,7 +13,10 @@ import { resolveMethod } from "../../transaction/resolve-method.js";
13
13
  import { encodeAbiParameters } from "../../utils/abi/encodeAbiParameters.js";
14
14
  import { normalizeFunctionParams } from "../../utils/abi/normalizeFunctionParams.js";
15
15
  import { getAddress } from "../../utils/address.js";
16
- import type { CompilerMetadata } from "../../utils/any-evm/deploy-metadata.js";
16
+ import {
17
+ type CompilerMetadata,
18
+ fetchBytecodeFromCompilerMetadata,
19
+ } from "../../utils/any-evm/deploy-metadata.js";
17
20
  import type { FetchDeployMetadataResult } from "../../utils/any-evm/deploy-metadata.js";
18
21
  import { isZkSyncChain } from "../../utils/any-evm/zksync/isZkSyncChain.js";
19
22
  import type { Hex } from "../../utils/encoding/hex.js";
@@ -33,7 +36,6 @@ export type DeployPublishedContractOptions = {
33
36
  version?: string;
34
37
  implementationConstructorParams?: Record<string, unknown>;
35
38
  salt?: string;
36
- compilerType?: "solc" | "zksolc";
37
39
  };
38
40
 
39
41
  /**
@@ -93,14 +95,12 @@ export async function deployPublishedContract(
93
95
  version,
94
96
  implementationConstructorParams,
95
97
  salt,
96
- compilerType,
97
98
  } = options;
98
99
  const deployMetadata = await fetchPublishedContractMetadata({
99
100
  client,
100
101
  contractId,
101
102
  publisher,
102
103
  version,
103
- compilerType,
104
104
  });
105
105
 
106
106
  return deployContractfromDeployMetadata({
@@ -111,7 +111,6 @@ export async function deployPublishedContract(
111
111
  initializeParams: contractParams,
112
112
  implementationConstructorParams,
113
113
  salt,
114
- compilerType,
115
114
  });
116
115
  }
117
116
 
@@ -130,7 +129,6 @@ export type DeployContractfromDeployMetadataOptions = {
130
129
  initializeParams?: Record<string, unknown>;
131
130
  }[];
132
131
  salt?: string;
133
- compilerType?: "solc" | "zksolc";
134
132
  };
135
133
 
136
134
  /**
@@ -148,7 +146,6 @@ export async function deployContractfromDeployMetadata(
148
146
  implementationConstructorParams,
149
147
  modules,
150
148
  salt,
151
- compilerType,
152
149
  } = options;
153
150
  switch (deployMetadata?.deployType) {
154
151
  case "standard": {
@@ -182,7 +179,6 @@ export async function deployContractfromDeployMetadata(
182
179
  client,
183
180
  })),
184
181
  publisher: deployMetadata.publisher,
185
- compilerType,
186
182
  });
187
183
 
188
184
  const initializeTransaction = await getInitializeTransaction({
@@ -272,7 +268,11 @@ async function directDeploy(options: {
272
268
  account,
273
269
  client,
274
270
  chain,
275
- bytecode: compilerMetadata.bytecode,
271
+ bytecode: await fetchBytecodeFromCompilerMetadata({
272
+ compilerMetadata,
273
+ client,
274
+ chain,
275
+ }),
276
276
  abi: compilerMetadata.abi,
277
277
  params: contractParams,
278
278
  salt,
@@ -286,7 +286,11 @@ async function directDeploy(options: {
286
286
  account,
287
287
  client,
288
288
  chain,
289
- bytecode: compilerMetadata.bytecode,
289
+ bytecode: await fetchBytecodeFromCompilerMetadata({
290
+ compilerMetadata,
291
+ client,
292
+ chain,
293
+ }),
290
294
  abi: compilerMetadata.abi,
291
295
  constructorParams: contractParams,
292
296
  salt,
@@ -210,6 +210,11 @@ export async function getAllDefaultConstructorParamsForImplementation(args: {
210
210
  client: ThirdwebClient;
211
211
  }) {
212
212
  const { chain, client } = args;
213
+ const isZkSync = await isZkSyncChain(chain);
214
+ if (isZkSync) {
215
+ // zksync contracts dont need these implementation constructor params
216
+ return {};
217
+ }
213
218
  const [forwarder, weth] = await Promise.all([
214
219
  computePublishedContractAddress({
215
220
  chain,
@@ -85,7 +85,6 @@ describe.runIf(process.env.TW_SECRET_KEY)("publishContract", () => {
85
85
  uri: logs?.[0]?.args.publishedContract.publishMetadataUri ?? "",
86
86
  });
87
87
  expect(publishedData.abi).toBeDefined();
88
- expect(publishedData.bytecode).toBeDefined();
89
88
  expect(publishedData.version).toBe("0.0.1");
90
89
  expect(publishedData.changelog).toBe("Initial release");
91
90
  expect(publishedData.name).toBe("CatAttackNFT");
@@ -7,7 +7,10 @@ import { encodeAbiParameters } from "../abi/encodeAbiParameters.js";
7
7
  import { normalizeFunctionParams } from "../abi/normalizeFunctionParams.js";
8
8
  import { ensureBytecodePrefix } from "../bytecode/prefix.js";
9
9
  import type { Hex } from "../encoding/hex.js";
10
- import type { FetchDeployMetadataResult } from "./deploy-metadata.js";
10
+ import {
11
+ type FetchDeployMetadataResult,
12
+ fetchBytecodeFromCompilerMetadata,
13
+ } from "./deploy-metadata.js";
11
14
  import { getInitBytecodeWithSalt } from "./get-init-bytecode-with-salt.js";
12
15
 
13
16
  /**
@@ -52,7 +55,11 @@ export async function computeDeploymentInfoFromMetadata(args: {
52
55
  client: args.client,
53
56
  chain: args.chain,
54
57
  abi: args.contractMetadata.abi,
55
- bytecode: args.contractMetadata.bytecode,
58
+ bytecode: await fetchBytecodeFromCompilerMetadata({
59
+ compilerMetadata: args.contractMetadata,
60
+ client: args.client,
61
+ chain: args.chain,
62
+ }),
56
63
  constructorParams: args.constructorParams,
57
64
  salt: args.salt,
58
65
  });
@@ -1,14 +1,16 @@
1
1
  import type { Abi } from "abitype";
2
+ import type { Chain } from "../../chains/types.js";
2
3
  import type { ThirdwebClient } from "../../client/client.js";
3
4
  import { formatCompilerMetadata } from "../../contract/actions/compiler-metadata.js";
4
5
  import { download } from "../../storage/download.js";
5
6
  import type { Hex } from "../encoding/hex.js";
7
+ import { withCache } from "../promise/withCache.js";
6
8
  import type { Prettify } from "../type-utils.js";
9
+ import { isZkSyncChain } from "./zksync/isZkSyncChain.js";
7
10
 
8
11
  type FetchDeployMetadataOptions = {
9
12
  uri: string;
10
13
  client: ThirdwebClient;
11
- compilerType?: "solc" | "zksolc";
12
14
  };
13
15
 
14
16
  export type FetchDeployMetadataResult = Partial<ExtendedMetadata> &
@@ -23,41 +25,21 @@ export type FetchDeployMetadataResult = Partial<ExtendedMetadata> &
23
25
  export async function fetchDeployMetadata(
24
26
  options: FetchDeployMetadataOptions,
25
27
  ): Promise<FetchDeployMetadataResult> {
26
- const isZksolc = options.compilerType === "zksolc";
27
28
  const rawMeta: RawCompilerMetadata = await download({
28
29
  uri: options.uri,
29
30
  client: options.client,
30
31
  }).then((r) => r.json());
31
32
 
32
- if (
33
- isZksolc &&
34
- (!rawMeta.compilers?.zksolc || rawMeta.compilers?.zksolc.length === 0)
35
- ) {
36
- throw new Error(`No zksolc metadata found for contract: ${rawMeta.name}`);
37
- }
38
-
39
- const metadataUri = isZksolc
40
- ? rawMeta.compilers.zksolc[0].metadataUri
41
- : rawMeta.metadataUri;
42
- const bytecodeUri = isZksolc
43
- ? rawMeta.compilers.zksolc[0].bytecodeUri
44
- : rawMeta.bytecodeUri;
45
- const [deployBytecode, parsedMeta] = await Promise.all([
46
- download({ uri: bytecodeUri, client: options.client }).then(
47
- (res) => res.text() as Promise<Hex>,
48
- ),
49
- fetchAndParseCompilerMetadata({
50
- client: options.client,
51
- uri: metadataUri,
52
- compilerType: options.compilerType,
53
- }),
54
- ]);
33
+ const metadataUri = rawMeta.metadataUri;
34
+ const parsedMeta = await fetchAndParseCompilerMetadata({
35
+ client: options.client,
36
+ uri: metadataUri,
37
+ });
55
38
 
56
39
  return {
57
40
  ...rawMeta,
58
41
  ...parsedMeta,
59
42
  version: rawMeta.version,
60
- bytecode: deployBytecode,
61
43
  name: rawMeta.name,
62
44
  };
63
45
  }
@@ -84,10 +66,42 @@ async function fetchAndParseCompilerMetadata(
84
66
  }
85
67
  return {
86
68
  ...metadata,
87
- ...formatCompilerMetadata(metadata, options.compilerType),
69
+ ...formatCompilerMetadata(metadata),
88
70
  };
89
71
  }
90
72
 
73
+ export async function fetchBytecodeFromCompilerMetadata(options: {
74
+ compilerMetadata: FetchDeployMetadataResult;
75
+ client: ThirdwebClient;
76
+ chain: Chain;
77
+ }) {
78
+ const { compilerMetadata, client, chain } = options;
79
+ return withCache(
80
+ async () => {
81
+ const isZksolc = await isZkSyncChain(chain);
82
+ const bytecodeUri = isZksolc
83
+ ? compilerMetadata.compilers?.zksolc?.[0]?.bytecodeUri
84
+ : compilerMetadata.bytecodeUri;
85
+
86
+ if (!bytecodeUri) {
87
+ throw new Error(
88
+ `No bytecode URI found in compiler metadata for ${compilerMetadata.name} on chain ${chain.name}`,
89
+ );
90
+ }
91
+ const deployBytecode = await download({
92
+ uri: bytecodeUri,
93
+ client,
94
+ }).then((res) => res.text() as Promise<Hex>);
95
+
96
+ return deployBytecode;
97
+ },
98
+ {
99
+ cacheKey: `bytecode:${compilerMetadata.name}:${chain.id}`,
100
+ cacheTime: 24 * 60 * 60 * 1000,
101
+ },
102
+ );
103
+ }
104
+
91
105
  // types
92
106
 
93
107
  type RawCompilerMetadata = {
@@ -96,8 +110,8 @@ type RawCompilerMetadata = {
96
110
  bytecodeUri: string;
97
111
  // biome-ignore lint/suspicious/noExplicitAny: TODO: fix later
98
112
  analytics?: any;
99
- // biome-ignore lint/suspicious/noExplicitAny: TODO: fix later
100
- [key: string]: any;
113
+ version?: string;
114
+ [key: string]: unknown;
101
115
  };
102
116
 
103
117
  type ParsedCompilerMetadata = {
@@ -146,10 +160,7 @@ type ParsedCompilerMetadata = {
146
160
  };
147
161
 
148
162
  export type CompilerMetadata = Prettify<
149
- RawCompilerMetadata &
150
- ParsedCompilerMetadata & {
151
- bytecode: Hex;
152
- }
163
+ RawCompilerMetadata & ParsedCompilerMetadata
153
164
  >;
154
165
 
155
166
  export type ExtendedMetadata = {
@@ -1,44 +1,31 @@
1
1
  import type { Chain } from "../../../chains/types.js";
2
- import { withCache } from "../../promise/withCache.js";
2
+ import { getChainMetadata } from "../../../chains/utils.js";
3
3
 
4
4
  export async function isZkSyncChain(chain: Chain) {
5
5
  if (chain.id === 1337 || chain.id === 31337) {
6
6
  return false;
7
7
  }
8
8
 
9
- const stack = await getChainStack(chain.id).catch(() => {
10
- // fall back to checking against these zksync chain-ids
11
- if (
12
- chain.id === 324 ||
13
- chain.id === 300 ||
14
- chain.id === 302 ||
15
- chain.id === 11124 ||
16
- chain.id === 282 || // cronos zkevm testnet
17
- chain.id === 388 // cronos zkevm mainnet
18
- ) {
19
- return "zksync-stack";
20
- }
21
-
22
- return "";
23
- });
24
-
25
- return stack === "zksync-stack";
26
- }
27
-
28
- async function getChainStack(chainId: number): Promise<string> {
29
- return withCache(
30
- async () => {
31
- const res = await fetch(`https://${chainId}.rpc.thirdweb.com/stack`);
32
-
33
- if (!res.ok) {
34
- res.body?.cancel();
35
- throw new Error(`Error fetching stack for ${chainId}`);
36
- }
37
-
38
- const data = await res.json();
9
+ // check known zksync chain-ids first
10
+ if (
11
+ chain.id === 324 ||
12
+ chain.id === 300 ||
13
+ chain.id === 302 ||
14
+ chain.id === 11124 ||
15
+ chain.id === 282 ||
16
+ chain.id === 388 ||
17
+ chain.id === 4654 ||
18
+ chain.id === 333271
19
+ ) {
20
+ return true;
21
+ }
39
22
 
40
- return data.stack;
41
- },
42
- { cacheKey: `stack:${chainId}`, cacheTime: 24 * 60 * 60 * 1000 },
43
- );
23
+ // fallback to checking the stack on rpc
24
+ try {
25
+ const chainMetadata = await getChainMetadata(chain);
26
+ return chainMetadata.stackType === "zksync_stack";
27
+ } catch {
28
+ // If the network check fails, assume it's not a ZkSync chain
29
+ return false;
30
+ }
44
31
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.60.1-nightly-79c50cb311ffef769b7bdba3006ae67ddf257caf-20241002000323";
1
+ export const version = "5.60.1";
@@ -76,6 +76,7 @@ export function ecosystemWallet(
76
76
  ...createOptions?.auth,
77
77
  options: [], // controlled by ecosystem
78
78
  },
79
+ partnerId: createOptions?.partnerId,
79
80
  },
80
81
  connectorFactory: async (client: ThirdwebClient) => {
81
82
  const { InAppNativeConnector } = await import("./native-connector.js");
@@ -76,6 +76,7 @@ export function ecosystemWallet(
76
76
  ...createOptions?.auth,
77
77
  options: [], // controlled by ecosystem
78
78
  },
79
+ partnerId: ecosystem.partnerId,
79
80
  },
80
81
  connectorFactory: async (client: ThirdwebClient) => {
81
82
  const { InAppWebConnector } = await import("./lib/web-connector.js");
@@ -21,7 +21,6 @@ import {
21
21
  ENTRYPOINT_ADDRESS_v0_6,
22
22
  MANAGED_ACCOUNT_GAS_BUFFER,
23
23
  getDefaultBundlerUrl,
24
- getEntryPointVersion,
25
24
  } from "./constants.js";
26
25
  import { hexlifyUserOp } from "./utils.js";
27
26
 
@@ -269,12 +268,7 @@ async function sendBundlerRequest(args: {
269
268
  console.debug(`>>> sending ${operation} with payload:`, params);
270
269
  }
271
270
 
272
- const entryPointVersion = getEntryPointVersion(
273
- options.entrypointAddress || ENTRYPOINT_ADDRESS_v0_6,
274
- );
275
- const bundlerVersion = entryPointVersion === "v0.6" ? "v1" : "v2";
276
- const bundlerUrl =
277
- options.bundlerUrl ?? getDefaultBundlerUrl(options.chain, bundlerVersion);
271
+ const bundlerUrl = options.bundlerUrl ?? getDefaultBundlerUrl(options.chain);
278
272
  const fetchWithHeaders = getClientFetch(options.client);
279
273
  const response = await fetchWithHeaders(bundlerUrl, {
280
274
  method: "POST",
@@ -36,12 +36,12 @@ export const getDefaultAccountFactory = (entryPointAddress?: string) => {
36
36
  /**
37
37
  * @internal
38
38
  */
39
- export const getDefaultBundlerUrl = (chain: Chain, version: "v1" | "v2") => {
39
+ export const getDefaultBundlerUrl = (chain: Chain) => {
40
40
  const domain = getThirdwebDomains().bundler;
41
41
  if (domain.startsWith("localhost:")) {
42
- return `http://${domain}/${version ?? "v1"}?chain=${chain.id}`;
42
+ return `http://${domain}/v2?chain=${chain.id}`;
43
43
  }
44
- return `https://${chain.id}.${domain}/${version ?? "v1"}`;
44
+ return `https://${chain.id}.${domain}/v2`;
45
45
  };
46
46
 
47
47
  export const getEntryPointVersion = (address: string): "v0.6" | "v0.7" => {
@@ -11,7 +11,6 @@ import {
11
11
  DEBUG,
12
12
  ENTRYPOINT_ADDRESS_v0_6,
13
13
  getDefaultBundlerUrl,
14
- getEntryPointVersion,
15
14
  } from "./constants.js";
16
15
  import { hexlifyUserOp } from "./utils.js";
17
16
 
@@ -53,9 +52,7 @@ export async function getPaymasterAndData(args: {
53
52
  };
54
53
 
55
54
  const entrypoint = entrypointAddress ?? ENTRYPOINT_ADDRESS_v0_6;
56
- const entrypointVersion = getEntryPointVersion(entrypoint);
57
- const paymasterVersion = entrypointVersion === "v0.6" ? "v1" : "v2";
58
- const paymasterUrl = getDefaultBundlerUrl(chain, paymasterVersion);
55
+ const paymasterUrl = getDefaultBundlerUrl(chain);
59
56
 
60
57
  // Ask the paymaster to sign the transaction and return a valid paymasterAndData value.
61
58
  const fetchWithHeaders = getClientFetch(client);
@@ -218,12 +218,7 @@ async function getGasFees(args: {
218
218
  const { executeTx, bundlerOptions, chain, client } = args;
219
219
  let { maxFeePerGas, maxPriorityFeePerGas } = executeTx;
220
220
 
221
- const entrypointVersion = getEntryPointVersion(
222
- bundlerOptions.entrypointAddress || ENTRYPOINT_ADDRESS_v0_6,
223
- );
224
- const bundlerVersion = entrypointVersion === "v0.6" ? "v1" : "v2";
225
- const bundlerUrl =
226
- bundlerOptions?.bundlerUrl ?? getDefaultBundlerUrl(chain, bundlerVersion);
221
+ const bundlerUrl = bundlerOptions?.bundlerUrl ?? getDefaultBundlerUrl(chain);
227
222
 
228
223
  if (isThirdwebUrl(bundlerUrl)) {
229
224
  // get gas prices from bundler
@@ -27,7 +27,8 @@ const contract = getContract({
27
27
  client,
28
28
  });
29
29
 
30
- describe.runIf(process.env.TW_SECRET_KEY).skip(
30
+ // TODO run this on every CI run, needs proper zk fork setup
31
+ describe.runIf(process.env.TW_SECRET_KEY).todo(
31
32
  "SmartWallet zksync tests",
32
33
  {
33
34
  retry: 0,
@@ -112,5 +113,28 @@ describe.runIf(process.env.TW_SECRET_KEY).skip(
112
113
  });
113
114
  expect(tx.transactionHash.length).toBe(66);
114
115
  });
116
+
117
+ it("should send a transaction on Creator Testnet", async () => {
118
+ const abstractSmartWallet = smartWallet({
119
+ chain: defineChain(4654),
120
+ gasless: true,
121
+ });
122
+ const account = await abstractSmartWallet.connect({
123
+ client: TEST_CLIENT,
124
+ personalAccount,
125
+ });
126
+ const tx = await sendTransaction({
127
+ transaction: prepareTransaction({
128
+ chain: defineChain(4654),
129
+ client: TEST_CLIENT,
130
+ to: account.address,
131
+ value: BigInt(0),
132
+ data: "0x",
133
+ }),
134
+ account: account,
135
+ });
136
+ console.log(tx.transactionHash);
137
+ expect(tx.transactionHash.length).toBe(66);
138
+ });
115
139
  },
116
140
  );