Instalando Solidity¶
Control de Versiones¶
Las versiones de Solidity siguen un versionado semántico, y además de los releases, también hay nightly developement builds. El funcionamiento de los nightly builds no está garantizado y puede que contengan cambios no documentados o que no funcionen. Recomendamos usar la última release. Los siguientes instaladores de paquetes usarán la release más actual.
Remix¶
Si sólo quieres probar Solidity para pequeños contratos, puedes usar Remix que no necesita instalación. Si quieres usarlo sin conexión a internet, puedes ir a https://github.com/ethereum/browser-solidity/tree/gh-pages y bajar el .ZIP como se explica en esa página.
npm / Node.js¶
Esta es probablemente la manera más portable y conveniente de instalar Solidity localmente.
Se proporciona una librería Javascript independiente de plataforma mediante la compilación del código C++ a Javascript usando Emscripten. Puede ser usado en proyectos directamente (como Remix). Visita el repositorio solc-js para ver las instrucciones.
También contiene una herramienta de línea de comandos llamada solcjs que puede ser instalada vía npm:
npm install -g solc
Nota
Las opciones de línea de comandos de solcjs no son compatibles con solc, y las herramientas (tales como geth) que esperen el comportamiento de solc no funcionarán con solcjs.
Docker¶
Proveemos builds de docker actualizadas para el compilador. El repositorio
stable
contiene las versiones publicadas mientras que el nightly
contiene cambios potencialmente inestables de la rama de desarrollo.
docker run ethereum/solc:stable solc --version
Actualmente, la imagen de docker contiene el compilador ejecutable, así que tendrás que enlazar las carpetas de código y de output.
Paquetes Binarios¶
Los paquetes binarios de Solidity están disponibles en solidity/releases.
También tenemos PPAs para Ubuntu. Para la versión estable más reciente.
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc
Si quieres la versión en desarrollo más reciente:
sudo add-apt-repository ppa:ethereum/ethereum
sudo add-apt-repository ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install solc
Arch Linux también tiene paquetes, pero limitados a la versión de desarrollo más reciente:
pacman -S solidity-git
Homebrew aún no tiene paquetes preconstruidos, siguiendo una migración de Jenkins a TavisCI, pero Homebrew todavía debería funcionar para construir desde el código. Pronto se agregarán los paquetes preconstruidos.
brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity
brew linkapps solidity
Si necesitas una versión específica de Solidity, puedes instalar una fórmula Homebrew desde Github.
Ver solidity.rb commits on Github.
Sigue los enlaces de historia hasta que veas un enlace a un fichero de un
commit específico de solidity.rb
.
instalar con brew
:
brew unlink solidity
# Install 0.4.8
brew install https://raw.githubusercontent.com/ethereum/homebrew-ethereum/77cce03da9f289e5a3ffe579840d3c5dc0a62717/solidity.rb
Gentoo también provee un paquete Solidity que puede instalarse con emerge
:
demerge ev-lang/solidity
Construir desde el código¶
Clonar el Repositorio¶
Para clonar el código fuente, ejecuta el siguiente comando:
git clone --recursive https://github.com/ethereum/solidity.git
cd solidity
Si quieres ayudar a desarrollar Solidity, debes hacer un fork de Solidity y agregar tu fork personal como un remoto secundario:
cd solidity
git remote add personal git@github.com:[username]/solidity.git
Solidity tiene submódulos de git. Asegúrate que están cargados correctamente:
git submodule update --init --recursive
Prerrequisitos - macOS¶
Para macOS, asegúrate de tener la versión más reciente de Xcode instalada. Esto contiene el compilador Clang C++, las herramientas que se necesitan para construir aplicaciones C++ en OS X. Si estás instalando Xcode por primera vez, necesitarás aceptar las condiciones de uso antes de poder hacer builds de línea de comandos:
sudo xcodebuild -license accept
Nuestras builds OS X requieren instalar el gestor de paquetes Homebrew para instalar dependencias externas. Aquí puedes ver cómo desinstalar Homebrew, si alguna vez quieres empezar de nuevo.
Prerrequisitos - Windows¶
Necesitarás instalar las siguientes dependencias para los builds de Solidity en Windows:
Software | Notas |
---|---|
Git para Windows | Herramienta de línea de comandos para repositorios git. |
CMake | Generador de build multi plataforma. |
Visual Studio 2015 | Compilador C++ y entorno de desarrollo. |
Dependencias Externas¶
Ahora tenemos un script fácil de usar que instala todas las dependencias externas en macOS, Windows y varias distros Linux. Esto solía ser un proceso manual de varias etapas, pero ahora es una sola línea:
./scripts/install_deps.sh
o, en Windows:
scripts\install_deps.bat
Build en línea de comandos¶
Construir Solidity es bastante similar en Linux, macOS y otros sistemas Unix:
mkdir build
cd build
cmake .. && make
o aún más fácil:
#nota: esto instalará los binarios de solc y soltest en usr/local/bin
./scripts/build.sh
Incluso para Windows:
mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..
Estas últimas instrucciones deberían resultar en la creación de solidity.sln en ese directorio de build. Hacer doble click en ese archivo debería abrir Visual Studio. Sugerimos construir la configuración RelWithDebugInfo, pero todas funcionan.
O si no, puedes construir para Windows en la línea de comandos de la siguiente manera:
cmake --build . --config RelWithDebInfo
La cadena de versión en detalle¶
La cadena de versión de Solidity está compuesta por 4 partes:
- el número de la versión
- etiqueta pre-release, en general en formato
develop.YYYY.MM.DD
onightly.YYYY.MM.DD
- commit en formato
commit.GITHASH
- la plataforma tiene número arbitrario de ítems, contiene detalles de la plataforma y el compilador
Si hay modificaciones locales, el commit tendrá el sufijo .mod
.
Éstas partes se combinan como es requerido por Semver, donde la etiqueta pre-release de Solidity equivale al pre-release de Semver y el commit Solidity y plataforma combinadas hacen el metadata del build de Semver.
Un ejemplo de release: 0.4.8+commit.60cc1668.Emscripten.clang
.
Un ejemplo pre-release: 0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang
Información importante sobre versiones¶
Tras hacer un release, se incrementa el nivel de versión patch, porque asumimos que sólo
siguen cambios de nivel de patch. Cuando se integran los cambios, la versión se aumenta
de acuerdo a la versión Semver y la urgencia de los cambios. Finalmente, un release siempre se hace con la versión de la build nightly actual, pero sin el especificador prerelease
.
Ejemplo:
- se hace el release 0.4.0
- el nightly build tiene versión 0.4.1 a partir de ahora
- se introducen cambios compatibles - no hay cambio en versión
- se introduce cambios no compatibles - la versión se aumenta a 0.5.0
- se hace el release 0.5.0
Este comportamiento funciona bien con la versión pragma.