R3 Corda: Как проверяется достоверность входных данных транзакции у не подтверждающих нотариусов, не раскрывая историю транзакции? - PullRequest
0 голосов
/ 23 сентября 2019

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

Документация Corda дает хороший обзор, но я до сих пор не понимаю, как достигается консенсус с нотариусом без проверки, не показывая историю актива другой стороне, вовлеченной в транзакцию.

Пример. Допустим, Алиса получила 10 долларов в транзакции А от Чарли и теперь хочет дать Бобу 20 долларов в транзакции B. Нотариальный нотариус записал транзакцию A, но не знает, что стоимость транзакциибыло $ 10 (если я правильно понял, https://docs.corda.net/key-concepts-notaries.html). Теперь Алиса использует транзакцию А в транзакции B, и нотариус может проверить, что она не использовалась ранее. Но что мешает Алисе сказать Бобу, что она получила $ 20 отЧарли в транзакции A? Боб должен был бы взглянуть на цепочку транзакций, чтобы убедиться, что Алиса действительно может потратить 20 долл. Поэтому Боб узнает историю наличных денег.

Я хотел бы знать, неправильно ли я понялдокументация или если это действительно проблема.

Спасибо!

1 Ответ

1 голос
/ 23 сентября 2019

Консенсус в Corda происходит на двух уровнях:

  • Консенсус валидности
  • Консенсус уникальности

https://docs.corda.net/key-concepts-consensus.html

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

Консенсус уникальности с другой стороны, об этом позаботится нотариус, где он проверяет двойные расходы.

Так что в вашем примере нотариус просто проверит, использовал ли ввод, использованный в транзакции с Алисой, 20 долларов Бобу,нотариус (не проверяющий) не может проверить действительность части консенсуса, все, что он проверяет, это то, был ли уже использован вход, использованный в транзакции.

Часть достоверности, т. е. где платеж 20 долларовдействительно действителен, должен быть проверен сторонами на уровне контракта.Они должны проверить, что сумма наличных денег в состоянии ввода должна быть равна сумме наличных денег в состоянии вывода транзакции.

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

Это может быть нарушение конфиденциальностиследовательно, Чарли мог использовать конфиденциальную личность, которая могла бы скрыть его личность в цепочке транзакций, поэтому Боб знал бы только, что была транзакция, в которой Алиса получила 10 долларов от анонимной сущности, и личность Чарли не была бы раскрыта.

В будущих версиях Corda узлы, скорее всего, будут обмениваться цепочками транзакций только в зашифрованном виде SGX.Эти цепочки транзакций будут затем проверены внутри анклава SGX на узле.Это не позволит узлам видеть содержимое транзакций, которые они проверяют (см. Пост в блоге здесь: https://www.corda.net/2017/06/corda-sgx-privacy-update/).. Это может зайти так далеко, что узлам будет разрешено видеть только определенные части транзакций, которые они подписывают.

Надеюсь, что это отвечает на ваш вопрос.

...