Использование Ethereum для шифрования данных

Я пытаюсь найти способ использовать адрес ethereum/solidity/web3 для шифрования текста, но я даже не уверен, что можно получить открытый ключ с адреса (хэш открытого ключа), используя secp256k1 для получения открытого ключа. ? или есть ли другой способ получить к нему доступ на стороне клиента? если да, сможет ли пользователь расшифровать данные, используя свою кодовую фразу (парольную фразу ethereum)? чтобы все происходило на стороне клиента, но данные хранились в зашифрованном виде в цепочке?

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

тлдр:

Ethereum + данные = зашифрованные данные

зашифрованные данные + эфириум + кодовая фраза = данные

Ответы (2)

Вы можете извлечь адрес и открытый ключ из подписи — см . ecrecover .

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

Имейте в виду одну вещь: любой ваш магазин на блокчейне может быть прочитан кем угодно.

но как пользователь будет расшифровывать данные с помощью простого тумана? Нужно ли ему как-то извлекать свой закрытый ключ?
А пока все это придется делать за пределами Тумана.

Было бы лучше использовать IPFS или Filecoin для хранения более длинных фрагментов текста, а затем использовать Ethereum для хранения ключей доступа. IPFS по-прежнему распространяется, но если вы беспокоитесь о конфиденциальности, просто обратите внимание, что ваш IP-адрес не является частным при использовании этого метода. Ethereum препятствует использованию сети в качестве базы данных для хранения большого количества данных.

Вы, безусловно, можете использовать смарт-контракт для шифрования блока текста с помощью команд sha3 (ищите синтаксис в документации), а затем создавать функции, которые добавляют и считывают из IPFS.