Todavía soy un nuevo estudiante de Ethereum y estoy tratando de averiguar cómo crear una instancia de un contrato desde una instancia de Node.js usando Web3 . También estoy usando Truffle Suite, pero solo con fines de desarrollo/prueba.
Lo que necesito saber es cómo puedo obtener la ABI de un contrato en un proyecto independiente de Node.js.
Sé que podría simplemente cargarlo como un archivo JSON, o también podría usar la biblioteca solc para compilar el .sol
archivo de contrato... la última opción parece ser una buena opción siempre que solo necesite hacerlo una vez (como cuando el servidor se inicia/reinicia, por ejemplo)
Me pregunto cuál es la mejor práctica para hacer esto. No puedo encontrar una respuesta concreta con respecto a este asunto.
Gracias.
No creo que haya una sola forma aceptada y de mejores prácticas para hacer esto y depende de su preferencia y su aplicación.
Como señaló, truffle guarda archivos json en la carpeta de compilación y puede acceder a la abi desde allí. Esto se utiliza en varias plantillas (caja de trufas) como puntos de partida para proyectos.
Para una DApp que tengo en producción, guardé los detalles del contrato y los abi en una base de datos. Esto se debe a que mi DApp tiene múltiples contratos que pueden cambiar, por lo que al usar una base de datos, puedo agregar/eliminar/modificar/acceder a múltiples contratos más fácilmente. Pero esto es específico para mi caso de uso y he encontrado que es bastante eficiente.
jlstr
carlom
const contractAbi = [{ your abi }];
.jlstr
fs.readFileSync
para conseguirlo? Tenía muchas esperanzas de que la comunidad ya hubiera automatizado este tipo de cosas, pero ahora estoy de acuerdo con su respuesta. ¡Muchas gracias, señor!carlom
fs
. Simplemente lo importé directamente y era accesible:const contractAbi = require('./contractAbi.json');
hacer algo así funcionó para mí.