Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

252
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda