以太坊智能合约开发的见解

作者|刘扬 2018-10-19 17:51:00 281

关于作者:  作者David Balaban是一名计算机安全研究员,在恶意软件分析和防病毒软件评估方面拥有超过15年的经验。 

(比特数字译)你们中的许多人可能质疑区块链的有用性,特别是以太坊。你们中的一些人可能在你们的好奇心驱使下滋生越来越多问题,并且遇到了许多奇特的特征,例如权力下放,透明度,没有中间人的信任以及黑客抵制。这很了不起,不是吗?肯定是,但......

在目前的状态下,区块链是完成一系列任务的完美匹配,除非你考虑“添加一些纳米技术以获得令人惊叹的效果”作为一项任务 - 事实上,你可以调整几乎任何东西以符合这个目标。当然,一开始就需要做一些事情,各种实验有助于了解潜力并显示需求的位置,意外的死胡同,以及缺点并不像预测的那样严重。但是,您确实需要了解边界,以便做出明智的决定,是否有理由在特定情况下尝试跨越它们。

顺便说一下,以太坊并不是唯一且最好的选择。也许,区块链是实现目标的正确工具,尽管是不同类型的区块链。然而,我们将暗示“以太坊”,因为我们在本文中进一步提到“区块链”。

让我们尝试概述区块链和智能合约的特征,这些特征使得解决表面上有希望的任务的过程完全无效或不可能。我想从一开始就指出下面的特征是一般化的,因此对于特定的用例可能仍然存在相当可行的解决方案。因此,在开始项目之前,您应该将此列表视为以太坊的弱点集合。

  1. 高进入壁垒

如果您的观众包括普通用户而不是区块链爱好者,那么很少有人会费心为您提供解决方案。试想一下 - 他们不仅需要在节点上安装MetaMask或Mist,而且他们还需要购买一些Ether,这对于初学者来说是一个非常重要的过程。因此,如果你想要覆盖最多的观众,那么到目前为止,以太坊并不是正确的选择。例如,仅基于智能合约创建在线商店可能是个坏主意。

该怎么办?

  • 提供超出不便的好处。

  • 针对具有该主题的一些专业知识给观众。

  • 通过将区块链逻辑移动到后端来混淆区块链逻辑是有意义的。

  1. 分散的集中化

无论你如何分割它,区块链都很棒,因为即使参与者根本不相互信任它也能运作。但是,只要用户是其私钥的唯一所有者,此标志才适用。这是签署交易和从其地址做其他事情的主要先决条件。如果区块链逻辑位于后端会发生什么?密钥以集中方式使用,并且没有机制来避免未被用户批准的事务。因此,剩下要做的就是希望服务器足够安全并得到适当的维护。

该怎么办?

  • 了解您是否需要透明度和不变性,或者是否需要操纵加密货币。如果不这样做,使用常规数据库会更经济,更方便。

  • 详细说明您的运营机制,以确保技术保障。

  1. 所有数据都是公开的

无论如何编写智能合约,感兴趣的一方都可以根据需要检索其中任何数据字段的值。这同样适用于交易历史。因此,如果您记录并保留有关用户的任何个人身份信息,例如他们的电子邮件地址和姓名,那么这些用户所做的一切都是公开访问的。因此,您可能必须使用某种类型的加密。如果是这样,它的密钥必须存储在接收方的末端,这意味着用户再次必须信任第三方的个人数据。使用普通的私有存储来保持或多或少的敏感信息可能是一个更好的主意。如果你打算制定基于区块链的合同,那么你可能会损失超过你的收益。

该怎么办?

  • 了解您的智能合约逻辑是否需要用户的个人数据。如果是,请考虑利用哈希而不是适当的数据。

  1. 区块链不是超级计算机

有些人可能会觉得矿工利用巨大的处理能力进行良性计算,但这是一种误解。让我直截了当:以太坊的生产力类似于嵌入式系统的生产力,因为它涉及有限的资源,有限的内存量和有限的“固件”(合同字节代码)。因此,最大的非关键计算应该在链外移动。这就是为什么在智能合约或加密等事情中执行复杂数据分析几乎不可行的原因。

该怎么办?

  • 不要使用区块链进行任何类型的计算。

  • 如果您需要进行与区块链相关的计算,请考虑利用Oraclize的计算功能

  1. 区块链不是通用存储

有些人认为区块链可用于存储信息或文档。在这方面需要注意的是:首先,以这种方式存储数据是昂贵的; 其次,区块链与搜索之类的东西并不相符 - 您需要将密钥值映射到位,这会为每个条目增加一些额外成本,或者您必须手动查找感兴趣的信息。此外,没有权限管理。因此,用区块链替换传统数据库没有多大意义,除非您确切知道为什么需要它。在存储特定文件时,请记住公共可访问性方面:如果您存储IPFS链接,每个人都会看到它并可以下载您保存的所有内容。长话短说,如果您要在区块链上存储个人照片,请三思而后行。

该怎么办?

  • 你最好只是存储一个哈希来验证离线存储的所有东西。

  • 仅存储智能合约工作逻辑所需的数据。

  1. 将区块链与现实世界联系起来

区块链本身可以轻松发送硬币/代币,但如何发送你为他们购买的东西?即使它是一个文件,如何在不涉及第三方的情况下验证发送它的事实?这是一个快速的答案:它不是太容易,因为我们假设双方都想欺骗对方,所以我们需要一堆验证以及加密和解密的实例。如果存在争议,您根本不能没有离线计算或裁判。

很明显,对于实体商品或服务而言,整个过程将变得更加复杂,因为有人需要输入大致来说已收到货物的信息。此人不是利益方,这意味着他或她是我们应该信任的第三方。在这种情况下,我们的区块链解决方案以此裁判的形式存在薄弱环节。此外,鉴于我们可能信任该人,为什么不信任他或她与其他一切,例如,托管一个常规数据库并付款?这是在开始区块链计划之前应该问自己的一个基本问题。例如,我真的不明白您提供的令牌在离线商店中交换折扣的用途。

该怎么办?

  • 给自己一个明确的答案为什么集中逻辑不合适。如果你做不到,那就放弃你的区块链想法吧。

  1. 总是存在人为错误的可能性

如果您错误地将钱转移给了错误的人,或者您的银行帐户被黑了,您可以提交技术支持票,并且有时间取消或回滚交易。使用智能合约,您无法手动执行代码未涵盖的事项。这再次使我们有必要聘请一名裁判员,他将拥有巨大的特权,使整个解决方案几乎集中化。

该怎么办?

  • 在适当的情况下,在智能合约中实施人工延迟的资金转移。

  1. 交易需要时间

如果您的动态系统具有基于它们的永久改变的状态和逻辑,那么等待时间很可能会让您不满意。例如,在以太坊中,正常的交易验证时间是半分钟甚至更长。即使您的解决方案不是一个额外的几秒钟,您仍应考虑无限期事务超时的可能性并定义足够的时间间隔。因此,到目前为止,像扑克这样的游戏要么完全不可能在以太坊智能合约的基础上创建,要么它们可能非常原始并需要强调脱链逻辑。

该怎么办?

  • 如果您打算经常查询区块链,以太坊可能不是完美的匹配,也许您不应该仅仅将区块限制在区块链中。

  • 如果可能,将多个事务合并为一个,执行部分离线逻辑。

  • 在最坏的情况下,您可以在适当的时候提高gas价格(执行操作的费用)。

  • 如果交易需要很长时间才能完成,您可以指示更高的价格并重新提交(交易必须保持不变,包括nonce值)。这样,较高的价格将取代较低的价格。

  1. 到目前为止,审查规避并不完美

如果您要使用区块链来抵制政府或类似的事情,请记住,即使Web服务基于区块链,它仍然是一个集中的实体。换句话说,域名或IP地址仍然很容易阻止,用户必须知道镜像地址或查找VPN服务。好处是您不必进行数据库备份,并且通过了解以太坊网络中的地址,您始终可以通过较少用户友好的技术获取访问权限,例如Mist,MyEtherWallet,Etherscan等。但是,审查仍然是一个问题。

该怎么办?

  • 抵御阻力绝对是一个好处,但你不应该仅根据这个事实决定使用区块链。

有哪些替代方案?

有很多。其他区块链和非区块链解决方案可以牺牲其分散,开放或无限的用户受众,以换取更高的交易速度,可靠的隐私保护等。例子包括EOS,基于Hyperledger,Exonum,Hashgraph,Corda等的解决方案。不过,流行的品牌名称仍然是一个重要因素。这意味着有庞大的用户群,大量的应用程序,数据管理和开发工具,以及严格的测试机制。所有这些都是以太坊的优势。时间将证明Casper和Sharding的事情是否成功。

那不好吗?

贯穿以上所有要点的根本问题是有意识地选择区块链。该技术应该解决一个问题。将区块链集成到已经解决的任务中不太可能使解决方案更有效。例如,如果您是赌博业务的新玩家并想要推出赌场,那么您的主要关注点是为自己赢得声誉,表现出正直并吸引用户群。通过提供基于以太坊的解决方案,您至少可以在理论上保证客户的透明度,尽管很少有人会在开始玩之前审核您的智能合约。通过这种方式,您还可以吸引拥有备用加密货币资产的人以及使用它的大量功能。在某种程度上,实现了目标。

另一方面,如果您打算将区块链添加到信使的架构中,那么您可能无法解决任何问题,例如审查和隐私风险。相反,你会得到新的问题。

找到更好的用例可能是不久的将来,当用户群增长并且购买加密货币变得比现在更容易。但是,一般来说,考虑以下应用程序域是有意义的:

  1. 官僚和耗时的过程,例如国外汇款和繁琐的文书工作。

  2. 基于对平台的信任的流程,包括慈善基金和赌场。

  3. 管理各种领域或不相关公司使用的数据:旅游经营者,贷款历史和各种黑名单。

  4. 控制本质上不值得信任的流程,例如投票和筹款。

任务属于这些类别之一的事实并不一定意味着区块链将完美地融入其中。您应该始终掌握其他更优化的技术所能提供的功能。您的思路应该集中在解决特定问题,而不是将区块链嵌入到您的活动中.

  • 收藏

相关推荐

评论

最新评论

热门文章

世界银行区块链债券提供关键见解

世界银行区块链债券提供关键见解