007. Web 3.0

2022. 2. 7. 02:54
반응형
  • 아래 내용은 https://www.preethikasireddy.com/post/the-architecture-of-a-web-3-0-application을 정리한 것임.
  • Web 2.0은 어떻게 생겼었나?
    •  
    • web 2.0의 구성 요소들은 아래와 같음. 얘네들이 모두 웹서버에 저장됨. 중앙화된 방식임.
      1. Front-end : front-end 코드는, UI logic(사용자와 바로 맞닿는 부분)을 정의함. 사이트를 어떻게 꾸밀껀지, 웹페이지에서의 user interaction들을 어떻게 할건지 등등... javascript, HTML, CSS로 작성됨.
      2. Back-end : back-end 코드는, business logic을 정의함. 사용자가 어떤 행동을 하면 그것을 어떤식으로 처리할지 등등... Node.js, Python, Java, Go로 작성됨.
      3. Database : 관련 데이터들을 모두 저장할 곳. 계속해서 업데이트도 될 수 있어야함.
  • Web 3.0 : Web 2.0과 다르게 중앙화 DB나 중앙화된 웹서버가 없음. 탈중앙 노드들로 구성된 블록체인에 앱(DApps)을 올림.
    • 탈중앙화 상태 머신(ex. EVM)들이, 인터넷의 불특정 노드들에서 돌아감. 그리고 탈중앙화 상태 머신(ex. EVM)에서 앱을 빌드할 수 있음. 상태 머신에서의 상태 변화는, 각 노드들이 따르는 합의 규칙에 따라 govern된다.
    • 그림 설명 1) 기존 back-end에서 작동되던 logic code들은...
      • 앱들의 logic code는 웹서버의 backend에 저장하는 것이 아니라, smart contract으로 작성하여, 탈중앙화 상태 머신에 deploy할 수 있음. logic code는 블록체인에 저장되므로 누구든지 볼 수 있음.
      • smart contract에 작성한 logic code를, EVM에서 실행해줌. 이 logic code는 solidity같은 하이 레벨 언어로 작성되기 때문에, EVM이 바로 알아먹지 못해서, bytecode로 변환하는 컴파일을 해줘야함.
      • EVM에서 logic code가 궁극적으로 실행되면, 상태가 변화됨.
    • 그림 설명 2) 기존 front-end에서 작동되던 것들은...
      • function을 invoke하기 위해 smart contract와 communicate를 해야함. 즉, 블록체인에 있는 데이터 및 코드와 상호작용하고 싶다는건데, 이것은 노드들 중 하나와 상호작용해야 한다는 것임(하나와 상호작용하면 어차피 네트워크 안의 모든 노드들에게 broadcast되므로..). front-end와 노드가 상호작용 가능하게 하는 두가지 방법이 있음. 이때 상호작용하는 노드를 provider라고 함.
        • 직접 노드를 셋업
        • Infura, Alchemy, Quicknode와 같은 제3자가 제공하는 노드 서비스를 이용
      • 이렇게 provider를 통해서 blockchain과 연결되면, 블록체인에 저장된 상태들을 read 가능. 그러나 상태를 write하려면, 개인키로 서명한 transaction을 제출해야함. 개인키로 서명을 해줘야만, DApp이 해당 transaction을 블록체인에 relay함. 그렇지 않으면 거절! (그림에서 metamask가 들어가는 signer 부분에 해당됨. metamask는, 사용자의 개인키를 브라우저에 저장함. 그림을 보니, metamask는 provider의 역할도 겸할 수 있는듯.)
    • 그림 설명 3) 기존에 database에 저장되던 것들은...
      • 블록체인에 모두 저장하면 좋지만, 그러기엔 비용이 많이 든다. 이를 해결하기 위해 IPFS나 SWARM같은 탈중앙화 off-chain을 사용함.
      • IPFS : P2P 방식의 저장 시스템으로, 서버가 아닌 개인 노드들의 저장공간을 사용하게 됨. 개인 노드의 저장공간을 제공하는 대신, 파일코인과 같은 인센티브를 제공하는 것임.
      • 그림에서 보다시피, front-end 코드들을, 기존의 web2.0에서 사용하던 AWS에 저장해도 되고, 아니면 IPFS/SWARM같은 탈중앙화 저장 공간에 저장해도 됨.
    • 그림 설명 4) 블록체인에 있는 smart contract로부터 데이터를 read 하려면?
      • Web3.js library같은걸 이용해서 특정 이벤트들을 listen할 수있음.
      • The Graph : 이더리움 블록체인에 있는 데이터를 query하기 용이하도록, off-chain indexing solution을 제공함. GraphQL이라는 query 언어를 사용함. 데이터들을 indexing한다는 얘기임.
    • 그림 설명 5) 이더리움 확장성 문제를 해결하기 위한 scaling solution들
      • Polygon : L2 scaling solution. 메인 블록체인에서 transaction을 실행하지 않고, sidechain들에서 실행한다. 이 sidechain은, 메인 블록체인과 상호작용함.
      • Optimistic Rollup, zkRollup : L2 scaling solution

 


 

 

  • web3.0 특징
    • trustless internet
    • permissionless internet
    • decentralized internet
  • web3.0를 결정짓는 요소 = 소유권 (ownership)
    • web1.0 = read-only for users
    • web2.0 = read-write on centralized platform (ex. Twitter, Facebook, Youtube...)
    • web3.0 = read-write-own
      • 사용자들의 콘텐츠, 데이터에 대한 소유권을 준다.
  • web3.0 stack
    • protocol layer
      • 비트코인은 lightning network(속도 및 싼 수수료를 위함) 및 스택스(스마트 컨트랙트 위함)를 가지고 있음.
    • infrastructure / category primitives\
      • Arweave : data를 탈중앙화 방식으로 저장하게 해줌
      • ENS : web3.0에서 user identity로써 사용됨.
    • use case layer
      • Mirror : decentralized blogging platform
    • access layer
반응형

'Blockchain · Coin > 공부한거 정리하기' 카테고리의 다른 글

009. 비트코인 On-chain 용어 정리  (0) 2022.02.10
008. On-chain 용어정리  (0) 2022.02.07
006. Custody, STO  (0) 2022.02.07
005. Wallet  (0) 2022.02.07
004. 인기있는 코인들 공부해보기  (0) 2022.02.06

+ Recent posts