Почему в web3.js/metamask еще нет функции расшифровки с закрытым ключом?

Для смарт-контрактов и dApps во многих случаях важно помещать зашифрованные данные в блокчейн, зашифрованные с помощью открытого ключа.

Я искал, но, похоже, нет способа расшифровать данные с помощью расширения, такого как метамаска, через web3.js. Если бы я хотел создать dApp с зашифрованными данными в блокчейне, я мог бы только расшифровать его, попросив пользователя вставлять свой закрытый ключ каждый раз, когда приложению необходимо расшифровать данные. Пользователю необходимо скопировать закрытый ключ из расширения метамаски, где ему нужно вставить свой пароль, чтобы открыть его, а затем скопировать его и вставить в приложение, чтобы приложение могло расшифровать данные. Это утомительно для пользователя, а также является огромным недостатком безопасности.

Гораздо лучший способ (как это должно быть сделано) - это когда Web3.js имеет функцию для расшифровки данных, чтобы расширение могло расшифровать их там и вернуть расшифрованные данные. Но это не кажется возможным.

Почему они не реализовали это (пока)? Мне это кажется очень важным для создания безопасных dApps и смарт-контрактов. Если есть лучшие способы сделать это, я хотел бы услышать это.

Ответы (1)

В Metamask реализован eth_decrypt . Вы можете использовать encryptfrom 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, который документирует функцию.

Как получить доступ к методу? Я использовал только Web3.js, но это из самого Metamask, верно? Как это работает, когда пользователь использует расширение кошелька, отличное от Metamask?
В первой ссылке описано, как его использовать: Отправьте команду запроса провайдеру ethereum. Клиенты, которые его не поддерживают, должны возвращать ошибку.