Как обеспечить целостность данных в Hyperledger Fabric, когда кто-то намеренно изменяет данные непосредственно в couchdb - PullRequest
0 голосов
/ 25 июня 2019

В настоящее время в моей Hyperledger Fabric есть 2 организации, и я обращаюсь к обеим организациям с помощью сгенерированного API с помощью composer-rest-server.

Согласно моему пониманию, Hyperledger Fabric сохраняет свои состояния внутриcouchdb и сохранение его ledger в каждой организации, что обеспечивает целостность.

Проблема, скажем, в том, что я пытаюсь изменить какой-либо тип данных непосредственно в couchdb, используя метод cURL в org2 показывает отсутствие целостности данных.например:

Эти данные

"_ id": "\ u0000Asset: org.hospital.record.DataMedis \ u0000001 \ u0000", "_ rev": "2-e590415fbc6092dc3ddc0b5271bab524", "$ класс": "org.hospital.record.DataMedis", "$ registryId": "org.hospital.record.DataMedis", "$ registryType": "Актив", "alasanMasuk": "строка", "alasanPulang":" string "," anamnesis ":" string "," DiagnosaPrimer ":" DBD Tingkat I"," DiagnosaSekunder ":" string "," dokter ":" resource: org.hospital.record.Dokter # 001" , "idRekMedis": "001", "kondisiSaatPulang": "строка", "noRekMedis": "000001", "pasien": "ресурс: org.hospital.record.Pasien # 001", "pemeriksaanFisik":" строка», "prognosaPenyakit": "строка", "rencanaTindakLanjut": "строка", "riwayatAlergi": "строка", "rujukan": "строка", "terapiDiRs": "строка", "tglKeluar":"string", "tglMasuk": "string", "tindakan": "string", "~ version": "\ u0000CgMBDQA ="

Изменение диагноза на эти данные

"_ id": "\ u0000Asset: org.hospital.record.DataMedis \ u0000001 \ u0000", "_ rev": "2-e590415fbc6092dc3ddc0b5271bab524" , "$ класс": "org.hospital.record.DataMedis", "$ registryId": "org.hospital.record.DataMedis", "$ registryType": "Актив", "alasanMasuk": "строка","alasanPulang": "строка", "анамнез": "строка", "diagnosaPrimer": " Грипп ", "diagnosaSekunder": "строка", "Доктер": "ресурс: org.hospital.record.Dokter # 001" , "idRekMedis": "001", "kondisiSaatPulang": "строка", "noRekMedis": "000001", "pasien": "ресурс: org.hospital.record.Pasien # 001", "pemeriksaanFisik":" строка», "prognosaPenyakit": "строка", "rencanaTindakLanjut": "строка", "riwayatAlergi": "строка", "rujukan": "строка", "terapiDiRs": "строка", "tglKeluar":"string", "tglMasuk": "string", "tindakan": "string", "~ version": "\ u0000CgMBDQA ="

Результатом являются данные между org1 и org2 больше не идентичен.Вот результат использования метода GET из composer-rest-server API:

enter image description here

enter image description here

Есть ли способ сохранить целостность данных, когда кто-то атакует прямо на мой couchdb?или есть какая-либо конфигурация, которую я должен сделать для composer-rest-server?

Я действительно ценю любую помощь, которую вы можете предоставить.

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Государственная база данных не является источником правды;фактический регистрБаза данных состояний на самом деле является постоянным кэшем для последнего известного значения каждого ключа.

Как указывает @risabh, политики одобрения используются для определения обновлений состояния.Поэтому в следующий раз, когда будет транзакция, которая изменит это состояние, при условии, что политика одобрения удовлетворена, последнее значение «модифицированного» ключа будет перезаписано новым значением.

0 голосов
/ 25 июня 2019

Не могу оставить комментарий, добавив сюда.

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

...