前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >掌握这9大重点要素,智能合约开发不是事儿

掌握这9大重点要素,智能合约开发不是事儿

作者头像
区块链大本营
发布2018-10-19 17:24:38
5970
发布2018-10-19 17:24:38
举报
文章被收录于专栏:区块链大本营区块链大本营

本文详细分析了在智能合约开发过程中,需要考虑的9个重点因素,其中涉及数字货币的波动性、货币的时间价值、交易速度等等。虽然对于每一个因素,没有提供对应的操作细则。但是,相信对于你开发智能合约,会有很大的启发。

作者 | Michael Barnard

译者 | 王俊杰

编辑 | 科科

智能合约专注于在区块链平台上提供分布式应用,这很可能会颠覆现有的很多产业。虽然智能合约有很大的潜力,但同时也有很多问题需要克服。

很多商业应用是针对于基于数字货币的智能合约功能,也就是作为合约资金托管来使用,其中智能合约本身就作为可信第三方,来持有即将交易的资金。如果合约中的条例满足了,那么交易就成功。如果合约中的条例没有满足,那么资金就退回给买方。而对于任何智能合约的开发,其中都有九个因素需要重点进行评估。

1. 缓解数字货币的波动性所带来的风险

2. 考虑货币的时间价值

3. 解决交易速度慢的问题

4. 控制交易费用

5. 激励多方的参与

6. 消除违约成本

7. 制定罚则条款

8. 平衡交易双方的利益

9. 审核不良合约

01

缓解数字货币的波动性所带来的风险

数字货币的波动性会导致赫思塔特风险,而赫思塔特风险或者说清算风险是指,在合约锁定了特定数量的某种货币后,其中的汇率会发生变化

这种变化会给交易双方带来什么风险呢?如果汇率上涨,那么买方则需要支付更多的费用;相反,如果汇率下跌,那么卖方收到的款项就会变少。而且,货币的波动性越大,离清算的时间越长,那么其中的风险就越大。

这个问题对于数字货币来说更为严重,因为数字货币和发达国家的法币比起来,波动性很高。根据历史数据来说,发达国家的法币汇率可能几年才会变化几个百分点。而大多数的数字货币并没有很多的历史数据可参看,所以很难评估。并且,数字货币很容易受到政策的影响。因此,数字货币的波动性有时候可能会非常大。

从赫思塔特风险角度来看的话,数字货币缺乏历史数据以及容易受政策影响,这两种情况会造成很大的风险。对于这种风险,很多稳定的货币可以很容易通过对冲的方法来解决,不过,对于数字货币来说,目前还无法做到。

但是,数字货币还是可以使用对冲的方法来缓解风险智能合约可以设定成对标外部法币的利率,例如将稳定美元的汇率和波动的以太坊对标,这可以通过外部的程序把汇率作为变量整合到智能合约中来实现,或者持续将汇率信息输入到区块链的智能合约。智能合约中的数字资产价格可以根据签署时约定的兑换率计价为等值的美元,然后付款的金额,就是与约定的美元数值等价的以太坊。如此,资金委托账户就必须要通过承受这些数字货币的波动来进行对冲保值。

举一个例子来说吧,你现在想找技术开发人员做一个电子商务支付系统,然后添加到你的网站上。开发人员告诉你,这个项目需要一个月的时间,并且费用是2000美金。你对此表示同意,并且使用以太坊智能合约来进行交易。于是,你们双方达成协议,并且约定最大的波动范围是从下跌50%到上涨100%。如果使用400美金作为以太坊的价格,那么最初你需要支付5个以太坊。但是根据你们约定的波动幅度,你真实需要支付的以太坊数量是从2.5个到10个之间,因此你需要向智能合约托管系统中充入10个以太坊。

在经过一个月过后,最终会出现这样一些结果:

  • 开发人员没有如期完成电子商务系统,那么智能合约返回你10 ETH;
  • 电子商务系统已经完成,并且已经整合到你的网站中。如果当时ETH/USD的兑换率是200美金,那么智能合约就会把所有的ETH转给技术开发人员;
  • 如果ETH/USD的兑换率是800美金,智能合约会把2.5ETH转给技术开发人员,然后把剩下的7.5ETH转回给你;
  • 如果ETH/USD的兑换率是400美金,智能合约会把5ETH转给技术开发人员,然后把剩下的5ETH转回给你;
  • 如果ETH/USD的兑换率是1000美金。智能合约会把2ETH转给技术开发人员,然后把剩下的8ETH转回给你。

从这些情况中,我们可以发现风险被对冲了。但是有没有特殊情况呢?可以看一下下面这个案例,非常有意思。

如果ETH/USD的兑换率是100美金,现在托管账户中只有1000美金等值的ETH,这将会导致什么情况?

一种情况是,假设开发人员可以在电子商务软件中加入许可密钥,当智能合约托管系统中有了2000美元等值ETH后,才会让你启用这个系统。那么现在你面临一个选择,在你已经投入了4000美金,你是否还继续投入另外的1000美金?

另外一种情况,对于开发人员来说,他可以选择接受赫思塔特风险,然后获得合约中的付款。但是,最终的结果是你支付了4000美元等值的ETH,由于数字货币的波动性,开发人员只收到了1000美金

显然,通过上面这个特殊的案例可以看出,在进行智能合约开发时,数字货币的波动范围,是你需要考虑的一个非常重要的因素

02

考虑货币的时间价值

货币的时间价值,是智能合约中存在的另一个重要问题。像大公司都会有自己的首席财务官,通常采用月结30天的方式,尽可能将回款周期缩短。

对于月结30天方式的意思是,在一个月结合约中,你需要在30天内发货,买方需要在收到货后30天内进行支付。而很多月结30天的条例中会有这样的条件,如果你提前支付,比如在10天内支付,那么对于交易款项就有2%的折扣。在很多几个月的长周期合约中,销售方会和买方通过这种方式协商,从而可以每个月都收到回款,由此来提高货币的时间价值。但是买方则会尽量拖延,从而提高他们的货币时间价值。

不过在智能合约中比较特殊,你必须要在签署合约的时候就把资金放入托管系统,也就是需要提前60天拿出所有资金。而且由于赫思塔特风险,买方大概率会投入比预期更多的资金,甚至会翻倍投入。

通过以上的假设,这意味着你的这些资金在2个月内不会获得回报。这有利于卖方,却不利于买方。而且这种情况也假设了你手上有足够的现金,并且没有承担其他的风险,比如向银行借贷的风险。

因此,在开发智能合约时,货币的时间价值也必须在你考虑的因素之内。

03

解决交易速度慢的问题

交易速度是一个老生常谈的问题,虽然像以太坊的分片、Plasma等扩容方案都取得了不错的进展,但是对于现在的智能合约来说,还并不适用于电子商务的应用。比如当你在淘宝上购买东西,交易系统毫无压力。对于区块链来说就不一样了,比特币转账需要花费10分钟,而以太坊最好的情况下每秒转账也只有15笔。同时,这也不能保证你的转账信息会在下个区块,如果网络拥堵的话则需要花费几小时才能转账成功,但用户并不想去过多地等待。

所以,由于交易速度的问题,很多场景是无法使用智能合约的。

04

控制交易费用

数字货币交易的费用对于小额交易来说并不算少,如果购买咖啡花费3美金,但是却需要花费1美金来作为手续费,你肯定是无法接受的吧。而目前,通过微信支付等方式,基本上是零手续费。所以,数字货币目前还不适合商店小额的转账。

由于通过智能合约,货币失去了时间价值,并且还有赫思塔特风险的存在,如果我在智能合约中作为买方,能否让卖家来承担所有的转账费用?我只能说太天真了,很多的智能合约不会给买家这个选项,因为智能合约是由卖方设定的。

当然,并不是所有的转账都需要手续费。但是,如果你给予足够的手续费,就更能保证你的转账信息会进入一个区块。这些是整个加密经济学的组成部分,这也是为什么很多机构都想要掌控挖矿的算力。

所以,你在开发智能合约时,从买方的角度来思考,我为什么要使用你的智能合约?使用你的智能合约会不会产生过高的交易费用等等。

05

激励多方的参与

智能合约其中的一个好处就是,可以减少第三方的介入。因为如果有第三方,那么整个交易就会变得更加复杂。任何合约如果有多方介入,那么都会让其变得更加复杂。

但是,不是说智能合约就不要第三方介入了。一般来说,整个合约交易中,每两个参与方之间都需要有第三方的参与。不过,整体来说,并不是只需要单个第三方服务。

所以,在这种尽量减少第三方的参与,同时又需要第三方参与的情况下,如何激励其他人参与?并掌握其中的度,是在智能合约开发过程中需要考虑的一个问题。

06

消除违约成本

违约成本在智能合约中,对于卖方是很大的好处,但是对于买方没有直接的优势。

月结30天合约中,卖方需要给买方发票。如果买方不进行支付,那么卖方就需要催讨货款。如果买方一直不给,那么卖方就需要把买方告上法庭,从而才能拿回余款。

从定义上来看,托管合约是保护卖方的,而不是买方。所有买方的资金都被托管了,而卖方却没有。卖方的款项是可以保证的,而且买方没有方法去违约,除非卖方没有满足合约中的条件。这样,通过智能合约,买卖双方之间就不需要进行民事诉讼了。

不过,买卖双方之间的条件就一定要考虑清楚了,避免合约开发中出现一些含糊或者矛盾的地方。

07

制定罚则条款

罚则条款就是用来保护买家的啦。如果买家需要在特定地点和时间购买某种产品和服务,那么智能合约就会很有用。

试想下,有的场景中需要将产品及时运送到建筑工地和制造工厂。这时候,买家必须更早预定库存,然后在需要用的时候取出。如果需要的货物迟到了,那么整个工期就会受到影响,这也会影响他们的交付和现金流。因此,包含惩罚细则的智能合约可以自动惩罚货物迟到的情况。

在智能合约中,就要制定清楚惩罚条款触发的条件,以及相应的惩罚措施。

08

平衡交易双方的利益

智能合约是非常实用的工具,因为你不用去信任支付宝等第三方机构,而是信任编写代码的程序员。

不过,智能合约在设计的时候其实也很容易留下漏洞,试想下在不可篡改的智能合约中,本来定义的是如果没有发货就不支付,但是现在却自动进行支付了。除非你去看并且理解了代码,不然你永远不会发现这些问题的根本原因。

所以,在设计智能合约时,买卖双方和双方律师都要确保其中的条款是尽量符合双方的利益。例如,大型的咨询合约在受到管理层和律师的同意之前是不会发布的。除了律师,智能合约的设计开发也需要将程序员包含在内。

而最终可信、复杂和可配置的智能合约系统,应该是让用户选择条款,并且识别第三方。

09

审核不良合约

在现实生活中,如果商业合约变为不良,可以通过小型法庭,解决买卖双方的争端。不管发生什么情况,都可以找到相关法律。

但是在智能合约中,就不一样了。很可能这些资金进入托管,然后就再也出不来了。智能合约的意义在于保证双方资金的安全。但是如果由于程序出错,合约没有完成会怎么样?这种情况下,资金可能会锁定在智能合约中,然后再也无法取出。所以,智能合约审核是非常必要的。

好啦,9个因素就说完了。希望在你开发智能合约时,能够擦起你思维的小火花!

原文链接: https://hackernoon.com/blockchain-smart-contracts-avoid-the-pitfalls-6acc4104d739

--【完】--

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 区块链大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档