Blockchain
“在區塊鏈上執行程式碼”是什麼意思?區塊鏈不會變得巨大嗎?
從技術上講,“在區塊鏈上執行程式碼”是什麼意思?這是否意味著
- 我們儲存原始碼,然後每個完整節點執行該原始碼幾次?
如果對於僅儲存交易的比特幣,由於區塊鏈大小和驗證所有塊所需的 CPU 時間已經存在壓倒性的擴展問題,那麼乙太坊如何在擴展的同時還必須在區塊鏈上儲存任意程式碼?
程式碼通過使用智能合約在區塊鏈上執行。每個智能合約都有一個地址、儲存和程式碼。當交易被發送到合約地址時,它的程式碼在每個節點上執行,在乙太坊虛擬機(EVM) 內,合約可以發送乙太幣,呼叫其他合約,並寫入它自己的儲存。
結垢是通過使用氣體來處理的。每個計算步驟,即使是發送正常交易或創建合約,都需要一定量的氣體(這對於刪除儲存數據等操作可能是負面的)。該氣體與交易一起發送,並支付給礦工,如果提供的氣體不足,則所有狀態更改都將回滾。
發送交易時,使用者指定他們願意花費的最大氣體,以及他們願意為此支付的價格(以每氣體乙太幣為單位)。然後礦工可以選擇處理提供最高gas價格的交易。
礦工還可以選擇區塊氣體限制
氣體限制決定了每個塊可以使用多少計算和儲存。在每個區塊上,礦工都可以設置新的氣體限制,但只能將限制增加或減少之前限制的 1/1024 。
這意味著礦工能夠投票以保持區塊大小足夠小以進行處理,並且計算價格是靈活的,具體取決於供需情況。
其他縮放技術
- 鏈下計算:
- 通過使用計算市場,程式碼執行可以預設在鏈下完成,只有在有爭議時才在鏈上進行驗證。
- 狀態通道:
- 與支付渠道類似,各方將狀態的某些部分鎖定在需要各方簽名才能編輯的契約中。各方在他們之間進行交易,只有在有爭議時才送出更新的狀態。
- 更多理論上的東西: