function stringGen(len) {
var text = "";
var charset = "abcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < len; i++)
text += charset.charAt(Math.floor(Math.random() * charset.length));
return text;
}
const func = async function (hre) {
const {deployments, getNamedAccounts} = hre;
const {deploy} = deployments;
const {deployer} = await getNamedAccounts();
while(true) {
let salt = stringGen(Math.floor(Math.random() * 30))
let res = await deploy('TestContract', {
from: deployer,
log: false,
deterministicDeployment: hre.ethers.utils.solidityKeccak256(["string"], [salt]),
});
if(res.address[2] === res.address[3] && res.address[2] === res.address[4] && res.address[2] === res.address[5]) {
console.log(res.address, salt)
break;
}
}
};
export default func;
К примеру, с солью u8phmitlg9hse17xin8 и небольшим демо-контрактом выходит адрес 0x88880b14BDFF750Ce5B58d1A55fCa65403BdBaaE (четыре восьмёрки в начале). Скрипт работает с помощью hardhat-deploy Post #313
805
Для "развлечения" сделал скрипт, который подбирает "красивые" адреса контрактов, которые разворачиваются через create2. То есть просто подбирается соль. Код нужно сильно оптимизировать, но всё же это работает:
- 👍 10
- 🔥 1
- 😁 1