Web3.js

  • Web3.js 는 이더리움 블록체인과 상호작용하는 ‘클라이언트를 개발’ 하는 데 사용한다

  • Web3.js는 다른 계정으로 이더리움을 전송하거나,

  • 스마트 컨트랙트에서 데이터를 읽고 쓰거나,

  • 스마트 컨트랙트를 만드는 등

  • 다양한 액션을 수행할 수 있게 해주는 라이브러리의 집합이다

  • Web3.js는 이더리움 블록체인과 JSON-RPC 를 사용하여 소통한다

JSON-RPC

  • RPC 를 JSON 포맷으로 표현한 것

RPC (Remote Procedure Call)

  • 원격 프로시져 호출
    👉 언어나 환경 등에 ‘종속되지 않고’ 서비스 간 프로시저를 호출하도록 해주는 개념


web3.js는

‘JSON-RPC’ 를 통해 ‘블록체인의 데이터’와 스마트 컨트랙트의 ‘바이트 코드’
자바스크립트로 다룰 수 있도록 다양한 ‘객체함수’를 제공한다

이더리움 네트워크에 있는 각 노드들은 지갑을 통해 상호작용 하는데,
이 때 ‘JSON-RPC’ 형식의 데이터로 상호작용을 한다
이 상호작용을 위한 데이터가 바로 ‘ABI’ 이다

ABI

  • ABI는 ‘스마트 컨트랙트 코드’에 대한 설명이 담긴 JSON 형식의 인터페이스이다

  • 함수 이름과 매개변수들이 들어가 있다

    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenOwner",
          "type": "address"
        }
      ]
    }
    ...

https://wavescats.github.io/blockchain/2022/05/21/bc35.html
👆 (ABI 정리 참고)


Web3.js 모듈

  • web3-eth 👉 이더리움 블록체인과 스마트 컨트랙트 모듈

  • web3-shh 👉 P2P 커뮤니케이션과 브로드캐스트를 위한 위스퍼 프로토콜 모듈

  • web3-bzz 👉 탈중앙화 파일 스토리지를 위한 스왐 프로토콜 모듈

  • web3-utils 👉 dApp 개발자를 위한 유용한 헬퍼 함수들을 모아둔 모듈


window.ethereum

EIP-1139 를 통해
메타마스크는 👉 웹 페이지에 자바스크립트 객체 형태 (ABI)
window.ethereum 객체 제공

  • 공급자 (provider) 객체이므로 web3.js 사용 가능

크롬 개발자 콘솔 창에 window.ethereum 입력한 결과 👆


참고 했던 사이트 🖥