昨天聊天有人用NEO往錯誤地址轉賬丟錢了
我的第一反應是這不可能
Neo使用的地址帶有驗證功能
最下面ARPP….G6ce這一串是個base58編碼
把他解開就是17….151f7b5f這一串
紅色部分才是真正使用的地址(scripthash),藍色部分是驗證值。
從理論上來說,你是無法隨便敲一個地址就轉賬的,基本都是無效地址,驗證值肯定是錯的。
那麼讓我們先來試驗一下
首先是NEOGUI
我往Aeyx……723v這個地址轉賬
我故意把中間輸錯一點
確定按鈕灰掉了,說明neogui做了這個驗證,沒有問題。
然後是藍鯨濤,我在藍鯨濤故意輸入了個錯地址
居然還是打勾的,
我的一個NEO沒了
(此BUG已經通知藍鯨濤方面,很快就會修復,這個介面如果輸入了錯誤地址,將會有提示,無法確認)
讓我們去看看究竟發生了什麼
根據理論這個不合法地址根本不可能在鏈上找到
我在鏈上找到了這筆交易
和我預計的一樣,地址其實變了
我轉到的錯誤地址是
ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6cd
實際轉到的地址是
ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6ce
注意尾部,是不一樣的
讓我們再拿出這張圖來分析,因為尾部資料是驗證碼。
如果不顧驗證碼暴力取出地址script_hash,再次生成地址字串的時候,尾部驗證碼會不同.
也就是說:
如果你使用一個未驗證過地址字串的客戶端,轉向一個錯誤地址。
其實是不可能的。
是因為客戶端的bug,實際上把你帶到了一個另一個地址。
比如你向ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6cd(無效地址)轉賬
實際會轉到ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6ce(有效地址)
這屬於錢包客戶端bug,我沒有去測試所有的客戶端,大家有興趣可以去測試。
放心,一旦坐實這個bug,你找他們把你的NEO退回來就有理有據有節了。
最應該關注地址的尾巴,因為你不可能轉向一個錯誤地址,他會把你帶到一個相似地址。
作者:李劍英
原文連結:www.cnblogs.com/crazylights…