He visto dos métodos de cómo se implementa el contrato inteligente de Solidity en Hardhat. Los generalizaría de la siguiente manera:
MÉTODO 1
const hre = require("hardhat"); async function main() { const [deployer] = await ethers.getSigners(); const contractFactory = await hre.ethers.getContractFactory("someContractName"); const contractInstance = await contractFactory.deploy(); await contractInstance.deployed(); ... ... } main() .then(() => process.exit(0)) .catch((error) => { console.error(error); process.exit(1); });MÉTODO 2
module.exports = async ({ getNamedAccounts, deployments, getChainId }) => { const { deploy, log } = deployments const { deployer } = await getNamedAccounts() const chainId = await getChainId() const contractInstance = await deploy('myContract', {from: deployer, log: true, }); ............ ............ }Si bien ambos dan como resultado la implementación de un contrato, no puedo entender cómo logran los mismos resultados. ¿Cómo se relacionan estos dos métodos de implementación, si es que se relacionan? (Me gustaría saber qué está pasando debajo del capó)