¿Qué es el 0x que veo alrededor de Ethereum? Por ejemplo, veo direcciones que comienzan con 0x

Veo que varias cosas en Ethereum comienzan con 0x, por ejemplo, direcciones. Otros ejemplos están en la consola Geth, JSON-RPC, web3.js. ¿Qué es el 0x y cuál es su propósito?

Respuestas (1)

El prefijo "0x" significa hexadecimal y es una forma de decirle a los programas, contratos, API que la entrada debe interpretarse como un número hexadecimal (lo acortaremos a hexadecimal).

Por ejemplo, el número (decimal) 18 es "12" en hexadecimal. Para eliminar una posible confusión con el número 12, agregar 0x al principio deja en claro que 0x12 es hexadecimal.

Hex es menos amigable para los humanos en algunos aspectos, pero ayuda en otros, por ejemplo, hexadecimal es una forma más corta de expresar números grandes.

La dirección de Ethereum que tienes es solo un número, pero "detrás" tienes una clave privada para que solo tú puedas gastar tu ether. Los contratos también tienen una dirección. Todos se pueden convertir a números decimales, pruébalo y verás que los números decimales son mucho más largos: imagina cuánto más difícil sería mirar a los exploradores de blockchain si estuvieran usando números decimales en lugar de hexadecimales.

Entonces, el propósito de 0x es principalmente decirle a los programas que la entrada es hexadecimal. Pero 0x también puede decirles a los humanos que lo que están leyendo es hexadecimal. Dado que las direcciones y los hashes de transacciones se muestran en hexadecimal, los exploradores de blockchain podrían poner 0x en todas partes para dejar más claro que son hexadecimales. Pero dado que los usuarios habituales no necesitan saber realmente si una dirección es hexadecimal o no, los exploradores los omiten en sus interfaces de usuario. Sin embargo, para los resultados de API, es posible que se requiera el uso de 0x: cuando Geth devuelve su saldo como 0x12, eso es para dejar en claro que su saldo es en realidad 18 wei.

Una nota más: algunos datos, como el saldo, pueden tener más sentido como un número decimal, por lo que siempre que se presente como hexadecimal, se debe usar el 0x. Pero datos tales como direcciones y hash de transacciones tienen poco sentido si se proporcionan como un número decimal. Dado que la única forma práctica de proporcionarlos es en hexadecimal, puede omitir el 0x. Por ejemplo, intente proporcionar un hash de transacción con y sin 0x a la eth.getTransactionAPI en Geth y obtendrá los mismos resultados.