Как можно использовать сертификаты транзакций в Hyperledger для обеспечения конфиденциальности?

Я создаю блокчейн-приложение в Hyperledger, которое выполняет процесс торгов для производственной компании. В процессе торгов участвуют 4 поставщика (от поставщика А до поставщика D). Побеждает тот, у кого самая низкая ставка.

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

Я хочу применить следующие правила конфиденциальности в блокчейне:

а. предложение конкретного поставщика должно быть доступно для просмотра только компании-производителю и самому поставщику (например, поставщик А не может видеть предложение поставщика Б)

б. только компания-производитель и выигравший поставщик знают, кто выиграл (например, если поставщик А проиграет заявку, поставщик А знает только, что он проиграл заявку, но понятия не имеет, кто выиграл)

Я изучил назначение сертификата транзакции и думаю, что это решит мою проблему конфиденциальности.

Я могу запросить несколько сертификатов транзакций с помощью REST API. Однако я не уверен, как использовать сертификаты транзакций.

Предназначен ли он для использования вне чейнкода (например, используется ли он для шифрования параметров, которые будут переданы в функцию вызова)?

Или он предназначен для передачи в качестве параметра функции чейнкода и использования его внутри чейнкода для шифрования определенных данных перед их сохранением в цепочке блоков?

Как выполнить фактическое шифрование с использованием сертификатов транзакций?

В настоящее время я использую v0.6 ткани Hyperledger для своего чейнкода. В качестве внешнего интерфейса я использую Node.JS HFC SDK v0.6.5.

Есть ли пример кода, который я могу использовать в качестве основы для понимания того, как сертификаты транзакций используются для защиты конфиденциальности?


person A Pantola    schedule 09.03.2017    source источник
comment
Вы выяснили, какой подход лучше всего подходит для вас?   -  person ali haider    schedule 13.04.2017


Ответы (2)


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

Однако на вашем месте я бы начал использовать версию 1.0 Hyperledger Fabric.

  • Версия 0.6 структуры Hyperledger — это проект, разработанный для тестирования преимуществ и недостатков блокчейна. Они поняли, что каждый одноранговый узел в сети должен выполнять каждую транзакцию, вести бухгалтерскую книгу и поддерживать консенсус. Таким образом, они не могут хорошо масштабироваться и не могут поддерживать настоящие частные транзакции и конфиденциальные контракты. https://www.youtube.com/watch?v=EKa5Gh9whgU
  • Версия 1.0 дает вам возможность создавать изолированные блокчейны внутри вашей сети. Это возможно благодаря каналам. Когда вы определяете канал, вы определяете, кто является его членами, поэтому только эти одноранговые узлы могут отправлять транзакции через этот канал. Поэтому ваши транзакции могли видеть только участники канала.
  • Итак, для вашего подхода вы должны создать четыре канала, каждый для каждого поставщика. Компания-производитель должна быть менеджером всех каналов.

На мой взгляд, в настоящее время больше информации о версии 1.0.

person Urko    schedule 21.06.2017
comment
я думаю, что нецелесообразно создавать канал для каждого поставщика. могут быть сотни поставщиков. трудно управлять таким количеством каналов. не так ли? - person allenchen; 21.06.2017
comment
Как бы вы передавали информацию из одного канала в другой? Это должно быть сделано вне сети? - person neuromouse; 22.06.2017
comment
После того, как производственная компания получит заявки от поставщиков от A до D, как четыре поставщика могут быть уверены, что победит правило с самой низкой ставкой? Я предполагаю, что выигрыши по самой низкой ставке будут реализованы в отдельном коде цепочки, который развернут в канале, недоступном для поставщиков, иначе поставщики увидят ставки друг друга. Поскольку этот канал недоступен для поставщиков, поставщики не уверены, действительно ли рассматриваются их заявки. - person A Pantola; 22.06.2017
comment
Блокчейн дает нам возможность управлять распределенным реестром. Итак, бизнес-логика, которую мы будем разрабатывать, — это наша ответственность. Блокчейн не может решить все наши проблемы. Затем вы должны использовать каналы для создания изолированных мини-блокчейнов внутри нашей сети/блокчейна. После того, как каналы созданы, ими легко управлять. Наконец, никто не может гарантировать, что компания-производитель не обманет поставщиков. Это также происходит в нашей повседневной жизни. Блокчейн не решит всех наших проблем. - person Urko; 22.06.2017
comment
я согласен с вами в отношении ответственности бизнес-логики за управление каналами. в заявке может быть 4 поставщика, но в заявке за год могут быть сотни поставщиков. для компании-производителя она должна включать все эти каналы. можно ли получить доступ к этим отдельным реестрам в одном и том же чейнкоде? - person allenchen; 26.06.2017
comment
Чейнкод — это код, который вы развертываете в блокчейне. В этом случае мы бы развернули один и тот же чейнкод в каждом канале. Затем вы можете вызывать функции чейнкода. Каждый вызов чейнкода генерирует транзакцию, и в конце ее транзакция сохраняется в реестре. Каждый узел/пир хранит транзакции, которые генерируются для его каналов. У каждого поставщика будет только бухгалтерская книга, а у компании-производителя их будет четыре. Затем производственная компания могла обращаться ко всем бухгалтерским книгам с помощью функции чейнкода. Наконец, компания-производитель сравнила предложения. - person Urko; 26.06.2017

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

Удачи в вашем случае использования!

person Walter Montes    schedule 23.04.2018