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?
Estoy ejecutando Truffle 3.4.11
y ejecutando solo: truffle version
tambié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 truffle
lo 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.js
y busque la var version
declaració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 test
o truffle compile
la 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.
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.json
cerca 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.json
y ver algo como "solc@^x.y.z"
dónde x.y.z
está 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.
eladleb