Для смарт-контрактов и dApps во многих случаях важно помещать зашифрованные данные в блокчейн, зашифрованные с помощью открытого ключа.
Я искал, но, похоже, нет способа расшифровать данные с помощью расширения, такого как метамаска, через web3.js. Если бы я хотел создать dApp с зашифрованными данными в блокчейне, я мог бы только расшифровать его, попросив пользователя вставлять свой закрытый ключ каждый раз, когда приложению необходимо расшифровать данные. Пользователю необходимо скопировать закрытый ключ из расширения метамаски, где ему нужно вставить свой пароль, чтобы открыть его, а затем скопировать его и вставить в приложение, чтобы приложение могло расшифровать данные. Это утомительно для пользователя, а также является огромным недостатком безопасности.
Гораздо лучший способ (как это должно быть сделано) - это когда Web3.js имеет функцию для расшифровки данных, чтобы расширение могло расшифровать их там и вернуть расшифрованные данные. Но это не кажется возможным.
Почему они не реализовали это (пока)? Мне это кажется очень важным для создания безопасных dApps и смарт-контрактов. Если есть лучшие способы сделать это, я хотел бы услышать это.
В 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, который документирует функцию.
Бастиансен Бастиансен
Исмаэль