‘이더리움 댑 개발’ 세미나 14-1. Web3 공식 문서(버전 1.2.9) – User Documentation
web3.js – Ethereum JavaScript API
web3.js is a collection of libraries that allow you to interact with a local or remote ethereum node using HTTP, IPC or WebSocket.
web3.js 라이브러리는 다음과 같은 모듈로 구성됩니다.
- web3-eth is for the ethereum blockchain and smart contracts.
- web3-shh is for the whisper protocol to communicate p2p and broadcast.
- web3-bzz is for the swarm protocol, the decentralized file storage.
- web3-utils contains useful helper functions for Dapp developers.
Getting Started
프로젝트에 web3 모듈 설치
- npm: npm install web3
- yarn: yarn add web3
web3 인스턴스 얻기
트러플 react box 코드를 살펴보면 web3 인스턴스를 얻을 수 있는 코드(getWeb3.js)를 제공하고 있습니다.
Callbacks Promises Events
Most web3.js objects allow a callback as the last parameter, as well as returning promises to chain functions.
Ethereum as a blockchain has different levels of finality and therefore needs to return multiple “stages” of an action. To cope with requirement we return a “promiEvent” for functions like web3.eth.sendTransaction or contract methods. This “promiEvent” is a promise combined with an event emitter to allow acting on different stages of action on the blockchain, like a transaction.
PromiEvents work like a normal promises with added on, once and off functions. This way developers can watch for additional events like on “receipt” or “transactionHash”.
1 2 3 4 5 6 7 8 9 10 |
web3.eth.sendTransaction({from: '0x123...', data: '0x432...'}) .once('sending', function(payload){ ... }) .once('sent', function(payload){ ... }) .once('transactionHash', function(hash){ ... }) .once('receipt', function(receipt){ ... }) .on('confirmation', function(confNumber, receipt, latestBlockHash){ ... }) .on('error', function(error){ ... }) .then(function(receipt){ // will be fired once the receipt is mined }); |
Glossary
json interface
컨트랙트 ABI(Application Binary Interface)를 나타내는 json 객체입니다. web3.eth.Contract 객체를 사용해서 컨트랙트와 컨트랙트 함수와 이벤트를 나타내는 자바스크립트 객체를 만들 수 있습니다.
- 함수 표현 json 객체
- type
- “function” 또는 “constructor “
- name – 함수 이름
- constant – 블록체인 상태를 수정할 수 없으면 true
- payable – 이더를 받을 수 있으면 true
- stateMutability – pure, view, nonpayable, payable 값 중 하나로 작성
- inputs – 매개변수 목록- name, type으로 구성된 객체 배열
- outputs – 출력 변수 목록이라는 점만 다르고 inputs와 같음
- type
- 이벤트 표현 json 객체
- type
- “event”
- name
- inputs – name, type, indexed로 구성된 객체 배열
- anonymous – anonymous로 선언된 이벤트인 경우 true
- type