- 일부 의견으로는, 암호자산이나 NFT로 대표되는 Blockchain의 응용(이른바 'web3')과 Metavers에
필연적인 관련성이 있는 것 같은 주장을 볼 수 있습니다. - 그런 주장의 난점의 하나는,
암호자산 및 NFT에 관련되는 것으로 가상공간으로의 참가가 자산형성을 위한 Game으로 바뀌게되어버려,
Metaverse가 지닌 본래의 가능성이 손실을 입는다는 것이다
- 예를 들어 다음과 같이 정의합니다
- [굳이 가상적인 공간에 Mapping된 정보공간]
- 그 Mapping을 User가 자발적으로 조합하는 것이 가능
- User가 Item 및 공간 그 것을 창조 가능함
- Item 및 구획을 Token화하여, Token을 소유하는 것을 통해 그것들의 Digital 자산을 Player가 소유,
즉 배타적으로 지배할 수 있게 되게 한다라는 생각이 있다 - 기술의 특성을 비추어, 그 사고는 올바른 방향인가?
- Item 및 구획을 Token화하여, Token을 소유하는 것을 통해 그것들의 Digital 자산을 Player가 소유,
- Minecraft
- Player가 입방체의 Block을 자유롭게 배치·파괴하여, 창의적인 건축물과 Art 작품을 만들 수 있는
Sandbox형 Video Game
- Player가 입방체의 Block을 자유롭게 배치·파괴하여, 창의적인 건축물과 Art 작품을 만들 수 있는
- VRChat
- Player가 직접 만든 가상공간을 Online으로 방문하고, Avatar를 통해 다른 Player와 교류할 수 있는
가상현실(VR) 대응의 Social Platform
- Player가 직접 만든 가상공간을 Online으로 방문하고, Avatar를 통해 다른 Player와 교류할 수 있는
- 이유
- Player에게 Game 체험에 Focus 하도록 하기 위해
- Game 내의 Item이 NFT에 연결되면, 그 시장가격의 상하에 Player의 관심이 빗나가버린다
- 무엇보다도, NFT가 암시하는 [희소성과 배제]의 생각이, Minecraft가 중요시하는 [포섭]의 사고와 익숙하지 않다
- Player에게 Game 체험에 Focus 하도록 하기 위해
- 전체 User 수를 나타내지 않기 때문에 참고 정도
- NeosVR은 NFT를 금지했다.
- 이유는 Mining의 전력 소비가 환경에 미치는 영향(현재는 해당되지 않음)
- VRChat에 희소성은 어울리지 않는다
- 그 세계에 하나밖에 없는 Item으로 놀고 싶다면, 각각의 동료들끼리 그 세계의 Instance를 만들어서 놀 수 있다.
- 놀고 싶은 모든 사람이 놀 수 있다
- 이른바 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이 가리키거나 포함하는 것은 소유할 수 없다.
- [우리가 Online에서 하는 거의 모든 일의 내부에 Token이라는 형태로 금융자산을 내장하는 것](Bloomberg)
여기서는 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로 설정한다.
pip는 파이썬의 패키지 관리 명령어입니다. 먼저 pip를 사용하여 pip 자체를 최신 버전으로 대체하고 있습니다.
다음 pip install eth-brownie를 실행합니다.
- 원래 Bitcoin을 가능하게 하기 위해 발명되어,
[자신이 보유한 Coin을 자신만이 자유롭게 누군가에게 보내는 것을 누구도 막지 못한다]
필요가 있는 것이니... - 자기주권성 : User 자신이 의사결정해서 실행가능하다 (예. Account를 마음대로 만들 수 있다)
- 검열 저항성(협의) : 타인의 의사로 기록 및 그 확인을 방해받지 않는다
- 장애 저항성 : 장애에 의해서도 기록 및 그 확인을 방해받지 않는다
- 변조 저항성 : 과거의 기록을 말소·개변·조작할 수 없다
- => 라고 하는 광의의 [검열 저항성]이 충족될 필요가 있다
- 어떠한 방법에 의해서도 기록의 부정이 불가능하다
- 기술이라서 동작 조건이 있다
- Blockchain 특유의 동작조건은 [Native 암호자산의 시장가격이 충분히 높다]
- 중요한 것은...
- ETH로 보수를 얻는 Validator 들이 자발적으로 참가한다
- 따라서, ETH의 시장 가격이 충분히 높을 필요가 있다
- 각자가 지닌 상태 Machine의 상태를 확실히 일치시킨다
- 대등한 초기 Block부터 시작된다
- Block을 전원에게 Copy
- Block의 나열이 대등하다
- 비결정이 아닌 처리
brownie에서는 실제 Ethereum의 Main Net이나 Test Net에 연결하지 않고도 Smart Contract를 Test할 수 있습니다.
이것이 바로 Test용으로 Memory 상에 구축된 Ethereum 환경입니다.
이 Test 환경은 논리적 의미는 실제 Ethereum과 같지만,
너무 빠르기 때문에 Blockchain의 실체를 경험하기에는 적합하지 않습니다.
- 넓은 의미의 검열 저항성을 충족하는 원장에 프로그램 코드와 데이터를 기록하여 실행할 수 있기 때문에
Smart Contract는 유용 - 중요한 것은...
- Ethereum 가상 Machine (EVM)이 Smart Contract를 실행한다
- 그것을 지시하는 User는 ETH로 계산자원량을 구입하지 않으면 안된다
- 누군가가 계산자원량을 구입하지 않으면 Smart Contract는 움직이지 않는다
- DAO 실현으로의 함정
- EOA : Externally Owned Account
※ Gas는 계산 자원의 양을 나타낸다
※ Gas 사용료를 ETH로 지불하는 User가 Transaction을 입력하지 않는한 Smart Contract는 동작하지 않음
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에 기록하지 않는 발행원도 많이 존재한다
- 권을 빌려서, 같은 수량을 나타내는 별도의 권을 바로 돌려준 경우, 혼날지 어떤지
- 그 Contract라는 정의역 안에, 실선 화살표가 나타내는 고유성을 보증하는 것에 지나지 않는다
- 파선 화살표로 표시한 고유성은 구현 및 운영의 노력에 따라 보장할 수 있다.
예를 들어, URL에 URL이 가리키는 리소스의 암호학적 다이제스트를 포함시킴(예: IPFS 사용)으로써
[URL → 데이터]의 고유성을 유지할 수 있다(이 경우에도 [데이터 → URL]의 고유성은 없다).
여기서도 [Class나 Type/형(雛型)]과 [Instance(구체적인 것)]가 등장합니다.
현재 Computing 환경에서 매우 중요한 개념 중 하나입니다.
[Instance를 만들어서 조작한다]는 것이 기본입니다.
교실에서는 이렇게 Deploy가 완료되기 직전에 사실상 멈춰버렸다.
동일한 Meta Data URL(Meta Data가 아닌 WBS Web page를 가리키는 것이지만)을 가진 두 개의 NFT를 발행했습니다.
소유자도 동일하기 때문에 Token의 번호 외에는 구분할 수 없습니다.
소유자를 바꿔볼까 해서 다음 Page에서는 1번 NFT를 다른 Account로 양도하고 있습니다.
다음 페이지에서는 실제(?) 하는 NFT를 예로 들어 설명하겠습니다.
블록체인이 같거나 다르더라도, Smart Contract가 다른 Instance라면 정의 영역이 달라진다.
※ NFT가 Data를 가리키는 방식과 Data를 저장하는 방식은,
Data의 가용성은 다르지만 고유성과 관련된 성질은 동일합니다.
- 미출고 NFT
- 이어, 모 NFT Marketplace에 올라온 실례를 살펴보자
- 이 NFT들은 Ethereum에 존재하지 않습니다.
- Ethereum 상에 존재하지 않는 NFT가 거래되고 있습니다
- 이 NFT Marketplace는 그 사실을 명시하고 있습니다
- [출고 절차]를 하지 않는 한, 실제로는 Ethereum에 기록하지 않습니다
- Lazy Minting이라는 기법이며, 찬(?)반 양론이 있습니다.
- Ticket으로 이것을 하면 무의미 (기존과 다를 바 없으므로) Token의 매매가 전제
- 쓰기 Cost(Gas 사용료)이 높기 때문에
Terminal Window의 폭이 조금 좁아서 Contract Address가 두 줄에 걸쳐 있지만,
이전 Page에 나와 있는 Address와 동일합니다.
- 분산형 자율조직
- 의사결정을 자율적으로 행할 수 있습니까
- 즉, 누구로부터 Control 되지 않는다고 정말 말할 수 있습니까
- 왼쪽의 Cube에 모순이 있지만, 그건 차치하고 . . .
- Buterin이 정의한 DAO (2014)
- Internet 상에 자율적으로 존재하지만, 자동 System 자체가 할 수 없는 특정 작업을 수행하기 위해
인간을 고용하는 데 크게 의존하고 있다. - 따라서 내부적으로 자본(보상으로 사용되어 인간을 움직이게 하는)을 지님
- 의사결정을 자율적으로 수행한다
- Internet 상에 자율적으로 존재하지만, 자동 System 자체가 할 수 없는 특정 작업을 수행하기 위해
- 자율성이란?
- 외부의 지배를 받지 않음
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로 작성된다.
- 그것을 모두가 읽을 수 있는 것이 전제된다.
- 가결된 제안을 실행하는 (계산 자원량을 구매) 하는 것은 누구?
- 결정된 누군가가 한다면, 그 사람이 거부권을 지닌 실질적인 지배자인지는?
- 누구나 할 수 있다면, 진의를 난독화한 제안으로 쉽게 공격할 수 있음 ← 실례가 있음
- 자율적으로 움직이지 않는다 (호출되지 않으면 움직이지 않음)
- [소유] 개념의 얕음이라는 Reality
- 모든 것을 Token화하면 해결되나? (안 된다... 되나?)
- [User가 Data를 관리하고, 출판이 용이]는 실현 되고 있는 것인가
- 타인에 대한 Trust에 의존하지 않고 Token은 소유할 수 있지만,
Token이 가리키거나 포함하는 것은 소유할 수 없다. - Token의 소유는 증명할 수 있고, Blockchain은 광의의 의미에서 검열할 수 없기 때문에,
누구에게도 방해받지 않고 각자의 의사표현은 가능하다- 따라서, Token 보유량에 따라 투표는 실현 가능하다
- 하지만 투표는 의사결정에 있어서 최후의 수단이 아닌지?
- 투표를 하기 전에 해야 할 일이 있다는 것을 알고 있는 DAO도 있는 것 같으나
그 부분은 보통 웹 2.0적으로 움직이고 있지 않나?
(중요한 것은 웹3가 아닌 웹2.0으로 움직이는 것은 아닌지?)
- 투표를 하기 전에 해야 할 일이 있다는 것을 알고 있는 DAO도 있는 것 같으나
- 모든 것을 Token화하면 해결되나? (안 된다... 되나?)
- 애초에 . . .
[같은 뜻을 가지고 일을 하는 집단]은 누군가가 소유할 수 있는 것인지
'WBS - 2023 Summer > Fintech 금융혁신과 Internet' 카테고리의 다른 글
(Fintech #7-8) Smart Contract (0) | 2023.06.26 |
---|---|
(Fintech W-IOI #9-10) Client / Server (0) | 2023.06.26 |
(Fintech W-IOI #6-7) 암호학적 Hash 관수 | Digital 서명 (0) | 2023.06.26 |
(Fintech #5-6) 신 Blockchain (0) | 2023.06.19 |
(Fintech W-IOI #5-6) Internet의 특징 | Internet의 Governance (0) | 2023.06.07 |
(Fintech W-IOI #3-4) Digital과 Communication | Internet의 기술 (TCP/IP의 철도 Model) (0) | 2023.06.06 |
(Fintech #1-2) 핀테크 금융혁신과 인터넷 | フィンテック―金融革新とインターネット | Waseda MBA | Waseda Business School | SAITO Kenji | 斉藤 賢爾 (0) | 2023.06.05 |
(Fintech W-IOI #1-2) 핀테크 금융혁신과 인터넷 | フィンテック―金融革新とインターネット | Waseda MBA | Waseda Business School | SAITO Kenji | 斉藤 賢爾 (0) | 2023.06.05 |