Skip to content

Commit d5554e4

Browse files
wip
1 parent 3665092 commit d5554e4

File tree

6 files changed

+29
-6
lines changed

6 files changed

+29
-6
lines changed

packages/thirdweb/src/contract/deployment/zksync/zkDeployContract.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export async function zkDeployContract(
1919
bytecode: Hex;
2020
params?: Record<string, unknown>;
2121
salt?: string;
22+
deploymentType?: "create" | "create2";
2223
},
2324
) {
2425
if (options.salt !== undefined) {
@@ -29,13 +30,15 @@ export async function zkDeployContract(
2930
const data = encodeDeployData({
3031
abi: options.abi,
3132
bytecode: options.bytecode,
32-
deploymentType: "create",
33+
deploymentType: options.deploymentType ?? "create",
3334
args: normalizeFunctionParams(
3435
options.abi.find((abi) => abi.type === "constructor"),
3536
options.params,
3637
),
3738
});
3839

40+
console.log("deploying", options.deploymentType);
41+
3942
const receipt = await sendAndConfirmTransaction({
4043
account: options.account,
4144
transaction: prepareTransaction({
@@ -46,16 +49,23 @@ export async function zkDeployContract(
4649
eip712: {
4750
factoryDeps: [options.bytecode],
4851
// TODO (zksync): allow passing in a paymaster
52+
paymaster: "0x950e3Bb8C6bab20b56a70550EC037E22032A413e",
53+
paymasterInput:
54+
"0x8c5a344500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000",
4955
},
5056
}),
5157
});
5258

59+
console.log("receipt", receipt);
60+
5361
const events = parseEventLogs({
5462
logs: receipt.logs,
5563
events: [contractDeployedEvent()],
5664
});
5765

5866
const contractAddress = events[0]?.args.contractAddress;
67+
68+
console.log("deployed contractAddress", contractAddress);
5969
if (!contractAddress) {
6070
throw new Error("Contract creation failed");
6171
}

packages/thirdweb/src/contract/deployment/zksync/zkDeployCreate2Factory.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,18 @@ export async function zkDeployCreate2Factory(
3434
client: options.client,
3535
privateKey: PUBLISHED_PRIVATE_KEY,
3636
});
37+
console.log("create2Signer", create2Signer);
3738
const valueToSend = toWei("0.01");
3839
const balance = await getWalletBalance({
3940
address: create2Signer.address,
4041
chain: options.chain,
4142
client: options.client,
4243
});
44+
console.log("balance", balance);
4345

4446
if (balance.value < valueToSend) {
4547
await sendAndConfirmTransaction({
46-
account: options.account,
48+
account: create2Signer,
4749
transaction: prepareTransaction({
4850
chain: options.chain,
4951
client: options.client,
@@ -56,9 +58,10 @@ export async function zkDeployCreate2Factory(
5658
await zkDeployContract({
5759
client: options.client,
5860
chain: options.chain,
59-
account: options.account,
61+
account: create2Signer,
6062
abi: parseAbi(singletonFactoryAbi),
6163
bytecode: singletonFactoryBytecode,
64+
deploymentType: "create2",
6265
});
6366

6467
return ZKSYNC_SINGLETON_FACTORY;

packages/thirdweb/src/contract/deployment/zksync/zkDeployDeterministic.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ import { keccakId } from "../../../utils/any-evm/keccak-id.js";
99
import { computeDeploymentAddress } from "../../../utils/any-evm/zksync/computeDeploymentAddress.js";
1010
import {
1111
KNOWN_CODES_STORAGE,
12+
PUBLISHED_PRIVATE_KEY,
1213
singletonFactoryAbi,
1314
} from "../../../utils/any-evm/zksync/constants.js";
1415
import { isContractDeployed } from "../../../utils/bytecode/is-contract-deployed.js";
1516
import { ensureBytecodePrefix } from "../../../utils/bytecode/prefix.js";
1617
import { type Hex, uint8ArrayToHex } from "../../../utils/encoding/hex.js";
1718
import type { ClientAndChainAndAccount } from "../../../utils/types.js";
19+
import { privateKeyToAccount } from "../../../wallets/private-key.js";
1820
import { getContract } from "../../contract.js";
1921
import { zkDeployContract } from "./zkDeployContract.js";
2022
import { zkDeployCreate2Factory } from "./zkDeployCreate2Factory.js";
@@ -69,10 +71,15 @@ export async function zkDeployContractDeterministic(
6971
});
7072
// if not known, publish the bytecodehash
7173
if (marker !== 1n) {
74+
console.log("deploying marker");
75+
const create2Signer = privateKeyToAccount({
76+
client: options.client,
77+
privateKey: PUBLISHED_PRIVATE_KEY,
78+
});
7279
await zkDeployContract({
7380
client: options.client,
7481
chain: options.chain,
75-
account: options.account,
82+
account: create2Signer,
7683
abi: options.abi,
7784
bytecode,
7885
params: options.params,

packages/thirdweb/src/contract/deployment/zksync/zkDeployProxy.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export async function zkDeployProxy(
3737
`Implementation contract at ${implementationAddress} is not deployed`,
3838
);
3939
}
40+
console.log("deploying tw proxy");
4041
// deploy tw proxy of the implementation
4142
const proxyAddress = await zkDeployContract({
4243
client: options.client,
@@ -49,6 +50,7 @@ export async function zkDeployProxy(
4950
_data: await encode(options.initializeTransaction),
5051
},
5152
salt: options.salt,
53+
deploymentType: "create2",
5254
});
5355

5456
// return address of proxy

packages/thirdweb/src/utils/any-evm/zksync/constants.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ export const ZKSYNC_SINGLETON_FACTORY =
33
export const CONTRACT_DEPLOYER_ADDRESS =
44
"0x0000000000000000000000000000000000008006" as const;
55
export const KNOWN_CODES_STORAGE = "0x0000000000000000000000000000000000008004";
6-
export const PUBLISHED_PRIVATE_KEY = "";
6+
export const PUBLISHED_PRIVATE_KEY =
7+
"0xfa550fb8205119c91cf8f380d15b70a0b2945221a286398ffc0c85680697ed9c";
78

89
export const singletonFactoryAbi = [
910
"function deploy(bytes32,bytes32,bytes) external payable",

packages/thirdweb/test/vitest.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default defineConfig({
3737
setupFiles: [join(__dirname, "./reactSetup.ts")],
3838
globalSetup: [join(__dirname, "./globalSetup.ts")],
3939
testTimeout: 90_000,
40-
retry: 3,
40+
retry: process.env.CI ? 3 : 0,
4141
maxConcurrency: 3,
4242
bail: 1,
4343
// clear any mocks between any tests

0 commit comments

Comments
 (0)