智能合约重构社会契约(7)以太坊总结
1. 智能合約相關
-
合約賬戶和外部賬戶分開
-
合約賬戶對外部賬戶一律平等,即使是發起該合約創建請求的外部賬戶也沒有對合約賬戶的特殊權限。
-
合約只有在交易調用時才會運行:使用地址對象或者msg對象來調用合約或者合約中的函數,并將輸入作為參數輸入合約。
-
調用方式既可以是外部賬戶的交易調用合約,也可以是合約調用另一個合約。
-
合約不能“獨立運行”或者“后臺運行”,通常情況下合約處于休眠狀態,只有被調用觸發時才會執行。
-
合約的數據來源于該合約被調用時的參數輸人,或者調用其他合約時的返回值。
2. 以太坊智能合約的流程
2.1 合約創建
step1. 用戶通過Solidity等編程語言編寫合約代碼并廣播到網絡中
step2.節點接收到交易,驗證交易是否有效,格式是否正確、簽名是否合法,同時判斷用戶余額是否能夠扣除最大交易費。
step3. 如果這些驗證都成功,節點會將交易存放到交易池中并廣播給其他節點。
2.2 合約部署
step1. 每個節點都會各自從本地的交易池中取出一批交易打包進行hash 計算
step2. 如果該節點獲得記賬權且打包區塊中存在創建合約請求的交易,會根據交易中的合約代碼創建合約賬戶
step3. 節點在賬戶空間中部署合約,合約賬戶地址在創建合約交易確認后發送給發起該筆交易的用戶。
step4. 節點將區塊廣播給其他節點,這些節點接收到區塊并對區塊和區塊中的交易驗證成功后,同樣會創建合約賬戶。
2.3 合約執行
如果有合約調用的交易,節點在獲得記賬權并將其打包到區塊的時候,會在EVM中執行調用的合約并修改本地區塊鏈中的數據,如果執行失敗則回滾到代碼執行前的狀態。
最后把區塊廣播給其他節點,這些節點重復上述執行操作。
2.4 合約升級
- 在以太坊中,部署到區塊鏈上的代碼是不可改變的。
- 部署一個擁有調用轉發功能的智能合約,將接收到的調用轉發給另外一個包含邏輯功能的合約地址,當合約進行升級時.只需要部署一個新的合約并修改轉發的目標地址以指向新的合約。
2.5 合約銷毀
可以將代碼刪除及其內部狀態(存儲)以留下空白賬戶。
- 要銷毀合約.需要調用合約中的自毀函數,這個函數是合約作者編寫的加果沒有則不能刪除智能合約。
總結
以上是生活随笔為你收集整理的智能合约重构社会契约(7)以太坊总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区块链BaaS云服务(24)秘猿科技CI
- 下一篇: 百度超级链XChain(1)系统架构