Contract-Development

智能合約能否在檢索期間為現有交易生成動態數據?

  • May 27, 2022

我想在乙太坊區塊鏈上儲存一個someText附加的交易:

{
 from,
 to,
 value, 
 data: someText
}               

我稍後希望檢索該交易並閱讀附加到它的文本。

但實際上,我不想檢索someText,因為它最初儲存在事務中。我想檢索附加到它someTextsomeExtraText

someExtraText``someText每次我請求該事務時,都應該動態生成並附加到該事務。它的價值不會是固定的。每次都會不同。

在發送給我之前生成someExtraText並附加它的邏輯不應該駐留在我的伺服器上。someText它也應該駐留在區塊鏈上

我知道有一個關於如何使用 web3.js 將交易發送到區塊鏈以及如何檢索它們的明確 API:

web3.eth.sendTransaction({
 from,
 to,
 value, 
 data: someText
})   

web3.eth.getTransaction(transactionHash)

但他們顯然不會為我提供我想要的東西。

問題:我所描述的是我需要建構的自定義智能合約,還是我所描述的根本不可能,即使通過使用智能合約?

我知道智能合約的作用是生成交易,而我正在考慮使用現有交易並在將其發送回給我之前附加一些數據的智能合約。

如果可能話,並且由於我對智能合約沒有任何經驗,你能給我一些起點嗎?不是關於如何建構智能合約,我知道有教程,而是關於如何開始建構這個特定的智能合約。如果可能的話,我不是要實際程式碼,而是要更多高級解釋,以便我可以在某種程度上視覺化它的結構/邏輯並將其用作藍圖。同樣,我知道這可能根本不可能:)

請注意,即使我的案例聽起來很奇怪,我也不想涉及太多可能偏離文章主要目標的細節。

我基本上是在尋找一種方法來檢索我創建的事務,但也在檢索時附加一些額外動態資訊。該資訊顯然不會儲存在事務中,因為它們是不可變的。這些資訊將在我閱讀後立即失去,並在我下次請求該交易時重新創建。

您可以編寫智能合約。在高層次上,您首先編寫一個具有兩個功能的智能合約。一個將您的交易作為輸入的交易。讓我們呼叫這個函式inputTransaction。您可以呼叫另一個智能合約函式appendData,該函式將一些數據附加到您的交易中,並發出一個包含您的交易和附加數據的智能合約事件。要完成您想要完成的工作,您應該執行以下操作:

  1. 首先在區塊鏈(即乙太坊)上部署您的自定義智能合約
  2. 呼叫inputTransaction智能合約並解析交易(有關如何呼叫智能合約函式,請參閱 web3 文件。)
  3. 當您需要將某些內容附加到事務時,呼叫該appendData函式並非同步獲取該事務的收據​​(再次參考 web3 文件,了解如何發送事務並非同步等待其收據)。
  4. 收據將包含您可以檢索和閱讀的事件。這將包含您的交易和附加數據。

在發送給我之前,不應駐留在我的伺服器上。

不,這不是區塊鏈的工作方式。

請在此處閱讀有關智能合約為何不與伺服器通信的更多資訊

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