Addresses

EIP-55 如何證明一個字元串實際上是一個有效的乙太坊地址?

  • July 19, 2019

我想知道 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:])))

PS我已經檢查了herehere的答案,但沒有人回答我的確切問題。

“有效的乙太坊地址”是什麼意思?您可以將 ETH 發送到任何 20 個字節的序列,因此從這個意義上說,沒有無效地址。

EIP 55 所做的只是提供一個校驗和以檢測複製錯誤:更改數字將使校驗和無效。它沒有說明地址是否存在私鑰,是否有人擁有該地址的私鑰或智能合約是否位於該地址。

引用自:https://ethereum.stackexchange.com/questions/73099