You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
622 B
23 lines
622 B
const { rlp } = require('ethereumjs-util');
|
|
|
|
function computeCreateAddress(deployer, nonce) {
|
|
return web3.utils.toChecksumAddress(web3.utils.sha3(rlp.encode([deployer.address ?? deployer, nonce])).slice(-40));
|
|
}
|
|
|
|
function computeCreate2Address(saltHex, bytecode, deployer) {
|
|
return web3.utils.toChecksumAddress(
|
|
web3.utils
|
|
.sha3(
|
|
'0x' +
|
|
['ff', deployer.address ?? deployer, saltHex, web3.utils.soliditySha3(bytecode)]
|
|
.map(x => x.replace(/0x/, ''))
|
|
.join(''),
|
|
)
|
|
.slice(-40),
|
|
);
|
|
}
|
|
|
|
module.exports = {
|
|
computeCreateAddress,
|
|
computeCreate2Address,
|
|
};
|
|
|