Solidity

你如何有效地將圖像儲存在乙太坊區塊鏈中?

  • February 11, 2018

我認為將“整個圖像”儲存在區塊鏈上是沒有意義的。我認為儲存對該圖像的引用會更好,但這意味著實際的圖像文件仍將位於“集中儲存”中,例如 s3。

在區塊鏈中儲存圖像的不同方式有哪些?目前有效儲存它們的“已知方法”是什麼?

我見過像 Filecoin、Storj、Tiesdb 等項目,但仍然不確定什麼是理想的解決方案。我想建立一個基於區塊鏈的相冊。

你是對的。將整個圖像保存在 eth 中是非常昂貴的。我建議你檢查像 IPFS 或 Swarm 這樣的鍊式數據儲存(乙太坊社區通常推薦它)。

有可用的替代 API。提到的是兩種流行的服務,大多數開發人員都在使用。兩者都是分佈式儲存。

我建議您檢查以下連結一次。

來回答你的問題。這是一個如何在乙太坊智能合約中儲存對儲存在 IPFS 中的圖像的引用的範例。

contract ImageInfo{
  mapping(address=>Image[]) private images;
  struct Image{
     string imageHash;
     string ipfsInfo;
  }
  function uploadImage(string hash, string ipfs) public{
      images[msg.sender].push(Image(hash,ipfs)); //
  }
}

上面的程式碼僅用於說明。根據您的要求修改資料結構。我沒有添加任何安全檢查。

這個想法是首先將圖像上傳到 ipfs/swarm/任何其他鏈下數據儲存,獲取圖像的值計算雜湊以進行契約。從鏈下下載數據(圖像)併計算雜湊值並檢查保存在合約中的雜湊值。

我覺得上述解決方案是處理圖像的最佳方式之一,因為所有數據都是使用無伺服器架構分佈的。

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