Skip to content

Instantly share code, notes, and snippets.

@mingderwang
Created February 14, 2024 11:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mingderwang/4fb93b6e7eb77c802a24620f6258464a to your computer and use it in GitHub Desktop.
Save mingderwang/4fb93b6e7eb77c802a24620f6258464a to your computer and use it in GitHub Desktop.
const { ethers } = require("ethers");
const encoder = (types, values) => {
const abiCoder = ethers.utils.defaultAbiCoder;
const encodedParams = abiCoder.encode(types, values);
return encodedParams.slice(2);
};
const create2Address = (factoryAddress, saltHex, initCode) => {
const create2Addr = ethers.utils.getCreate2Address(factoryAddress, saltHex, ethers.utils.keccak256(initCode));
return create2Addr;
}
exports.encoder = encoder;
exports.create2Address = create2Address;
@mingderwang
Copy link
Author

// scripts/vaultDeploy.js

const { bytecode } = require("../artifacts/contracts/Vault.sol/Vault.json");
const { encoder, create2Address } = require("../utils/utils.js")

const main = async () => {
const factoryAddr = "0x3bdcbd275741bd33D4A3e3469793065b528F1A93";
const unlockTime = "1657835239"
const saltHex = ethers.utils.id("1234");
const initCode = bytecode + encoder(["uint"], [unlockTime]);

const create2Addr = create2Address(factoryAddr, saltHex, initCode);
console.log("precomputed address:", create2Addr);

};

main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment