Underc0de - Hacking y seguridad informática

Informática => Manuales y libros => Mensaje iniciado por: Andrey en Febrero 27, 2018, 12:20:57 am

Título: Blockchain - [De Cero A Héroe] 2
Publicado por: Andrey en Febrero 27, 2018, 12:20:57 am
(https://i.imgur.com/sONTbQy.png)

Ethereum y programación de contrato inteligente

Después de entender la dinámica de Bitcoin, intentemos profundizar en Ethereum.
Ahora comprende cómo blockchain puede ser tolerante a fallas distribuido dentro de una red. Pero la red de pagos solo es una aplicación que se puede ejecutar encima de una cadena de bloques. El creador de Ethereum se preguntó ¿y si usaras una cadena de bloques para implementar una computadora descentralizada?

En Ethereum se les paga a los que ejecutan sus programas en esta máquina virtual distribuida. Esto significa que puede realizan cálculos arbitrarios, utilizando un lenguaje de programación Turing-completo (a diferencia del script de Bitcoin). Evidentemente esto incluye aplicaciones relacionadas con pagos, por lo que Ethereum habilita un súper conjunto de la funcionalidad de Bitcoin y ha dado lugar a un renacimiento de la innovación. Esto nos lleva a contratos inteligentes: el nombre de los programas que se ejecutan en dicha máquina virtual. Un contrato inteligente puede interactuar directamente con las criptomonedas de la cadena de bloques de acuerdo con la ejecución de un programa. En otras palabras, puede crear contratos financieros que se apliquen automáticamente. Es una idea disparatada, y todo tipo de material futurista de ciencia ficción que puedes hacer una vez que aceptes este modelo de programación.

Ethereum ha permitido que la ola de ICO y desarrolladores se construya sobre la cadena de bloques. Es la segunda criptomoneda más grande detrás de Bitcoin, tiene más de 10 veces los desarrolladores de la siguiente plataforma más popular, tiene el equipo de desarrolladores más sólidos, las herramientas más maduras y la mayoría de las ICO y proyectos encima. También cuenta con el mayor respaldo de la industria. Con toda probabilidad, si estás desarrollando blockchain, debes escribir código para contratos inteligentes de Ethereum. (Incluso si no lo eres, es esencial para entender lo que está sucediendo en este espacio).

A continuación una explicación más detallada de alto nivel sobre Ethereum:


Las ideas detrás de Ethereum también han generado una ola de innovación en criptoeconomía.
Al igual que con cualquier tecnología, la mejor forma de familiarizarse con Ethereum es mediante la construcción de algunos proyectos pequeños.

El lenguaje de programación dominante para Ethereum es Solidity, que es un lenguaje de tipo Javascript estáticamente tipado. Es un lenguaje con muchas opciones de diseño cuestionables. Los lenguajes más robustos como Viper pueden reemplazarlo una vez que estén listos para producción, pero por ahora Solidity es la lengua franca de la programación de contrato inteligente. Básicamente es el JavaScript de Ethereum, por lo que tendrás que aprenderlo (y sus peligros).

Para obtener su primera exposición al desarrollo de solidez, recomiendo trabajar a través de todo el tutorial de CryptoZombies. Es un tutorial encantador y de alta calidad de Codecademy que te enseñará los conceptos básicos de la programación de Solidity.
(https://cryptozombies.io/ (https://cryptozombies.io/))

(https://i.imgur.com/oxwAMpy.png)

Ahora que ha entrado a este mundo, es hora de desarrollarse por su cuenta.

El " Hola mundo" de Ethereum está construyendo un token que cumple con ERC-20. Es recomendable esta guía como primer tutorial para guiarlo en el proceso.
https://enlight.nyc/ethereum-token (https://enlight.nyc/ethereum-token)

Remix es un compilador de solvencia en el navegador; básicamente, es la rueda de entrenamiento del desarrollo de Ethereum, por lo que es recomendable trabajar el resto de su práctica en Remix.
(https://remix.ethereum.org/ (https://remix.ethereum.org/))

Es recomendable construir un sistema de votación. Karl Floersch tiene un gran tutorial en el que describe cómo construir un sistema seguro de votación de compromiso y revelación.
(https://karl.tech/learning-solidity-part-2-voting/ (https://karl.tech/learning-solidity-part-2-voting/))


Seguridad de contrato inteligente

La seguridad es absolutamente esencial para el desarrollo de Blockchain. Los contratos inteligentes han estado plagados de hacks desastrosos, que incluyen el hack de DAO, el hack de Parity Wallet y el cariñosamente llamado Parity Wallet hack 2. Debes leer los análisis de estos tres hacks si vas a escribir contratos inteligentes de producción.

La verdad es que los contratos inteligentes son extremadamente difíciles de hacer bien. Aunque la cadena de herramientas de programación mejorará para hacer estos ataques exactos más difíciles, en última instancia, todo se debió a un error del programador. También hay muchos errores más sutiles que surgen de la programación de contratos inteligentes, como en la ejecución fronteriza o generación segura de aleatoriedad.

Como desarrollador de contrato inteligente, debe tratar la seguridad como primordial. No hay que "moverse rápido y romper cosas" en la programación de contratos inteligentes. Esto significa que cualquier código que maneje flujos significativos de dinero se debe ejecutar a través de analizadores estáticos como Oyente o Securify, debe probarse exhaustivamente y luego debe ser auditado por un auditor de contrato inteligente con experiencia. También debe intentar confiar en los componentes auditados previamente, como los contratos de código abierto de OpenZeppelin.

(https://github.com/melonproject/oyente (https://github.com/melonproject/oyente))
(https://securify.ch/ (https://securify.ch/))
(https://github.com/OpenZeppelin/zeppelin-solidity (https://github.com/OpenZeppelin/zeppelin-solidity))

Para fortalecer las habilidades de seguridad, se recomienda trabajar a través de The Ethernaut con OpenZeppelin, un juego donde puedes encontrar y atacar vulnerabilidades en contratos inteligentes. Muchos de ellos tienen que replicar ataques reales contra contratos inteligentes que han ocurrido.
(https://ethernaut.zeppelin.solutions/ (https://ethernaut.zeppelin.solutions/))

Phil Daian también tiene un excelente conjunto de desafíos de piratería de contratos inteligentes llamado Hack This Contract.
(http://hackthiscontract.io/ (http://hackthiscontract.io/))

Una vez que superados, es recomendable leer la totalidad de las mejores prácticas de contratos inteligentes, compiladas por ConsenSys. Espere volver a visitar este documento muchas veces en su carrera de programación de contrato inteligente. La bibliografía también vale la pena explorar para una lectura adicional por expertos en seguridad.
https://consensys.github.io/smart-contract-best-practices/ (https://consensys.github.io/smart-contract-best-practices/)


Dejando el entrenamiento.

Ahora deberías estar listo para comenzar a usar una pila de desarrollo de solidez seria.

La mayoría de los desarrolladores recomiendan VSCode o Atom para su editor de texto, ya que tienen plugins decentes de solidez. Para interactuar con un blockchain local, querrás usar Ganache (anteriormente TestRPC), y querrás usar el framework Truffle para tus pruebas (basadas en JS) y configurar tu pipeline de compilación.
(https://github.com/trufflesuite/ganache-cli (https://github.com/trufflesuite/ganache-cli))
(https://github.com/trufflesuite/truffle (https://github.com/trufflesuite/truffle))

Ahora es un buen momento para analizar IPFS, que puede usar como una tienda de archivos completamente descentralizada a un costo mucho más económico que la cadena de bloques de
(https://ipfs.io/ (https://ipfs.io/))

Ethereum. Aquí hay una breve explicación del creador, Juan Benet:

Para interactuar con los nodos completos de Ethereum y IPFS (https://ipfs.io (https://ipfs.io)), Infura (https://infura.io/ (https://infura.io/)) es lo que recomiendan la mayoría de los desarrolladores. Las gasolineras Etherscan y ETH proporcionan estadísticas útiles en tiempo real en la red Ethereum.
(https://etherscan.io/charts (https://etherscan.io/charts))
(https://ethgasstation.info/ (https://ethgasstation.info/))

Una vez que haya configurado su pila completa de Web3 (https://blockchainhub.net/web3-decentralized-web/ (https://blockchainhub.net/web3-decentralized-web/)), intente implementar un Dapp de extremo a extremo (aplicación descentralizada). Este tutorial (https://happyfuncorp.com/whitepapers/webthereum (https://happyfuncorp.com/whitepapers/webthereum)) proporciona una buena visión general de pila completa usando Node y Postgres para el back-end.


Construyendo tus propios proyectos
Ahora puede comenzar a construir cosas y profundizar en la comunidad de Blockchain.

Primero, comienza a construir tus propios proyectos. Si hay alguna gran idea que te entusiasme, intenta llevarla a cabo. Si todavía no tiene una idea o no se siente cómodo entrando de lleno, hay muchos proyectos de código abierto de alta calidad que aceptan contribuciones. OpenZeppelin podría ser un buen lugar para comenzar contratos inteligentes.
(https://github.com/OpenZeppelin/zeppelin-solidity/issues (https://github.com/OpenZeppelin/zeppelin-solidity/issues))

Es recomendable empezar por encontrar un proyecto activamente desarrollado del que sea fanático. Ponte en Slack o Rocketchat: los desarrolladores suelen ser fácilmente accesibles. Intenta unírteles para contribuir e intenta algunas tareas pequeñas (o encuentre problemas no resueltos en Github).

Tenga en cuenta que, si bien este texto se ha centrado en los protocolos y el desarrollo de contratos inteligentes, las empresas de Blockchain necesitan desarrolladores web para construir su funcionalidad principal. Estos roles a menudo requerirán interactuar con blockchains, por lo que es esencial tener un buen modelo mental de cómo funcionan las cadenas de bloques, pero para muchos ingenieros en las startups de Blockchain, la mayor parte de su trabajo será construir un servidor web Python o diseñar un frontend React. Interactuar con el Blockchain puede ser una pequeña parte de ese trabajo. No tiene que especializarse en el desarrollo de contratos inteligentes, en realidad, eso es solo una parte de una pila de bloques de trabajo.

Más allá de las contribuciones de código abierto, también hay muchos hackathons Blockchain (https://www.hackathon.com/theme/blockchain (https://www.hackathon.com/theme/blockchain)) constantemente apareciendo. La mayoría de los proyectos tienen un Slack público gratuito al que puedes unirte, y hay un canal Gitter (https://gitter.im/ethereum/home (https://gitter.im/ethereum/home)) muy activo para el mismo Ethereum donde muchos desarrolladores se juntan. A medida que se adentre, eventualmente encontrará un grupo de su agrado, ya sea en un canal Slack, grupo Telegram o canal Gitter. Donde sea que esté, encuentre a su gente y continúe aprendiendo.

Comunidad Blockchain
La mejor manera de entender realmente el mundo de blockchain es sumergirse en él. Lea y escuche a las personas más inteligentes, especialmente las cosas que han escrito en el pasado.

Hay mucho contenido de blockchain, pero también hay mucha basura. Aquí está la información recomendada.

Medios de comunicación
Los tres fantásticos podcasts recomendados son las entrevistas de Software Engineering Daily Blockchain, que proporcionan buenas introducciones técnicas para muchos temas y criptomonedas. Desde allí, Epicenter y Unchained: querrá volver y escuchar muchos de los episodios anteriores. Otro podcast técnico interesante y prometedor es Conspiratus.
(https://itunes.apple.com/us/podcast/blockchain-software-engineering-daily/id1230807219?mt=2 (https://itunes.apple.com/us/podcast/blockchain-software-engineering-daily/id1230807219?mt=2))
(https://itunes.apple.com/us/podcast/epicenter-podcast-on-blockchain-ethereum-bitcoin-distributed/id792338939?mt=2 (https://itunes.apple.com/us/podcast/epicenter-podcast-on-blockchain-ethereum-bitcoin-distributed/id792338939?mt=2))
(https://itunes.apple.com/us/podcast/unchained-big-ideas-from-worlds-blockchain-cryptocurrency/id1123922160?mt=2 (https://itunes.apple.com/us/podcast/unchained-big-ideas-from-worlds-blockchain-cryptocurrency/id1123922160?mt=2))
(https://itunes.apple.com/us/podcast/conspiratus/id1335928646?mt=2 (https://itunes.apple.com/us/podcast/conspiratus/id1335928646?mt=2))

Hay algunos buenos canales de YouTube (aunque hay toneladas de basura en YouTube). Suscríbete a la Fundación Ethereum y mira las presentaciones de Devcon3. Blockchain en Berkeley graba muchas de sus conferencias, la mayoría de las cuales son excelentes descripciones técnicas. Decypher Media también publica conversaciones, reseñas de libros y tutoriales. Jackson Palmer tiene interesantes vistas semanales, estas son del lado menos técnico, pero muy bien presentado.
(https://www.youtube.com/channel/UCNOfzGXD_C9YMYmnefmPH0g/videos (https://www.youtube.com/channel/UCNOfzGXD_C9YMYmnefmPH0g/videos))
(https://www.youtube.com/channel/UC5sgoRfoSp3jeX4DEqKLwKg/videos (https://www.youtube.com/channel/UC5sgoRfoSp3jeX4DEqKLwKg/videos))
(https://www.youtube.com/channel/UC8CB0ZkvogP7tnCTDR-zV7g/videos (https://www.youtube.com/channel/UC8CB0ZkvogP7tnCTDR-zV7g/videos))
(https://www.youtube.com/channel/UCTOzxu_HvuJfZtTJ6AZ7rkA (https://www.youtube.com/channel/UCTOzxu_HvuJfZtTJ6AZ7rkA))

Lecturas

La charla Blockchain en vivo, se encuentra principalmente en dos lugares: Reddit y Twitter. Para Reddit, la mayoría de los subreddits son de muy baja calidad y están dominados por el ruido. r / Ethereum (https://reddit.com/r/ethereum (https://reddit.com/r/ethereum)) tiene una calidad constante y decente (y hay algunos subreddits correctos para criptomonedas específicas). Sin embargo, la mayoría de los subreddits están dominados principalmente por especuladores, y no son un buen uso de su atención. Manténgase alejado de los subreddits relacionados con Bitcoin. Bitcoin tiene notoriamente una de las comunidades más tóxicas, y Reddit solo lo magnifica.

Twitter es más una bolsa mixta. Para bien o para mal, la mayoría de las personas de blockchain viven en Twitter.
Evite a los "líderes del pensamiento". Los empresarios puede estar bien seguirlos, aunque en su mayoría actúan twitteando sobre sus propios proyectos. Los inversores en su mayoría twittean sobre precios y proyectos así que si eso es lo tuyo ya sabes a quien seguir. Los periodistas tienden a twittear sobre las principales noticias del día; es recomendable que se mantengan alejados a menos que necesiten un análisis en tiempo real, que probablemente no hagan. Si eres un comerciante activo, podría ser importante, pero si intentas construir sobre la cadena de bloques, la mayoría de las cosas en tiempo real son una distracción.

Presta la mayor atención a los constructores. Son las personas que más importan en este momento, y quienes impulsan la tecnología.

Es recomendable suscribirse a Inside Bitcoin (https://inside.com/bitcoin (https://inside.com/bitcoin)) para obtener resúmenes diarios de las noticias más importantes (cubre más que solo Bitcoin) y Week in Ethereum (http://www.weekinethereum.com/ (http://www.weekinethereum.com/)) tiene buenos compendios de los acontecimientos centrados en los desarrolladores en el ecosistema de Ethereum.

Más allá de esto, probablemente no necesite monitorear noticias en tiempo real. Enfócate en construir cosas y aprender.

Querrá seguir los mejores blogs. Estos son los recomendados:

Vitalik Buterin (https://vitalik.ca/ (https://vitalik.ca/)) por su excelente blockchain y análisis criptoeconómico.

Hacking (http://hackingdistributed.com/ (http://hackingdistributed.com/)), distribuido para análisis de seguridad de blockchain por investigadores de Cornell

Unenumerated (http://unenumerated.blogspot.mx/ (http://unenumerated.blogspot.mx/)), el blog de luminarias de Nick Szabo con ensayos desafiantes.

Money Stuff (https://www.bloomberg.com/view/topics/money-stuff (https://www.bloomberg.com/view/topics/money-stuff)), la distribución de Bloomberg de Matt Levine, con un análisis perspicaz que toca la intersección de los mercados, las finanzas y las noticias de blockchain

Jameson Lopp (https://lopp.net/articles.html (https://lopp.net/articles.html)) por sus excelentes publicaciones técnicas desde la perspectiva de un ingeniero de software que construye el ecosistema blockchain

Gran Muralla de Números (http://www.ofnumbers.com/ (http://www.ofnumbers.com/)) por Tim Swanson, por su deconstrucción sobria e inquebrantable de la manía de la cadena de bloques, especialmente en el espacio empresarial

Libros y cursos
Si desea un enfoque más estructurado para aprender este material, hay algunos libros y cursos de alta calidad.

El mejor libro de texto general para blockchains es Bitcoin y Cryptocurrency Technologies (https://www.amazon.com/Bitcoin-Cryptocurrency-Technologies-Comprehensive-Introduction-ebook/dp/B01GGQJ2XW (https://www.amazon.com/Bitcoin-Cryptocurrency-Technologies-Comprehensive-Introduction-ebook/dp/B01GGQJ2XW)).

Los únicos otros libros recomendables son Mastering Bitcoin (https://www.amazon.com/Mastering-Bitcoin-Unlocking-Digital-Cryptocurrencies/dp/1449374042 (https://www.amazon.com/Mastering-Bitcoin-Unlocking-Digital-Cryptocurrencies/dp/1449374042)) de Andreas Antonopoulos.

El único libro no técnico recomendable es Digital Gold (https://www.amazon.com/Digital-Gold-Bitcoin-Millionaires-Reinvent/dp/B00UVY508W (https://www.amazon.com/Digital-Gold-Bitcoin-Millionaires-Reinvent/dp/B00UVY508W)) por Nathaniel Popper.

Prácticamente todo lo demás que vale la pena leer estará en blogs, no en libros: este espacio se mueve tan rápido que las figuras más importantes rara vez tienen tiempo para escribir libros, y los libros a menudo están desactualizados para cuando se publican.

Si desea un enfoque más estructurado para aprender este material, existen algunos cursos de alta calidad (y muchos de baja calidad). Conferencias del Curso de Princeton Coursera (https://www.coursera.org/learn/cryptocurrency (https://www.coursera.org/learn/cryptocurrency)) (los videos también están en YouTube), y la UC Berkeley (https://www.youtube.com/watch?v=ZWE3qFnSbMc&list=PLSONl1AVlZNX_JBggqZV40rDIGGB0FNHW (https://www.youtube.com/watch?v=ZWE3qFnSbMc&list=PLSONl1AVlZNX_JBggqZV40rDIGGB0FNHW)).

También se dicen cosas buenas sobre Consensys Academy (https://consensys.net/academy/ (https://consensys.net/academy/)) para las personas que quieren entrar en el desarrollo de contratos inteligentes.

Lo que se he mostrado es solo el comienzo. Las criptomonedas aún están iniciando, y realmente es el espacio en el que más rápidamente se puede desarrollar. Esta guía seguramente estará desactualizada en un año. Así que tendrás que continuar investigando y actualizándote por tu parte.



Blockchain - [De Cero A Héroe] 1
https://underc0de.org/foro/almacen-de-manuales/t35811/ (https://underc0de.org/foro/almacen-de-manuales/t35811/)



Cualquier error favor de comentarlo o decirme por privado y se intentara solucionar a la brevedad.
Andrey...