Crossposted от чего-то я добавил к теме Anoncoin. Я надеюсь, что другие люди будут смотреть на это и выявить какой-либо изъян в схеме они могли бы найти.
Хорошо, многое из этого будет использовать PGP в обратную сторону, как он обычно используется, поэтому ключ Открытый ключ будет храниться в тайне и ключ Секретный ключ будет выдан. Поэтому я буду называть открытый ключ "Ключ шифрования," и закрытый ключ "ключ дешифрования" в остальной части этого поста.
Представьте себе два вида операций в блоке цепи, один видимый и один секрет:
Видимая один будет включать в себя:
- отправитель в виде обычного текста
- приемник в виде обычного текста
- количество в виде обычного текста
Секрет один будет включать в себя:
- Отправитель в виде обычного текста
- Идентификатор приемника хэшируется с солью, а затем шифруются с помощью ключа шифрования PGP отправителей (уникальной парой PGP для каждой сделки)
- Сумма шифруется с отправителями ключом шифрования PGP
- Родитель передача ID в виде простого текста (передача, когда отправитель получил деньги теперь он хочет потратить)
пример
Допустим, мы хотим передать монеты, которые мы получили в транзакции 1 (видимая), Бобу в транзакции 2 (секретной). Боб бы его идентификатор вместе с солью и хэш его и дать нам этот хэш. Теперь мы берем хэш и использовать наш PGP ключ для шифрования его вместе с суммой. Мы также даем Бобу наш ключ дешифрования, чтобы он мог приватно проверить сделку, когда он выходит на блок цепи, но мы не даем его никому. Давать его, будет такой же, как делает транзакции видимыми. Конечно, любой из двух сторон теперь может совершить сделку видимым, если они хотят, выдавая ключ дешифрования, но это не проблема, которая может быть установлена, так как они оба знают о передаче и может просто рассказать людям о это в любом случае.
Во всяком случае Боб использует наш ключ дешифрования, чтобы увидеть на блок цепи, что его хэш, который зашифрован в передаче, он видит количество прав, и он смотрит на идентификатор родительского переноса и видит, что у нас действительно есть достаточно денег от сделки 1, это означает, что это он может проверить. Кроме того, никто, даже мы не знаем Bobs реальный идентификатор отправителя (только его соленый хэш) и только мы и Боб знаем, сколько мы на самом деле отправить его.
Но теперь Чарли не знает, что мы на самом деле не имеют никаких денег осталось, давайте попробуем и купить что-то от него деньги, которые мы уже провели (сделка 3). Как он может знать, если у нас есть деньги? Ну он получает наш ключ дешифрования, в противном случае он будет думать, что это очень странно, и пусть наша оплата является поддельной. Затем он смотрит на этой новой транзакции 3, он видит ссылку на транзакцию 1, где мы получили деньги от, так что проверяет. Но затем он ищет другие операции со ссылками на транзакцию 1, и он находит транзакцию 2, что мы сделали с Бобом. Но так как у него уже есть наш ключ дешифрования, он также может считывать количество мы послали к Бобу, и вычесть его из денег, которые мы имели, и видит, что мы на самом деле не имеют достаточно монет для сделки действительной. Правило гласит, что старые переводы имеют приоритет над новыми, так что даже если мы «перерасход» в Транзакции 3, все согласны с тем, что сделка 2 остается в силе. Только сделка 3 будет проигнорирована. Теперь Чарли знает сделка 3 является недействительной и не сдает товар мы пытались купить!
Более поздние операции всегда можно проверить с помощью приемника таким образом, так что если Чарли всегда проверить его правильно, он может быть 100% от монеты, которую он получает. Чарли также может видеть приемник хэша Боба, конечно, но не раскрывает Bobs идентификатор отправителя и он не может «атака по словарю» с отправителями на блок-цепи, так как Чарли не знает соль.
Но сказать, Боб теперь хочет отправить часть денег, которые мы ему дали Давиду (Transaction 4), как можно проверить, что Дэвид Боб имеет деньги, когда сделка 4 относится к Сделке 2, который был секрет? Ну, так как это был секрет, Боб должен сделать его видимым для Давида, отправив наш ключ дешифрования и соль он использовал в этой сделке ему. Дэвид теперь может проверить сделку 2 и что мы на самом деле были приемники, а затем он может подтвердить Сделку-тоже, и счастлив, что он получил монету.
Вопрос Space:
Конечно, если Дэвид хочет тратить деньги от сделки 4 теперь он должен послать как наш и Боб ключа дешифрования и соль, вместе с его собственным, и так далее. Для того, чтобы пространство для сохраненных ключей дешифрования и солей не растет из-под контролем долгосрочной перспективы, вы могли бы включать в себя исправление, где отправители будет вынуждены сделать старые секретные операции видимыми, выдавая ключи дешифрования и соль из этих операций. Сеть не будет принимать передачи от дальнейшего вниз "цепь" если не устаревших транзакций в этой цепочке становится явным отправителем в то же время.
Информация об этом показала старые транзакции добавляются в блоке цепь и заменяют более старые (которые могут быть удалены с помощью метода, который не ставит под угрозу безопасности блока цепи. Я не буду вдаваться в это сейчас). Теперь каждый в цепочке может избавиться от ключей дешифрования и солей из этих устаревших сделок.
Приемник адрес:
Ваш адрес приемника хэш вашего отправителя соленого адреса, вы можете создать стольких приемных адреса, как вы хотите для каждого адреса отправителя, просто изменив соль. Это также означает, что вы можете держать ваш адрес отправителя скрыты от лица, направившего к вам, и вы можете попросить его отправить вам несколько раз, без него даже зная, что он посылает на тот же адрес отправителя.
Что вы, ребята, думаете об этом? Это не так легко объяснить, понимаете ли вы это? Если кто-то, кто понимает это может проверить, что это похоже на работу, я, вероятно, сделать некоторые графики, чтобы лучше объяснить. Нашли ли Вы какие-либо изъяны / ошибки?