Solidity

如何安全地解密智能合約中的遊戲數據

  • September 22, 2021

我有一個我無法弄清楚的問題,如下所示:假設我有一個在區塊鏈上執行的遊戲(一種可靠/智能合約遊戲),人們可以購買的土地數量有限。每塊土地都隱藏著一些資源和物品——這些資源和物品是遊戲開發者(我)事先知道的,並以加密方式儲存在 IPFS 或類似的東西上。擁有這些土地的遊戲玩家將不得不通過採取各種行動以某種方式探索這片土地,並且在每個行動結束時,智能合約應向玩家 (A) 顯示是否發現了任何隱藏物品玩家的動作和 (B) 如果找到,該物品到底是什麼以及它的所有特徵。

我在網上看到的關於在 IPFS 上加密儲存數據的大多數資訊都是關於玩家/使用者如何以加密方式儲存他/她自己的數據。但就我而言,我希望對所有玩家隱藏數據,並且只能由智能合約訪問。實際上,即使是智能合約也不應該能夠完全訪問數據——智能合約應該只能回答玩家的行為是否導致隱藏物品被發現的問題。這表明我真正需要的是 IPFS 之上的一層,它具有隻有智能合約才能訪問的功能,可以使用玩家的一系列動作和加密數據(可能已被先前的動作更新)來回答有關發現隱藏的問題項目。

我知道 Chainlink 可能有一些解決方案的元素,但不幸的是,Chainlink 的成本對於任何重複操作的人來說都是令人望而卻步的——比如每個請求 0.1-0.2 LINK,結果大約是 $ 2- $ 5.

有沒有其他人遇到過這樣的問題?我該如何解決呢?

看看黑暗森林的密碼戰爭迷霧。

https://blog.zkga.me/announcing-darkforest

它沒有直接回答您的問題,因為它不是智能合約解密 IPFS 上的數據(而且我認為合約不能這樣做),但您對隱藏地圖項的描述讓我想起了很多黑暗森林。

Dark Forest 背後的核心理念是 SNARK 保護的加密戰爭迷霧。在黑暗森林中,玩家不會將他們征服的行星的座標送出給核心智能合約——而是送出對他們行星位置的承諾(通過散列行星座標),以及散列有效的零知識證明。這使行星位置保密。

他們使用零知識,以便使用者可以證明他們知道地圖上的內容,而無需透露地圖上的內容。要顯示地圖的區域,您基本上必須對區域進行暴力破解,這就像發現功能的工作量證明一樣,並且必須由使用者在本地完成。

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