Конфиденциальность в блокчейне

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

Что вы подразумеваете под «Поскольку у них есть открытый ключ, они расшифровывают транзакцию» ? Обычно с помощью открытого ключа мы можем шифровать , но не расшифровывать.

Ответы (3)

Транзакции Ethereum не зашифрованы, поэтому расшифровка не требуется. Регистрация всех транзакций на диск является частью работы узла (майнера или любого полного узла), поэтому никаких настроек не требуется. Вы можете увидеть каждую историческую транзакцию в открытом виде на таких сайтах, как Etherscan .

Таким образом, в публичном блокчейне Ethereum нет конфиденциальности транзакций.

Это может измениться в будущем, если/когда технология ZK Snark будет реализована. Существуют варианты Ethereum (например, Quorum) с механизмами для частных транзакций, но они не переносятся в общедоступную цепочку блоков Ethereum.

Если информация не зашифрована, то почему у системы/фреймворка есть закрытый и открытый ключи? Есть ли у них другая цель, чем сокрытие информации?
Да, ключи используются для подписания транзакций, а затем для проверки подписей, что отличается от процесса шифрования транзакций (подписание — это, по сути, шифрование хэша транзакции).

Все, что транслируется в сеть, включая все транзакции, является общедоступным для всех узлов . Вопрос только в том, находится ли эта информация в открытом виде или нет. Вы не определили "конфиденциальную информацию о транзакции". Если вы имеете в виду, что транзакция вообще имела место (которую некоторые люди могут считать конфиденциальной), то нет. Если вы имеете в виду такие вещи, как получатель или сумма, введение zkSNARK в Metropolis — это начало добавления конфиденциальности для них. Если вы используете пользовательский токен (в настоящее время не совместимый с ERC), то zkSNARKs должен разрешить добавление такого типа конфиденциальности к токену.

Если вы имеете в виду некоторые другие данные, которые вы хотите использовать в своей транзакции, относящиеся к контракту, который вы пишете, вы можете использовать стандартные методы шифрования (с достаточным количеством газа) или даже гомоморфное шифрование , если это необходимо. Это можно сделать в настоящее время.

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

Привет спасибо. Я хотел знать, могут ли данные, присвоенные переменным смарт-контракта, быть прочитаны другими узлами/майнерами публичной сети Ethereum.
Да. Все общедоступно (иначе узлы не могут прийти к консенсусу!) Единственный способ сохранить конфиденциальность информации от узлов (AFAIK) — это не помещать ее в блокчейн или шифровать ее (используя «обычное» шифрование или гомоморфное шифрование, поэтому узлы все еще могут обрабатывать данные). Но они оба «прячутся у всех на виду» (злоупотребляя обычным значением этой фразы).
Если информация не зашифрована, то почему у системы/фреймворка есть закрытый и открытый ключи? Есть ли у них другая цель, чем сокрытие информации?
В основном они используются для подписания транзакций. Вы можете зашифровать сообщение, используя открытый ключ другой учетной записи, но это сообщение смогут прочитать только люди, которые знают закрытый ключ этой учетной записи.

Точно так же, как объяснялось другими в этой ветке, невозможно скрыть транзакции в Ethereum с помощью доступных там примитивных инструментов.

Однако через два года после того, как был опубликован этот вопрос, был запущен протокол AZTEC , и я опубликовал «Как закодировать свой собственный конфиденциальный токен в Ethereum» — статью, в которой описывается, как связать обычный токен ERC20 с конфиденциальной версией.

Отказ от ответственности: я работаю в AZTEC штатным инженером по блокчейну.