Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

254
Visualizações
¿Cuál es el objeto que se deconstruye en {getNamedAccounts, devployments, getChainId} en los scripts de implementación de contratos inteligentes?

El siguiente script es de un tutorial de Patrick Collins sobre la creación de NFT. la fuente de este código es https://github.com/PatrickAlphaC/all-on-chain-generated-nft/blob/main/deploy/02_Deploy_RandomSVG.js

en los scripts que implementan contratos, el autor usa un patrón similar a este:

 let { networkConfig, getNetworkIdFromName } = require('../helper-hardhat-config') const fs = require('fs') module.exports = async ({ getNamedAccounts, deployments, getChainId }) => { const { deploy, get, log } = deployments const { deployer } = await getNamedAccounts() const chainId = await getChainId() ... ... const VRFCoordinatorMock = await deployments.get('VRFCoordinatorMock') ... ...

Estoy tratando de entender lo que está pasando debajo del capó con:

 { getNamedAccounts, deployments, getChainId }

Parece que algún objeto se está desempaquetando/desconstruyendo (?). No pude encontrar ninguna documentación sobre lo que es, o si lo hice, es demasiado complejo para que lo entienda.

¿Puede alguien decirme a dónde se exporta esta función asíncrona y quién requerirá (es decir, llamará) esta función?

Si las 3 propiedades anteriores se deconstruyeron a partir de algún objeto, ¿cuál es ese objeto? ¿Cómo encaja en la imagen más grande de Hardhat?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Recientemente estuve asistiendo al curso de blockchain de Patrick Collins sobre FCC, y me pregunté lo mismo.

Hardhat es un entorno de desarrollo que le permite ejecutar y crear tareas como la yarn hardhat deploy . Sin embargo, también puede agregar complementos a Hardhat que amplíen su funcionalidad.

En el curso, Patrick usa el complemento hardhat-deploy que agrega los campos para los que está tratando de encontrar documentación. No encontrará ninguna documentación con respecto a estos campos en el sitio web de Hardhat, ya que no está integrada en Hardhat. Aquí hay un enlace a los documentos del complemento :)

hardhat-deploy ejecuta la función asíncrona cuando ejecuta yarn hardhat deploy . El complemento hardhat-deploy ejecutará cualquier script de implementación que esté en /deploy . Cuando se ejecutan estas funciones, Hardhat automáticamente pasará el objeto hre a la función como un parámetro. hardhat-deploy extiende el objeto hre agregando 4 nuevos campos :

  • obtenerCuentasNombradas
  • obtener cuentas sin nombre
  • getChainId
  • implementaciones

La documentación para estos campos se puede encontrar en la documentación que vinculé anteriormente.

Con respecto a lo que se pasa el objeto, este es un resumen en el sitio web de Hardhat: "El entorno de tiempo de ejecución de Hardhat, o HRE para abreviar, es un objeto que contiene toda la funcionalidad que Hardhat expone cuando ejecuta una tarea, prueba o secuencia de comandos. . En realidad, Hardhat es el HRE".

about 4 years ago · Juan Pablo Isaza Relatório

0

Así que esta parte aquí:

 module.exports = async ({ getNamedAccounts, deployments, getChainId }) => {

Está exportando una función asíncrona anónima, que toma como parámetro un objeto que tiene esas tres claves.

Ese objeto podría verse así, por ejemplo:

 { getNamedAccounts: async () => { fetch(...) }, deployments: { get: (name) => { ... } }, getChainId: async () => { fetch(...) } }

Entonces, digamos que el archivo donde se encuentra esa exportación se llama DeploymentCoordinator.js , una forma en que podría usarlo, digamos que su index.js es:

 var coordinator = require('./DeploymentCoordinator.js'); var someResult = await coordinator({ getNamedAccounts: async () => { fetch(...) }, deployments: { get: (name) => { ... } }, getChainId: async () => { fetch(...) } });

Además, si mira aquí https://github.com/PatrickAlphaC/all-on-chain-generated-nft/blob/main/test/RandomSVG_test.js , puede ver que al menos las implementaciones y getChainId parecen provenir simplemente de const { deployments, getChainId } = require('hardhat') en la parte superior.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda