Web3.js Obtener contrato Abi sabiendo solo la dirección del contrato

¿Hay alguna manera con web3.js de obtener un contrato abi json, sabiendo solo la dirección del contrato?

Ya no puedo encontrar un enlace en el que expliquen cómo hacer esto, en esta publicación el tipo respondió diciendo que hay una manera de hacer esto pero no está tan bien documentada.

¿Cómo puedo hacer esto?

Esto será posible para contratos que registren sus metadatos en Swarm.

Respuestas (4)

a) conoce el código fuente del contrato inteligente

programáticamente: vea el enlace a la esencia de la respuesta de Ivan

manualmente: con Remix

b) no conoce el código fuente, pero se verificó el contrato inteligente en uno de los exploradores

Luego, use la búsqueda del explorador de bloques para obtener el ABI del contrato inteligente. Por ejemplo, puede leer el código fuente verificado de los contratos inteligentes en BlockScout , Etherscan , Etherchain

c) no conoce el código fuente && el contrato no está verificado

Puede usar el descompilador de contratos inteligentes de Panoramix para obtener una ABI parcial del contrato inteligente

Para agregar al comentario de o0ragman0o, vea este documento:

https://solidity.readthedocs.io/en/v0.5.2/metadata.html

Describe cómo se deben publicar los metadatos del contrato en Swarm para evitar la administración/acceso centralizados (es decir, Etherscan) a los metadatos del contrato (incluido ABI).

Tengo la misma pregunta antes. Por ahora no es posible, solo puedes hacerlo con solc compile. Aquí hay un ejemplo: https://gist.github.com/tomconte/4edb83cf505f1e7faf172b9252fff9bf

siempre puede resolver y luego llamar al abi desde un archivo o directamente. fuente: Solcjs