[Blockchain] Web3.js 모듈 / JSON-RPC / ABI
Web3.js / ABI / JSON-RPC / window.ethereum / Metamask / 메타마스크
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
입력한 결과 👆
참고 했던 사이트 🖥
-
https://blog.valist.io/how-to-connect-web3-js-to-metamask-in-2020-fee2b2edf58a
-
https://velog.io/@mjlee0326/React%EC%99%80-Web3%EC%9D%98-%EB%A7%8C%EB%82%A8