본문 바로가기
Blockchain

[Blockchain] Web3란?

by 개발자 염상진 2022. 7. 29.

이더리움 블록체인 네트워크를 사용한 Dapp을 만든다는 것은 다른 말로 하면 솔리디티 언어로 스마트 컨트랙트를 개발하는 것과, 블록체인과 상호작용할 수 있는 클라이언트(노드)를 개발하는 것입니다. 솔리디티로 스마트 컨트랙트를 개발하는 것은 블록체인 내에서 작동하는 프로그램을 만드는 일입니다.

 

 

반면 스마트 컨트랙트를 이용하거나, 트랜잭션을 조회하고 생성하는 일은 클라이언트 단에서 실행할 수 있는데, 이 때 사용하는 모듈이 바로 Web3.js입니다. 이더리움 재단에서는 이더리움 블록체인과 상호작용할 수 있는 클라이언트를 개발할 수 있도록 web3.js를 출시했습니다. web3.js를 통해 개발자들은 이더를 전송하거나, 스마트 컨트랙트의 함수를 실행하고 배포할 수 있습니다.

 

이더리움 블록체인과 클라이언트 상호작용

 

블록체인 외부에 위치한 클라이언트가 블록체인 네트워크와 상호작용하기 위해 web3.js 모듈을 사용합니다. 그럼, web3.js는 어떻게 둘 사이를 연결할 수 있을까요?

 

 

이더리움 블록체인과 Web3.js는 JSON RPC를 통해서 통신 합니다. RPC(Remote Procedure Call) 프로토콜은 원격 제어를 위한 코딩 제어 없이도 다른 공간에서 프로시저를 실행할 수 있도록 하는 프로토콜입니다. 이더리움 블록체인은 여러개의 노드로 구성된 P2P 네트워크 이므로, Web3.js는 이 중 하나의 노드에 연결되어 JSON RPC 통신을 구축합니다. 

 

JSON RPC가 한번에 와닿지 않을 수 있습니다. 일반적으로 서버와 클라이언트가 통신할 때 사용하는 Ajax, Axios, XMLHttpRequest를 생각하면 이해가 쉽습니다. 클라이언트는 정규화된 양식에 맞춰 Ajax 요청을 보내면 서버는 이에 해당하는 응답을 뱉어내게 됩니다. 마찬가지로 Web3.js도 정해진 양식에 맞춰 이더리움 블록체인에 있는 노드에게 일정한 요청을 보내면 노드는 요청에 상응하는 응답을 뱉어내게 됩니다. 

정리하자면 web3.js는 이더리움 블록체인의 노드와 상호작용을 도와주는 라이브러리이며 HTTP, IPC, WebSocket 프로토콜을 이용해 통신합니다.

 

web3.js 모듈 종류

 

이더리움 블록체인과 통신을 해서 다양한 정보를 가져오기 위해 web3.js 내에는 다양한 모듈이 포함되어 있습니다.

  • web3-eth는 이더리움 블록체인과 스마트 컨트랙트를 제어하는 모듈입니다.
  • web3-shh는 브로드캐스팅을 위한 위스퍼 프로토콜을 제어하는 모듈입니다.
  • we3-bzz는 탈중앙화된 파일 스토리지를 위한 스웜 프로토콜을 제어하는 모듈입니다.
  • web3-utils는 Dapp 개발자들을 위한 헬퍼 함수들을 제어하는 모듈입니다.

자바스크립트를 위한 web3.js 뿐만 아니라 자바를 위한 web3j, PHP를 위한 web3.php, 파이썬을 위한 Web3.py등 다양한 모듈이 등장했고, 지금도 안정화를 거듭해나가고 있습니다.

 

 

공급자를 주입하다 EIP-1139

 

메타마스크는 웹에 JS 객체 형식으로 API를 제공합니다. 메타마스크와 같은 지갑 소프트웨어가 제공하는 객체를 공급자라고 합니다. 지갑 소프트웨어는 메타마스크 뿐만 아니라 다양한데, 각각의 소프트웨어들이 표준화 되지 않은 객체를 웹에 제공하면서 객체 충돌문제가 발생하기 시작합니다.

 

 

이 문제를 개선하고자 제안된 것이 EIP-1139입니다. EIP-1139에서는 이더리움 공급자 API를 표준화해서 지갑들 사이에 상호 운용이 가능하도록 합니다. 이더리움 공급자 객체는 웹 콘솔에 window.ethereum 형식으로 으로 제공되고 있습니다.

 

 

Reference

 

 

 

 

[Blockchain] 탈중앙화 신원증명 DID 컨트랙트 개발

DID는 중앙화된 신뢰기관 없이 블록체인 혹은 분산원장 기술을 통해 데이터의 소유자가 자격증명을 처리할 수 있는 기술입니다. DID는 DID Document에 공개키를 등록하고 Issuer에게 VC를 받아 VP를 Verif

about-tech.tistory.com

 

 

[Blockchain] OpenSea NFT 민팅 하는 방법

OpenSea는 NFT를 거래하는 대표적인 플랫폼입니다. OpenSea에서 지원하는 블록체인은 이더리움, 폴리곤, 솔라나, 클레이튼이 있습니다. 테스트넷으로는 이더리움 Rinkeby와 클레이튼의 Baobab을 지원하

about-tech.tistory.com

 

 

[Blockchain] ERC-721 구조?

ERC-721 표준은 NFT(대체 불가능한 토큰, Non-fungible Token)을 발행하는 스마트 컨트랙트를 정의하고 있습니다. ERC-20을 기본으로 해서 제작되어 유사한 함수를 가지고 있지만, 특정 자산에 대해 대체

about-tech.tistory.com

 

댓글