NANO Papel Blanco - White Paper
NANO Papel Blanco - White Paper
NANO Papel Blanco - White Paper
Resumen—Actualmente, la alta demanda y la escalabilidad fue la cadena de bloques (blockchain); una estructura de datos
limitada han aumentado el promedio del tiempo de transacciones pública, inmutable y descentralizada que se utiliza como un
y las tarifas en las criptomonedas populares, produciendo libro de contabilidad (ledger) para las transacciones de la
una experiencia insatisfactoria. Aquı́ presentamos a Nano,
una criptomoneda con una arquitectura novedosa llamada moneda. Desafortunadamente, a medida de que el Bitcoin se
Block-lattice (enrejado de bloques) donde cada cuenta tiene su desarrolló, varios problemas en el protocolo hicieron que el
propia blockchain (cadena de bloques), brindando una velocidad Bitcoin tuviera restricciones para muchas aplicaciones:
de transacción casi instantánea e ilimitada escalabilidad.
Al haber una blockchain para cada cuenta, les permite 1. Escalabilidad limitada: Cada bloque en el blockchain
actualizarla de manera asincrónica con el resto de la red, puede almacenar una cantidad de datos limitada, lo
generando transacciones rápidas con una sobrecarga mı́nima. Las que significa que el sistema solo puede procesar tantas
transacciones realizan un seguimiento del balance de las cuentas transacciones por segundo, haciendo de los espacios en
en lugar de los montos transferidos, lo que permite una reducción
agresiva de la base de datos sin comprometer la seguridad. un bloque un producto básico. Actualmente, la tarifa
Hasta la fecha, la red de Nano ha procesado 4.2 millones de promedio de una transacción es de $10.38 [2].
transacciones con un ledger (libro de contabilidad digital) de
solo 1.7 GB, sin reducciones. Las transacciones en fracción de 2. Alta latencia: El tiempo promedio de confirmación es
segundos y sin comisiones hace de Nano la criptomoneda ideal de 164 minutos [3].
para las transacciones del consumidor.
3. Consumo ineficiente: La red del Bitcoin consume un
Palabras Clave—criptomoneda, blockchain, Nano, ledger, estimado de 27.28TWh por año, usando una media de
transacciones, block-lattice, digital 260KWh por transacción [4].
transacciones/saldos de la cuenta (Figura 2). Cada cuenta solo 2. Mantener pequeñas las transacciones, ajustandose al
puede ser actualizada por el titular; esto permite que cada tamaño de un paquede UDP.
blockchain se actualice de forma inmediata y ası́ncrona al
3. Facilitar la reducción del ledger, minimizando las huellas
resto del block-lattice, lo que da como resultado transacciones
de los datos.
rápidas. El protocolo de Nano es extremadamente liviano;
cada transacción se ajusta al tamaño mı́nimo del paquete 4. Aislar las transacciones liquidadas de las no liquidadas.
UDP requerido para ser transmitido a través de Internet. Los
requisitos de hardware para los nodos también son mı́nimos, Más de una cuenta transfiriendo al mismo destino es una
ya que los nodos solo tienen que registrar y retransmitir operación asincrónica; la latencia de la red y las cuentas de
bloques para la mayorı́a de las transacciones (Figura 1). envı́o no están necesariamente en comunicación mutua, lo que
El sistema es iniciado con una cuenta génesis que contiene significa que no existe una forma universalmente aceptable
balance génesis. El balance de génesis es una cantidad fija y de saber qué transacción ocurrió primero. Como la suma es
nunca se puede aumentar. El balance de génesis se divide y asociativa, el orden en que se ordenan las entradas no importa,
se envı́a a otras cuentas a través de transacciones que quedan y por lo tanto, simplemente necesitamos un convenio global.
registradas en el blockchain de génesis. La suma de los saldos Este es un componente de diseño clave que convierte un
de todas las cuentas nunca excederá el saldo inicial de génesis, convenio de tiempo de ejecución en un convenio de tiempo
lo que otorga al sistema un lı́mite superior en cantidad y de diseño. La cuenta receptora tiene el control de decidir qué
elimina su capacidad de aumentar. transferencia llegó primero y se expresa mediante el orden
En esta sección veremos cómo se construyen y propagan firmado de los bloques entrantes.
los diferentes tipos de transacciones en toda la red. Si una cuenta desea realizar una transferencia grande que se
.. .. .. recibió como un conjunto de muchas transferencias pequeñas,
. . . queremos representar esto de una manera que se ajuste dentro
de un paquete UDP. Cuando una cuenta receptora realiza
una secuencia de transferencias de entrada, mantiene el total
acumulado del saldo de su cuenta, de modo que en cualquier
R E R momento tiene la capacidad de transferir cualquier cantidad
con un tamaño fijo de transacción. Esto difiere del modelo
de transacción de entrada/salida utilizado por Bitcoin y otras
criptomonedas.
R E R Algunos nodos no están interesados en gastar recursos
para almacenar el historial de transacciones completo de
una cuenta; solo están interesados en total de su balance
acumulado. Cuando una cuenta realiza una transacción,
E R codifica su balance acumulado y estos nodos solo necesitan
Tiempo
transacción que envió los fondos. En la creación de la cuenta, IV-E. Recibiendo una Transacción
se debe elegir un representante para que vote en su nombre; Para completar una transacción, el destinatario de los fondos
esto se puede cambiar más adelante (Sección IV-F). La cuenta enviados debe crear un bloque de recepción en su propia
puede declararse como su propio representante. blockchain (Figura 6). El campo source hace referencia al hash
de la transacción de envı́o asociada. Una vez que este bloque
open { se crea y se transmite, el saldo de la cuenta se actualiza y los
account: DC04354B1...AE8FA2661B2, fondos se transfieren oficialmente a su cuenta.
source: DC1E2B3F7C...182A0E26B4A,
representative: xrb_1anr...posrs, receive {
work: 0000000000000000, previous: DC04354B1...AE8FA2661B2,
type: open, source: DC1E2B3F7C6...182A0E26B4A,
signature: 83B0...006433265C7B204 work: 0000000000000000,
} type: receive,
signature: 83B0...006433265C7B204
}
Figura 4. Anatomı́a de una transacción abierta
Una versión más sofisticada de un ataque > 50 % se detalla VI. I MPLEMENTACI ÓN
en la figura 9. “Offline” es el porcentaje de representantes Actualmente, la implementación de referencia esta en
que han sido nombrados pero que no están en lı́nea para lenguaje C ++ y ha estado produciendo lanzamientos desde
votar. “Stake” es la cantidad de inversión con la que vota 2014 en Github. [10]. A continuación presentamos como esta
el atacante. “Active” es la cantidad de representantes que implementado Nano.
están en lı́nea y votan de acuerdo con el protocolo. Un
atacante puede compensar la cantidad de participación que
debe perder tornando a otros votantes fuera de lı́nea a través VI-A. Caracterı́sticas del Diseño
de un ataque DoS en la red. Si este ataque puede ser sostenido, La implementación de Nano cumple con el estándar de
los representantes atacados pierden la sincronización y esto arquitectura descrito en este documento. Las especificaciones
se demuestra con “Unsync”. Finalmente, un atacante puede adicionales se describen a continuación.
obtener una pequeña ráfaga de fuerza relativa de votación al
cambiar su ataque DoS a un nuevo conjunto de representantes, VI-A1. Algoritmo de Firmas: Nano usa un algoritmo de
mientras que el conjunto anterior vuelve a sincronizar su curva elı́ptica ED25519 modificado con Blake2b hashing para
ledger, esto se demuestra con “Attack”. todas las firmas digitales [11]. El ED25519 fue elegido para
garantizar firmas rápidas, verificación rápida y alta seguridad.
VI-A2. Algoritmo de Hashing: Dado que el algoritmo de
Offline Unsync Attack Active Stake
hash solo se usa para evitar el spam de la red, la elección
del algoritmo es menos importante en comparación con las
Figura 9. Un potencial convenio de votación que podrı́a reducir los requisitos
para un ataque de 51 %.
criptomonedas basadas en la minerı́a. Nuestra implementación
utiliza Blake2b como un algoritmo de asimilación contra el
Si un atacante puede causar que Stake>Active por una contenido del bloque [12].
combinación de estas circunstancias, podrá invertir los votos VI-A3. Función de Derivación de Códigos: En la cartera
en el ledger a expensas de su Stake. Podemos estimar cuánto de referencia, los códigos estan encriptados con una contraseña
podrı́a costar este tipo de ataque examinando el capital de y la contraseña se alimenta a través de una función de
mercado de otros sistemas. Si estimamos que el 33 % de derivación de códigos para protegerse contra los intentos de
los representantes están fuera de lı́nea o atacados a través craqueo ASIC. Actualmente Argon2 [13] es el ganador de la
de un DoS, un atacante tendrı́a que comprar el 33 % de la única competencia pública destinada a crear una función de
capitalización de mercado para atacar el sistema mediante derivación de códigos resistente.
votación.
VI-A4. Intervalos de Bloques: Como cada cuenta tiene
su propia blockchain, las actualizaciones se pueden realizar
V-G. Envenenamiento de Arranque de forma ası́ncrona al estado de la red. Por lo tanto, no hay
intervalos de bloques y las transacciones se pueden publicar
Mientras más tiempo un atacante pueda mantener un código al instante.
privado antiguo balance, mayor será la probabilidad de que los
saldos que existı́an en ese momento no tengan representantes VI-A5. Protocolo de Mensajes UDP: Nuestro sistema
participando porque sus balances o representantes se hayan está diseñado para operar de manera indefinida utilizando la
transferido a cuentas más nuevas. Esto significa que si un cantidad mı́nima de recursos informáticos como sea posible.
nodo se inicia en una representación antigua de la red donde Todos los mensajes en el sistema fueron diseñados encajar
el atacante tiene un quórum de participación de votación dentro de un único paquete UDP. Esto también facilita que
en comparación con los representantes en ese punto en el los peers ligeros con conectividad intermitente participen en
tiempo, podrı́a oscilar las decisiones de votación a ese nodo. Si la red sin restablecer las conexiones TCP a corto plazo. TCP
este nuevo usuario deseara interactuar con cualquier persona se usa solo para los nuevos peers cuando quieren arrancar las
además del nodo atacante, todas sus transacciones serı́an cadenas de bloques de forma masiva.
denegadas ya que tienen diferentes bloques principales. El Los nodos pueden estar seguros de que su transacción fue
resultado es que los nodos pueden desperdiciar el tiempo de recibida por la red al observar el tráfico de transmisión de
los nuevos nodos en la red al proporcionarles información transacciones desde otros nodos, ya que deberı́a ver varias
incorrecta. Para evitar esto, los nodos se pueden emparejar copias repetidas hacia el.
con una base de datos inicial de cuentas y bloques principales
conocidos; este es un reemplazo para la descargar de la base
de datos hasta el bloque de génesis. Cuanto más cerca esté VI-B. IPv6 y Multicast
la descarga de ser la actual, mayor será la probabilidad de Construir encima del UDP sin conexión permite a las
defenderse con precisión contra este ataque. Al final, este implementaciones futuras usar la multidifusión IPv6 como
ataque probablemente no sea peor que alimentar de datos no un reemplazo para los desbordamientos de transacciones y la
deseados a los nodos durante el arranque, ya que no podrı́an transmisión de votos. Esto reducirá el consumo de ancho de
realizar transacciones con nadie que tenga una base de datos banda de la red y dará más flexibilidad polı́tica a los nodos
contemporánea. en el futuro.
8
A P ÉNDICE A
B ENCHMARK DEL H ARDWARE PARA EL P OW
Como se mencionó anteriormente, el PoW en Nano
se utiliza para reducir el spam dentro la red. Nuestra
implementación de nodos proporciona una aceleración que
puede aprovechar las GPUs compatibles con OpenCL. La
tabla I proporciona una comparación real de varios tipos de
hardware. Actualmente, el lı́mite del PoW es fijo, pero se
puede implementar un lı́mite que se adapte a medida que
progresa la potencia de computo promedio.
Cuadro I
D ESEMPE ÑO DE P OW DEL H ARDWARE
R ECONOCIMIENTO
Nos gustarı́a agradecer a Brian Pugh por compilar y
formatear este documento
R EFERENCIAS
[1] S. Nakamoto, “Bitcoin: A peer-to-peer electronic cash system,” 2008.
[Online]. Available: http://bitcoin.org/bitcoin.pdf
[2] “Bitcoin median transaction fee historical chart.” [Online]. Available:
https://bitinfocharts.com/comparison/bitcoin-median transaction fee.
html
[3] “Bitcoin average confirmation time.” [Online]. Available: https:
//blockchain.info/charts/avg-confirmation-time
[4] “Bitcoin energy consumption index.” [Online]. Available: https:
//digiconomist.net/bitcoin-energy-consumption
[5] S. King and S. Nadal, “Ppcoin: Peer-to-peer crypto-currency with
proof-of-stake,” 2012. [Online]. Available: https://peercoin.net/assets/
paper/peercoin-paper.pdf
[6] C. LeMahieu, “Raiblocks distributed ledger network,” 2014.
[7] Y. Ribero and D. Raissar, “Dagcoin whitepaper,” 2015.
[8] S. Popov, “The tangle,” 2016.
[9] A. Back, “Hashcash - a denial of service counter-measure,” 2002.
[Online]. Available: http://www.hashcash.org/papers/hashcash.pdf
[10] C. LeMahieu, “Raiblocks,” 2014. [Online]. Available: https://github.
com/clemahieu/raiblocks
[11] D. J. Bernstein, N. Duif, T. Lange, P. Shwabe, and B.-Y. Yang,
“High-speed high-security signatures,” 2011. [Online]. Available:
http://ed25519.cr.yp.to/ed25519-20110926.pdf
[12] J.-P. Aumasson, S. Neves, Z. Wilcox-O’Hearn, and C. Winnerlein,
“Blake2: Simpler, smaller, fast as md5,” 2012. [Online]. Available:
https://blake2.net/blake2.pdf
[13] A. Biryukov, D. Dinu, and D. Khovratovich, “Argon2: The memory-hard
function for password hashing and other applications,” 2015. [Online].
Available: https://password-hashing.net/argon2-specs.pdf