Есть ли способ сохранить информацию о смарт-контракте и сохранить ее в секрете?
Если в контракте есть переменная состояния, которая не является общедоступной, например:
contract foo{
uint public publicVariable;
uint notPublic;
}
действительно ли «notPublic» не является общедоступным? что, если он содержит секретную информацию, например номер кредитной карты? это нормально? если бы я хотел сохранить какую-то совершенно секретную информацию в этой переменной, есть ли способ сделать это, чтобы никто не мог получить ее, даже если она находится в сети?
Все в блокчейне Ethereum является общедоступным.
Поэтому вы не можете скрыть данные. Это связано с тем, что каждый узел Ethereum хранит копию всей цепочки блоков, и поэтому каждый узел теоретически может проверять свою копию, чтобы найти любые данные, которые вы хотите скрыть .
Это не означает, что вы не можете поместить конфиденциальные данные в блокчейн, вам просто нужно сначала зашифровать их.
Если вы хотите хранить конфиденциальную информацию о пользователях в блокчейне, вы должны зашифровать данные с помощью их открытого ключа. Только пользователь со своим закрытым ключом может его расшифровать.
Это может показаться большим объемом работы, чем с обычным веб-приложением, но на самом деле это преимущество. Если вы предполагаете, что злоумышленник может получить доступ к вашим данным, вы избежите многих ловушек безопасности, которые вызывают эти огромные утечки данных. Безопасность через неизвестность на самом деле вовсе не безопасность!
theoretically inspect their copy to find whatever data you wanted to be obscured.
как это сделать? @КарлВы можете зашифровать данные и сохранить ключи вне цепочки:
Одна из проблем с шифрованием данных и помещением их в цепочку заключается в том, что вы навсегда оставляете свои зашифрованные данные в общедоступном неизменяемом хранилище данных. Что, если какая-то радикально новая вычислительная парадигма (квантовая?) сможет сломать шифрование или ваши ключи будут украдены?
Эту проблему и призван решить Базовый протокол , см.:
https://docs.baseline-protocol.org
Короче говоря, он направлен на использование доказательств с нулевым разглашением (ZKP), чтобы НЕ хранить вашу личную информацию в сети, а вместо этого хранить доказательство того, что вы знаете информацию, не раскрывая ее.
эт