3.08 EOS智慧合約(下)
1.什麼是李嘉圖合約
- 李嘉圖合約是一種特殊的結構化文字,主要用作交易中明確雙方的意圖,是做交易之前檢視的要遵循的規則
- 以後正式合法的合約都要有李嘉圖合約
- EOS白皮書中所提到的,所有的交易,都會是基於對憲法同意的基礎之上進行的,這就意味著,EOS啟動後,使用者所有的鏈上行為,都會涉及到李嘉圖合約
- 簡單說,李嘉圖合約是一個檔案,定義了通過網際網路發行的某種型別的價值,標識發行人和簽署人,將發行人認為合適的期限和條款加入其中,從而讓該檔案成為合約
2.李嘉圖合約可以解決什麼問題
- 智慧合約存在一個普遍問題:涉及到交易雙方意圖型別的問題時,僅靠程式碼本身,無法良好解決
- 對於一些概念的理解,類似現實世界之中的交易合同的約定,有時僅靠智慧合約是無法做到的,這時,具有法律效應的文字合約,結合依賴區塊鏈技術開發的智慧合約,會帶來更多的準確性
3.李嘉圖合約在哪
- EOS智慧合約abi檔案由5部分組成
{
"types":[...], //定義型別的別名
"structs":[...], //各個型別的資料結構
"actions":[...], //智慧合約的action
"tables":[...], //資料結構體,表
"ricardian_clauses":[...] //李嘉圖條款
}
4.Action
- 一個智慧合約可以定義多個Action,每個Action代表一次單獨的操作
- 對映到程式碼中,可以將Action理解成類中的函式,函式中定義了呼叫Action時需要執行的操作
- 智慧合約與賬戶通過Action的方式進行通訊,Action可以單獨執行,也可以和其他Action一起作為一個整體執行
- 例如:賬戶小王執行了[還錢]Action,[還錢]Action通知賬戶工商銀行,執行[轉賬]Action,[轉賬]Action又通知賬戶[小李],執行[簡訊通知]Action
5.Transaction
- 是一個或多個Action的集合,一個Transaction中的Action要麼全部成功,要麼全部失敗,與資料庫事務很像
- 前面例子中,[還錢]Action、[轉賬]Action、[簡訊通知]Action可以被包含在一個事務中
6.合約互動模式
- EOSIO中提供了兩種智慧合約的互動模式
- Inline(內聯)
- Deferred(延遲)
- Inline可以理解為實時互動模式,一個Transaction中所有的Action,實時呼叫,順序執行,例如A給B轉賬,銀行觸發一個轉賬,給B發簡訊,B迴應接收到
- Deferred可以理解為延時互動模式,TransactionA中的部分Action沒有被立即執行,而是延遲一段時間後,由TransactionB執行,例如A給B轉賬,銀行觸發一個轉賬,給B發簡訊,B迴應錢用於下個月某天還房貸等,這個Action就不會被立即執行,而且放到一個佇列中
7.Inline模式與Deferred模式主要區別
- Inline模式是實時執行Action,Deferred是延時執行
- Deferred模式的Action會被放入一個佇列中,後續執行時從佇列中取出
- Inline模式中的Action是在同一個Transaction裡,而Deferred模式下Action被分散到不同Transaction裡
8.EOS合約與以太坊合約區別
- EOS合約可以升級
- 以太坊智慧合約一旦部署,就固化在那
- EOS支援Deferred互動模式
- 許可權控制不同
- 以太坊通過黑白名單
- EOS通過賬戶
- 合約資料儲存方式不同
- EOS是儲存到記憶體中的表
- 以太坊儲存是固化的,IO讀寫效率低,也不支援對某個欄位做index
- 使用依賴庫的方式不同
- solidity是後來寫的庫,比較少,也不是很完善
- EOS是C++的庫,非常多,也很完善
9.不同許可權的智慧合約互動呼叫
- 啟動網路
- 設定兩個alias
- 生成兩套wast檔案
- 生成兩套abi檔案
- 建立三對金鑰
- 解鎖錢包
- 將三個私鑰匯入錢包
- 建立三個賬戶
- 檢視賬戶
- 部署兩個合約
- 呼叫hello合約的hi方法
- 檢視賬戶json
- target賬戶授權給hello合約特定許可權
- 檢視賬戶的變化
- 呼叫hello合約的hi方法
- 呼叫hello合約的hi方法
- 關閉網路
學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928
[清華團隊帶你實戰區塊鏈開發]
(https://ke.qq.com/course/344443?tuin=3d17195d)
掃碼獲取海量視訊及原始碼 QQ群:
721929980
相關文章
- 3.06 EOS智慧合約(上)
- 3.10 EOS智慧合約案例實踐
- 【許曉笛】 EOS 智慧合約案例解析(3)
- 【許曉笛】 EOS 智慧合約案例解析(2)
- 【許曉笛】 EOS智慧合約案例解析(1)
- 【劉文彬】【精解】EOS智慧合約演練
- EOS基礎全家桶(十三)智慧合約基礎
- EOS開發完全解析(六):手摸手實現第一個EOS智慧合約——Hello EOS
- EOS基礎全家桶(十五)智慧合約進階2
- 【許曉笛】開發第一個 EOS 智慧合約
- EOS智慧合約與DApp開發入門教程APP
- EOS系統合約總體介紹
- EOS.CYBEX孵化團隊鏈安科技發現EOS智慧合約可能出現溢位漏洞
- EOS智慧合約的一些問題總結和建議
- EOS系統合約鏈賬戶介紹
- EOS原始碼解析 eosio賬號預設合約原始碼
- EOS開發(1.3-1.4)以上版本 智慧合約DAPP全棧使用指南APP全棧
- 保險智慧合約
- 「Hello,Gakki」— 編寫第一份智慧合約 | 大狗教你EOS開發(四)
- 智慧合約從入門到精通:智慧合約的前世今生
- 編寫智慧合約
- iOS 部署智慧合約iOS
- 【劉文彬】EOS技術研究:合約與資料庫互動資料庫
- 智慧合約從入門到精通:智慧合約的應用場景
- 智慧合約初體驗
- 如何實施智慧合約?
- NEO智慧合約白皮書
- 智慧合約安全性
- 什麼是智慧合約?
- 什麼是智慧合約
- 智慧合約是什麼
- Dapp 合約代幣系統開發智慧合約APP
- 智慧合約開發環境搭建及Hello World合約開發環境
- 以太坊智慧合約開發:讓合約接受轉賬
- 以太坊智慧合約開發第四篇:實現Hello World智慧合約
- 以太坊蜜罐智慧合約分析
- 2.06 hyperledger fabric智慧合約
- 什麼是智慧合約漏洞?