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.
- package/dist/cjs/chains/utils.js +1 -0
- package/dist/cjs/chains/utils.js.map +1 -1
- package/dist/cjs/contract/actions/compiler-metadata.js +3 -3
- package/dist/cjs/contract/actions/compiler-metadata.js.map +1 -1
- package/dist/cjs/contract/deployment/publisher.js +0 -2
- package/dist/cjs/contract/deployment/publisher.js.map +1 -1
- package/dist/cjs/contract/deployment/utils/bootstrap.js +7 -3
- package/dist/cjs/contract/deployment/utils/bootstrap.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-published.js +13 -7
- package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/get-required-transactions.js +5 -0
- package/dist/cjs/extensions/prebuilts/get-required-transactions.js.map +1 -1
- package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js +6 -1
- package/dist/cjs/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
- package/dist/cjs/utils/any-evm/deploy-metadata.js +29 -21
- package/dist/cjs/utils/any-evm/deploy-metadata.js.map +1 -1
- package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js +21 -26
- package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/ecosystem.js +1 -0
- package/dist/cjs/wallets/in-app/native/ecosystem.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/ecosystem.js +1 -0
- package/dist/cjs/wallets/in-app/web/ecosystem.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/bundler.js +1 -3
- package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/constants.js +3 -3
- package/dist/cjs/wallets/smart/lib/constants.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/paymaster.js +1 -3
- package/dist/cjs/wallets/smart/lib/paymaster.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/userop.js +1 -3
- package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
- package/dist/esm/chains/utils.js +1 -0
- package/dist/esm/chains/utils.js.map +1 -1
- package/dist/esm/contract/actions/compiler-metadata.js +3 -3
- package/dist/esm/contract/actions/compiler-metadata.js.map +1 -1
- package/dist/esm/contract/deployment/publisher.js +0 -2
- package/dist/esm/contract/deployment/publisher.js.map +1 -1
- package/dist/esm/contract/deployment/utils/bootstrap.js +7 -3
- package/dist/esm/contract/deployment/utils/bootstrap.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-published.js +13 -7
- package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/esm/extensions/prebuilts/get-required-transactions.js +5 -0
- package/dist/esm/extensions/prebuilts/get-required-transactions.js.map +1 -1
- package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js +6 -1
- package/dist/esm/utils/any-evm/compute-published-contract-deploy-info.js.map +1 -1
- package/dist/esm/utils/any-evm/deploy-metadata.js +28 -21
- package/dist/esm/utils/any-evm/deploy-metadata.js.map +1 -1
- package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js +21 -26
- package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/in-app/native/ecosystem.js +1 -0
- package/dist/esm/wallets/in-app/native/ecosystem.js.map +1 -1
- package/dist/esm/wallets/in-app/web/ecosystem.js +1 -0
- package/dist/esm/wallets/in-app/web/ecosystem.js.map +1 -1
- package/dist/esm/wallets/smart/lib/bundler.js +2 -4
- package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/esm/wallets/smart/lib/constants.js +3 -3
- package/dist/esm/wallets/smart/lib/constants.js.map +1 -1
- package/dist/esm/wallets/smart/lib/paymaster.js +2 -4
- package/dist/esm/wallets/smart/lib/paymaster.js.map +1 -1
- package/dist/esm/wallets/smart/lib/userop.js +1 -3
- package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
- package/dist/types/chains/types.d.ts +1 -0
- package/dist/types/chains/types.d.ts.map +1 -1
- package/dist/types/contract/actions/compiler-metadata.d.ts +1 -1
- package/dist/types/contract/actions/compiler-metadata.d.ts.map +1 -1
- package/dist/types/contract/deployment/publisher.d.ts +0 -2
- package/dist/types/contract/deployment/publisher.d.ts.map +1 -1
- package/dist/types/contract/deployment/utils/bootstrap.d.ts +1 -2
- package/dist/types/contract/deployment/utils/bootstrap.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-published.d.ts +0 -2
- package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/get-required-transactions.d.ts +3 -0
- package/dist/types/extensions/prebuilts/get-required-transactions.d.ts.map +1 -1
- package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts +1 -1
- package/dist/types/utils/any-evm/compute-published-contract-deploy-info.d.ts.map +1 -1
- package/dist/types/utils/any-evm/deploy-metadata.d.ts +9 -6
- package/dist/types/utils/any-evm/deploy-metadata.d.ts.map +1 -1
- package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/ecosystem.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/ecosystem.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/constants.d.ts +1 -1
- package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/paymaster.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/chains/types.ts +1 -0
- package/src/chains/utils.ts +1 -0
- package/src/contract/actions/compiler-metadata.ts +2 -3
- package/src/contract/deployment/publisher.ts +0 -4
- package/src/contract/deployment/utils/bootstrap.ts +9 -5
- package/src/extensions/prebuilts/deploy-published.ts +14 -10
- package/src/extensions/prebuilts/get-required-transactions.ts +5 -0
- package/src/extensions/thirdweb/write/publish.test.ts +0 -1
- package/src/utils/any-evm/compute-published-contract-deploy-info.ts +9 -2
- package/src/utils/any-evm/deploy-metadata.ts +44 -33
- package/src/utils/any-evm/zksync/isZkSyncChain.ts +22 -35
- package/src/version.ts +1 -1
- package/src/wallets/in-app/native/ecosystem.ts +1 -0
- package/src/wallets/in-app/web/ecosystem.ts +1 -0
- package/src/wallets/smart/lib/bundler.ts +1 -7
- package/src/wallets/smart/lib/constants.ts +3 -3
- package/src/wallets/smart/lib/paymaster.ts +1 -4
- package/src/wallets/smart/lib/userop.ts +1 -6
- 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;
|
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
package/src/chains/types.ts
CHANGED
package/src/chains/utils.ts
CHANGED
@@ -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 (
|
37
|
-
meta = metadata.source_metadata
|
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
|
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:
|
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
|
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:
|
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:
|
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
|
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:
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
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
|
-
|
100
|
-
[key: string]:
|
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 {
|
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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
41
|
-
|
42
|
-
|
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
|
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
|
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
|
39
|
+
export const getDefaultBundlerUrl = (chain: Chain) => {
|
40
40
|
const domain = getThirdwebDomains().bundler;
|
41
41
|
if (domain.startsWith("localhost:")) {
|
42
|
-
return `http://${domain}
|
42
|
+
return `http://${domain}/v2?chain=${chain.id}`;
|
43
43
|
}
|
44
|
-
return `https://${chain.id}.${domain}
|
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
|
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
|
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
|
-
|
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
|
);
|