我现在在Hyperledger Fabric中有2个组织,并且我正在使用composer-rest-server
使用生成的API访问这两个组织。
根据我的理解,Hyperledger Fabric
将其状态保留在couchdb
内,并将其ledger
保留在每个组织中,从而提供完整性。
问题是,当我尝试使用couchdb
上的cURL
方法直接在org2
中更改某种数据时,这表明缺乏数据完整性。例如:
此数据
“ _ id”:“ \ u0000Asset:org.hospital.record.DataMedis \ u0000001 \ u0000”,“ _ rev”:“ 2-e590415fbc6092dc3ddc0b5271bab524”,“ $ class”:“ org.hospital.record.DataMedis”,“ $ registryId“:” org.hospital.record.DataMedis“,” $ registryType“:” Asset“,” alasanMasuk“:” string“,” alasanPulang“:” string“,” anamnesis“:” string“,” diagnosaPrimer“ :“ DBD Tingkat I ”,“ diagnosaSekunder”:“字符串”,“ dokter”:“ resource:org.hospital.record.Dokter#001”,“ idRekMedis”:“ 001”,“ kondisiSaatPulang” “:”字符串“,” noRekMedis“:” 000001“,” pasien“:”资源:org.hospital.record.Pasien#001“,” pemeriksaanFisik“:”字符串“,” prognosaPenyakit“:”字符串“,” rencanaTindakLanjut “:” string“,” riwayatAlergi“:” string“,” rujukan“:” string“,” terapiDiRs“:” string“,” tglKeluar“:” string“,” tglMasuk“:” string“,” tindakan“: “ string”,“〜version”:“ \ u0000CgMBDQA =”
将诊断更改为该数据
“ _ id”:“ \ u0000Asset:org.hospital.record.DataMedis \ u0000001 \ u0000”,“ _ rev”:“ 2-e590415fbc6092dc3ddc0b5271bab524”,“ $ class”:“ org.hospital.record.DataMedis”,“ $ registryId“:” org.hospital.record.DataMedis“,” $ registryType“:” Asset“,” alasanMasuk“:” string“,” alasanPulang“:” string“,” anamnesis“:” string“,” diagnosaPrimer“ :“ 流感”,“ diagnosaSekunder”:“字符串”,“ dokter”:“资源:org.hospital.record.Dokter#001”,“ idRekMedis”:“ 001”,“ kondisiSaatPulang”: “ string”,“ noRekMedis”:“ 000001”,“ pasien”:“资源:org.hospital.record.Pasien#001”,“ pemeriksaanFisik”:“ string”,“ prognosaPenyakit”:“ string”,“ rencanaTindakLanjut”: “ string”,“ riwayatAlergi”:“ string”,“ rujukan”:“ string”,“ terapiDiRs”:“ string”,“ tglKeluar”:“ string”,“ tglMasuk”:“ string”,“ tindakan”:“ string “,”〜version“:” \ u0000CgMBDQA =“
结果是org1
和org2
之间的数据不再相同。这是来自GET
API的composer-rest-server
方法的结果:
当有人直接攻击我的couchdb
时,有什么方法可以保持其数据完整性?还是我应该对composer-rest-server
进行任何配置?
非常感谢您能提供的任何帮助。
答案 0 :(得分:1)
状态数据库不是事实的来源;实际的分类帐是。状态数据库实际上是每个键的最后一个已知值的持久性缓存。
@risabh暗示,认可策略用于确定状态更新。因此,下一次有一次更改状态的交易,只要满足背书策略,“修改的”密钥的最新值将被新值覆盖。
答案 1 :(得分:0)
不能添加评论,因此请在此处添加。
当您尝试通过调用txn再次为同一密钥添加数据时,将出现来自对等端的背书失败消息,其数据已更改,这表明在读写集中和数据之间存在未命中匹配被篡改了。