昨天聊天有人用NEO往错误地址转账丢钱了

我的第一反应是这不可能

Neo使用的地址带有验证功能

clipboard.png

最下面ARPP….G6ce这一串是个base58编码

把他解开就是17….151f7b5f这一串

红色部分才是真正使用的地址(scripthash),蓝色部分是验证值。

从理论上来说,你是无法随便敲一个地址就转账的,基本都是无效地址,验证值肯定是错的。

那么让我们先来试验一下

clipboard.png

首先是NEOGUI

我往Aeyx……723v这个地址转账

我故意把中间输错一点

clipboard.png

clipboard.png

确定按钮灰掉了,说明neogui做了这个验证,没有问题。

然后是蓝鲸涛,我在蓝鲸涛故意输入了个错地址

clipboard.png

居然还是打勾的,

我的一个NEO没了

(此BUG已经通知蓝鲸涛方面,很快就会修复,这个界面如果输入了错误地址,将会有提示,无法确认)

让我们去看看究竟发生了什么

根据理论这个不合法地址根本不可能在链上找到

我在链上找到了这笔交易

clipboard.png

和我预计的一样,地址其实变了

我转到的错误地址是

ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6cd

实际转到的地址是

ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6ce

注意尾部,是不一样的

clipboard.png

让我们再拿出这张图来分析,因为尾部数据是验证码。

如果不顾验证码暴力取出地址script_hash,再次生成地址字符串的时候,尾部验证码会不同.

也就是说:

如果你使用一个未验证过地址字符串的客户端,转向一个错误地址。

其实是不可能的。

是因为客户端的bug,实际上把你带到了一个另一个地址。

比如你向ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6cd(无效地址)转账

实际会转到ARPPoLhqsEuEAEeMUXsULEYm6qHys1G6ce(有效地址)

这属于钱包客户端bug,我没有去测试所有的客户端,大家有兴趣可以去测试。

放心,一旦坐实这个bug,你找他们把你的NEO退回来就有理有据有节了。

最应该关注地址的尾巴,因为你不可能转向一个错误地址,他会把你带到一个相似地址。

作者:李剑英

原文链接:https://www.cnblogs.com/crazy...


NEO技术饭
24 声望5 粉丝

NEO是一个非盈利的社区化的区块链项目。它是利用区块链技术和数字身份进行资产数字化,利用智能合约对数字资产进行自动化管理,实现“智能经济”的一种分布式网络。


引用和评论

0 条评论