Instale el compilador Solc en Windows 8

Necesito un compilador de línea de comandos para crear un sistema experto que construya, pruebe e implemente automáticamente sistemas de contratos inteligentes basados ​​solo en metadatos. He intentado durante varios días instalar solc sin éxito. Admitiré que solo tengo una inteligencia promedio, pero pensé que el objetivo de Ethereum era empoderar a la gente común. No debería ser tan complicado a menos que el objetivo de la complejidad sea limitar la cantidad de personas que pueden resolver el rompecabezas en un período de tiempo determinado. Se siente como si estuviera haciendo una prueba de trabajo.

Todo lo que he intentado hasta ahora (NPM) está documentado, pero antes de publicar todo aquí, quiero saber si hay compiladores alternativos que puedan usarse en un proceso automatizado o si hay otra forma de instalar solc o tal vez construirlo desde la fuente. Si compilar desde el código fuente es una opción, necesitaré un tutorial porque no tengo experiencia con C++. Tengo Visual Studio instalado en mi máquina si eso ayuda.

Muy brevemente, intenté instalar desde NPM tanto a nivel local como global y probé geth --solc pathy admin.setSolc('path'). En cualquier caso, no creo que definir la ruta sea mi problema porque después de la instalación de NPM no hay solc.exe instalado en ninguna parte de mi computadora que pueda encontrar, solo un directorio solc poblado con archivos solcjs.

Cualquier idea sería muy apreciada Gracias, John

Como nota al margen, tuve muchas dificultades para crear una cadena de bloques local y tuve dificultades para encontrar recursos de aprendizaje. Con ese fin, hice un tutorial que se encuentra aquí en GitHub que debería poner en funcionamiento a otro novato como yo en poco tiempo. Se puede cortar y pegar el código del tutorial para iniciar una cadena de bloques local y se indexan los recursos más útiles. Continuaré trabajando en el índice para hacerlo más claro y agregar nuevos recursos a medida que se encuentren. Si puedo averiguar cómo instalar solc, escribiré algo similar para que la próxima persona que venga pueda tener un tiempo más fácil.

Gracias de nuevo, Juan

Hola a todos, ahora es un día después y tengo parte de este problema resuelto.

Ni el comando npm install solcni npm install -g solcrealmente instala solc. Esos comandos instalan enlaces de JavaScript para solc.

Echa un vistazo a la página de The NPM para solc . Es muy engañoso: dice solc en letras grandes en la parte superior. Pero justo debajo hay dos enlaces donde creo que solc y se encuentran.

Los enlaces se reproducen aquí y aquí .

El problema es que no sé cómo instalar solc desde ninguna de esas dos páginas de GitHub, por lo que ni siquiera las reconocí como lugares donde se podría adquirir solc. Todavía no sé qué hacer con esas páginas.

No se preocupe, después de buscar en Google durante unas horas más, encontré esta página con una imagen grande titulada Village Idiot . Espero que esto sea una especie de broma interna y no un insulto para la gente común como yo que busca ayuda. De todos modos, en esta página hay un lanzamiento de un ejecutable que instala solc junto con Mix IDE, AlethZero, geth y eth.

Ahora, si inicio Geth con la siguiente opción --solc "C:\Program Files\cpp-ethereum\solc", puedo escribir eth.getCompilers()en la consola y veré [solidez] como resultado.

Como alternativa, puedo iniciar geth sin la opción solc y luego escribir el siguiente comando en la consola de JavaScript cuando quiera usar el compilador.
admin.setSolc('C:\\\Program Files\\\cpp-ethereum\\\solc')
Tenga en cuenta que la consola de JavaScript requiere que se usen tres barras donde normalmente solo habría una. Leí en Stack Exchange que esto se debe a que la barra inclinada es un carácter de escape en JavaScript. También tenga en cuenta que se requieren comillas simples o dobles alrededor de la ruta en este caso porque hay un espacio en la ruta entre las palabras "Programa" y "Archivos".

En realidad no he intentado compilar nada todavía. Informaré si hay problemas.

Mientras tanto, agradecería que alguien me dijera cómo instalar solc desde las siguientes páginas aquí y aquí . Necesito saber porque la versión en la página de Village Idiot es de junio y creo que la página ya no es compatible.

Gracias de nuevo, Juan

Respuestas (2)

Una solución relativamente fácil es instalar node.js y usar el paquete solc npm. Lo usé yo mismo cuando comencé a jugar con contratos de ethereum y fue muy fácil de configurar.

Aquí están los pasos -

  • instalar la última versión de node.js
  • crear una carpeta para el proyecto
  • agregue el paquete solc a su archivo package.json, o use el siguiente archivo de paquete:

    { "nombre": "eth_compiler", "versión": "0.0.1", "motores": { "nodo": ">=7.0.0", "npm": "^3.0.0" }, "dependencias ": { "solc": "^0.4.7" } }

  • ejecutar npm install en la carpeta

  • agregue un pequeño script js a la carpeta (compile.js); recibirá el nombre del archivo del contrato y generará los archivos abi/code que necesita.

Aquí hay un ejemplo -

var solc = require('solc');
var fs = require('fs');

var inputFilePath = process.argv[2];
var outputPath = process.argv[3];

// note - using the synchronous version of the file system functions for simplicity and because the async version isn't really needed in this case
var contractSolidity = fs.readFileSync(inputFilePath , 'utf-8');
if (!contractSolidity)
    return console.error('unable to read file: ' + inputFilePath );

var output = solc.compile(contractSolidity, 1);
for (var contractName in output.contracts) {
    var abi = output.contracts[contractName].interface;
    var code = output.contracts[contractName].bytecode;
    fs.writeFileSync(outputPath + '/' + contractName + '.abi', abi, 'utf-8');
    fs.writeFileSync(outputPath + '/' + contractName + '.code', code, 'utf-8');
}
  • una vez que tenga ese archivo, simplemente puede ejecutar el siguiente comando en la nueva carpeta: node compile [inputFilePath] [outputPath]

y debería generar los archivos compilados.

Nota: lo probé localmente y logré compilar un contrato, así que creo que debería funcionar, pero vale la pena mencionar que tengo party y cpp-ethereum instalados en mi máquina (la paridad no se estaba ejecutando en el momento de la ejecución de este script) .

Agregué instrucciones paso a paso, ¿mejor?
Hola nergall, todo funcionó perfectamente. ¡Gracias por las instrucciones detalladas! Todavía no entiendo todo lo que acabas de mostrarme, pero ciertamente has hecho que mi mundo sea más grande. Estudiaré esto durante unos días y luego tendré algunas preguntas reflexivas que hacer. Después de eso, espero escribir un tutorial propio para poder solidificar mi nuevo conocimiento y compartirlo con otros. Gracias de nuevo por tu ayuda Juan
Genial, encantado de ayudar!
Al ejecutar esto: aparece un error como "no existe tal archivo o directorio, abra 'C:\Users\...\SmartContracts\Examples\Multiply\Solidity\contracts\build\:MultiplyContract.abi' Parece que se agrega un : delante del nombre del contrato?

La pregunta ya está marcada como respondida, pero agregaré algunos detalles para completarla.

1. Puede descargar el ejecutable de solidity desde su página de github https://github.com/ethereum/solidity/releases

  1. Agregue el ejecutable a su classpath.

  2. Asegúrese de tener instalado Visual Studio (sugiero 2015).

  3. Una vez que haya agregado el ejecutable a classpath, abra una CLI y escriba solc --version. Esto debería darle la versión del compilador de solidity instalada.

  4. Ahora empieza geth. No necesita habilitar el módulo de administración. Como admin.setSolc('') no es necesario.
  5. Ni siquiera necesita agregar el parámetro --solc a su comando 'geth start'. Geth lo recogerá de la ruta de su sistema.
  6. Una vez que se inicia get, verifique su compilador. eth.getCompilers() ["Solidez"]

Alternativamente, puede usar el paquete solc Npm (en mi humilde opinión, el segundo mejor). O, puede construir Solidity from Source si quiere ser un colaborador. Esto requiere Cmake, git y Visual Studio.