Cómo obtener una salida similar a la remezcla en solc, con códigos de operación + comentarios de la fuente

Me gustaría compilar mis contratos y obtener una salida con los códigos de operación en detalle (no solo el ensamblaje) sino con referencias al código fuente de solidez en cada línea. Esta es la salida que se obtiene de forma predeterminada cuando se usa el editor Remix y se hace clic en "detalles", pero no puedo encontrar una manera de obtener eso usando el solcbinario: obtengo ensamblaje con comentarios usando --asmo códigos de operación sin comentarios --opcodes. ¿Puedo hacer eso?

EDITAR: para aclarar, lo que quiero decir con ensamblaje es algo así como tag_11 /* "pot.sol":5259:5263 myid */ dup3 /* "pot.sol":5265:5271 result */ dup3 /* "pot.sol":5283:5284 0 */ 0x0 /* "pot.sol":5273:5285 new bytes(0) */

y lo que quiero decir con códigos de operación es algo así como

SWAP1 contract Coucou{\n address ... DIV contract Coucou{\n address ... PUSH FFFFFFFF contract Coucou{\n address ... AND contract Coucou{\n address ... DUP1 contract Coucou{\n address ... PUSH 26121FF0 contract Coucou{\n address ...

Respuestas (2)

No estoy seguro de lo que quiere decir con ensamblaje frente a códigos de operación. Tiene la opción --abi, que genera el ABI del contrato, y --bin para el binario,

Además, si simplemente escribe solcen su consola, verá todas las opciones disponibles. En mi instalación, muestra lo siguiente:

Output Components:
  --ast                AST of all source files.  
  --ast-json           AST of all source files in JSON format.
  --ast-compact-json   AST of all source files in a compact JSON format.
  --asm                EVM assembly of the contracts.
  --asm-json           EVM assembly of the contracts in JSON format.
  --opcodes            Opcodes of the contracts.
  --bin                Binary of the contracts in hex.
  --bin-runtime        Binary of the runtime part of the contracts in hex.
  --clone-bin          Binary of the clone contracts in hex.
  --abi                ABI specification of the contracts.
  --hashes             Function signature hashes of the contracts.
  --userdoc            Natspec user documentation of all contracts.
  --devdoc             Natspec developer documentation of all contracts.
  --metadata           Combined Metadata JSON whose Swarm hash is stored on-chain.
  --formal             Translated source suitable for formal analysis.
gracias por tomarse el tiempo para responder. Aclaré en mi pregunta a qué me refiero con "ensamblaje" frente a "códigos de operación".

Simplemente solcno puede hacerlo por sí mismo. Necesitas trabajar con srcmap-runtime. Puede ejecutar el comando como: solc --pretty-json --combined-json srcmap-runtime YourContract.sol

Entonces obtendrás algo como:

"srcmap-runtime" : "26:184:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;137:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;137:71:0;;;;;;;;;;;;;;;;;;;;;;;70:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;70:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;137:71;175:4;198:3;;191:10;;137:71;:::o;70:57::-;118:2;112:3;:8;;;;70:57;:::o"

La notación se documenta aquí: https://solidity.readthedocs.io/en/develop/miscellaneous.html#source-mappings