Created
February 14, 2024 11:37
-
-
Save mingderwang/4fb93b6e7eb77c802a24620f6258464a to your computer and use it in GitHub Desktop.
https://docs.alchemy.com/docs/create2-an-alternative-to-deriving-contract-addresses under utils/ folder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
// 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]);
};
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});