¿La dirección de la billetera Ethereum distingue entre mayúsculas y minúsculas?

Envié una cierta cantidad de ETH a una billetera. Revisé el saldo de las carteras en la cadena de éter. Ingresé la dirección en el campo de búsqueda y noté que las versiones en minúsculas y mayúsculas de la dirección parecían funcionar.

Quería comprar unos cuantos dólares más, pero ahora no estoy seguro de si hay algún problema con la dirección que creé. Agradecería alguna orientación.

No, no distingue entre mayúsculas y minúsculas.

Respuestas (3)

Las direcciones de las carteras de Ethereum están en hexadecimal [0-9A-F]*. Si bien la dirección en sí no distingue entre mayúsculas y minúsculas ( Aes lo mismo aque la red), la distinción entre mayúsculas y minúsculas se usa como una suma de verificación (opcional). Fue construido como una ocurrencia tardía para un esquema de direccionamiento que carecía de validación de suma de comprobación básica.

https://github.com/ethereum/EIPs/issues/55#issuecomment-187159063

La suma de comprobación funciona así:

  1. dirección en minúsculas y eliminar el prefijo 0x
  2. resultado de hash sha3 del n. ° 1
  3. cambiar la enésima letra de la dirección según la enésima letra del hash:
  • 0,1,2,3,4,5,6,7 → Minúsculas
  • 8, 9, a, b, c, d, e, f → Mayúsculas

Entonces, sha3 hash la dirección y observa cada N-ésimo carácter del resultado sha. Si es 7 o inferior, el carácter N de la dirección es minúscula. Si es 8 o superior, ese carácter está en mayúscula.

(Traído de un antiguo foro de Ethereum cuyo enlace ahora está roto ).

Y el propósito de una suma de verificación es ayudar a asegurarse de que ingresó la dirección correctamente. Si no hubo verificación de mayúsculas y minúsculas, podría escribir accidentalmente "a" en lugar de "b" y enviarlo a la dirección incorrecta. Pero si accidentalmente escribe "a" en lugar de "B" (hay un 50% de posibilidades de que la letra esté en mayúscula), entonces su software de billetera / intercambio generará un error
En realidad es más que eso. Incluso si accidentalmente escribiera "a" en lugar de "b" en una dirección que de otro modo tendría una suma de verificación, se detectaría un error, porque el patrón de mayúsculas de las otras letras ahora no sería válido.
^ "Más que eso" (@CherryDT) se refiere a la probabilidad. la probabilidad de que un usuario escriba incorrectamente una "a" en lugar de una "b" sea detectado por esta suma de verificación de mayúsculas es superior al 50%. el uso de una a en lugar de una b no solo cambiará las mayúsculas del carácter actual, sino también los siguientes caracteres. por lo que la probabilidad de detectar el error será algo así como (1 - (0.5 * 0.5 * ... caracteres_restantes )), que se puede adivinar a 1 - número_muy_pequeño que es una alta probabilidad; como 99.x %

Las mayúsculas simplemente significan que la dirección tiene una suma de verificación. Debe usar la dirección en mayúsculas debido a esto, pero ambos funcionarán.

Para verificar, cualquier dirección que esté completamente en mayúsculas se puede convertir en una dirección de suma de verificación con mayúsculas correctas. Entonces, en ese sentido, las direcciones no distinguen entre mayúsculas y minúsculas: ambas direcciones son iguales. A diferencia, por ejemplo, del sistema de archivos unix/linux donde puede tener un archivo llamado 'Ethereum' y otro llamado 'ethereum' en el mismo directorio. ¿No es así?
@JorisBontje Creo que esta respuesta aún podría aclararse. Cambiar las letras a mayúsculas no le da a la dirección una suma de verificación.
que capitalization addresssignifica exactamente esta respuesta es un poco ambigua
Las mayúsculas le indican si la dirección se suma o no. Una dirección con mayúsculas y minúsculas se suma. Una dirección con cualquier otra mayúscula no tiene suma de verificación (por lo tanto, todo en minúsculas == sin suma de verificación, todo en mayúsculas == sin suma de verificación). Consulte eips.ethereum.org/EIPS/eip-55 .

Mira estos ejemplos:

> Web3.utils.toChecksumAddress("0x03fB09251eC05ee9Ca36c98644070B89111D4b3F".toLowerCase());
'0x03FB09251eC05ee9Ca36c98644070B89111D4b3F'
> Web3.utils.toChecksumAddress("0x03fB09251eC05ee9Ca36c98644070B89111D4b3f".toLowerCase());
'0x03FB09251eC05ee9Ca36c98644070B89111D4b3F'
> Web3.utils.toChecksumAddress("0x03fB09251eC05ee9Ca36c98644070B89111D4b3e".toLowerCase());
'0x03Fb09251ec05eE9CA36c98644070B89111D4b3e'
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3f".toLowerCase());
true
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3F".toLowerCase());
true
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3F");
true
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3f");
false
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3e");
false
> Web3.utils.isAddress("0x03FB09251eC05ee9Ca36c98644070B89111D4b3E");
false

Tenga en cuenta el último carácter;)