[ Paradigmas de programación Blockchain - Parte 1] by cultura.bitcoin

View this thread on steempeak.com
· @cultura.bitcoin · (edited)
$15.50
[ Paradigmas de programación Blockchain - Parte 1]
https://media.coindesk.com/uploads/2014/11/Screen-Shot-2014-11-10-at-11.00.02-AM.png

¡Hola steemians! Estamos viviendo dificultades para lograr que la gente tenga un entendimiento general del blockchain, esto es comprensible ya que incluso entre desarrolladores la curva de aprendizaje es grande.  
Por esto entraremos en detalle, en el paradigma del desarrollo blockchain en esta ocasión.

Pautas básicas
---------------

https://d28dwf34zswvrl.cloudfront.net/wp-content/uploads/2017/11/Cryptocurrency.jpg


* Tengamos siempre en mente que el código es público y está abierto a la vista de todos. Eso significa que cualquiera puede explotar cualquier vulnerabilidad y obtener con "pocos pasos" acceso a miles de millones de dólares. Tomar las precauciones debidas en el código toma bastante tiempo de desarrollo y recursos.

* La cadena de bloques siempre debe funcionar con buen *performance* para que no se entorpezca la red por algún juego o alguna app descentralizada que se esté usando y sea competencia para las grandes empresas como Paypal. Hay algunas tareas en blockchain que son paralelizables (como la verificación de la firma digital) pero otras no. En parte es debido a que algunos lenguajes funcionan mejor para operaciones paralelas, pero tampoco hay que abusar de ésto, ya que una gran cantidad de transacciones no pueden ser ejecutadas en paralelo todas; es necesario hacer una a la vez para evitar errores como el doble gasto, se recomienda en dicho caso usar *side chains*. 

* En la mayoría de los blockchains, todas las transacciones no deben cambiar de estado, es decir que tenga la misma salida a partir de las mismas condiciones iniciales, no puede haber contratos inteligentes que funcionen de dos maneras distintas en dos máquinas diferentes. Si x + y = w, entonces siempre x + y será igual a w. 
Las funciones Hash (una parte de lo que está hecho el blockchain) tienen este comportamiento, lo que significa que el hash de A siempre será H (A), sin colisiones para uso práctico.
Una buena práctica es "aislar" el contrato inteligente y sus transacciones de elementos no deterministas, i.e. sin *loops* o ciclos en las transacciones.


Ahora nos enfocaremos en la adopción que hay de ciertos lenguajes para la tecnología blockchain. Esto significa que para que funcione correctamente un desarrollo que se usará mucho necesitamos un buen control  sobre el uso de la CPU y la memoria. Para esto C++ es muy útil.

 http://insidebitcoins.com/wp-content/uploads/2016/10/Ethereum-Classic-Hacker.jpg

<h5> Hilos de programación</h5>

Un hilo es un conjunto de instrucciones que se pueden ejecutar simultáneamente. C++ no sólo permite  una comunicación efectiva entre hilos, sino que también optimiza el rendimiento de un solo hilo. Y como se puede intuir, uno de los retos de la programación blockchain es la integrar correctamente *tasks* o tareas que se paralelizan y tareas que no, por eso C++  es bastante bueno manejar tareas paralelas y no paralelas.  

Otro aspecto muy útil de éste lenguaje es la semántica de copia y movimiento que proporciona una forma de mover el datos entre objetos  de manera eficiente, en lugar de copiarlo directamente. 
Por ejemplo:

Copia semántica

     assert (y ==z); /*buena de desarrollo, útil para encontrar errores*/
     x = y;
     assert (x === y && y == z);
 

El valor de **y** entra en **x** mientras que **y** permanece sin alteraciones.

Teniendo en cuenta esto, ahora veamos lo siguiente:

Semántica de movimiento

     assert (y = = z);  
     move (x, y);
     assert (x =z);
 

Cuando usamos la semántica de movimiento, el valor de *y* no tiene por qué ser el mismo.  Esa es la diferencia entre la semántica de copiar y la semántica de mover. 
La mayor ventaja de *move semantics* es que puedes obtener copias de ciertos datos sólo cuando los necesitas, lo que reduce enormemente redundancia y hace más eficiente el uso de memoria lo que se traduce en código de alto rendimiento, algo muy deseable para la tecnología blockchain...


[Fuente Img1](https://media.coindesk.com/uploads/2014/11/Screen-Shot-2014-11-10-at-11.00.02-AM.png)
[Fuente Img 2](https://d28dwf34zswvrl.cloudfront.net/wp-content/uploads/2017/11/Cryptocurrency.jpg)
[Fuente Img 3]( http://insidebitcoins.com/wp-content/uploads/2016/10/Ethereum-Classic-Hacker.jpg)



---------------------

</h4>
----------------------------------

<center>  *See you soon, fellows!*</center>

<center> </center>
--------------------------------------
<center> https://media.giphy.com/media/TECZ4cxO5oyg8/giphy.gif </center>

<center> **Vote for diversity, vote for cultura.bitcoin :
https://steemit.com/~witnesses
scroll & vote:** </center>

<center> ![omg1.png](https://steemitimages.com/DQmeL28F1jE3FBNPvVPWeoQrLGrdjZKK46VdTJ9zrCbqaUE/omg1.png) </center>

------------------
<center>

> https://68.media.tumblr.com/avatar_1ee2f3f93b0e_128.png
 [-Discord Server-](https://discord.gg/7RNhzkB)
https://i.imgsafe.org/f9ad7169f3.png
[@CulturaBitcoin](https://twitter.com/CulturaBitcoin)
https://i.imgsafe.org/f9b15edc6a.png
(Español)
[Cultura Bitcoin](https://www.fb.com/culturabitcoin/)
<center>-</center>
[Criptomonedas Profesionales Español](https://www.fb.com/groups/1665014173787246/)

</center>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 23 others
properties (23)
post_id20,391,641
authorcultura.bitcoin
permlinkparadigmas-de-programacion-blockchain-parte-1
categoryspanish
json_metadata"{"app": "steemit/0.1", "format": "markdown", "links": ["https://media.coindesk.com/uploads/2014/11/Screen-Shot-2014-11-10-at-11.00.02-AM.png", "https://d28dwf34zswvrl.cloudfront.net/wp-content/uploads/2017/11/Cryptocurrency.jpg", "http://insidebitcoins.com/wp-content/uploads/2016/10/Ethereum-Classic-Hacker.jpg", "https://steemit.com/~witnesses", "https://discord.gg/7RNhzkB", "https://twitter.com/CulturaBitcoin", "https://www.fb.com/culturabitcoin/", "https://www.fb.com/groups/1665014173787246/"], "image": ["https://media.coindesk.com/uploads/2014/11/Screen-Shot-2014-11-10-at-11.00.02-AM.png"], "tags": ["spanish", "blog", "blockchain", "crypto"]}"
created2017-12-14 03:30:45
last_update2017-12-15 19:40:39
depth0
children0
net_rshares2,699,545,176,363
last_payout2017-12-21 03:30:45
cashout_time1969-12-31 23:59:59
total_payout_value11.757 SBD
curator_payout_value3.739 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length5,221
author_reputation11,629,353,057,942
root_title"[ Paradigmas de programación Blockchain - Parte 1]"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (87)