String
在 Solidity 中儲存圖像 URL
我有一個非常基本但功能強大的智能合約,它儲存了一個圖像 URL(和一些其他欄位)以供前端使用。然而,雖然它適用於縮短的圖像 URL,但大多數 URL 太長,導致 gas 成本飆升至超過塊 gas 限制。
有沒有更有效的方法來儲存 URL,或者我需要在將它們發送到後端之前以某種方式自動縮短它們?
在某些情況下,這是我的契約(如前所述,非常基本):
contract Advertisement { string private image_url = "https://via.placeholder.com/350"; string private text = "Placeholder text"; uint private price = 0; // First user can upload their image for free (+gas); function updateAdvertisement(string memory new_image, string memory new_text) public payable { require(msg.value > price, "Payment must be greater than the listed price"); image_url = new_image; text = new_text; price = msg.value; } function getAdvertisement() public view returns(string memory, string memory, uint) { return (image_url, text, price); } }
如果您想將 url 數據分散儲存,那麼 IPFS 是一個不錯的選擇。
如果您只想使用 url 顯示某些內容並在鏈下(後端)使用它。您可以返回 url 的 id,而不是返回真實的 url,後端可以根據該 id 從 db 中查找 url。