이더리움 재단에서 만든 자바스크립트 라이브러리
이더리움 네트워크는 노드로 구성되어 있고, 각 노드는 블록체인의 복사본을 가지고 있다.
만약 스마트 컨트랙트의 함수를 실행하고자 한다면 노드중 하에 다음과 같은 내용을 전달해야한다.
- 스마트 컨트랙트 주소
- 실행하고자 하는 함수
- 그 함수에 전달하고자 하는 변수들
어떤 노드와 통신을 해야하는지 설정하는 것.
(like 웹 앱에서 api 호출을 위하여 원격 웹 서버의 url을 설정)
빠른 읽기를 위한 캐시 계층을 포함하는 다수의 이더리움 노드를 운영하는 서비스
사용자들이 이더리움 계정과 개인 키를 안전하게 관리할 수 있게해주는 크롬과 파이어폭스의 확장 프로그램.
ABI는 프로그램 모듈 사이의 인터페이스로 컨트랙트에서 함수를 호출하고 데이터를 다시 가져오는 방법.
Web3.js는 컨트랙트의 함수를 호출하기 위해서 2가지 메소드를 가지고 있다.
call은 view와 pure 함수를 위하여 사용한다.
send는 트랜잭션을 만들고 블록체인 상의 데이터를 변경한다.
view, pure가 아닌 모든 함수에 대해서는 send를 사용한다.
Solidity에서 public으로 변수를 선언하면 자동으로 같은 이름의 퍼블릭 “getter” 함수를 만들어 냄
따라서 ID 15인 좀비를 찾으려면, zombies(15)와 같이 변수를 함수인 것처럼 호출하면 됨
메타마스크는 확장 프로그램 안에서 사용자들이 다수 계정을 관리할 수 있도록 함
주입되어 있는 web3 변수에 현재 활성화된 계정이 무엇인지 확인할 수 있음
send 함수를 이용해 스마트 컨트랙트의 데이터를 변경하는 방법
call 함수와는 다른 부분이 있음