개요

블록체인 ID 관련 막연한 궁금증이 있었음.

  Q: 블록체인 위에 ID 정보를 저장해도 좋은가 (그러면 모든 개인 정보가 공개될텐데)?

조사를 통해 얻은 답은 다음과 같음.

  A: public 데이터(on-chain data)와 private 데이터(off-chain data)를 구분해서 관리한다.


ID 관련 개념 3가지

- claim: identity 정보. ex) "내 이름은 OO이고, 생일은 OO이다."

- proof: claim의 진위 증빙. ex) 실세계에서는 여권, ...

- attestation: 제3자에 의한 claim 진위 증빙. ex) 대학교의 학위증명, 회사의 재직증명, ...


Sovrin 사례 연구

배경 (문제인식)

  • 온라인 세계의 ID/PSWD 체계가 서비스별로 Silo 되어 있음
  • ID 데이터가 많은 Silo에 복제되어 있음 (유출 위험 증가)
  • 블록체인이 Self-Sovereign ID 실현의 돌파구가 됨 (Center Authority의 도움 없이 ID와 Key 생성)

비전: Identity for All (사람/조직/사물을 위한 ID)

  • ID 데이터가 유출되지 않는 방식 (Security)
  • ID owner가 ID 데이터를 누가/왜 사용하는지 통제할 수 있는 방식 (Control)
  • ID 사용이 특정 서비스 사업자에 구속되지 않는 방식 (Portability)

개발팀

  • Sovrin 재단 (비영리 재단)
  • 오픈소스 프로젝트 (Contributor 20명 안쪽)

Sovrin의 ID 데이터 운영 방식

  1. public claim 데이터
    . on-ledger 데이터 (Sovrin Ledger에 기록/공개)
    . 개인 식별이 가능한 데이터는 저장하지 않음
  2. prviate claim 데이터
    . off-ledger 데이터
      - Identity Graph: 이름, 주소 등의 개인 정보
      - Relationship Graph: 주소록, SNS 등의 네트워크 정보
      - Reputation Graph: ID owner에 대한 평판 정보
      - Data Graph: 사진, 파일 등 기타 정보
    . 사용자 SW (Sovrin Client)에 원본 데이터 저장/관리
    . 사업자 SW (Sovrin Agent)에 사본 데이터 저장/관리 (private container)

Sovrin 소프트웨어 구성

  1. Sovrin Ledger (블록체인)
    • Plenum 합의 알고리즘 (PBFT의 변형) 사용
    • public permissioned ledger (누구나 이용할 수 있지만, 권한이 부여된 관리자들만 운영에 참여)
  2. Sovrin Agent (사업자 SW, 메일 서버에 해당)
    • Sovrin Ledger의 Client로 동작
    • Sovrin Client (사용자 SW)에게 안정적인 p2p end-point 제공
    • ID owner의 private claim을 저장 (하지만, 데이터에 대한 통제권은 ID owner에게 있음)
  3. Sovrin Client (사업자 SW, 메일 클라이언트에 해당)
    • 사용자 기기(PC/Mobile) 위에서 동작 (한 사용자가 여러개의 Client 운용 가능)
    • ID owner의 keychain 저장
    • ID owner의 private claim 데이터 저장
    • Sovrin Agent의 도움으로 여러개 Client들의 data sync 수행

Ref.

(이상)


Posted by ingeeC
,

개요


Sidechain 기술이 해결하려는 문제

  • 비트코인의 기술적 한계 (느린 처리 속도, 스마트컨트랙트 미지원 등) 해소 필요
  • 하지만 문제 해소를 위해 별도의 블록체인을 새로 만들 경우, 다음과 같은 문제가 있음
    • 작업/노력의 중복 문제 : 비트코인과 비슷한 코드를 중복 작성/관리해야 함
    • 코인의 유동성 확보 문제 : 신규 블록체인의 참여자 부족으로 인해 신규 코인의 가치가 안정되지 않음

Sidechain의 문제 해결 방식: Pegged Sidechain을 제안

  • 비트코인과 asset 교환이 가능한 블록체인 (pegged sidechain)을 제안함 (관련 기술 규격을 백서에 제시함)
  • 효과
    • 비트코인과 연동함으로써 충분한 코인 유동성을 확보할 수 있음
    • 사이드체인의 기술적/경제적 결함이 해당 사이드체인 내부로 격리/제한됨 (혁신적 시도가 가능)

관련 용어

  • two-way peg : Sidechain들 사이에서 고정/유동 비율에 따라 코인을 교환하는 메커니즘
  • pegged sidechain : asset을 (two-way peg 메카니즘에 따라) 교환할 수 있는 블록체인


관련 솔루션

Posted by ingeeC
,

Oracle 이란?

  • Oracle은 블록체인 내부세계가 외부세계와 소통할 수 있게 중재하는 "Smart Contract"
    • 이더리움 Smart Contract는 원칙적으로 EVM 외부세계의 데이터를 참조할 수 없음 (EVM이 API를 제공하지 않음)
    • Smart Contract가 블록체인 외부세계와 연동하기 위해서는 Oracle이 필요
  • 예를 들어, 비행기 연착 보험을 Smart Contract로 구현할 경우, 비행기가 연착되었다는 정보를 외부세계(Web)로 부터 가져올 필요가 있음. 이때 Oracle이 필요함


Oraclize 란?

  • Oracle을 맨바닥부터 새로 만들 필요 없음
  • 이미 존재하는 Oracle 서비스를 이용할 수 있음. Oraclize는 그런 서비스들 중 하나 (Oralize ltd. 회사가 만듬)
  • Oraclize가 제공하는 외부세계 데이터 종류
    Datasource 설명
    URL
    임의의 URL을 HTTP Get 또는 HTTP Post 호출 (Web과 연동)
    WolframAlpha 울프럼알파 검색 엔진을 쿼리
    * 울프럼알파: http://www.wolframalpha.com/
    IPFS IPFS에 저장된 파일 내용을 쿼리
    * IPFS: Inter-Planet File System (행성간 분산 파일 시스템)
    random 추후 정리 (어느 용사가 한줄로 정리해서 알려주기를 희망...)
    computation 임의의 어플리케이션 실행 결과를 쿼리
    * 어플리케이션은 Dockerfile로 컨테이너화 되어야 함
    * 어플리케이션은 stdout에 실행결과를 출력해야 함

  • Oraclize는 정보를 Query할 때마다 수수료를 징수
    Datasource Base price Proof type
    None TLSNotary Android Ledger
    URL 0.01$ +0.0$ +0.04$ +0.04$ N/A
    WolframAlpha 0.03$ +0.0$ N/A N/A N/A
    IPFS 0.01$ +0.0$ N/A N/A N/A
    random 0.05$ +0.0$ N/A N/A +0.0$
    computation 0.50$ +0.0$ +0.04$ +0.04$ N/A


Ref


Posted by ingeeC
,

코인(Coin)과 토큰(Token)

  • 코인과 토큰은 모두 암호화폐
    • 계좌의 저장 단위 (a unit of account)
    • 가치의 저장소 (a store of value)
    • 거래의 수단 (a medium of exchange)
  • 코인은 독자적인 블록체인 네트워크를 소유
    • 비트코인 네트워크의 코인, "비트코인 (BTC)"
    • 이더리움 네트워크의 코인, "이더 (ETH)"
  • 토큰
    • 기존 블록체인 네트워크 위에서 특정 자산을 표현
    • 교환 가능한 모든 자산은 토큰으로 표현 가능
    • 토큰을 정의하는 일은 코인을 정의하는 일보다 쉬움 (기존 블록체인 네트워크를 활용하기 때문)

ERC-20 스펙

  • ERC-20 스펙이란?
    • Ethereum Request for Comment 20
    • 이더리움 위에서 발행되는 토큰의 표준
    • ERC-20 스펙에 맞게 토큰을 발행하면
      1. 이더(ETH)와 쉽게 교환할 수 있고
      2. 표준 이더리움 지갑 (MEW, Meta Mask, Mist 등)으로 자유롭게 저장/교환 가능
    • ERC-20 스펙 definition
      contract ERC20 {
          function totalSupply() constant returns (uint supply);
          function balanceOf( address who ) constant returns (uint value);
          function allowance( address owner, address spender ) constant returns (uint _allowance);
      
          function transfer( address to, uint value) returns (bool ok);
          function transferFrom( address from, address to, uint value) returns (bool ok);
          function approve( address spender, uint value ) returns (bool ok);
      
          event Transfer( address indexed from, address indexed to, uint value);
          event Approval( address indexed owner, address indexed spender, uint value);
      }
      

ref

Posted by ingeeC
,
이더리움 gas 개념에 대해 고민하던 중 유용한 글이 있어 요약함
https://ethereum.stackexchange.com/questions/3/what-is-meant-by-the-term-gas

Gas란?

  • Gas는 이더리움은 생태계에서 사용되는 특별한 "단위"
  • 이더리움 플랫폼 위에서 실행되는 모든 작업은 실행을 위해 필요한 Gas량이 정해져 있음
  • 이더리움 위에서 ETH(이더)를 이체하거나 SmartContract를 실행시키기 위해서는 Gas 요금을 지불해야 함

Gas는 토큰이 아니다.

  • 예를 들어 1000 Gas를 구매하거나 소유할 수 없음
  • Gas는 EVM 소스코드 안에 얼마나 많은 작업을 처리했는지 나타내는 카운터로 존재

왜 ETH를 바로 쓰지 않고 Gas를 도입했나?

  • ETH(화폐)의 가치는 시장에서 등락을 거듭하며 항상 변화함
  • 반면 어떤 작업을 위해 필요한 컴퓨팅 자원(CPU, 메모리, 스토리지)의 양은 정해져 있음 (변화하지 않음)
  • 그래서 이더리움 개발팀은 컴퓨팅 자원량의 단위(Gas)와 화폐의 단위(ETH)를 분리하는 것이 합리적이라고 생각했음


Posted by ingeeC
,