智能合約專注於在區塊鏈平臺上提供分佈式應用,這很可能會顛覆現有的很多產業。雖然智能合約有很大的潛力,但同時也有很多問題需要克服。

作者: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 個因素就說完了。希望在你開發智能合約時,能夠擦起你思維的小火花!

來源鏈接:hackernoon.com