본문 바로가기
WBS - 2023 Summer/Fintech 금융혁신과 Internet

(Fintech #3-4) Web3의 Reality

by fastcho 2023. 6. 12.
반응형

Web3의 Reality

 

사이토에 의한 Internet의 Tetrad

 

 

 

 

Web3의 Reality(1) - 해설과 Demo

 

 

  • 일부 의견으로는, 암호자산이나 NFT로 대표되는 Blockchain의 응용(이른바 'web3')과 Metavers에
    필연적인 관련성이 있는 것 같은 주장을 볼 수 있습니다.
  • 그런 주장의 난점의 하나는,
    암호자산 및 NFT에 관련되는 것으로 가상공간으로의 참가가 자산형성을 위한 Game으로 바뀌게되어버려, 
    Metaverse가 지닌 본래의 가능성이 손실을 입는다는 것이다

Metaverse 편

 

 

  • 예를 들어 다음과 같이 정의합니다
    • [굳이 가상적인 공간에 Mapping된 정보공간]
    • 그 Mapping을 User가 자발적으로 조합하는 것이 가능
  • User가 Item 및 공간 그 것을 창조 가능함
    • Item 및 구획을 Token화하여, Token을 소유하는 것을 통해 그것들의 Digital 자산을 Player가 소유,
      즉 배타적으로 지배할 수 있게 되게 한다라는 생각이 있다
    • 기술의 특성을 비추어, 그 사고는 올바른 방향인가?

Metaverse란

 

 

 

  • Minecraft
    • Player가 입방체의 Block을 자유롭게 배치·파괴하여, 창의적인 건축물과 Art 작품을 만들 수 있는
      Sandbox형 Video Game
  • VRChat
    • Player가 직접 만든 가상공간을 Online으로 방문하고, Avatar를 통해 다른 Player와 교류할 수 있는 
      가상현실(VR) 대응의 Social Platform 
  •  이유
    • Player에게 Game 체험에 Focus 하도록 하기 위해
      • Game 내의 Item이 NFT에 연결되면, 그 시장가격의 상하에 Player의 관심이 빗나가버린다
    • 무엇보다도, NFT가 암시하는 [희소성과 배제]의 생각이, Minecraft가 중요시하는 [포섭]의 사고와 익숙하지 않다 

NFT를 금지하는 Metaverse계 Game

 

 

Metaverse계의 User수의 비교

 

 

  • 전체 User 수를 나타내지 않기 때문에 참고 정도
  • NeosVR은 NFT를 금지했다.
    • 이유는 Mining의 전력 소비가 환경에 미치는 영향(현재는 해당되지 않음)
  • VRChat에 희소성은 어울리지 않는다
    • 그 세계에 하나밖에 없는 Item으로 놀고 싶다면, 각각의 동료들끼리 그 세계의 Instance를 만들어서 놀 수 있다.
    • 놀고 싶은 모든 사람이 놀 수 있다

 

VRChat vs. NeosVR (User수의 비교)

 

 

Web 1-2-3

 

 

  • 이른바 Web 1.0 (Berners-Lee) : Read × Write
    • 연구자를 위한 출판 Media → 기본적으로 모두가 논문을 쓰고, 읽는 것이기 때문에 처음부터 양방향
    • [User가 Data를 관리하지만, 출판은 쉽지 않다]
  • Web 2.0 (O'Reilly) : Read × Write ← 이전 (Web 1.0 시대)부터
    • [User가 Data를 관리할 수 없지만, 출판이 용이]
  • Web 3.0 (Berners-Lee)
    • [User가 Data를 관리할 수 있고, 출판이 용이함]을 지향 → Solid (Social linked data)
  • Web 3.0 → Web3 (Wood)
    • Ethereum을 Web에서 사용할 수 있도록 한다 ← web3.js, web3.py
  • Web3 (Dixon) : Read × Write × Own
    • [우리가 Online에서 하는 거의 모든 일의 내부에 Token이라는 형태로 금융자산을 내장하는 것](Bloomberg)
      타인에 대한 Trust에 의존하지 않고 Token은 소유할 수 있지만,
      Token이 가리키거나 포함하는 것은 소유할 수 없다.

Web 3.0 및 Web3는 무얼 해결하고 싶은가

 

 

Demonstration 환경

 

 

Demonstration 준비

 

 

여기서는 Demo를 위해 Python의 특정 Version과 Package Set를 사용하기 위한 가상 환경을
'demoenv'라는 이름으로 만들고, Python을 이용한 Ethereum Smart Contract 개발 환경인 brownie를 설치했습니다.

 

Python은 다양한 Package를 사용하여 다양한 작업을 할 수 있는 Programming 언어 및 실행 환경이지만,

Package 간의 궁합도 있고, 하나의 환경에서 모든 응용을 다 소화하기에는 어려움이 있습니다.

그래서 응용 Program마다 가상 환경을 만들어 그 안에 필요한 패키지를 설치하여
응용 Program을 구동하는 경우가 많습니다.

 

실제로 이 Demo를 직접 해보기 위해서는 이 Page의 작업에 앞서 다음과 같은 것들이 필요합니다.

1) solidity를 설치한다.
2) npm을 (아직 설치하지 않았다면) 설치한다.
3) ganache를 설치한다.
4) python3와 python3-dev python3-venv python3-tk가 없다면 설치한다.

또한 https://infura.io 에 가입하여 PROJECT ID를 발급받고, 
환경 변수 WEB3_INFURA_PROJECT_ID의 값을 자신의 PROJECT ID로 설정한다.

Python

pip는 파이썬의 패키지 관리 명령어입니다. 먼저 pip를 사용하여 pip 자체를 최신 버전으로 대체하고 있습니다.

 

다음 pip install eth-brownie를 실행합니다.

 

eth-brownie.py를 설치하여, 그 결과 web3.py도 설치됨

 

 

 

Blockchain편

 

 

 

  • 원래 Bitcoin을 가능하게 하기 위해 발명되어, 
    [자신이 보유한 Coin을 자신만이 자유롭게 누군가에게 보내는 것을 누구도 막지 못한다]
    필요가 있는 것이니...

  • 자기주권성 : User 자신이 의사결정해서 실행가능하다 (예. Account를 마음대로 만들 수 있다)
  • 검열 저항성(협의) : 타인의 의사로 기록 및 그 확인을 방해받지 않는다
  • 장애 저항성 : 장애에 의해서도 기록 및 그 확인을 방해받지 않는다 
  • 변조 저항성 : 과거의 기록을 말소·개변·조작할 수 없다

  • => 라고 하는 광의의 [검열 저항성]이 충족될 필요가 있다
    • 어떠한 방법에 의해서도 기록의 부정이 불가능하다
    • 기술이라서 동작 조건이 있다
      • Blockchain 특유의 동작조건은 [Native 암호자산의 시장가격이 충분히 높다]

Blockchain : 충족해야할 성질

 

  • 중요한 것은...
  • ETH로 보수를 얻는 Validator 들이 자발적으로 참가한다
    • 따라서, ETH의 시장 가격이 충분히 높을 필요가 있다
  • 각자가 지닌 상태 Machine의 상태를 확실히 일치시킨다
    • 대등한 초기 Block부터 시작된다
    • Block을 전원에게 Copy
    • Block의 나열이 대등하다
    • 비결정이 아닌 처리

Ethereum Blockchain의 구조

 

 

Ethereum Blockchain을 접하다

 

Test용 Memory 상의 Ethereum과 연결되어 있으므로 분리한다 / Ethereum Main Net(진짜)에 다시 연결하여 최신 Block 번호(여기서는 17467862)를 얻는다.

brownie에서는 실제 Ethereum의 Main Net이나 Test Net에 연결하지 않고도 Smart Contract를 Test할 수 있습니다. 

이것이 바로 Test용으로 Memory 상에 구축된 Ethereum 환경입니다. 

이 Test 환경은 논리적 의미는 실제 Ethereum과 같지만, 

너무 빠르기 때문에 Blockchain의 실체를 경험하기에는 적합하지 않습니다.

 

 

이 부분이 Transaction ID의 예 (Transaction은 ETH의 송금 / Smart Contract의 초기 입력(Deploy) / Smart Contract의 기능 호출 중 어느 것)

 

 

날짜/시간을 다루기 위한 datetime Library(Program 부품)를 Import하여 Unix 시간 1686620255를 인간 시간으로 취급하는 변수 dt를 만들고, dt의 내용을 표시하여 일본 시간 2023년 6월 13일 10:37:35를 얻는다. ※ Unix 시간은 협정 세계시 1970년 1월 1일 오전 0시 0분 0초로부터의 경과 초수

 

 

 

 

 

 

  • 넓은 의미의 검열 저항성을 충족하는 원장에 프로그램 코드와 데이터를 기록하여 실행할 수 있기 때문에 
    Smart Contract는 유용
  • 중요한 것은...
  • Ethereum 가상 Machine (EVM)이 Smart Contract를 실행한다
  • 그것을 지시하는 User는 ETH로 계산자원량을 구입하지 않으면 안된다
  • 누군가가 계산자원량을 구입하지 않으면 Smart Contract는 움직이지 않는다
    • DAO 실현으로의 함정
  • EOA : Externally Owned Account

Smart Contract의 실행 Mechanism

※ Gas는 계산 자원의 양을 나타낸다
※ Gas 사용료를 ETH로 지불하는 User가 Transaction을 입력하지 않는한 Smart Contract는 동작하지 않음

 

 

Smart Contract를 Deploy함

 

brownie는 일반적인 Smart Contract를 처리할 수 있는 Template을 제공합니다.

이 Template을 mix라고 부르는데, (과자 용어로 통일되어 있네요.)

ERC-721 표준에 따른 NFT(Non-Fungible용) 외에도 ERC-20 표준에 따른 Token(Fungible용)이 있습니다.

brownie bake token이라고 입력하면 ERC-20에 따른 System을 만들 수 있습니다.

 

 

이것은 Emacs라는 Text Editor의 화면입니다.
Text Editor는 문장을 입력, 편집하는 Software입니다.
Code를 읽고 쓸 때도 사용합니다.

 

 

Project의 Directory(Folder)로 이동하여 brownie console을 입력하면 해당 Project용 Console이 실행됩니다.
Project에서 정의한 Smart Contract 이름 등이 Typing 시 보완되어 편리하며, Deploy도 쉽게 할 수 있습니다.

 

 

이 윗줄에 비밀Key가 적혀있기 때문에 숨기려고 줄바꿈을 많이 한 것이다.

 

지갑에 설정한 Account의 Address

※ Account의 Address(160 bit, 16진수 40자리, x는 16진수라는 표시)는 비밀 Key에 해당하는 공개 Key의 Digest

Transaction을 발행할 때, 어떤 Account가 발행했는지 검증할 수 있도록 Digital 서명을 하는데,
    서명을 검증하기 위해서는 공개 Key가 필요하므로 서명 구조에서 공개 Key도 얻을 수 있다.

Transaction의 서명 구조에서 얻은 공개 Key의 Digest를 계산하면,

    해당 Transaction의 발행자 Account의 Address임을 알 수 있다.

 이 Demo에서는 특별히 Wallet이라는 것을 사용하지 않고, Console에 Account의 비밀 Key를 설정한 것뿐이지만,
    Wallet은 애초에 비밀 Key를 관리함으로써 User가 Transaction을 발행할 수 있도록 하는 Tool이기 때문에,

    말하자면 이 Console은 Wallet이라고 할 수 있다.

 

 

 

 

 

 

 

  • Fungible인가, Non-Fungible인가의 구분 방법
    • 권을 빌려서, 같은 수량을 나타내는 별도의 권을 바로 돌려준 경우, 혼날지 어떤지
      • 1만엔권은? → Fungible (대체 가능)
      • Concert Ticket은? → Non-Fungible (대체 불가능)
    • 개념적으로 권(Ticket)이며, 발행원을 Trust 하는 것에도 기반한다
      • Trust 되지 않는 발행원은 같은 의미를 지닌(다고 하는) NFT를 무적으로 만들 수 있다
      • Trust 될지도 모르지만, NFT를 Blockchain에 기록하지 않는 발행원도 많이 존재한다

NFT (Non-Fungible Token) 편

 

 

 

ERC-721 사양에 기반한 NFT

  • 그 Contract라는 정의역 안에, 실선 화살표가 나타내는 고유성을 보증하는 것에 지나지 않는다
  • 파선 화살표로 표시한 고유성은 구현 및 운영의 노력에 따라 보장할 수 있다.
    예를 들어, URL에 URL이 가리키는 리소스의 암호학적 다이제스트를 포함시킴(예: IPFS 사용)으로써
     [URL → 데이터]의 고유성을 유지할 수 있다(이 경우에도 [데이터 → URL]의 고유성은 없다).

 

 

NFT를 발행한다

 

여기서도 [Class나 Type/형(雛型)]과 [Instance(구체적인 것)]가 등장합니다.

현재 Computing 환경에서 매우 중요한 개념 중 하나입니다.

[Instance를 만들어서 조작한다]는 것이 기본입니다.

 

교실에서는 이렇게 Deploy가 완료되기 직전에 사실상 멈춰버렸다.

 

 

 

동일한 Meta Data URL(Meta Data가 아닌 WBS Web page를 가리키는 것이지만)을 가진 두 개의 NFT를 발행했습니다.

소유자도 동일하기 때문에 Token의 번호 외에는 구분할 수 없습니다.

소유자를 바꿔볼까 해서 다음 Page에서는 1번 NFT를 다른 Account로 양도하고 있습니다.

 

 

 

다음 페이지에서는 실제(?) 하는 NFT를 예로 들어 설명하겠습니다.

 

 

 

 

NFT의 유일성에 대한 환상을 버리자

블록체인이 같거나 다르더라도, Smart Contract가 다른 Instance라면 정의 영역이 달라진다.

 

※ NFT가 Data를 가리키는 방식과 Data를 저장하는 방식은,
    Data의 가용성은 다르지만 고유성과 관련된 성질은 동일합니다.

 

 

 

 

  • 미출고 NFT
    • 이어, 모 NFT Marketplace에 올라온 실례를 살펴보자
    • 이 NFT들은 Ethereum에 존재하지 않습니다.
    • Ethereum 상에 존재하지 않는 NFT가 거래되고 있습니다
    • 이 NFT Marketplace는 그 사실을 명시하고 있습니다
      • [출고 절차]를 하지 않는 한, 실제로는 Ethereum에 기록하지 않습니다
      • Lazy Minting이라는 기법이며, 찬(?)반 양론이 있습니다.
      • Ticket으로 이것을 하면 무의미 (기존과 다를 바 없으므로) Token의 매매가 전제
    • 쓰기 Cost(Gas 사용료)이 높기 때문에

 

NFT의 실재성도 때로는 의심스럽다
Adam byGMO라는 NFT Marketplace를 예로 들어, 실제 NFT의 3가지 예시를 살펴보겠습니다. 먼저, OpenSea에도 게재된 이 예시

 

 

그리고 도쿄Metro의 NFT를 2개 (도자이선, 한조몬선)

 

 

우리 도자이선 NFT Page입니다. (한조몬선에 대해서는 페이지 표시를 생략합니다.)

 

 

Adam byGMO가 사용하는 유일한 ERc-721 호환 Smart Contract의 Address

 

Terminal Window의 폭이 조금 좁아서 Contract Address가 두 줄에 걸쳐 있지만,

이전 Page에 나와 있는 Address와 동일합니다.

 

 

[출고] 되었기 때문에 Blockchain 상에 실제로 존재했었군요. NFT에 기록된 정보를 확인해 봅시다.

 

NFT에서 얻은 소유자 Address와 일치하는지 확인합니다.

 

Meta Data URL은 ipfs Scheme를 사용하지만, IPFS에서는 https로 Access하는 Service도 제공하고 있다. ([ipfs://]를 [https://ipfs.io/ipfs/]로 대체하여 사용)

 

 

 

Meta Data URL은 ipfs Scheme를 사용하지만, IPFS에서는 https로 Access하는 Service도 제공하고 있다. ([ipfs://]를 [https://ipfs.io/ipfs/]로 대체하여 사용)

 

 

 

 

 

 

 

 

 

  • 분산형 자율조직
  • 의사결정을 자율적으로 행할 수 있습니까
    • 즉, 누구로부터 Control 되지 않는다고 정말 말할 수 있습니까 

DAO(Decentralized Autonomous Organization) 편

 

 

 

  • 왼쪽의 Cube에 모순이 있지만, 그건 차치하고 . . .
  • Buterin이 정의한 DAO (2014)
    • Internet 상에 자율적으로 존재하지만, 자동 System 자체가 할 수 없는 특정 작업을 수행하기 위해
      인간을 고용하는 데 크게 의존하고 있다.
    • 따라서 내부적으로 자본(보상으로 사용되어 인간을 움직이게 하는)을 지님
    • 의사결정을 자율적으로 수행한다
  • 자율성이란?
    • 외부의 지배를 받지 않음

DAO와 각종조직의 Cube

DApp : Smart Contract에 의한 Application (Decentralized App)
Forum : 사람들이 특정 주제에 대해 토론하거나 정보를 교환하는 장소
Demon : Background에서 실행되어, Event에 자동으로 대응하는 프로그램

 

 

 

 

  • Bitcoin은 DAO?
    → DAO
  • Ethereum 은 DAO?
    → 응, 뭐... DAO? (인간이 빨리 의사결정을 하지만) (특정 집단이 지배하고 있는 것 같은 느낌이 듬)
  • Smart Contract로 만든 것은 DAO? (예. Stable Coin이라던가)
    → 어?... 어라라?
    • 자율적으로 움직이지 않는다 (호출되지 않으면 움직이지 않음)
      ↑ 총체적으로 모두가 함께 움직이는 응용 System, 이라는 해석은 가능할지도
    • Token 보유분에 의한 투표에 의사결정을 의존하고 있다.
      • 제안은 Smart Contract의 Code로 작성된다.
      • 그것을 모두가 읽을 수 있는 것이 전제된다.
    • 가결된 제안을 실행하는 (계산 자원량을 구매) 하는 것은 누구?
      • 결정된 누군가가 한다면, 그 사람이 거부권을 지닌 실질적인 지배자인지는?
      • 누구나 할 수 있다면, 진의를 난독화한 제안으로 쉽게 공격할 수 있음 ← 실례가 있음

DAO인지, 그렇지 않은지

 

  • [소유] 개념의 얕음이라는 Reality
    • 모든 것을 Token화하면 해결되나? (안 된다... 되나?)
      • [User가 Data를 관리하고, 출판이 용이]는 실현 되고 있는 것인가
    • 타인에 대한 Trust에 의존하지 않고 Token은 소유할 수 있지만,
      Token이 가리키거나 포함하는 것은 소유할 수 없다.


    • Token의 소유는 증명할 수 있고, Blockchain은 광의의 의미에서 검열할 수 없기 때문에,
      누구에게도 방해받지 않고 각자의 의사표현은 가능하다
      • 따라서, Token 보유량에 따라 투표는 실현 가능하다
      • 하지만 투표는 의사결정에 있어서 최후의 수단이 아닌지?
        • 투표를 하기 전에 해야 할 일이 있다는 것을 알고 있는 DAO도 있는 것 같으나
          그 부분은 보통 웹 2.0적으로 움직이고 있지 않나?
          (중요한 것은 웹3가 아닌 웹2.0으로 움직이는 것은 아닌지?)
  • 애초에 . . .
    [같은 뜻을 가지고 일을 하는 집단]은 누군가가 소유할 수 있는 것인지

Web3의 Reality (1) 의 정리

 

 

반응형