ReviewChain
Smart contract based review system with multi-blockchain gateway
1. 요약
리뷰 시스템은 전자 상거래에서 매우 중요한 요소를 가지고 있는 반면에, 중앙 집중식 리뷰 시스템은 조작하는데 매우 간편하다는 단점을 갖고 있다. 그래서 리뷰의 조작을 방지하기 위해 이더리움의 스마트계약을 사용하여 분산 리뷰 시스템을 개발하고 구현합니다.
리뷰 시스템은 2개의 서로 다른 이더리움 기반 블록체인 네트워크를 묶는 메커니즘으로 개발하고 구현할 필요가 있습니다. 하지만, 이더리움 스마트 계약 코드는 제한되어 있어 외부라이브러리를 호출할 수 없는 문제가 있다. 따라서 리뷰 시스템에서는 공증할 수 있는 다중 블록체인 게이트웨이 노드를 도입하였고, 그로 인해서 2개의 블록체인 네트워크가 서로 접속할 수 있도록 하는 게이트웨이가 도입된 것 입니다.
이 논문에서는 ReviewChain을 실행하고, 설계한 것에 대해서 시스템 성능에 미치는 영향에 대해 논의하려합니다.
2. 논문 아이디어 소개
이 논문의 리뷰 시스템을 통해서 궁극적으로 얻고자 하는 것은 리뷰를 작성하는데 있어 플랫폼 조작을 방지하기 위해 블록체인의 불변성 및 감사성(감시)의 특징을 활용합니다. 블록체인 기반의 리뷰 시스템이 구축된 후에 모든 참가자들이 리뷰를 작성할 수 있게 되는데, 이 때 작성된 리뷰에 대해서 제거하거나 수정할 수 없도록 보장한다. 이 보장이 블록체인의 특징에서 나오게 된 기능입니다.
리뷰 조작을 방지하기 위해서 블록체인 네트워크에서 판매 기록 DB등의 판매자 시스템에 기록된 데이터 수집을 통해서 실제로 리뷰 작성자가 제품을 구매한 것인지 여부를 확인할 수 있도록 합니다.
다만, 블록체인 네트워크에서 판매 기록 DB등의 판매자 시스템에서 수집하는 것에 대한 방법들은 이 논문에서 다루지 않으므로 다른 논문을 통해 확인해야합니다.
3. 리뷰 시스템 구조
3-1. 시스템 구조
위 그림의 구조 그림을 보면서 소개를 하면, ReviewChain은 리뷰 블록체인(review blockchain)과 공급 체인 블록체인(supply chain blockchain) 두 가지로 구성 되어있습니다.
리뷰 블록체인(review blockchain)에는 리뷰 작성자들이 작성한 모든 리뷰 데이터가 저장되어지고, 공급 체인 블록체인(supply chain blockchain)에는 판매자의 시스템에서 제품 구매 이력이 저장되어집니다. 그렇기 때문에 이 ReviewChain에서는 리뷰가 작성되는 블록체인 영역과 판매자 시스템, 이 두 개의 시스템이 모두 블록체인 네트워크로 구성되어있다는 가정을 갖고 있어야합니다.
이 리뷰 시스템이 활성화 되는 것은 블록체인 네트워크를 운영하는 마이너가 존재해야하는데, 마이너는 판매업자들이 담당하게 되고, 블록체인 네트워크에 참가하는 모든 참가자들은 리뷰를 검토하는 검토자가 될 수도 있고, 리뷰를 읽는 독자가 될 수도 있습니다.
3-2. 리뷰체인, 스마트 컨트랙트
위 그림 5는 리뷰를 추가하는 워크플로우입니다. 이 워크플로우를 통해 일련의 프로세스를 설명하면 다음과 같습니다.
1. 리뷰를 검토하는 사람이 검토한 결과를 블록체인 네트워크에 브로드캐스트를 통해 마이너에게 전달됩니다. 이때 발생되는 트랜잭션에는 스마트계약 주소, 호출할 함수 이름등 함수에 대한 4개의 검토 필드가 포함됩니다.
2. 전달받은 트랜잭션을 마이너들은 유효성을 검증하게 됩니다. 이후에 블록체인에 기록될 후보에 검증이 완료된 트랜잭션을 추가하고, 리뷰를 추가하는 함수를 호출(실행)합니다.
3. 공증인은 마이너가 미확인된 리뷰가 있는지 특정 시간간격으로 확인합니다.
4. 공증인은 마이너가 리뷰를 추가하는 함수를 호출한것에 대해 검토 유효성을 한번 더 검사합니다. 이 때 공증인은 추가된 리뷰의 검토ID와 제품ID를 비교하여 실제로 구매된 제품인지를 확인합니다.
5. 검토가 완료된 결과를 마이너에게 응답을 보내게됩니다. 응답을 받은 마이너는 다른 마이너들에게 브로드캐스트를 통해 전달을 하게되면서, 해당 트랜잭션은 블록체인의 하나의 데이터에 기록되게 됩니다.
공증인은 최소 f + 1 명이 필요합니다. 그리고 독자들은 공증인의 검토과 통과된 리뷰만 확인할 수 있게됩니다. 이렇게 서로 다른 두개의 블록체인 네트워크를 연결하는 방법이 소개합니다.
3-3. 리뷰 삭제
리뷰를 작성한 사람은 본인이 작성한 리뷰에 대해서 삭제할 수 있는 기능을 가지게 됩니다. 이 기능은 블록체인의 불변하는 속성에서 가질 수 없다는 점을 주목할 가치가 있습니다.
삭제한 리뷰의 이전 리뷰는 트랜잭션에 남아있습니다. 마이너는 로컬 데이터 구조를 업데이트하면서 검토ID를 제거합니다. 마이너가 로컬 데이터 구조를 기반으로 하는 검색 쿼리에 응답하면 삭제된 리뷰는 검토자의 관점에서 보았을 때 효과적으로 삭제됩니다. 리뷰를 삭제하는 절차는 리뷰를 추가하는 절차와 유사합니다.
리뷰를 읽는 사람도 확인하고 싶은 리뷰를 마이너에게 요청할 수 있습니다. 검색 쿼리가 스마트계약 상태를 변경하지 않는 함수인 getReview의 읽기 함수를 호출하도록 합니다. 호출은 수신된 마이너에 의해 한번만 실행되어 리뷰를 요청한 사람에게 리뷰 정보를 반환합니다.
3-4. 거짓 리뷰와 진실 리뷰 모두 리뷰체인에 기록
리뷰 체인에 트랜잭션을 기록되어 블록에 기록되는 것은 진실된 리뷰만 기록되는 것이 아니라, 거짓된 리뷰와 진실된 리뷰 모두 기록되게 됩니다.
마이너들은 리뷰가 거짓인지, 진실인지 확인하지 않습니다. 트랜잭션의 올바른 형태를 가지고 있다면 모두 블록체인 네트워크에 기록하기위해 addReview 함수를 실행하여 기록합니다.
거짓인지 진실인지를 검토하는 것은 공증인입니다. 마이너는 공증인을 통해 검토가 완료된 리뷰에 대해서 로컬 데이터 구조에 해당하는 검토ID를 기록하여 진실된 리뷰 목록을 유지,관리합니다.
결과적으로 진실된 리뷰와 거짓된 리뷰 모두 블록체인에 존재하지만, 리뷰를 읽는 사람의 입장에서는 진실된 리뷰만 포함됩니다.
진실된 리뷰를 저장하는 로컬 데이터 구조는 관련 데이터가 로컬에 저장되므로 마이너는 블록체인의 전체 구문 분석을 할 필요가 없어 더 빠른 검색 결과를 가능하게합니다.
'논문 > 논문 리딩' 카테고리의 다른 글
[논문] The Data Civilizer system / 데이터 시빌라이저 (0) | 2019.06.17 |
---|