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.
22 lines
592 B
22 lines
592 B
const RLP = require('rlp');
|
|
|
|
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,
|
|
};
|
|
|