Dapps

查詢數據庫的智能合約能力

  • March 13, 2022

我在開發智能合約時有一些顧慮。正如我所看到的,乙太坊區塊鏈可以被稱為分佈式數據庫,其中交易以雜湊的形式儲存在一個塊中。智能合約是 DApp 的後端。在我的場景中,我通過將交易從 accountA 發送到 accountB 將數據“這是我的輸入”儲存在一個塊中。正如我所看到的(或者我錯過了一些東西),我沒有選擇從智能合約中獲取這些數據。是因為solidity語言不支持該功能的程式碼,還是EVM的問題,沒有操作碼來檢索和解碼交易。我閱讀了多篇文件,但沒有人提到智能合約如何獲取未儲存在自己儲存中的數據。

問候,

我不太確定我是否正確理解了您的問題,但讓我們看看。

智能合約可以訪問兩種類型的數據:

  1. 發送給他們的數據和
  2. 他們通過呼叫另一個智能合約訪問的數據

因此,從這個意義上說,智能合約無法從客戶端“讀取”數據。合約也不能直接讀取兩個賬戶之間發送的數據——儘管這樣的交易通常甚至不包含數據。

智能合約功能受限於可用的 EVM 操作碼。如果一個動作沒有操作碼,它將無法直接執行該動作。

在這種特殊情況下,沒有操作碼可以訪問其他交易輸入。合約只能訪問自己的輸入。允許合約讀取交易輸入的操作碼是:CALLDATALOAD、CALLDATASIZE 和 CALLDATACOPY。

對於許多任務,可以使用 oracle 來查詢額外的輸入。

引用自:https://ethereum.stackexchange.com/questions/90633