create.js 592 Bytes
Newer Older
vicotor's avatar
vicotor committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
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,
};