Mist

升級 Mist 後,乙太地址中的一些字元已更改為大寫字母

  • May 2, 2018

我最近將 Mist 從 0.3.9 升級到了 0.5.0。我注意到我的公共地址中某些字元的大小寫發生了變化。這是正常的嗎?

Mist ( https://github.com/ethereum/mist/pull/201 )中引入了基本的向後兼容地址校驗和機制,根據地址本身,一些字元大寫,而另一些則不大寫。

如果所有字元都是大寫或小寫,Mist 假定它是一個非校驗和地址以實現向後兼容性。另一方面,如果有些是大寫的,有些是小寫的,那麼 Mist 會根據自己如何將該地址大寫來驗證大寫。如果它們匹配,則該地址被認為是有效的。

有關此 reddit 文章的更多資訊:https ://www.reddit.com/r/ethereum/comments/470s3q/vitalik_made_a_very_clever_backwards_compatible/

我認為這實際上並不重要。大寫用於可選校驗和。校驗和機制被編碼在包含大寫的地址變化中。如果特定地址僅包含小寫字母,則無法檢查特定地址的有效性。但是,任何一種變體都可以作為地址正常工作。事實上,你甚至可以隨機大寫或小寫字母,它仍然可以正常工作!(但不要將前綴“0x”大寫)

如果您有興趣,這就是校驗和的工作方式:

以小寫地址開頭,去掉前綴 0x。sha3 hash 字母串 改變hash的第n個字母對應的地址字母的大小寫遵循以下規則 0/1/2/3/4/5/6/7 → 小寫8/9/a/b/ c/d/e/f → 大寫

基本上,您對原始地址進行 sha3 雜湊處理,刪除了 0x,並檢查 sha3 雜湊結果的每個第 N 個字元。如果第 N 個字元是從 0 到 7,則地址中對應的第 N 個字元是小寫的。另一方面,如果第 N 個字元是 8-9 或 af,則地址中對應的第 N 個字元是大寫的。

來源: https ://cryptoverze.com/question/are-ethereum-addresses-case-sensitive/

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