Web3js
為什麼 web3.js/metamask 還沒有使用私鑰解密的功能?
對於智能合約和 dApp,在許多情況下,將加密數據放在區塊鏈上並使用公鑰加密非常重要。
我一直在搜尋,但似乎沒有辦法通過 web3.js 使用像元遮罩這樣的擴展來解密數據。如果我想在區塊鏈上建構一個帶有加密數據的 dApp,我只能通過要求使用者在每次應用程序需要解密數據時插入他的私鑰來解密它。使用者需要從元遮罩擴展中複製私鑰,他需要在其中插入密碼以公開它,然後繼續複製並將其粘貼到應用程序中,以便應用程序可以解密數據。這對使用者來說很煩人,也是一個巨大的安全漏洞。
一個更好的方法(應該這樣做)是 Web3.js 具有解密數據的功能,以便擴展可以在那裡解密它,並返回解密的數據。但這似乎是不可能的。
為什麼他們還沒有實施這個(還)?為了建構安全的 dApp 和智能合約,對我來說似乎非常重要。如果有更好的方法可以做到這一點,我想听聽。
Metamask 已經實現了 eth_decrypt。您可以使用
encrypt
from eth-sig-util來執行加密。不幸的是,沒有太多關於它的文件。它在 github 上的幾個執行緒上進行了討論,例如https://github.com/MetaMask/metamask-extension/issues/1190>、<https://github.com/ethereum/EIPs/pull/1098和https://github.com /MetaMask/eth-sig-util/pull/18#issuecomment-384796354。沒有記錄該功能的 EIP。