是否有可能判斷一個地址是薄霧、mew 還是平價?
如何判斷地址是來自 Mist、MyEthereumWallet 還是 Parity?反正有知道的嗎?它們的編碼方式不同嗎?
TL; DR:有點。
正如上面 Ismael 所指出的,密鑰是隨機的,所有客戶端都遵循相同的基本標準,這意味著能夠判斷地址是由哪個客戶端生成的並不是地址的預期功能。從網路的角度來看,所有地址都是平等的,並且不包含關於它們來自何處的元數據。
然而,這還不是全部。如果您在網路上四處逛逛,您會注意到大量以“0x00”開頭的帳戶,例如:
“0x00A85d2d62E1851ad5702e31619B10c7E4308522”
這可能是隨機發生的,當您生成帳戶地址時,大約有 256 分之一的機會在您的帳戶地址的開頭隨機獲得兩個十六進制零。但是Parity 和 CPP-Ethereum 客戶實際上是故意創建所有這樣的帳戶,以便它們足夠短,可以與國際銀行帳號或 IBAN 系統一起使用。某些其他庫也“兼容 IBAN”。並非所有以兩個零開頭的地址都是由 Parity 或其他庫創建的,但除非是故意這樣做,否則 256 個帳戶中只有 1 個會以這種方式開始。 因此,大多數以兩個零開頭的地址都是由 Parity、CPP-Ethereum 或與 IBAN 兼容的庫之一創建的。
而這僅僅是個開始!預設情況下,Mist 部署了一個特定的“錢包合約”,使用者將他們的資金和代幣儲存在其中,而不是直接將它們儲存在由他們的私鑰控制的帳戶中。該合約的部署和程式碼是公開可見的,是使用者使用 Mist 的有力指標。
此外,不同的客戶有不同的方式來決定設置什麼費用。一些客戶使用一定的市場費率來確定應該在不斷變化的基礎上收取哪些費用,而另一些客戶只使用固定費用反複使用,或者允許使用者設置自己的費用。同樣,這可以提供一些證據,證明使用者正在使用哪個錢包軟體來發送交易。其他類型的元數據可以允許收集更多資訊(儘管不像比特幣那樣,UTXO 系統可以由許多不同的客戶端以多種不同的方式處理)。
將所有這些東西結合在一起,實際上有一個合理的機會可以確定給定地址是由哪個客戶端/錢包創建的!
總結一下:
- 不,每個客戶端的地址編碼沒有任何不同
- 大多數但不是所有以“0x00”開頭的地址是由 Parity、CPP-Ethereum 或某些特定的“IBAN 兼容”庫生成的
- Mist 預設為使用者部署某種“錢包合約”,其程式碼在區塊鏈中可見
- 交易中無意包含的費用和其他資訊通常可以提供有關使用者正在使用哪個錢包軟體的進一步線索
- 收集此類資訊有時可以告訴您使用者正在使用哪個客戶端/錢包。