Convertir código ABI a Solidity

¿Existe una herramienta para generar un código de solidez desde la interfaz ABI?

const Ballot = [{"constant":false,"inputs":[{"name":"to","type":"address"}],"name":"delegate","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"winningProposal","outputs":[{"name":"winningProposal","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"voter","type":"address"}],"name":"giveRightToVote","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"proposal","type":"uint8"}],"name":"vote","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_numProposals","type":"uint8"}],"payable":false,"type":"constructor"}]

Debería resultar en algo como:

contract Ballot {
  function Ballot(uint8 _numProposals) {}
  function giveRightToVote(address voter) {}
  function delegate(address to) {}
  function vote(uint8 proposal) {}
  function winningProposal() constant returns (uint8 winningProposal) {}
}

Respuestas (2)

Aquí hay una herramienta que toma un ABI y lo convierte a su interfaz Solidity: https://bia.is/tools/abi2solidity/

El código fuente está publicado en GitHub: https://github.com/maxme/abi2solidity/

grabABI, que es parte de QuickBlocks, se acerca mucho. Es de código abierto, por lo que puede modificarlo ligeramente para rodear su salida con la contractparte y agregar los garabatos después de cada función, pero debería ser fácil.

Puedes encontrarlo en github.