以太坊智能合同發生錯誤
1. 以太坊的智能合約
智能合約是運行在計算機裡面的,用於保證讓參與方執行承諾的代碼,般情況下,普通合約上記錄了甲方與乙方各方面的關系條款,並通常是通過法律強制執行或保護的,而「智能合約」則是用密碼或密鑰來執行關系。以更加直接的角度來理解的話,即「智能合約」的程序內容將同-開始大家一起設定好的那樣百分百執行,並且零差錯。
舉個例子,以太坊用戶可以使用智能合約在特定日期向朋友發送10個以太幣。在這種情況下,用戶可以操作創建一個合約,然後將程序推人該合約中進行特殊計算,以便它能夠執行所需的命令。而以太坊就是專門把精力集中在這件事上的這么一個平台。
比特幣是第一個支持「智能契約」的資源幣種,因為網路的價值在於把價值或數據從一個點或人轉移到另一個點或人身上。節點網路只在滿足某些條件時才會進行驗證,但是,比特幣僅限於貨幣用例。相反,以大坊取代了比特幣那種帶有不小限制性的編程語言,取而代之的是一種允許開發人員編寫自己程序的語言。以太坊允許開發人員編寫他們自己的「智能契約」,即「自主代理」或「自治代理」,正如ETH白皮書所稱的那樣。該編程語言是「圖靈完備」語言,這意味著它支持一組更廣泛的計算指令。智能合約能做些什麼呢?
1.「多簽名」賬戶功能,只有在一定比例的人同意時才能使用資金。這個功能經常用在與眾籌或募捐類似的活動中。
2.管理用戶之間所簽訂的協議。例如,一方從另一方購買保險服務3.為其他合同提供實用程序。
4.存儲有關應用程序的信息,如「域注冊信息」或「會員信息記錄」。概念有時候比較晦澀,我們舉一個募捐的智能合約的例子來幫助理解:假設我們想向全網用戶發起募捐,那就可以先定義一個智能賬戶,它有三個狀態:當前募捐總量,捐款目標和被捐贈人的地址,然後給它定義兩個函數:接收募捐函數和捐款函數。
接收募捐函數每次收到發過來的轉賬請求,先核對下發送者是否有足夠多的錢(EVM會提供發送請求者的地址,程序可以通過地址獲取到該人當前的區塊鏈財務狀況),然後每次募捐麗數調用時,都會比較下當前募捐總量跟捐款目標的比較,如果超過目標,就把當前收到的捐款全部發送到指定的被捐款人地址,否則的話,就只更新當前募捐總量狀態值。
捐款函數將所有捐款發送到保存的被捐贈人地址,並且將當前捐款總量清零。每一個想要募捐的人,用自己的ETH地址向該智能賬戶發起一筆轉賬,並且指明了要調用接受其募捐函數。於是我們就有一個募捐智能合約了,人們可以往裡面捐款,達到限額後錢會自動發送到指定賬戶,全世界的礦工都在為這個合約進行計算和擔保,不再需要人去盯著看有沒有被挪用,這就是智能合約的魅力所在。
2. 以太坊如何處理用戶誤操作的問題
以太坊如何處理用戶誤操作的問題?
以太坊是一種基於區塊鏈技術的智能合約平台,可以讓用戶創建和執行智能合約。然而,由於智能合約的執行是不可逆的,如果用戶在操作過程中出現誤操作,可能導致無法撤銷的損失。因此,以太坊需要採取措施來處理用戶誤操作的問題。
一種常見的用戶誤操作是錯誤地發送代幣。以太坊採用的是基於賬戶的模型,每個賬戶都有自己的地址。如果用戶將代幣發送到錯誤的地址,就無法再將其取回,造成了不必要的損失。
為了避免這種情況的發生,以太坊推出了一種名為「ERC20」的代幣標准。該標准規定,所有符合要求的代幣都必須實現一組標准介面,以便能夠進行安全的交互。其中就包括了「接收者地址」的介面,讓代幣發送者在發送前能夠確保接收者地址的正確性,從而在一定程度上避免了誤操作造成的損失。
另一種用戶誤操作是過度支付礦工費用。以太坊是基於工作量證明的共識機制,需要礦工來驗證和打包交易。礦工會收取一定的礦工費用作為交易的處理費用,如果用戶設置的礦工費用過高,就會浪費不必要的成本。
為了解決這個問題,以太坊引入了名為「GasPrice」的機制。用戶可以在交易中指定礦工費用的上限,從而避免不必要的過度支付。
不過,盡管有上述措施,用戶誤操作仍然無法完全避免,因此,以太坊開發者和社區正在積極探索更好的解決方案。例如,有人提出了基於鏈下支付通道的方案,可以讓用戶在鏈上進行之前的支付監管,從而避免誤操作。還有一些團隊正在探索基於人工智慧的解決方案,利用機器學習等技術來識別並防止用戶誤操作。
總的來說,以太坊是一個日趨完善的智能合約平台,隨著技術的不斷發展和社區的不斷壯大,相信會有更多的解決方案出現,讓用戶能夠更加安全地使用以太坊。
3. 智能合約審計到底是什麼
智能合約審計就是仔細研究代碼的過程,在這里就是指在把Solidity合約部署到以太坊主網路中並使用之前發現錯誤、漏洞和風險;因為一旦發布,這些代碼將無法再被修改。這個定義僅僅是為了討論目的。
注意,審計不是驗證代碼安全的法律文件。沒有人能100%確保代碼不會在未來發生錯誤或產生漏洞。這僅僅是保證你的代碼已被專家校訂過,基本上是安全的。
討論可能的改進,主要是為了找出那些可能會危害到用戶的以太幣的風險和漏洞。
智能合約審計報告的結構:
免責聲明:在這里你會說審計不是一個具有法律約束力的文件,它不保證任何東西。這只是一個討論性質的文件。
審計概覽和優良特性:快速查看將被審計的智能合約並找到良好的實踐。
對合約的攻擊:在本節中,你將討論對合約的攻擊以及會產生的結果。這只是為了驗證它實際上是安全的。
合約中發現的嚴重漏洞:可能嚴重損害合約完整性的關鍵問題。那些會允許攻擊者竊取以太幣的嚴重問題。
合約中發現的中等漏洞:那些可能損害合約但危害有限的漏洞。比如一個允許人們修改隨機變數的錯誤。
低嚴重性的漏洞:這些問題並不會真正損害合約,並且可能已經存在於合約的已部署版本中。
逐行評註:在這部分中,你將分析那些具有潛在改進可能的最重要的語句行。
審計總結:你對合約的看法和關於審計的最終結論。
4. 智能合約除魅:它能避免俄羅斯違約和「鎳逼空」嗎
· 《文理兩開花》主播 ·
肖小跑: 《羊群的共識》作者,金融行業從業者及連續創業者,播客《牆裂壇》主播,公眾號「肖小跑」主理人。
王瑋: 數學和計算機學霸,兼通技術與金融。若干年前「all-in」區塊鏈領域,成為區塊鏈行業知名意見領袖之一。
「智能合約」這四個字似乎也是個「模因」了:這是一個在金融 科技 業界、甚至所有和 科技 、數字化相關行業中都會聽到的概念——一個「聽起來很厲害但並不知道到底是什麼」或者「不知道厲害在哪兒」的模因,反正這四個字代表了「 科技 進步」,都「智能」了還能不厲害么?
但它到底是什麼?能做什麼?不能做什麼?迫切需要智能合約專家用小白和文科生都能聽懂的語言來除魅。
正好最近在現實世界的金融市場上,也發生了幾件有趣的事:俄羅斯債券違約、還有金屬市場上的「鎳逼空事件」——所以我們乾脆做一個案例分析,現場來看看智能合約到底能不能解決這些現實世界中頭疼的問題。
· 本期提綱 ·
1、365度全景式「除魅」智能合約:它到底「智能」在哪兒?是一段代碼?一份合同?還是一個機器人?
2、它只能解決虛擬世界的問題,還是也能用於現實世界?
3、俄羅斯債券違約:如果用了智能合約,結果會不同嗎?
4、如果主權債放在智能合約上會不同嗎?智能合約能解決「信用」問題嗎?
5、鎳逼空事件和LME「硬分叉」:如果LME採用智能合約來自動執行,結果會不同嗎?
6、區塊鏈上的「硬分叉」和現實世界中的「硬分叉」(取消交易)有什麼不同?
7、「投票」+「冷靜期」的設定能避免「多數人的暴政」嗎?
· 文字稿 ·
小跑 02:48
「智能合約」(smart contract)這四個字好像已經變成一個「模因」了。 它是金融 科技 業界、甚至更廣泛的跟 科技 、數字化相關的行業,都會聽到的一個概念——反正這四個字就代表了 科技 進步、代表智能。
但它依然是一個「聽起來很厲害,但不知道到底是什麼」,或者「不知道到底厲害在哪兒」的概念。大部分人,包括我在內對它也是一知半解。所以今天請王瑋老師用小白和文科生都能聽懂的語言,給大家「除魅」一下智能合約。
另外,正好最近現實世界的金融市場上,發生了幾件很有意思的事——包括俄羅斯債券違約、鎳逼空事件。今天乾脆拿這兩件事來做一個案例分析, 來看看智能合約到底能不能解決這些現實世界中的頭疼問題。
先請王瑋老師給大家解釋一下: 智能合約它到底「智能」在哪兒?
王瑋 04:26
智能合約如今不管在區塊鏈、DeFi、還是未來的web3領域,都是最重要的核心。比特幣出來時,大家都說區塊鏈是「分布式賬本」;自從以太坊誕生,大家慢慢看到智能合約在web3.0甚至metaverse領域,作用越來越大,重要性也越來越高。
我先從發生在身邊的一個小故事說起。我有一位師妹,是大學計算機系教授,去年問了一個問題:區塊鏈我都能理解,但有一個問題沒想明白——智能合約到底「智能」在哪兒呢?
之所以這么問,她一定是把「智能合約」理解為「智能代碼」了。因為是搞技術的,她一定是跟別的代碼比較,默認「智能合約」應該比別的代碼更「智能」,才配叫「智能合約」。
我的答案是: 不要把它跟計算機代碼相比,而是跟現實世界當中的「合同」相比——它是一段智能的「合同」,而不是智能的「代碼」, 就好理解了。把它跟代碼比較,有點侮辱「智能」這個詞。但跟日常經濟活動中簽的合同來比,邏輯就比較貼切了。
那跟合同來比,它智能在哪兒呢?
我們日常的合同有幾個特徵:第一,有簽署的雙方或多方;第二,它有合同的條款,什麼情況下執行什麼條件做什麼事情;第三,有合同標的物,一手交錢一手交貨,合同約定了提供什麼商品或者服務,付多少錢;第四,合同大概還有個編號,有個標識記錄這是哪份合同,哪年哪月哪日簽的,誰跟誰簽的等等;第五,要有一個管理手段,簽署多方要各持一份,防止某方把條款改掉。這五個特徵基本代表了日常執行合同的最基本條件。
從這個角度,智能合約就好理解了。
比如以太坊的智能合約: 第一,它的代碼和存儲的數據,其實相當於合同條款達到什麼條件、怎麼自動執行——大家可能都知道智能合約的這個特點。第二,它還能夠讓「簽署雙方各執一份」這件事在鏈上實現,簽署雙方都能訪問到區塊鏈的時候,其實就是都能看到合同副本,而副本不是自己能掌握或篡改的,而是鏈上存儲的。
這就很有意思了:中本聰發明區塊鏈,是為了防止「雙花」比特幣這種純數字資產的,結果到了智能合約時代,以太坊一下子賦予了它「幫助合同所有方存儲無數副本、保證不被篡改」的神奇能力。區塊鏈是全球化的分布式存儲,它能夠讓世界上任意多的人來共同簽署和執行一個合同,而不會讓有被篡改的危險——這件事在傳統領域做不到。因為技術的限制,你沒法讓任意無數人同時簽署一份合同。
第三,智能合約的每一段代碼都有一個對應的「地址」,執行這段代碼的入口,這個入口可以理解為合同的編號,唯一的標識。
第四,智能合約本身還能夠擁有「其他的財產」。 我們日常的合同只是一張紙,一個附屬品,財產仍然在人的掌控之中——合同就算約定了鎳的交割,紙怎麼能控制鎳的移動呢?而智能合約本身卻能掌控財產。合同一定要有「標的物」,有「錢」有「貨」,這個標的物是可以受到智能合約所控制的,相當於是被它「所擁有」的。在這種情況下,所謂的「自動執行」才有保障,它擁有對資產的全部執行權。
小跑 11:30
相當於司法執法合二為一。
王瑋 11:33
對。所以有簽訂方、有無數可靠的備份、有自動執行能力、有可以找到的地址和入口、還有對於合同標的物的控制權——從這個角度,它確實比普通的合同要「智能」的多。
小跑 12:04
其實特別理解王老師師妹的想法,畢竟都是理科生,大家可能天然會從代碼角度來理解。但作為非技術背景的普通人,我反而沒有理解的這層障礙。
一看到「智能合約」這四個字,沒有代碼背景的人,天然就會先把它想像成一個合同,一個不用人來執行的「聰明的合同」。在現實世界中,比如我跟老闆簽了合同,但是他每個月不給我往賬戶里發工資,我也沒辦法。
另外,智能合約建在區塊鏈上,就是說跟我簽合同的人,我不用認識也行。我們之前沒有做過買賣,沒有建立過任何信任關系,其實也能簽——因為區塊鏈保證了「人手一份」且不能改。 這有點像我們討論過的SWIFT——它實現了「信息」和「賬戶」合二為一;而智能合約是實現了合同的「內容」和「執行」合二為一,一旦建立了,執行就不用太擔心了,智能合約會自動給我發工資,不用再信任老闆。
可是,仔細再想的話,好像又有點琢磨不透。如果它的執行是自動的,那出了問題該怎麼辦呢? 我們訂立傳統合同時,會有後續發展過程中修改條款的情況,或者出現特殊情況導致合同不能按照訂立時的條款來執行——如果出了差錯,智能合約還是會不管不顧的執行下去嗎?
如果真是這樣,大家在「簽」智能合約,按啟動鍵的一剎那可能就要再想想了——只要一按,後面就沒有改的餘地了,對嗎?
王瑋 15:00
先說第一個問題:智能合約最大的價值就是能讓世界上相互不認識、或者沒有過任何協作關系的人,能立刻簽署、執行這個合約,獲得結果——這跟區塊鏈的特徵是一脈相承的。
很早我們在介紹區塊鏈時,會強調它的一個特徵——能讓全世界本來沒有任何協作關系的人,開始轉賬交易。中本聰發明的防止「雙花」,就是為實現——我們雖然不認識,但我轉賬給你,你知道這筆轉賬一定是真實的,而不會出現任何問題。智能合約就繼承了這個特點,不會因為咱倆不認識、或者你耍賴而導致合約執行不了。
但如果是這樣,簽訂了合同一定能執行,就意味著它肯定不會變。那我又怎麼敢隨便簽?
這一點倒是要從技術角度看了—— 智能合約是可以「變」的,「變」從技術角度講,跟一個軟體系統的升級沒有太大區別。
如果你一定要改變某個條款,就相當於原來的作廢,新的合同重簽。智能合約也是一樣,相當於你把代碼升級, 現在是版本1.0,過兩天我來了個1.1版,換掉1.0版——我們從現在開始執行1.1版——這是沒問題的。但是問題又來了,誰有權利來做這件事呢?如果是合同簽訂雙方都有權利改合同,就沒任何意義了,完全實現不了。
智能合約其實相當於在一個「市場」上,合約由一個第三方來創建,然後大家分為甲方乙方丙方,在合約上去簽署和執行。
之所以敢簽署,是因為我作為甲方,相信乙方丙方丁方改不了這個合約,必須執行。第三方就是合約發布和創建方,它是有權利來升級合約代碼的。這樣一個機制,有點像建立一個「賣場」, 里邊的買賣雙方在賣場里簽合約,做買賣,但改變不了賣場的規則——只有賣場的構建者有權利來改。這也是一種必要性。
這種必要性會帶來什麼問題嗎?
肯定也有。比如,第三方有「監守自盜」的危險,如果他發現改動合約對自己有利,也可以去篡改合約,導致簽訂者的損失。就算他不是出於私利,而是想改進合約的執行效率,或者改善條款,但大家是否都同意?
我們常舉的例子:一個「借貸」智能合約可以規定一個利率演算法,比如說年化5%;如果調整成為年化30%——表面上看,利率是借貸雙方互相支付的成本,跟規則制定方的利益沒有直接的關系;但也不能因為是中立方,就可以隨便瞎改規則, 於是你需要給買賣雙方一個「緩沖期」或者「冷靜期」,或者一種投票的機制,可以讓參與者共同決定。如果接受,投票通過,就可以修改規則。
如果參與者不接受,你還要改的話,那麼你給我個冷卻期,我要退場。所以最終整個邏輯還是完備的,還是要引入第三方的制約機制。我覺得這一點跟現有金融市場的一些規則也很類似。
小跑 20:42
這就是為什麼需要專家解讀。如果只看這四個字,會覺得就是個冷冰冰自動執行的代碼;但實際上背後還有一系列規則,而且這些規則大部分是可以映射到現實世界的。比如剛才的例子就很像一個「仲裁機制」。
既然如此,我們就在現實世界中找幾個案例,分析一下在現實世界中出了問題的、讓人撓頭的情況,放在智能合約上,結果會不會不同?
我找了兩個:一個是俄羅斯違約,一個是鎳逼空。
先從俄羅斯開始。俄羅斯其實是個經常違約的國家,它主權債的違約次數是很頻繁的:1918年沙皇帝國債券違約,1998年俄羅斯布雷迪債券幾乎違約,最近俄烏戰爭,又把它帶進另一個違約危險時期。
3月16號這一天俄羅斯兩只美元債,要付1億多美元的利息;付息前一個禮拜大家就開始擔心,因為俄烏已經開打,它到底還有沒有能力支付?如果支付用什麼幣種?用盧布嗎?當時已經貶值20%。
結果是沒有違約,危機暫時解除了。3月18號俄羅斯財政部已經還了,雖然晚了一天,不過仍然在30天寬限期內。但事情還沒完,4月還有20多億美元的本金償還。所以到現在為止,會不會發生違約還是一個巨大的問號。
通常一個國家不願意違約自己的主權債,主要原因是如果違約,市場會以某種方式懲罰你,比如失去信用,被評級機構貶為垃圾債,導致投資者在很長一段時間內不願意碰,你就很難在市場上找錢。
但是一個國家違約的可能性實在太多了。上個世紀大量主權債的發行,其實都是為了資助戰爭,一旦戰爭爆發,肯定是要違約——因為錢都要拿去打仗。俄羅斯現在就是這么個情況,而且更棘手——不管是被動制裁,還是大家主動制裁,顯然投資者已經不願意碰了。俄羅斯基本與世界隔絕,也不能再失去更多信用,因為它幾乎已經沒有信用了;外匯儲備被凍結,就算想還,去哪兒找美元、硬通貨呢?
所以在這種情況下,「違約」這兩個字究竟意味著什麼?
在現實世界中,作為政府的債主,你其實是很難凍結或者強制出售一個國家資產的。這是一個信心加耐心的 游戲 ,如果你有本事在一個足夠長的時間內,不停騷擾這個國家的政府,年復一年窮追猛打,就像當年保羅辛格為了追債,乾脆把阿根廷的船給劫了。俄羅斯這個戰斗民族不一樣, 歷史 經驗表明,即使是最堅決的債權人,俄羅斯人也有足夠的能力勝過,以死豬不怕開水燙的心態擋住所有追債。
這次還有個很有意思的地方: 這筆主權債中有一個條款,叫做「pari passu」——「一視同仁」原則。這是一個古老條款,一個多世紀前大家就用在債務合同中。它要求債務人對所有債權人要平等對待,不能厚此薄彼,只要跟其中任一個債主談妥了,也要給予所有其他債主相同的償還待遇。
自從保羅辛格利用了這個條款,向阿根廷政府討債成功,之後大部分國家在發行主權債務時便刪除了此條款——防止這些「釘子戶」追債時再利用這個條款。
但是俄羅斯這筆債中卻沒有刪除——要麼是戰斗民族太傲慢,覺得自己永遠不會被起訴;要麼就是忘了。 盡管如此,條款中關於「未來償還「的字眼卻神奇的消失了——是故意,也許是筆誤,反正結果變成了:發行時會遵守「一視同仁」原則,所有債主都一樣,但並不意味著「未來」還是一樣的。
這個例子告訴我們,債券市場是一個完全由「樣本文件」主導的「 & paste」交易,很少有人真的會看多達幾百頁的條款——但魔鬼也就在這里,人為的「調整」、「違約」空間太多了。
如果債發行在智能合約上,是不是就不會出現這種情況了?
王瑋 28:09
這個案例特別有意思。本來還有點擔心,因為區塊鏈也好、智能合約也好,其實最不適合迎來解決債的問題。不過聽了俄羅斯債務里的很多細節,又有好解決的地方了。
首先,「債務」這個東西,是一個典型的「信用」過程。從本質上,我把金融分為「信用過程」和「計算過程」兩個部分。區塊鏈、智能合約、DeFi等等,其實解決的是「計算性過程」的部分,而「債」是典型的「信用過程」。
實際上, 「債券違約」這件事是最不適合於用智能合約去解決的。或者說,智能合約、區塊鏈這些技術對於「債券違約」是最無能為力的——因為違約就是個信用喪失的過程, 就算用智能合約來寫債務合約,但還債的過程涉及到還債主體,你需要把資產放入智能合約才能執行;不放進來,就執行不了。
這就回到最關鍵的一點:智能合約能保證自動執行的前提,是合約本身對標的物有「控制權」。但如果我未來才要還的錢——本金甚至是利息都要放在智能合約里,被它所控制,那我現在「借」錢幹嘛呢?還得倒貼往裡面放點利息。
在DeFi領域里,我們也看到非常多的項目和創業者,試圖用智能合約來解決一個債務市場的問題,或者創建信用產品。其實沒問題, 因為智能合約背後還可以有一套其他的保障機制,比如投票等等;最終把「信用」部分轉化為其他的保障機制,還是有可能的。
信用的「執行部分」不可能轉化為代碼層面的保障機制,但這不代表智能合約不能對債務市場有所改進。
在俄羅斯債務例子中,它把「一視同仁」條款中的「未來」字眼去掉,這是它的權利,沒有辦法控制;買債的人一不留神,沒注意到改動就買了——這一點其實在智能合約層面可以有所改進。
首先, 智能合約作為代碼規則寫進來,天然就有「一視同仁」的條款,因為代碼是人人都可以執行的。只要有地址,有代碼固化在裡面,天下人都可以執行,所以默認一定是會「一視同仁」的,你要是想不「一視同仁」,反而要去做很多手腳。
關於「債券市場是一個以模板為基礎, & paste的市場」——讓我想起了過去幾年,很多DeFi智能合約領域的「微創新」,也是把某些智能合約的代碼全盤拷貝過來,然後改上兩三個字。
但是你會發現在這種情況下,智能合約反而有價值了。為什麼呢?
因為智能合約是精確的代碼。一個審計機構是可以輕而易舉找到改動之處的。幾行代碼的不同,意味著結果有什麼差別,是可以精確推導和判斷出來的。而在傳統市場,因為自然語言是不精確的,就算讓律師去審,我們也不知道這幾句話改動的背後,是不是還隱含其他含義?或者導致什麼意想不到的後果。
智能合約的審計機構是整個生態中非常重要的一方。這些機構往往是一些智能合約開發高手,或者白帽子黑客。他們的作用很像現實世界中的律師事務所,專門負責去審合同、審合約代碼。
所以總結一下:智能合約不能解決債務的所有問題,但是它在債務的執行、和條款分析層面,仍有很大的作用。
小跑 35:47
所以我現在覺得可能俄羅斯這個案例,甚至整個主權債放在智能合約上,可能不太現實。因為對於本來就有意「不執行」的一方,可能根本不會簽了。
這就引出了第二個案例:前些時候鬧得沸沸揚揚的鎳逼倉事件。
大概復盤一下:三八婦女節那天,市場上演了一個 歷史 性的事件,我們在LME(倫敦金屬交易所)市場上見證了史詩級的空頭擠壓。鎳價創了有史以來最極端的價格波動,3月7日暴漲76%,達到每噸5萬多美元;緊接著第二天突破一噸10萬美元的關口。
這是一個明顯的逼空。被逼倉的是青山——全球最大的鎳生產商,在俄烏戰爭之前押錯了方向。15萬噸的鎳空頭頭寸,其中5萬噸是和摩根大通的OTC(場外)頭寸;也就是說此刻青山已經欠JP大概10億美金的保證金。
對於OTC的場外交易,其實大家還是有商量餘地的,如果極端情況發生,各方會首先場外協商解決方法。這一次爆倉後,青山的經濟上先向交易所墊付了保證金,不然清算會出現巨大問題。談判的結果空頭頭寸先保留,之後LME「創造了 歷史 」,取消了交易,並且把鎳的交易一直停到3月中旬。
從那一刻起,從全球市場的角度,LME的「信用」和「中立性」就出現了巨大的問號——突如其來的停牌影響了幾千筆的交易,市場上其他參與方損失巨大。
這個案例,智能合約有可能在哪些環節會發生一些作用呢?
王瑋 42:10
其實剛才在介紹智能合約的時候也提到了:我們確實可以「干預」智能合約,它並不是真的100%不能變。
從這個角度講,LME的這種干預也可以算是「干預」的一種情況。但這里確實有一些問題:第一,智能合約的「干預」,必須要通過「有許可權的人」去升級代碼;或者直接去修改智能合約當中的參數來實現。這跟一個中心化的體系把交易「回滾」、「取消」還是有區別的。
智能合約的干預,不管是代碼升級還是參數調整,它也只能是「向後干預」,改未來的規則,不能倒退回過去的某個階段——區塊鏈是不支持這種干預方式的。
當然,並不是說「向後干預」完全不能出現。舉個例子,大家可能都聽說過以太坊的DAO攻擊事件, 為此以太坊發生了「硬分叉」——這確確實實是「回滾」,在以太坊的 歷史 上就發生過這么一次。但是這次「回滾」的結果,是同時產生了ETC和ETH這兩條鏈。
所以,在「計算性」的體系下,就算想要「回滾」,也不是100%的滾,因為仍然有人可以選擇去執行那些沒有被你「回滾」的合約。
但這在現實世界中沒辦法發生。 因為不可能有另一個平行世界的人,選擇繼續去成交被逼空的那些單,因為交易所只有一家,回滾就是回滾了,不會硬分叉出來兩個交易所。
現實世界無法分叉,無法分叉出兩個青山、兩個俄羅斯、一噸鎳變成二噸——兩個平行世界中各一噸。這是物理世界決定的。所以智能合約、區塊鏈這套體系,只能針對「純數字資產」才有所謂的「保障執行」能力。
那LME這種「停止交易」、「取消交易」的情況,在智能合約領域能不能做到?
客觀的說,也可以做到。一般可以通過兩個手段: 第一個是投票。相當於LME的股東集體來投票,投票結果決定是否允許回滾,投票不通過就不能改。 這就是為什麼現在的加密領域會推行「token economics」(通證經濟學)體系,這是一套類似於股權的模型,投票結果可以綁定智能合約,自動執行結果。
第二,投票意味著什麼?數字世界裡的投票,是個「剛性」的結果——51%的人同意就改,但這不會引起「多數人的暴政」嗎?49%的人不同意,也只能接受嗎?投票不能解決問題怎麼辦?
答案是設定 「冷靜期」或者「過渡期」——幾天、幾小時都可以。就算投票通過,也只能冷靜期之後才能執行。不想玩的,就在這段時間內從系統里退出。改規則沒有問題,但要給我離開的自由——這是最基本的自由了。
LME的做法,就是典型的「中心化」系統的弊端——就算要改規則,第一能不能讓大家投個票?受到規則影響的人,起碼要給一個發言的機會。第二,就算投票通過,也要給一些時間之後再改。
如果用智能合約來實現,並且遵守剛才的那套治理規則,它的信用程度肯定更高。所以從這個角度講,智能合約在維護一個公平高效、更高信任的市場規則,是會有比較大用途的。
小跑 50:51
是的。虛擬世界中的一些機制也可以用到現實世界。 但是這些投票、冷靜期等等規則有多大可實施性呢?
比如多數人的暴政。如果大家突然意識到有「多數人暴政」的可能性,比如我仇富,反正大家都是市場的韭菜,我們以數量取勝,聯合起來投票,把大戶賬戶里的錢全都轉到我們賬戶來——如果真的按投票結果來自動執行,不是相當於「合理搶劫」嗎?
但是如果設了冷靜期,15天之後再正式「執行打劫」,大戶肯定會離開,總不能等著被打劫。可是大戶都已經離開了,我15天之後還打劫誰呢?整個 游戲 就沒有存在的意義了?
王瑋 52:17
這就是區塊鏈和加密貨幣的一個核心理念——就是你的行為要有經濟上的合理性。
如果小散這么做,就是損人不利己。不僅沒有得到錢,唯一的結果是毀滅了這個平台的價值、信用。在這種情況下,你會發現小散也沒有那麼傻,他們知道自己投這個票是沒有意義的。
這就回到中本聰寫比特幣白皮書中提到的,你可以51%的算力攻擊,把比特幣全拿到自己手裡,但是比特幣也因此歸零了——你買的那些機器成本也回不來了,這對你有什麼好處呢?
所以某種意義上, 「經濟模型」是區塊鏈領域最核心的「模因」。我們維護的這套經濟模型的合理性,導致攻擊是沒有意義、不合理的。
小跑 54:11
我現在覺得其實任何規則和機制,雖然看起來像是補救措施, 但實際上它發揮最大作用的時間——還是在事情發生之前。
大家的行為會在博弈影響下,自動找到一個最理性、「守規矩才能價值最大化」的結果來走。也就是說好的事前設計,會導致一個理性的結果。
王瑋 55:13
智能合約和區塊鏈最核心的價值,其實是「維護規則的有效性」。更適用於平台經濟、或者雙邊市場的邏輯。 區塊鏈和智能合約的創造者,是規則的制定者和維護者,本身並不一定是參與方。而參與方是世界上互不認識的人,共同參與 游戲 。
如果兩個人認識、簽一個合同、互換了合同文本、以及後續都有意願保障執行——那這個場景下,智能合約沒有太大意義。
小跑 56:55
非常同意。大家可能有各種通關升級辦法,但是整個 游戲 規則大框架是可以用智能合約改進的。
— End —
播客《文理兩開花》
5. 浠ュお鍧婃槸濡備綍淇濇姢鏅鴻兘鍚堢害瀹夊叏鎬х殑
浠ュお鍧婃槸濡備綍淇濇姢鏅鴻兘鍚堢害瀹夊叏鎬х殑錛
闅忕潃鍖哄潡閾炬妧鏈鐨勫彂灞曪紝浠ュお鍧婂凡緇忔垚涓轟簡鏅鴻兘鍚堢害棰嗗煙鐨勪富嫻佸鉤鍙般傛櫤鑳藉悎綰﹀熀浜庝互澶鍧婄殑鉶氭嫙鏈鴻繍琛岋紝鎴愪負浜嗗疄鐜板幓涓蹇冨寲搴旂敤鐨勯噸瑕佸伐鍏楓傜敱浜庢櫤鑳藉悎綰︽槸涓縐嶈嚜鍔ㄦ墽琛岀殑紼嬪簭錛屽畨鍏ㄦф垚涓轟簡鏅鴻兘鍚堢害寮鍙戠殑鍏抽敭闂棰樸
浠ュお鍧婃槸濡備綍淇濇姢鏅鴻兘鍚堢害瀹夊叏鎬х殑鍛錛熼栧厛錛屼互澶鍧婂疄鐜頒簡鏅鴻兘鍚堢害鐨勬矙鐩掓満鍒躲傝繖涓鏈哄埗鍙浠ラ殧紱諱笉鍚屽悎綰︿箣闂寸殑浜や簰錛屽苟鍦ㄦ墽琛屽悎綰︽椂闄愬埗鍚堢害鐨勬潈闄愬拰璧勬簮銆傛櫤鑳藉悎綰﹀彧鑳戒笌瀹冧滑鐩存帴浜や簰鐨勫悎綰﹁繘琛屾暟鎹浜ゆ崲錛岃屼笉鑳界洿鎺ヨ塊棶緗戠粶鎴栧叾浠栬祫婧愩傝繖鏍蜂竴鏉ワ紝鍗充嬌鏅鴻兘鍚堢害瀛樺湪婕忔礊錛屼篃涓嶄細瀵規暣涓浠ュお鍧婄綉緇滈犳垚鍗卞熾
鍏舵★紝浠ュお鍧婂規櫤鑳藉悎綰︾殑鎵ц岃繘琛屼簡闄愬埗錛屼互闃叉㈠悎綰﹀嚭鐜版剰澶栫殑琛屼負銆備互澶鍧婂疄鐜頒簡涓縐嶅熀浜庣噧鏂欑殑鏈哄埗錛屼嬌寰楀悎綰﹀湪鎵ц屾椂闇瑕佹秷鑰椾竴瀹氶噺鐨勪互澶甯侊紙ETH錛夈傚洜姝わ紝鍚堢害鐨勬墽琛屾椂闂村拰璧勬簮娑堣楅兘鍙楀埌浜嗛檺鍒訛紝浠庤岄伩鍏嶄簡鍚堢害閫犳垚鐨勬剰澶栧紑閿鎴栨敾鍑匯
姝ゅ栵紝浠ュお鍧婂紩鍏ヤ簡Solidity緙栫▼璇璦鏉ョ紪鍐欐櫤鑳藉悎綰︼紝騫朵負寮鍙戣呮彁渚涗簡澶氱嶅伐鍏峰拰搴擄紝浠ヤ究鏇磋交鏉懼湴緙栧啓鍜岃皟璇曞畨鍏ㄧ殑鍚堢害銆係olidity榪樻彁渚涗簡鍐呯疆鐨勫畨鍏ㄦ満鍒訛紝濡傚紓甯稿勭悊鍜屾柇璦璇鍙ワ紝浠ュ府鍔╁紑鍙戣呰瘑鍒鍜屼慨澶嶅悎綰︿腑鍙鑳藉瓨鍦ㄧ殑婕忔礊銆
鎬諱箣錛屼互澶鍧婁粠澶氫釜鏂歸潰鏉ヤ繚鎶ゆ櫤鑳藉悎綰︾殑瀹夊叏鎬э紝浣垮緱寮鍙戣呰兘澶熸洿鍔犺嚜淇″湴鍦ㄤ互澶鍧婂鉤鍙頒笂寮鍙戦珮璐ㄩ噺鐨勫幓涓蹇冨寲搴旂敤銆
6. 以太坊的智能合約是什麼意思
以太坊智能合約是指,部署在以太坊上的智能合約,是一段程序,運行在以太坊的虛擬機EVM中,程序可以按照事先約定的某種規則自動執行操作,執行合約的條款。
同時,智能合約對接收到的信息進行反應,它既可以接收和儲存價值,也可以向外發送信息和價值。
介紹
以太坊創始人V神指出過,以太坊智能合約中的「『合約』不應被理解為需要執行或遵守的東西,而應看成是存在於以太坊執行環境中的『自治代理』(autonomous agents),它擁有自己的以太坊賬戶,它們收到交易信息後就相當於被捅了一下,然後自動執行一段代碼。」
智能合約可以調用其它的智能合約,這就是開啟創立自治代理的能力,代理可以自己進行交易。在區塊鏈上,我們存儲的信息都是「狀態」,而智能合約就是它用於狀態轉換的方式。
7. 浠ュお鍧婂備綍紜淇濋摼涓婅祫浜х殑瀹夊叏
浠ュお鍧婂備綍紜淇濋摼涓婅祫浜х殑瀹夊叏錛
浠ュお鍧婃槸鍏ㄧ悆鑼冨洿鍐呮渶鐭ュ悕鐨勬櫤鑳藉悎綰﹀鉤鍙頒箣涓錛屽畠鍙浠ョ敤浜庡紑鍙戝垎甯冨紡搴旂敤紼嬪簭錛圖Apps錛夊拰鏁板瓧璧勪駭銆備互澶鍧婁笂鐨勬暟瀛楄祫浜э紙浠ュお甯佸拰浠e竵錛変互鍙婃櫤鑳藉悎綰﹀緢瀹規槗琚鏀誨嚮鑰呯獌鍙栵紝鍥犳や繚鎶よ繖浜涙暟瀛楄祫浜ф槸鑷沖叧閲嶈佺殑銆
鍦ㄤ互澶鍧婁腑錛岃祫浜у畨鍏ㄧ殑涓昏佷緷闈犱互涓嬪嚑涓鏂歸潰錛
1.鏅鴻兘鍚堢害浠g爜鐨勫畨鍏ㄦ
鏅鴻兘鍚堢害鍖呭惈浜嗘墽琛屾煇浜涙搷浣滅殑浠g爜銆傜敱浜庝唬鐮侀敊璇鎴栬呮伓鎰忔敾鍑伙紝鏅鴻兘鍚堢害鐨勮祫浜у彲鑳戒細鍙楀埌濞佽儊銆傚洜姝わ紝浠ュお鍧婂紑鍙戜漢鍛樺繀欏葷『淇濆湪閮ㄧ講鏅鴻兘鍚堢害涔嬪墠榪涜屼弗鏍肩殑瀹夊叏瀹℃煡錛岄氳繃闈欐佷唬鐮佸垎鏋愬伐鍏風瓑鎵嬫墊鏌ュ悎綰︾殑浠g爜鏄鍚﹀瓨鍦ㄦ紡媧炪傛ゅ栵紝鍦ㄩ儴緗叉櫤鑳藉悎綰﹀悗錛岄渶瑕佸畾鏈熺洃鎺у悎綰︾殑浜ゆ槗騫舵鏌ユ槸鍚﹀瓨鍦ㄥ紓甯告儏鍐點
2.鍑忓皯鏅鴻兘鍚堢害鏀誨嚮鐨勯庨櫓
浠ュお鍧婂紑鍙戜漢鍛樺彲浠ラ噰鐢ㄥ悇縐嶆柟娉曞噺灝戞櫤鑳藉悎綰﹁鏀誨嚮鐨勯庨櫓銆備緥濡傦紝浣跨敤澶氶噸絳懼悕鏉ラ檺鍒朵氦鏄撶殑鏁伴噺鍜岄噾棰濓紝浠ラ槻姝㈡敾鍑昏呯洍鍙栬祫浜с傛ゅ栵紝寮鍙戜漢鍛樺彲浠ヤ嬌鐢ㄤ互涓嬫帾鏂芥潵紜淇濆悎綰︾殑楂樺彲鐢ㄦэ細
闄愬埗鍚堢害鐨勬搷浣滄潈闄愶紝鍙鍏佽哥壒瀹氱敤鎴瘋繘琛屾搷浣滐紱
鍔犲己鍚堢害鐨勮韓浠介獙璇侊紝浠ョ『淇濅氦鏄撶殑鍚堟硶鎬э紱
閲囩敤寮婧愪唬鐮侊紝榧撳姳鍚堢害鐨勪嬌鐢ㄨ呮彁渚涘弽棣堝拰鎶ュ憡娼滃湪鐨勬紡媧炪
3.浠ュお鍧婄綉緇滅殑鍘諱腑蹇冨寲鐗規
浠ュお鍧婁笉鍚屼簬浼犵粺緗戠粶錛屽畠鐨勫幓涓蹇冨寲鐗圭偣鍙浠ラ槻姝㈠崟鐐規晠闅滃拰鏀誨嚮錛岃繖涔熸槸紜淇濋摼涓婃暟瀛楄祫浜у畨鍏ㄧ殑閲嶈侀儴鍒嗐備互澶鍧婄綉緇滀笂鏈夎稿氬尯鍧楅摼鑺傜偣錛屾瘡涓鑺傜偣閮芥嫢鏈夊畬鏁寸殑鍖哄潡閾炬嫹璐濄傝繖鎰忓懗鐫鍗充嬌鏌愪釜鑺傜偣鍑虹幇鏁呴殰錛屽叾浠栬妭鐐逛粛鐒跺彲浠ヤ繚鎸佺綉緇滅殑紼沖畾榪愪綔銆傛ゅ栵紝浠ュお鍧婄殑鏅鴻兘鍚堢害鏄鍩轟簬鍖哄潡閾炬妧鏈瀹炵幇鐨勶紝鎵鏈夌殑浜ゆ槗閮介渶瑕佽鎸夐『搴忚板綍鍦ㄥ尯鍧楅摼涓婏紝榪欎篃鏄淇濇姢鏁板瓧璧勪駭瀹夊叏鐨勪竴縐嶄繚闅溿
鎬諱箣錛屼互澶鍧婇噰鍙栦簡澶氱嶆帾鏂芥潵紜淇濋摼涓婅祫浜х殑瀹夊叏銆傚紑鍙戜漢鍛橀渶瑕佷弗鏍兼寜鐓у畨鍏ㄦ爣鍑嗙紪鍐欐櫤鑳藉悎綰︿唬鐮侊紝騫墮伒寰鏈浣崇殑瀹夊叏瀹炶返銆傚悓鏃訛紝浠ュお鍧婄綉緇滅殑鍘諱腑蹇冨寲鐗規т篃涓烘暟瀛楄祫浜х殑瀹夊叏鎻愪緵浜嗗熀鏈淇濋殰銆