Solidity: herramientas básicas
Si has llegado hasta aquí es porque quieres desarrollar Smart contracts o tienes una idea disruptiva para una Dapp. Aquí intentaré guiarte entre las herramientas disponibles que te ayudarán a cumplir tus objetivos.
Una primera aclaración, el sistema operativo que estoy usando es Ubuntu y las explicaciones se harán para este sistema operativo, aunque la mayoría de estas herramientas están disponibles para todos los sistemas operativos pueden surgir diferencias en su instalación.
Es recomendable que tengas instalado Nodejs y npm:
Comando para Nodejs
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
Comando para npm:
$ npm install npm@latest -g
Con estas podrás realizar pruebas en local de tu Dapp y el manejo de las dependencias de la misma.
Cliente Geth
Es de lo primero que debes instalar, si no lo tienes instalado ya. Es un cliente de Ethereum y te servirá para realizar tus pruebas en las testnets como Ropsten y Rinkeby.
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
Truffle
Es el framework de desarrollo más extendido, te ayudará al manejo de tus contratos (compilación, migración, despliegue, etc) y paquetes. Además, con truffle podrás desarrollar test automáticos en Javascript, lo cual te ayudará a comprobar rápidamente los cambios que hagas en tus contratos y asegurarte que funcionan como esperas. Dejo aquí el enlace para que lo puedas descargar e instalar.
Ganache y Ganache-cli
Herramientas fundamentales para el desarrollo y, sobre todo, para la realización de pruebas, gracias a ella podrás tener una blockchain en local en la cual podrás desplegar tus contratos como si lo estuvieras haciendo en una testnet o mainnet, pero con un significable ahorro de tiempo en tus pruebas. Además, te creará una serie de cuentas que podrás utilizar como si se trataran los usuarios de tu Dapp. Podrás descargarlo desde el siguiente enlace
Metamask
Es una wallet de Ethereum integrada en tu navegador. Puedes instalarla en Chrome, Firefox, Opera y Brave. Con ella, además de ser una herramienta útil en tus desarrollos, podrás visitar y utilizar webs que se conecten con la red Ethereum. Se vuelve una herramienta de especial utilidad cuando despliegues tus contratos en una blockchain, sea local o testnet, y quieras interactuar con tus contratos desde tu front-end, ya que con esta wallet te podrás conectar no solo a la mainnet y testnet, además en tu blockchain local. Dejo aquí el enlace
Remix
Es un entorno de desarrollo para Solidity y Vyper, en mi opinión, el más completo hasta la fecha. En él podrás, no sólo escribir tus Smart Contracts, también podrás compilarlos, ver posibles errores, te dará advertencias de posibles desarrollos vulnerables, hacer pruebas de tu código, debuggearlo. Es una herramienta online a la que podrás acceder desde cualquier navegador. Dejo el enlace aquí.
Ethgasstation
Esta página web te servirá para consultar el precio del gas, lo cual lo hace una herramienta de cierta importancia para comprobar si tus funciones son caras o baratas de ejecutar. Dejo el enlace para que lo puedas guardar.
Etherscan
Es el explorador de bloques de Ethereum, con él podrás ver las transacciones que se ejecutaron en la red. Además, podrás buscar direcciones, bloques, tokens, etc. Dejo a continuación los enlaces a la mainnet, Rinkeby y Ropsten
Documentación
Además, de las herramientas detalladas anteriormente también necesitarás acceso a la siguiente documentación:
Librerías de Javascript que te permitirán conectar tu front-end con tus smart contracts.
La documentación de Solidity.
OpenZeppelin fuente de librerías en Solidity muy útiles que te ayudarán a desarrollar Smart Contracts más seguros y resistentes a ataques, uno de sus ejemplos más famosos es SafeMath.
En los siguientes post iremos subiendo tutoriales de cada una de ellas. Si quieres colaborar, puedes donar en las siguientes direcciones:
ethereum: 0xBE4Dae23663aBbbe85037C7155336A867Eda6a85
bitcoin: 3EQpHQyYDtbe37ixFJirSo8VUE1oDdr6nh