2017-12-07 57 views
0

CouchDB/PouchDB의 개정 알고리즘을 '내부적으로'변경하여 블록 체인 스타일 '해시 체인'을 사용하여 모든 문서의 _rev가 그것의 이전 버전의 해시?블록 체인/해시 체인 패턴을 사용하도록 PouchDB의 rev 알고리즘을 변경하십시오.

이러한 모델은 수정본의 무결성을 유지하는 데 도움이됩니다. 분산 네트워크에서는 예를 들어 본질적으로 전체 db에 대한 변경 불가능한 기록의 기초가 될 수 있습니다.

+0

https://github.com/ssbc/secure-scuttlebutt https://github.com/ssbc/secure-scuttlebutt의 줄을 따라 가면서 PouchDB API – Derrick

+0

으로 구현/통합 된 블록 챠인 또는 'hashchain'개념에 대한 좋은 입문서가 있습니다. 내가 제안하고있는 새로운 _rev 모델을 명확하게 보여줍니다. https://www.youtube.com/watch?v=_160oMzblY8 – Derrick

답변

1

실제로, _rev 은 문서와 모든 개정판에 대한 결정 론적 해시입니다 (최소한 CouchDB는). 또한 이전 _rev를 사용하기 때문에 문서의 업데이트 순서를 동일하게 만들면 기본적으로 결정적 해시를 얻게됩니다.

불행히도 MD5 해시이므로 보안 관련 항목에는 적합하지 않습니다.

AFAIK, _rev의 실제 값은 확인되지 않으며 대시 앞에있는 부분 만 숫자 여야합니다. 그래서 은 _rev 생성을 변경하고 모든 업데이트에서 _rev 값의 무결성을 검사하는 PouchDB 플러그인을 작성할 수 있습니다.

+0

대단히 훌륭합니다. 그리고 '결정 론적 해시'- 네, 아마 '해쉬 체인'감사보다 정확합니다. 더 넓은 목표는 분산 블록 체인을위한 Couch/PouchDB API입니다. 그래서 나는 PouchDB의 API를 secure-scuttlebut와 같은 것으로 마운트하기위한 플러그인 (아마도 '어댑터')의 대안을보고 있습니다. 여기 아이디어를 제안한 GH 문제가 있습니다. https://github.com/ssbc/secure-scuttlebutt/issues/189 그러나 dominictarr는 두 가지 장점을 모두 사용하는 것이 더 낫다는 것을 지적합니다 (유스 케이스에 따라 둘 중 하나를 선호 함)! 그래서 나는 거기에 동의한다. – Derrick

+1

이것은 CouchDB의 경우에만 해당되며, PouchDB의 경우 '_rev'는 임의적입니다. 변경하는 방법은 [talk] (https://github.com/pouchdb/pouchdb/issues/4642)입니다. – Flimzy