昨天聊天有人用NEO往錯誤地址轉帳丟錢了html
個人第一反應是這不可能測試
Neo使用的地址帶有驗證功能ui
最下面ARPP….G6ce這一串是個base58編碼編碼
把他解開就是17….151f7b5f這一串spa
紅色部分纔是真正使用的地址(scripthash),藍色部分是驗證值。3d
那麼讓咱們先來試驗一下htm
首先是NEOGUIblog
我往Aeyx……723v這個地址轉帳ip
我故意把中間輸錯一點字符串
肯定按鈕灰掉了,說明neogui作了這個驗證,沒有問題。
而後是藍鯨濤,我在藍鯨濤故意輸入了個錯地址
竟然仍是打勾的,
個人一個NEO沒了
(此BUG已經通知藍鯨濤方面,很快就會修復,這個界面若是輸入了錯誤地址,將會有提示,沒法確認)
讓咱們去看看究竟發生了什麼
根據理論這個不合法地址根本不可能在鏈上找到
我在鏈上找到了這筆交易
和我預計的同樣,地址其實變了
我轉到的錯誤地址是
ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6cd
實際轉到的地址是
ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6ce
注意尾部,是不同的
讓咱們再拿出這張圖來分析,由於尾部數據是驗證碼。
若是不顧驗證碼暴力取出地址script_hash,再次生成地址字符串的時候,尾部驗證碼會不一樣.
也就是說:
若是你使用一個未驗證過地址字符串的客戶端,轉向一個錯誤地址。
實際上是不可能的。
是由於客戶端的bug,實際上把你帶到了一個另外一個地址。
好比你向ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6cd(無效地址)轉帳
實際會轉到ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6ce(有效地址)
這屬於錢包客戶端bug,我沒有去測試全部的客戶端,你們有興趣能夠去測試。
放心,一旦坐實這個bug,你找他們把你的NEO退回來就有理有據有節了。
最應該關注地址的尾巴,由於你不可能轉向一個錯誤地址,他會把你帶到一個類似地址。
做者:李劍英