miércoles, 31 de enero de 2018

Recursos para entender Blockchain



Hace tiempo que vengo dándole vueltas sobre como escribir un artículo (o serie de artículos) sobre Blockchain desde 0, coincidió que una compañera me pidió dar una charla sobre esto mismo y lo hice encantada, creía que me valdría para poder enfocar también estos artículos pero no, sigo sin verlo claro.

Me he dado cuenta de que hay muy buena información en la red donde poder entender esto fácilmente.

Estoy preparando un MOOC sobre Blockchain para desarrolladores, contado y visto con calma, siempre se ve mejor. Pero mientras tanto, quiero compartir con vosotros tres documentos que son más que suficientes para entender Blockchain tal y como Bitcoin lo pensó.

Es muy interesante remarcar que cada criptomoneda ha incluido cambios en este modelo inicial por eso, cuando estéis decididos por una, revisad bien su Whitepaper porque el Blockchain de Bitcoin se parece al de Ethereum pero ya incluye muchos cambios, y si te vas a IOTA no se parece en nada. Por lo que es importante que partas de esa base, estos documentos son excelentes para entender las bases sobre las que nació Blockchain pero luego ha evolucionado y cambiado mucho, según la criptomoneda que te interese.

En primer lugar os dejo con dos documentos, uno en inglés y otro en castellano, enfocados por completo a Blockchain según Bitcoin, así también se puede entender el concepto de minería y los problemas que ésta traerá.

http://www.the-blockchain.com/docs/Princeton%20Bitcoin%20and%20Cryptocurrency%20Technologies%20Course.pdf

https://repositorio.comillas.edu/xmlui/bitstream/handle/11531/70/TFG000011.pdf?sequence=1

En segundo lugar os dejo el documento que publicó el NIST, un borrador sobre Blockchain, explicando todos estos conceptos básicos pero además ya habla de las diferencias con Ethereum, en mi humilde opinión, la criptomoneda que más ha aportado después de Bitcoin desde una perspectiva de innovación tecnológica.

https://csrc.nist.gov/CSRC/media/Publications/nistir/8202/draft/documents/nistir8202-draft.pdf

Con estos tres documentos son más que suficientes para adentrarte a entender que es Blockchain y porqué todo el mundo habla de ello.

martes, 16 de enero de 2018

Empezando con el desarrollo de DApps en Ethereum



Como ya he comentado varias veces estoy haciendo un doctorado, no se me ocurrió otra cosa
que meterme en IoT + Blockchain y, como buena curiosa que soy, nada mejor para entender las
cosas que meterte en faena y poner a crear tus propias DAaps.

Primero ¿Que es una DApp?
DApp es el acrónimo para de Decentralized Application, no son ni más ni menos que
aplicaciones basadas en la tecnología Blockchain (para los que no entiendan bien
Blockchain, me apunto para la semana que viene un compendio de recursos para ellos).

Las características que toda DApp comparte son:
  • Open Source: Los cambios son consensuados. 
  • Descentralizada: Los datos son guardados en Blockchain (que es descentralizado por definición). 
  • Probada: Bitcoin usa PoW, Ethereum también aunque esta programado para finales de este año hacer un hibrido de PoW y PoS. Han de ser probadas. 
  • Incentivada: Cuando se validen ls transferencias, se han de incentivar. Aquí no estoy muy de acuerdo con que esto se aun punto general ya que si piensas en criptomonedas como IOTA (que tendrá pronto Smart Contracts) todas sus transacciones y validaciones son gratuitas. Pero por el momento dejemoslo como característica general. 

Resultado de imagen de blockchain


Ethereum diferencia entre tres tipos de aplicaciones:
  • Financieras: Manejan “cripto-dinero” de forma directa. 
  • Semi-financieras: Donde hay dinero en juego pero no es la finalidad principal. 
  • No financieras: Donde el dinero no es lo que importa aquí pone como ejemplo los sistemas de votación o gobierno descentralizado. Siempre que un minero procesa un Smart Contrat se mueve dinero (por el gas consumido para procesarlo) así que, no os engañeis, siempre hace falta tener ether de por medio. 
Bien, ya sabemos lo que queremos hacer: una DApp. Ahora, la pregunta que he visto por tantos rincones de la red ¿Por donde empiezo?
Una DApp no es diferente a cualquier otra aplicación, consta de dos partes:
  • Front: Lo bonito. Lo que ve el usuario. Aquí los lenguajes de desarrollo son libres, el front lo puedes hacer en lo que más te guste. Lo más habitual son front de tipo web (eso también influye en que MetaMask solo tiene soporte web hoy en día, pero lo explicaremos luego) pero aquí puedes sentirte libre de usar el lenguaje que quieras. 
  • Back: La conexión con Blockchain. Esta es la parte donde vais a poder ver la diferencia entre una APP y una DApp. Hasta ahora teníais un back con una BBDD (relacional o no, no vamos a entrar en eso) puede que para vuestra DApp siga haciendo falta una, pero el núcleo de vuestra información estará en la Blockchain. El factor único y diferencial es ese. Para esto necesitamos un lenguaje para poder interactuar con esa Blockchain. El lenguaje más utilizado para ello es Solidity. 
Con Solidity vamos a poder:
  • Interactual con la Blockchain 
  • Crear Smart Contracts 
  • Crear nuestra ICO (que no es más que otro Smart Contract) 

Con esos tres puntos ya lo tienes todo. Entendiendo que es una DApp, que partes la forman, que lenguajes necesitas y que puedes hacer con Solidity. Ya te puedes adentrar a estudiar sobre el mismo y ver ejemplos.
Mis recomendaciones.

MOOCs:
Ethereum Developer MasterClass: https://www.udemy.com/ethereum-masterclass/learn/v4/overview