区块链应用的典型错误案例
时间: 2020-01-29来源:OSCHINA
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
区块链现在是热门的技术,每个人都在寻求用区块链解决各种各样的问题。自2017年我开始从事智能合约的安全审计以来,已经看到了太多错误的区块链用例。有些错误的区块链用例看起来符合逻辑并且也有益处,但是实际上其中存在着问题。本文将介绍存在8种典型的基于区块链的错误的解决方案,以期帮助开发者/投资者/客户更深刻地理解区块链技术的边界。 相关教程推荐: Hyperledger Fabric | Ethereum | Tendermint | Bitcoin | EOS
1、基于区块链的供应链管理
假设你订购了一批货物,承运人承诺了运输条件,例如保持你的货物处于冷藏状态。一种区块链应用解决方案是在货车上安装可以监视冷柜温度的传感器并定期将温度数据写入区块链,这样你就可以确信承运人所承诺的运输条件在整个过程中都得到满足。
这个区块链应用案例的问题不在区块链,而在于传感器。作为现实世界的一部分,传感器很容易被愚弄。例如,一个恶意的承运人可能只会启动货车中的一个小冷柜然后把传感器放进这个小冷柜,而把你的货物放在货车的没有冷藏环境的空间以节省成本。

我将这种问题定义为: 区块链不是物联网 。
在文本中我们将多次重温这一定义。虽然区块链不允许修改数据,但是它并不能保证数据是正确的。唯一的例外是链上交易,当系统不需要与现实世界交互时,才能保证基于区块链的系统能够验证数据,例如一个地址是否有足够的资金来处理交易。
从区块链外部向区块链提交信息的应用被称为预言机/Oracles。在预言机的解决方案完善之前,任何基于区块链的供应链管理,就像上面这样的冷鲜物流跟踪区块链应用,都是毫无意义的,就像没有可靠的引擎就去设计飞机一样徒劳。
我从这篇文章 你是否需要区块链? 借用了物流冷柜的区块链应用案例,也推荐你阅读该文并对下图深入思考区块链应用的合理性:

2、基于区块链的真品验证
虽然这个区块链应用案例类似于上面的供应链用例,但是我还是想单独列出来,因为它以一种不同的形式出现。
假设我们生的是产昂贵并且独一无二的商品,例如高级手表、葡萄酒或汽车。我们希望客户确信他们买到的东西确实是我们造的,因此我们将葡萄酒瓶关联到一个基于区块链的通证,并在瓶上印一个二维码。现在从我们的工厂到消费者的每一个环节(工厂、物流商、商店、消费者)都通过一个单独的区块链交易进行确认,因此消费者可以在线查看一瓶葡萄酒的历史轨迹。
然而,这个听起来相当不错的区块链应用案例却无法抵御非常简单的攻击:一个不良商人可以复制一个带通证的正品的酒瓶,然后用劣质葡萄酒罐装,或者换掉你的高级葡萄酒,卖给不关心是不是有通证验证的人。为什么会这么简单就被破解?是的,就是因为: 区块链不是物联网 。
酒瓶是现实世界中的物理对象,因此酒瓶可以被伪造,这一点和数字签名是不同的。
3、基于区块链的声明验证
让我们以大学毕业证书的验证为例来介绍这个区块链应用案例的背景。在这种区块链应用案例中,我们需要验证一个声明的真实性,例如:彼得是大学毕业生,而不是要验证一个物理对象的真实性。要确保文凭合规并且签发日期正确,我们需要检查数字签名和时间戳。
数字签名很好,有些人甚至将数字签名的基础 —— 非对称密码学 —— 称为20世纪最伟大的发明。但是我们不要将其与区块链混淆。实际上,数字签名在区块链之前很早就已经得以广泛应用了。要注意的是,现在数字签名常常与区块链捆绑在一起作为卖点。可能你需要的只是数字签名,一个区块链应用并不符合你的需求。
时间戳和区块链更接近一些。实际上,区块链本身就是最可靠的打时间戳的方法。你不需要发明任何新东西,只需要将数据的哈希写入比特币区块链。
将学生的毕业文凭数字化,然后由几个教授签名,最后将哈希写入比特币区块链,这是一个好的区块链应用案例吗?是的。不过,重要的是不要用中心化的验证手段,例如网站或手机app,因为那将会是这个区块链应用的一个致命故障点。
4、基于区块链的投票
投票也是一个流行的区块链应用案例。当谈到利用区块链投票时,我们需要首先清楚地了解这个区块链应用要解决的问题是什么。
投票作弊/投票人验证
要解决这个问题,我们需要的是数字签名而不是区块链。这里主要的问题与私钥有关:从哪里得到私钥以及如何存储私钥。相信不用我解释为什么不能由用户在自己设备生成私钥的系统是错误的,然而除此之外,代码开源以及正确地审计密钥生成软件、第三方硬件也同样重要,以确保用户可以正确处理私钥问题。
虽然一个区块链应用系统的开发者可以解决前两个问题,第三个则要难的多。比特币可以帮助我们学习如何使用密钥。实际上,丢失你的社交媒体账号的密码是一回事,但是丢失你的资产的私钥则要严重的多了。
再一次,是预言机/oracle将公钥与特定的个人关联起来,如果我们需要利用它投票的话。
公开计票
基本可以说以太坊智能合约可以很好地解决这个问题,因为它可以让每个人都看到某个候选人得到多少投票。不过在这个区块链应用案例中,开放程度有点过了,因为我们可以看到每个人地投票,因此可以影响他们。虽然系统可以设计成每个人只能看到自己的投票,但是这又有另一个更复杂的问题:只要投票人了解别人可以知道他的投票情况,投票人就会有压力。
这里还要重申,在这个区块链应用中,我们需要预言机来检查是否存在虚假的投票人的投票。
5、基于区块链的著作权验证
假设艺术家A希望利用区块链来注册他的一个作品。该艺术家拍摄了画作的照片,然后将照片哈希上传到区块链,然后他可以将照片贴到自己的博客里现在,如果艺术家B宣称这副作品是他创作的,艺术家A可以利用区块链上的哈希轻松地证明其著作权。
这个听起来蛮不错的区块链应用案例中存在两个潜在的问题: 首先,艺术家B可以说他不了解区块链,因此没有用区块链来登记其著作权。因此,只有当区块链著作权普及后这一流程才有益。 其次,艺术家B可以闯入艺术家A的工作室,拍摄作品的照片,然后在艺术家B 之前先将 照片的哈希传上区块链
原因在于: 区块链不是物联网
是的,总的来说,这个区块链应用案例是有价值的,然而,除了比特币区块链也不需要别的什么东西了。
注意,我说的只是著作权的证明,在我的理解中知识产权没有意义。
6、基于区块链的土地所有权登记
另一个常见的区块链应用案例是将基于区块链的通证与土地所有权关联,这里面至少有两个问题:
权威机构修改
虽然一个酒瓶/手表/汽车可以在个人之间转让,土地所有权和转让必须由监管机构登记,这通常需要实地走访你的土地。如果监管机构坚持你已经转让了土地,那么区块链记录会怎么样?第一个选项是:区块链记录依然表明你是土地的所有人,虽然这已经不符合实际情况了。第二个选项:权威机构生成自己的记录,因此覆盖了你之前的记录,这意味着区块链也没有起作用。这是一个非常重要的问题,因为区块链被宣称的一大优点就是保护你免于这种修改行为。
中心化的开发与支持
谁负责开发这样一个系统并提供支持?如果是监管机构自己或其合作伙伴负责,那么这样一个系统不是去中心化的。一个去中心化的协议再加上中心化的开发等同于中心化的协议。
此外,每次当有人向你推销区块链应用案例时,问问自己: 是不是用分布式数据库就够了?
如果答案是 YES ,那么为什么还要用区块链呢?实际上,区块链要慢的多,而且会消耗更多的资源。另外数据库开发和集成方面的专家成本要低的多,也更容易找到。
考虑到所有这些问题,我相信对于土地登记而言,一个分布式数据库是更好的选择,即使该系统的确需要更加可靠和开放。
实际上,看起来这个区块链应用案例已经成为了现实。Bitfury最近宣布其基于Exonum框架开发的区块链土地登记系统已经上线,并计划拓展到乌克兰和摩尔多瓦。非常奇怪的是,我没有找到该项目的任何技术资料,这表明出于某种原因Bitfury并不急于鼓吹这一项目。
7、基于区块链的银行间转账
根据之前的一些研究,这个应该算是一个好的区块链应用案例。银行间转账涉及到一组彼此并不信任的机构,利用区块链可以无需第三方可信机构的介入。虽然在这里可以使用比特币,银行也不会将其相互之间的支付活动公开化。因此我们需要一个私有的区块链,只有参与跨行转账的银行可以输入数据、运行节点并验证交易。
在功能方面,这样一个系统和具有访问控制的分布式数据库有区别吗?是的,的确有一些区别,但是只有当机构之前有分歧时才能看到区别之处。这里的问题在于:银行是认同系统提供的共识,还是更愿意诉诸法庭?如果银行可以选择第二个选项,那么这个系统就没有什么意义。
另外,如果立法机构禁止或限制这样的系统,或者要求法院不承认该系统的数据,那么这整个区块链应用案例也没有什么意义了。
8、为了代币而代币
是的,我要说的就是2019年的ICO。为了证明这种行为还在继续,提醒你别忘了在2019年1月28号,BitTorrent成功ICO。
我的意思是,有些创业公司通过发行代币给你分红权这种行为。问题还是在于: 区块链不是物联网
和风险投资或监管机构不同,区块链并不为投资者负责。代币形式的承诺并不能强制企业的创始人做任何事情。在这方面,ICO更像是众筹而非IPO。
虽然喜欢去中心化机构这个概念,我必须承认在这一领域几乎不存在这样的系统,这意味着你要么选择现有的工具,要么信任公司的创始人。
原文链接: 错误的区块链应用案例 — 汇智网
热门排行