你可以在一個錢包中儲存除 Eth 之外的任何東西嗎
區塊鏈的新手。我想用乙太坊來儲存資訊,而不是那麼多貨幣。例如,我想創建一個可以儲存某人積分的遊戲。錢包地址可以儲存除 ETH 以外的任何其他值嗎?它可以儲存某人的觀點嗎?
例如玩家 A 玩了一輪遊戲,得到 1500 分。我想將 1500 點添加到他的帳戶中,並讓版主在每個帳戶上做一個 getbalance,看看誰是第一名。
顯然,我可以命名“錢包”積分,但據我了解,gas 使用與“錢包”相同的貨幣,這樣積分餘額就會被稀釋。
另一種方法是發送空消息並解析區塊鍊網路以獲取發送到特定錢包的消息,然後加分……但必須有更有效的方法。
任何建議都會有所幫助。謝謝。
預設情況下,錢包不能顯示這些積分,因為他們需要知道你的 abi 以及什麼是函式參數。你仍然有幾個選擇:
- 設計自己的錢包
您可以設計自己的錢包並以您想要的方式訪問您的合約。成本是,您需要執行一個 geth 節點,如果這不是問題,請繼續使用。擁有自己的錢包的好處是您可以訪問您想要的任何功能,並且可以稍後添加/更新。就像你想顯示最高得分者一樣。
- 為積分創建 ERC 20 代幣
如果您不想採取步驟進行錢包開發,您可以創建 ERC-20 代幣以獲得積分。1 點 = 1 個代幣。您還可以確保人們可以將他們的積分轉移給其他人,就像任何貨幣一樣。優點是您可以將它們保存在您選擇的錢包中,例如 MEW、Metamsk 甚至是硬體錢包。
據我了解,gas 使用與“錢包”相同的貨幣,這樣積分餘額就會被稀釋。
不會。gas 始終以 ETH 支付,您的積分永遠不會耗盡。你無法擺脫乙太坊中的氣體這兩種方法中的任何一種都需要 ETH 才能發揮作用。
你錯過了一個基本的想法,一旦你理解了它,一切都會變得清晰。您缺少的想法是
smart contract
. 你提到的 or 是oraccount
賬戶,可以持有乙太幣。它有一個公鑰/私鑰對。您個人持有私鑰,並且只有您可以在該私鑰上簽署消息(即進行交易),以允許乙太幣四處移動。wallet``regular``external
另一種賬戶,也就是你需要了解的賬戶,稱為智能合約。智能合約是一個賬戶,從某種意義上說,它也可以持有和花費乙太幣,但它與“外部”賬戶不同。沒有人擁有智能合約的私鑰。除了從“外部”賬戶發送交易(函式呼叫)之外,沒有人可以直接控制它。
智能合約除了持有乙太幣外,與外部賬戶不同,還持有
state
. 的想法state
是您在回答您的問題時要尋找的東西。在您的情況下,您可以將積分“儲存”在智能合約的狀態中。您使用稱為 Solidity 的程式語言編寫智能合約。Solidity 中的構造之一是地圖。您可以將這些點儲存在由您的使用者帳戶索引的地圖中。一個人通過從外部賬戶發送攜帶已編譯的 Solidity 程式碼的特殊交易來部署智能合約。
不要太複雜,但你可能會意識到,一段時間後,在乙太坊網路上儲存大量狀態可能會非常昂貴,你會尋找其他解決方案,例如將實際狀態數據儲存在 IPFS 上並將唯一的 IPFS 雜湊儲存在智能合約上,但這是以後的問題。