Addresses
EIP-55 如何證明一個字元串實際上是一個有效的乙太坊地址?
我想知道 EIP 55 檢查如何證明一個地址實際上是一個乙太坊地址,或者它是否證明了這一點?
我是否遺漏了 EIP 55 以下 Vitalik 程式碼中的一個明顯點?
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:])))
“有效的乙太坊地址”是什麼意思?您可以將 ETH 發送到任何 20 個字節的序列,因此從這個意義上說,沒有無效地址。
EIP 55 所做的只是提供一個校驗和以檢測複製錯誤:更改數字將使校驗和無效。它沒有說明地址是否存在私鑰,是否有人擁有該地址的私鑰或智能合約是否位於該地址。