Sistema de direcciones Nebulas

El sistema de direcciones Nebulas fue diseñado cuidadosamente. Como puedes ver más abajo, las direcciones de cuentas y contratos inteligentes comienzan con una letra “n“.

Direcciones de cuentas

De una forma similar a Bitcoin y Ethereum, Nebulas adopta el algoritmo de curvas elípticas como su sistema básico de encriptación para las cuentas Nebulas. La dirección se deriva de una clave pública que a su vez deriva de una clave privada, encriptada con la contraseña del usuario. Además, nuestro diseño de checksum apunta a prevenir que un usuario accidentalmente envíe NAS a la cuenta incorrecta debido a un error de tipeo.

La fórmula específica de cálculo de direcciones es la siguiente:

1.  contenido = ripemd160(sha3_256(clave pública))
    longitud: 20 bytes
                         +--------+--------+------------------+
2.  checksum = sha3_256( |  0x19  +  0x57  |      contenido   | )[:4]
                         +--------+--------+------------------+
    longitud: 4 bytes

                        +--------+---------+-----------------+------------+
3.  dirección = base58( |    0x19  |  0x57   |     contenido |  checksum  | )
                        +--------+---------+-----------------+------------+
    longitud: 35 caracteres

0x57 es un type code de un byte que indica que la dirección es de una cuenta; 0x19 es un relleno de un byte.

En esta etapa, Nebulas adopta el estándar de codificación base58, similar al de Bitcoin.

Una dirección válida se ve así: n1TV3sU6jyzR4rJ1D7jCAmtVGSntJagXZHC.

Direcciones de contratos inteligentes

El cálculo de estas direcciones varía ligeramente del cálculo anterior. Para más información, véase contratos inteligentes y rpc.sendTransaction.

La fórmula específica de cálculo de contratos inteligentes es la siguiente:

1.  content = ripemd160(sha3_256(tx.from, tx.nonce))
    length: 20 bytes
                         +--------+--------+------------------+
2.  checksum = sha3_256( |  0x19  |  0x58  +      contenido   | )[:4]
                         +--------+--------+------------------+
    longitud: 4 bytes

                         +--------+---------+-----------------+------------+
3.  dirección = base58 ( |  0x19  |  0x58   |     contenido   |  checksum  | )
                         +--------+---------+-----------------+------------+
    longitud: 35 caracteres

0x58 es un type code de un byte que indica que la dirección es de un contrato inteligente; 0x19 es un relleno de un byte.

Una dirección de contrato inteligente válida es, por ejemplo: n1sLnoc7j57YfzAVP8tJ3yK5a2i56QrTDdK