Как хранить личные данные на блокчейне? - PullRequest
0 голосов
/ 10 января 2019

Я пишу DApp на Ethereum (Solidity), и мне нужно найти решение, как хранить личные данные на блокчейне, когда мне также нужно как-то их обработать. Если речь идет только о хранении, я могу использовать обычное шифрование, но проблема в том, что мне нужно прочитать данные в смарт-контракте и как-то продолжить.

Допустим,

1) Я хочу отправить какой-то приватный номер на блокчейн.

2) Мне нужно проверить, больше ли номер privete, чем последний сохраненный частный номер, и меньше, чем второй последний сохраненный номер.

if (storage[n] < y < storage[n-1]) storage.push(y);

3) Если да, я хочу сохранить его в частном порядке.

Есть идеи? Спасибо.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вы можете зашифровать данные перед отправкой в ​​блокчейн. Шифрование и дешифрование должны выполняться вне цепочки, потому что цепочка блоков общедоступна, и вы не хотите, чтобы ваш открытый текст был открыт.

Вы можете сравнить эти числа в цепочке, не раскрывая свой открытый текст, если вы используете гомоморфное шифрование.

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

0 голосов
/ 11 января 2019

лучше использовать структуру данных с двумя записями, например, кортеж с первой записью для использования в качестве счетчика (т. е. для обработки части check if the private number is bigger than the last stored private number) и второй записью для хранения зашифрованных данных, одну для использования в качестве счетчика.

y = new Dapp(sno, value)
# compare y's sno with the record, store private data in value
...