乙太坊是多代理系統嗎?
我正在寫一篇關於多代理解決各種業務問題的適用性的文件,我看到比特幣被描述為多代理:*Godsiff,Philip。“比特幣:泡沫還是區塊鏈。” 代理和多代理系統:技術和應用。施普林格國際出版社,2015。191-203。*他們說
This paper sets out a brief, deliberately non-technical, overview of Bitcoin, a new, but becoming more mainstream, crypto currency, generated and managed by a distributed multi–agent system.
我想研究並行性和可擴展性問題的作用。我了解智能合約以字節碼的形式儲存在區塊鏈上,然後分發到所有節點。當有人執行智能合約時,它是如何執行的?如果說 1000 個 dapps 都同時執行該智能合約,那麼它是如何執行的?區塊鏈節點是否在記憶體中執行該程式碼 1000 次?如果這個數字是同時執行 50000 人,那麼會發生什麼?他們都排隊等待執行嗎?
我希望了解合約的執行方式以及我們是否可以應用並行性以允許對大規模 dapp 進行可擴展性。
智能合約作為交易執行。這意味著它們被礦工(PoS 中的驗證者)打包成塊並分發到網路中。每個完整節點都會驗證每個塊中的每個事務。
如果 1000 個 dapps 同時執行同一個合約,每個都是不同的交易,需要支付自己的 gas 成本。它們以任意順序獨立打包成塊(取決於費用和到達時間)。每個完整節點都會檢查每個塊。EVM(乙太坊虛擬機)中沒有並行性。
如你所知。與基礎計算相比,這在驗證每個塊的計算能力方面效率極低;然而,它是目前唯一經過驗證的允許 EVM 去中心化的方法。(請注意,這與挖礦的計算成本不同,並且相形見絀,挖礦的計算成本主要是通過一遍又一遍地改變隨機數來生成低於某個困難參數的區塊雜湊)。
顯然,如果可以將某種並行性應用於系統,則可以獲得巨大的收益。問題在於以一種去信任的去中心化方式來做到這一點。你怎麼能相信別人的計算,你沒有驗證過自己?目前對此的研究稱之為“分片”。或者將鏈拆分為不同的鏈,這樣每個驗證者大部分時間只驗證網路的一小部分。
這是一個難題,這裡有一些進一步的連結描述了一些已經完成的事情。
https://github.com/ethereum/wiki/wiki/Sharding-FAQ
https://github.com/ethereum/research/wiki/A-note-on-data-availability-and-erasure-coding
www.youtube.com/watch?v=W9b4vQ37-qQ&feature=youtu.be 這個影片是關於很多事情的,包括分片。
目前的計劃(據我所知)是在明年某個時候 PoS(Casper)最終確定後獲得一個早期版本的分片。