Solidity
# Solidity

Solidity es un lenguaje de programación orientado a objetos para escribir contratos inteligentes. Se utiliza para implementar contratos inteligentes en varias plataformas blockchain, la más destacada, Ethereum . Fue desarrollado por Christian Reitwiessner, Alex Beregszaszi y varios de los principales excolaboradores de Ethereum para poder escribir contratos inteligentes en plataformas blockchain como Ethereum.

## Historia

Solidity fue inicialmente propuesto en agosto de 2014 por Gavin Wood. Más tarde, el lenguaje fue desarrollado por el equipo de Solidity de Ethereum Projects, dirigido por Christian Reitwiessner.

Actualmente, Solidity es el principal lenguaje en Ethereum así como en otras blockchains privadas que compiten con Ethereum, como Monax y su Hyperledger Burrow blockchain, la cual utiliza Tendermint para el mecanismo de consenso. SWIFT ha desplegado una prueba de concepto que utiliza Solidity ejecutándose sobre Burrow.

Un investigador de la Universidad de Cornell declaró que Solidity fue parcialmente culpable del hackeo a The DAO en 2016. Dijo: "esto en realidad no era un defecto o una explotación en el contrato de The DAO en sí: técnicamente, la Máquina Virtual Ethereum (EVM) estaba funcionando según lo previsto, pero Solidity estaba introduciendo fallos de seguridad en los contratos que no solo la comunidad pasó por alto, sino que también lo hicieron los propios diseñadores del lenguaje ".

## Descripción

Solidity es un lenguaje de programación de tipo estático diseñado para desarrollar contratos inteligentes que se ejecutan en la máquina virtual de ethereum, también conocida como EVM.

Según lo especificado por Wood, está diseñado en torno a la sintaxis ECMAScript para que sea familiar para los desarrolladores web existentes; la diferencia de ECMAScript, es que tiene tipos de retorno de tipo estático y variable. En comparación con otros lenguajes focalizados en EVM de la época, como Serpent y Mutan, Solidity contenía una serie de diferencias importantes. Soportaba variables miembro complejas para los contratos, incluyendo asignaciones jerárquicas arbitrarias y estructuras de datos . Los contratos admiten herencia, incluyendo herencia múltiple Linealización de superclase C3 . Además tiene una interfaz binaria de aplicación (ABI) que facilita múltiples funciones de seguridad de tipos dentro de un solo contrato (más tarde soportada por Serpent). También incluye un sistema de documentación para especificar una descripción centrada en el usuario de las ramificaciones de una llamada a un método, conocido como "Especificación del lenguaje natural".

Ejemplo de un programa de Solidity:

## Plataformas de desarrollo disponibles

* Microsoft Visual Studio
* Microsoft Visual Studio Code
* Tendermint en Microsoft Azure
* ErisDB de AWS
* Remix de Ethereum

## Plataformas Blockchain

Solidity está disponible en:

* Ethereum
* Ethereum Classic
* Tendermint y ErisDB (una versión de Tendermint)
* Counterparty (que se ejecuta en Bitcoin )
* Tron
