Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Data Transaction Manager #15

Open
4 tasks
therne opened this issue Oct 31, 2018 · 2 comments
Open
4 tasks

Data Transaction Manager #15

therne opened this issue Oct 31, 2018 · 2 comments
Assignees
Labels
major 주 프로덕트 개발 및 그와 관련된 작업들

Comments

@therne
Copy link
Contributor

therne commented Oct 31, 2018

Definition

Data Transaction은 Data Provider가 Data Consumer에게 어떤 데이터에 대한 접근 권한을 허용했다는 내용이다.
Data Transaction은 최소한 다음과 같은 4개의 필드를 포함한다.

  • id: 8바이트 ID
  • from: Data Provider Account ID
  • to: Data Consumer Account ID
  • data: 데이터 ID의 목록. 데이터 ID는 bundleID/userID의 16바이트로 구성된다.

Data Transaction Manager (DTM)는 해당 Data Transaction을 관리하는 컨트랙트이다. 기능은 다음과 같다.

  1. 자신이 날린 Data Transaction 목록을 조회
  2. 자신을 대상으로 하는 (to Field, 즉 내가 소유한 데이터) Data Transaction 목록을 조회
  3. Data Transaction ID를 바탕으로 트랜잭션 내용을 조회
  4. 새로운 Data Transaction을 일으키기

예를 들어, 데이터 거래가 체결된 후엔 DTM을 통해 Data Transaction이 발생되어 실제 데이터 소유권이 부여된다. 이후 데이터 컨슈머는 Re-Encryption Proxy에게 어떤 데이터에 대해 자신을 대상으로 하는 Data Transaction의 ID를 제시해야 한다. Re-Encryption Proxy 노드는 해당 Data Transaction ID를 보고 트랜잭션 내용을 조회한 후, 그것이 해당 컨슈머의 것이 맞으면 재암호화 키를 반환할 것이다.

이는 Data Permission Table이 트랜잭션 형태로 구현된 것이라고도 볼 수 있다. 굳이 Permission Table을 사용하지 않고 DTM을 통해 번거롭게 데이터의 소유권을 관리하는 이유는 Phase 2에서의 Scalability 확보를 위해서다. Phase 1에서는 단순히 데이터 트랜잭션 안에 모든 거래 대상 데이터의 ID를 전부 포함시키지만, Phase 2에서는 Accumulator를 사용하는 것을 목표로 하기 때문이다.

Phase 1

한번의 Ethereum Transaction에 들어갈 수 있는 Data ID의 양은 제한되어 있으므로, Data Transaction을 생성할 때 여러번의 Ethereum Transaction을 일으켜서 트랜잭션을 build할 수 있어야 한다.

Phase 2

Some cryptoeconomic magic— To be described 👀

Research Needed

  • Exchange의 Order와, Data Transaction을 통합할 수 있는 여지가 있다. 예를 들어 데이터 프로바이더가 그냥 댓가를 받지 않고 어떤 컨슈머에게 소유권을 이전하고 싶다면 Exchange에서 Order를 날릴 때 escrowContract = null로 지정하고 날리면 똑같은 효과가 나기 때문. 무엇이 더 좋을까?

Requirements (TODO)

  • Exchange 이후에 Data Transaction을 날려서 소유권 이전이 가능함
  • Consumer는 자신이 소유한 Data Transaction 목록을 DTM 컨트랙트를 통해 조회할 수 있음.
  • (Phase 1) 여러 번의 Ethereum Transaction을 통해 Data Transaction을 생성할 수 있음
  • Data Transaction ID를 통해 트랜잭션 내용을 조회할 수 있음
@therne therne added this to the Airbloc Public Alpha milestone Oct 31, 2018
@therne therne added the major 주 프로덕트 개발 및 그와 관련된 작업들 label Oct 31, 2018
@therne therne changed the title Data Permission Table Data Transaction Manager Nov 11, 2018
@therne
Copy link
Contributor Author

therne commented Nov 28, 2018

@frostornge Updated the description!

@byeongsu-hong
Copy link
Contributor

Data transaction에 id가 왜 필요한지 모르겠다. - event id로 대체가능해보임

@byeongsu-hong byeongsu-hong mentioned this issue Nov 29, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
major 주 프로덕트 개발 및 그와 관련된 작업들
Projects
None yet
Development

No branches or pull requests

2 participants