¿Cómo encuentro la versión exacta del compilador de solidez utilizada por truffle?

Estoy tratando de verificar un contrato que compilé e implementé en la red usando Etherscan . El contrato fue compilado usando trufa. ¿Cómo averiguo exactamente qué versión del compilador de solidez seleccionar en Etherscan?

Respuestas (5)

Estoy ejecutando Truffle 3.4.11y ejecutando solo: truffle versiontambién me da la versión de Solidity:

truffle version                                                                                                                                                           
Truffle v3.4.11 (core: 3.4.11)
Solidity v0.4.15 (solc-js)

Me las arreglé para encontrar una forma hacky de hacer esto. Nota: estaba buscando algo más que la versión de solc. Estaba buscando la compilación real del compilador que estaba usando solc (es decir, la confirmación utilizada, el número de compilación nocturna, etc.) para poder seleccionarlo en EtherScan .

Tengo truffle instalado globalmente, así que lo ejecuté, which trufflelo que me permitió encontrar (siguiendo los enlaces simbólicos) dónde se almacenaba truffle en mi mac:/Users/username/.nvm/versions/node/v7.7.3/lib/node_modules

Desde aquí fue fácil ubicar dónde también se almacena la instalación de solc utilizada por trufa. En relación con el camino anterior estaría en./truffle/node_modules/solc

En este punto, si solo desea la versión del paquete solc, puede buscar enpackage.json

Si desea ir más allá y encontrar la versión específica del compilador (como yo), eche un vistazo wrapper.jsy busque la var versiondeclaración de la variable. Resulta que esta es una función que devolverá el nombre de la versión del compilador que se está utilizando. Simplemente console.log(version());en la siguiente línea y la próxima vez que ejecute truffle testo truffle compilela compilación del compilador de solidity se enviará a su consola. Para mí esto se parecía a:

var version = soljson.cwrap('version', 'string', []);
console.log(version());

Recuerde devolver el archivo wrapper.js a su estado original después de obtener la información que necesita.

Nota: Esta es una forma muy complicada de hacerlo. Probablemente haya una mejor manera, pero fue el primer método con el que me topé. Incluso entonces, ni siquiera me ayudó a verificar el contrato en Etherscan, de todos modos.

Los otros métodos sugeridos a continuación son mucho más sencillos, sugiero editar esta respuesta para reflejar que hay formas mucho más fáciles.

La forma más fácil de obtener la versión del compilador con truffle es encontrarla en el directorio de su proyecto, ./build/contracts/YourContractName.jsoncerca de la parte inferior del archivo. Parece que,

 "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  }

Puede mirar el archivo ./node_modules/solc/package.jsony ver algo como "solc@^x.y.z"dónde x.y.zestá el número de versión que se está utilizando.

Si tiene npm instalado con el indicador -g, puede hacer esto (omita el -g si lo tiene instalado localmente)

$ npm -g ls | grep solc └─┬ solc@0.4.18

Esa debería ser tu versión.