Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

251
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!