Solidity

有沒有辦法從智能合約內部上傳到 IPFS 或 Swarm?

  • August 26, 2021

雖然標題幾乎總結了這個問題,但讓我們更詳細地介紹一下。

如果合約中的函式可以直接上傳到 IPFS、Swarm 或類似的並檢索散列,這對於許多案例將非常有用。(這與詢問智能合約是否可以訪問本地文件系統是分開的——我們可以在這裡假設數據直接作為參數傳遞給函式。)理論上,你甚至可以擁有一個網關合約,將其作為一個特性——點擊合約上的函式,它會返回一個雜湊值。

NFT 世界是一個簡單的案例。NFT 有元數據來解釋它們正在標記什麼。迄今為止,據我所知,那些在鏈下儲存元數據的人會在鏈下生成元數據,可能只是在合約中儲存一個出處雜湊來證明元數據的真實性。或者,一些項目選擇在鏈上儲存元數據,特別是生成 NFT。(是一個很好的執行緒,討論了元數據儲存的不同方法。)

但是,如果鏈上函式可以上傳到 IPFS 或類似的並檢索散列怎麼辦?我認為這會帶來很多有趣的選擇。另一方面,我找不到這樣的東西。這是不可能的還是非常困難的?有哪些困難,需要做些什麼才能使其發揮作用?

(我將標記 Solidity 只是因為對於許多 Solidity 是智能合約的同義詞,但這個問題同樣適用於任何其他智能合約語言。)

如果合約中的函式可以直接上傳到 IPFS、Swarm 或類似的並檢索散列,這對於許多案例將非常有用。

這會很有用,但是您要問的問題在電腦科學理論和實踐中是不可能的。

與所有其他區塊鏈一樣,乙太坊是確定性的。它們無法與任何鏈下資源通信,因為區塊鏈將不再具有確定性——任何節點、礦工等都可能從 IPFS 節點獲得不同的回复。

乙太坊區塊鍊是一個完全獨立於 IPFS 的系統,它不了解 IPFS 是什麼或它做了什麼。在大多數 DApp 中,通常發生的情況是文件通過 UI 上傳到 IPFS,然後將生成的 IPFS 雜湊作為字元串饋送到智能合約,用於鏈上儲存和聚合。這應該足以涵蓋大多數應用程序。

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