¿Cuál es la forma correcta de almacenar y recuperar una dirección de contrato?

Supongamos que creo un nuevo contrato con:

web3.eth.contract(abi).new({ data: code }, (err, contract) => { ... })

Dentro de la devolución de llamada, puedo obtener el contract.addressdel nuevo contrato. Entonces puedo llamar con éxito a ese contrato.

Solo estoy tratando de entender cuál debería ser la forma correcta de almacenar esta dirección. Me inclino por almacenarlo en una base de datos que mi sistema cargará al inicio.

¿O hay un mejor camino? Supongo que esperaba algo similar a DNS en el que pudiera darle a mi contrato un nombre y una versión únicos y se asignaría a la dirección. ¿Esto no existe? ¿Suena razonable poner la dirección en una base de datos durante un paso de migración?

Respuestas (3)

Idealmente, estará interactuando con el contrato a través de su aplicación. Puedes guardarlo en database, locally or even hardcodela dirección.

Si almacena en db, puede lidiar fácilmente con futuras migraciones y actualizar su contrato cuando lo desee.

Si la implementación del contrato es dinámica, puede vincular la implementación a una promesa y guardar la dirección cuando regrese. Y haz una variable global de todos los contratos desplegados.

Es posible que desee consultar iurimatias/embark-framework

Las opciones de la base de datos o del archivo de configuración, como sugieren otras respuestas, suenan bien: incluso si hubiera un registro tipo DNS, DApps inicialmente tendría que codificar su dirección.

Su pregunta es oportuna y el ENS, Ethereum Name Service, acaba de implementarse en la red de prueba (Ropsten).

Consulte la wiki de ENS para obtener un inicio rápido y otros detalles. Aquí hay una introducción:

ENS es el Servicio de nombres de Ethereum, un sistema de nombres extensible y distribuido basado en la cadena de bloques de Ethereum.

ENS se puede utilizar para resolver una amplia variedad de recursos. El estándar inicial para ENS define la resolución para las direcciones de Ethereum, pero el sistema es extensible por diseño, lo que permite resolver más tipos de recursos en el futuro sin que los componentes centrales de ENS requieran actualizaciones.

ENS se implementa en la red de prueba de Ropsten en 0x112234455c3a32fd11230c42e7bccd4a84e02010.

Discusión inicial aquí .

Si está en un nodo, puede almacenarlo en una base de datos como postgres o incluso crear un archivo para que un usuario haga una copia de seguridad.

Si está en el navegador, tiene una variedad de opciones que van desde cookies hasta localStorage e indexedDB.

Incluso puede permitir que los usuarios ingresen sus propias direcciones de contrato para recuperar un contrato ya implementado de código de bytes conocido y ABI.