4 분 소요

Web3


Web3란?

  • Web1 : 클라이언트가 서버로부터 콘텐츠를 읽기(Read)만 가능하여 Information Economy라고 불렸다.
  • Web2 : AJAX의 등장으로, 클라이언트는 서버로부터 단순히 정보를 받기만 하는 것이 아닌 서버와 상호작용하면서, 서버에 기록(Write)도 가능하게 되었다.
    • 플랫폼을 사용하기 위해 사용자는 자신의 개인정보를 제공해야 하며, 이를 이용하여 수익을 내고, 탈취 위험이 존재한다.
    • 결론적으로 사용자의 의도와는 다르게 플랫폼 기업에 의해 개인 정보가 사용되고, 개인정보에 대한 보안도 각 플랫폼 기업에 의존해야 하는 문제가 발생한다.
  • Web3 : Web2의 문제를 해결하기 위해 등장하였으며, 중앙집중적인 플랫폼 이코노미를 벗어나, 모든 참여자가 플랫폼이 될 수 있는 분산형 인터넷을 의미한다.
    • 블록체인 기술을 기반으로 하며, 모든 참여자가 플랫폼이 되기 때문에 모든 데이터가 공유되며, 동시에 암호화 기술을 사용해 개인 정보를 제공하지 않고도 사용자는 신원을 식별할 수 있다.

Web3 장점


  • 네트워크에 참여하는 누구나 서비스를 사용하기 위한 권한을 가지고 있다.
  • 누구도 특정 사용자가 서비스에 접근하지 못하도록 막거나 거부할 수 없다.
  • 결제는 자체 토큰을 사용한다.
  • 중앙화된 플랫폼에 의한 데이터에 대한 검열이 불가능 하다.
  • 수천 대의 노드로 구성된 분산형 네트워크이기 때문에 특정 노드가 죽어도 서비스는 계속 유지된다.

중앙집중화 vs 탈중앙화


  중앙집중화 시스템 탈중앙화 시스템
네트워크 전송 낮은 네트워크 대역폭, 연산 자원을 많이 가지고 있는 중앙 기관이 전파를 처리 네트워크 한쪽에서 브로드캐스팅되는 정보는 반대편까지 도달하는 데 오랜 시간이 소요될 수 있음
성능 비교적 좋은 성능, 구현에 용이 비교적 낮은 성능, 구현하기 복잡함
데이터 충돌 해결 중앙 기관이 궁극적인 진실을 가지고 있기 때문에 해결이 쉽고 간단 노드가 동기화할 데이터 상태에 대한 이견이 있을 경우, 갈등을 해결하기 위한 복잡한 프로토콜 필요
단일 장애 지점 여부 중앙기관 단일 장애 지점 없음
합의 중앙 기관이 담당 합의가 매우 어려움, 최악의 경우 네트워크가 파괴되기도 함
데이터 검열 중앙 기관에 의한 검열 가능 데이터 검열이 어려움
참여 권한 중앙 기관에 의해 제어 누구나 참여 가능하며, “게이트키퍼”는 존재하지 않음

EtherScan

이더스캔(etherscan.io)은 이더리움을 위한 블록체인 탐색기, 검색, API, 분석 플랫폼이다.

퍼블릭 이더리움 블록체인은 모든 주소, 트랜잭션 블록에 대한 정보가 공개되어 있어, 이더스캔은 이러한 공개된 정보를 시각화하여 보여준다.

또한 EtherScan API를 통해 정보를 요청할 수 있다.

EtherScan API

트랜잭션 정보 분석


1

  • Transaction Hash : 해당 트랜잭션의 ID
  • Status : 트랜잭션의 성공 여부
  • Block : 트랜잭션이 기록된 블록 숫자
    • n Block Confirmations를 통해 트랜잭션이 채굴된 후 블록이 얼마나 생겼는지 확인 가능하다.
  • Timestamp : 트랜잭션이 채굴된 시간
  • From : 트랜잭션을 보낸 사람의 주소
  • To : 트랜잭션을 받는 사람의 주소
  • Value : 보내는 이더의 양
  • Transaction Fee : 트랜잭션을 수행하는 채굴자에게 돌아가는 수수료
  • Gas Price : 트랜잭션을 수행하는 데 소요되는 가스당 비용(Eth or Gwei).
    • Gas Price가 높을수록 채굴자가 블록에 트랜잭션을 포함시킬 확률이 높다.
  • Gas Limit & Usage by Ten : 트랜잭션을 실행하는 데 드는 소모할 가스의 한도와 실제로 트랜잭션 수행 시 소모된 가스의 양
    • 일반적인 이더리움 트랜잭션에서는 21,000 가스를 사용한다.
  • Gas Fees : Gas Fee는 Base Fee와 Max Fee, Priority Fee로 나뉜다.
    • Base Fee : 트랜잭션이 블록에 포함되기 위해 필요한 기본적인 가스 양
    • Max Fee : 트랜잭션을 실행할 때 지불할 가스비의 최대 한도
    • Priority Fee : 트랜잭션을 수행하고 블록에 트랜잭션을 포함시키는 채굴자들에게 제공하는 수수료
  • Burnt & Txn Saving Fees
    • Burnt : 트랜잭션 실행 시 소각되는 Base Fee
    • Txn Savings : Max Fee에서 소각된 Base Fee와 채굴자에게 수수료로 낸 Priority Fee를 제외한 돌려받을 가스
  • Others
    • Txn Types : 트랜잭션 타입
    • Nounce : 논스
    • Position In Block : 블록에서 몇 번째에 기록되어 있는지
  • Input Data : 트랜잭션을 보낼 때 16진수 데이터

블록 정보 분석


2

  • Block Height : 제네시스 블록으로부터 몇 번째 블록인지
  • Timestamp : 블록이 체인에 올라간 시점
  • Transactions : 블록에 들어있는 트랜잭션의 개수
    • contract internal transactions는 컨트랙트 실행 결과로 생성된 트랜잭션을 의미
  • Mined by : 채굴 노드의 주소
  • Block Reward : 블록 채굴 보상
    • 일반적인 채굴 보상 + 트랜잭션 수수료 - 소각된 기본 수수료
  • Uncle Reward : 엉클 블록을 만든 채굴 노드에 대한 보상
  • Difficulty : 채굴 난이도
  • Total Difficulty : 제네시스 블록부터 해당 블록까지의 전체 채굴 난이도
  • Size : 블록의 사이즈
    • gas limit로 측정
  • Gas Used : 블록 내에서 사용된 가스의 총량과 블록에 저장된 가스의 양
  • Gas Limit : 블록 내 모든 트랜잭션의 Gas Limit 총량
  • Base Fee Per Gas : Post-London UpGrade 이후, 트랜잭션이 블록에 포함되기 위한 최소한의 Gas Used 승수
  • Burnt Fees : 트랜잭션 수수료 중 Burnt Fee의 총량
  • Extra Data : 채굴 노드에 의해 블록에 포함되는 추가적인 데이터
  • Hash : 현재 블록의 블록헤더 해시값
  • Parent Hash : 직전 블록의 블록헤더 해시값
  • StateRoot : 상태 트리의 루트값
  • Nonce : 채굴 노드가 PoW를 통해 찾은 논스값

계정 주소 검색 정보 분석


3

  • Txn Hash : 트랜잭션 해시
  • Method : 실행한 함수
    • 단순 송금 시 Transfer이다.
  • Block : 해당 트랜잭션이 담긴 블록의 숫자
  • Age : 트랜잭션이 채굴된 시간
  • From : 트랜잭션을 보낸 사람의 주소
  • To : 트랜잭션을 받는 사람의 주소
  • OUT, IN
    • OUT : 해당 계정이 이더를 송금한 경우
    • IN : 해당 계정이 이더를 송금받은 경우
  • Value : 보내는 이더의 양
  • Txn Fee : 트랜잭션 수수료

Web3.js

Web3.js는 이더리움 블록체인과 상호작용하는 클라이언트를 개발하는 데 사용한다. Web3.js는 다른 계정으로 이더를 전송하거나, 스마트컨트랙트에서 데이터를 읽고 쓰거나, 스마트 컨트랙트를 만드는 등 다양한 액션을 수행할 수 있게 해주는 라이브러리 집합이다.

Web3와 이더리움 블록체인 상호작용 방법


4

Web3.js는 이더리움 블록체인과 JSON RPC를 사용하여 소통한다. JSON RPC는 “Remote Procedure Call” 프로토콜의 약자로, 이더리움에서 클라이언트가 JSON RPC라는 형식에 맞춰 이더리움 노드에게 데이터를 요청한다.

Web3.js 모듈


  • web3-eth : 이더리움 블록체인과 스마트 컨트랙트 모듈
  • web3-ssh : P2P 커뮤니케이션과 브로드캐스트를 위한 위스퍼 프로토콜 모듈
  • web3-bzz : 탈중앙화 파일 스토리지를 위한 스웜 프로토콜 모듈
  • web3-utils : dApp 개발자를 위한 유용한 헬퍼 함수들을 모아둔 모듈

Web3.js Docs

Infura

Infura란 원격 이더리움 노드를 통해 이더리움 네트워크에 접근할 수 있게 해주는 서비스이다. Infura에서 RPC URL과 API Key를 활용하여 직접 이더리움 네트워크에 접근하여 블록을 동기화하지 않아도 네트워크에 접근할 수 있다.

  • Endpoints : 원격 이더리움 노드를 통해 이더리움 네트워크에 접속할 수 있는 URL이며, “https://{Network Name}.infura.io/v3/{API KEY}”형태이다.

Infura + web3 활용 코드 및 설명

서버에서의 Web3.js 사용 및 ABI & Byte Code를 활용한 smart Contract 사용 With Ganache

예제 코드 및 설명

Coingecko

Coingecko는 암호화폐의 시가총액과 시세를 제공하며, 실시간 가격, 거래량, 컨트랙 정보와 같은 다양한 데이터를 API로 제공하여 개발에 활용할 수 있다.

Coingecko Docs

블록체인 노드를 활용한 이더스캔 개발

SimpleEtherScan

본 포스팅은 코드스테이츠 BEB 과정을 수강하며 작성한 글입니다.