¿Cómo sabe Truffle la dirección de los contratos publicados a través de truffle migrate?

En la documentación de Truffle, se dice DeployedAddresses.solcómo Truffle identifica y almacena las direcciones de los contratos publicados en la cadena de bloques a través de truffle migrate.

¿Cómo funciona este archivo y qué aspecto tiene? Si publico un Adoptioncontrato, ¿cómo sabe Truffle que la palabra Adoptionen truffle consolese refiere a ese contrato?

Respuestas (2)

Buena pregunta Por lo que yo sé. Truffle almacenará la dirección de su contrato en el archivo build/contacts/[CONTRACT.json]

Truffle mapeará la dirección del contrato bajo el objeto json de red con índice.

 "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x77685437e762aaa90d4b6924aa9445c1198013f1"
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-02-16T10:49:18.298Z"
}

Si elimina el archivo json, creará un nuevo archivo json con una nueva identificación de contrato.

Cuando ejecutas migrate/console, truffle referirá tu archivo [CONTRACT.json] con la red y la dirección correspondientes.

¿Cómo se genera el número de red? Por ejemplo, ha mostrado "1" arriba. Pero el número de red de mi máquina local es "1532795656486", lo que parece aleatorio.
El número de red se lee desde el cliente rpc / blockchain conectado. Si observa la interfaz de usuario de su ganache, verá el número de red que se establece en el JSON en la barra superior de la interfaz de usuario.

Truffle requiere que defina Migraciones creando un implementador para el contrato de Adopciones.

Por ejemplomigrations/2_deploy_contracts.js

var Adoption = artifacts.require("Adoption");

module.exports = function(deployer) {
  deployer.deploy(Adoption);
};

Construir el contrato con truffle buildtambién crea un archivo JSON build/contracts/Adoption.jsonque contiene todos los metadatos requeridos.

DeployedAddresses.sol se crea en tiempo de ejecución por truffle cuando ejecuta pruebas.

Consulte también: https://github.com/trufflesuite/truffle/issues/471#issuecomment-315166855

Sabía todo esto al hacer esta pregunta. Lamentablemente, nada de esto respondió a mi pregunta.
Tal vez necesites ser más específico. ^^ También puede pedir soporte de trufa. Por ejemplo, a través de Gitter truffleframework.com/support