主页 > imtoken钱包官方苹果 > 为什么以太坊钱包地址大小写不一?

为什么以太坊钱包地址大小写不一?

imtoken钱包官方苹果 2023-03-12 05:28:32

不知道大家有没有注意到,无论是ImToken/Metamask还是交易所,钱包地址都是大小写混合的:

在这里插入图片描述

但是如果你在 etherscan 上查找交易信息比特币地址多少位数,所有地址都是小写的。两者有什么区别?其中隐藏着什么奥秘?

比特币地址多少位数

在以太坊上,钱包地址是您资产的唯一标识符。但是钱包地址是20个字节40个字符长,几乎没人记得,很容易出错。如果你想把一些以太币转给朋友,他给你发了他的钱包地址,但不小心把其中一个字符写错了怎么办?你的以太币最终可能会进入一个“以太坊黑洞”比特币地址多少位数,一个没有人拥有私钥并且永远无法再次检索的地址。 . .

比特币没有这个问题,因为“校验和”信息包含在比特币地址中。为了弥补这一不足,以太坊引入了EIP55,用于验证以太坊地址的有效性。具体流程如下:

比特币地址多少位数

对应的代码如下:

from ethereum import utils
def checksum_encode(addr): # Takes a 20-byte binary address as input
    o = ''
    v = utils.big_endian_to_int(utils.sha3(addr.hex()))
    for i, c in enumerate(addr.hex()):
        if c in '0123456789':
            o += c
        else:
            o += c.upper() if (v & (2**(255 - 4*i))) else c.lower()
    return '0x'+o
def test(addrstr):
    assert(addrstr == checksum_encode(bytes.fromhex(addrstr[2:])))
test('0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed')
test('0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359')
test('0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB')
test('0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb')

比特币地址多少位数

注意:在上面的代码中,字符首先通过bytes.fromhex()传递。转换成十六进制数,再通过hex()转换回来,这样就得到了所有小写字母的地址。

据官网介绍,各种主流钱包都应用了该技术:(包括ImToken)

比特币地址多少位数

在这里插入图片描述

主要主流交易公司还增加了支持:

比特币地址多少位数

在这里插入图片描述

参考:

更多文章请关注“鑫鑫照明”专栏: