cómo obtener el código para un contrato ya implementado en la red ethereum

Digamos que el par A implementa un contrato y expone el contrato ABI. El par B quiere unirse a la misma red. Tiene el ABI con él. Pero quiere ver el código de contrato real antes de unirse a la red. Cómo el par B podrá ver eso.

El código del contrato se incluye en el campo de datos de la transacción que lo ha creado.
Las palabras "código de contrato" están un poco confusas. El 'código de byte' se incluye en el inputcampo de datos. Creo que el OP está preguntando sobre el 'código fuente' de Solidity.

Respuestas (2)

A menos que Peer A haya puesto a disposición el código fuente, solo podrá ver el código de bytes (es decir, el código compilado).

Sin embargo, incluso si Peer A pone a disposición el código fuente, debe tener cuidado. Si el Peer A era malicioso, es posible que haya publicado el código fuente con una ABI idéntica, pero con un código diferente detrás de la interfaz.

Por esta razón, si realmente quiere ser ultra seguro, debe obtener el código fuente, leerlo hasta que se sienta cómodo de que hace lo que se supone que debe hacer y luego compilarlo usted mismo en código de bytes. Hasta que no haya confirmado que el código de bytes que ha compilado usted mismo es idéntico al que se ejecuta en la dirección del contrato inteligente, no puede estar seguro de que comprende completamente lo que sucederá si envía ETH allí.

Por ejemplo, este es el contrato de fábrica de Golem ( https://etherscan.io/address/0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9 ). Como puede ver, el código fuente ha sido "Verificado". En este caso, Etherscan realizó el proceso que describí anteriormente y puede estar seguro de que la fuente y el código de bytes son idénticos.

El compañero A debería haberlo publicado en GitHub.com/(TheRelevantRepositorySubdirectoryHere).

De lo contrario, está disponible en el bloque en cuestión como código de bytes. El EVM ejecuta este código de bytes cuando se usa el contrato: como almacenar/cambiar datos o usar una constantfunción. Por supuesto, siempre hay convertidores de bytecode a opcode.

Relacionado: https://stackoverflow.com/questions/33798205/how-to-get-or-verify-the-source-code-of-a-contract

Registrar el código del contrato en Git es bueno para la red pública. Pero si estoy usando una red privada, ¿qué debemos hacer entonces?
@BudhadityaDutta Debe obtener el código de esa persona directamente. De lo contrario, solo verá el código de bytes.