Web3.js
web3.js - Ethereum JavaScript API - web3.js 1.0.0 documentation
web3.js는 JSON RPC 프로토콜을 사용하여 로컬 또는 원격 이더리움 노드와 상호 작용할 수 있는 라이브러리 모음입니다.
JSON RPC란?
💡 JSON RPC란?
JSON으로 인코딩된 원격 프로시저 호출입니다. 매우 간단한 프로토콜(XML-RPC
와 매우 흡사함)로서, 소량의 데이터 타입과 명령들만을 정의하고 있습니다.
HTTP 프로토콜(REST)과 다르게 TCP 위에서 동작하기 때문에 좀 더 다양한 프로토콜에서 활용될 수 있습니다.
노드 서버에서 접속하는 엔드포인트는 Infura
등을 통해 HTTP, IPC 또는 WebSocket를 지원합니다.
웹 브라우저 환경에서는 지갑 객체를 연결해 사용합니다. ex) MetaMask, WalletConnect 등
// default
window.ethereum.request({ method: "eth_requestAccounts" });
web3 = new Web3(window.ethereum);
// react
function getLibrary(provider: any) {
const library = new Web3Provider(provider);
library.pollingInterval = 8000;
return library;
}
export default function App() {
return (
<Web3ReactProvider getLibrary={getLibrary}>
<MyComponent />
</Web3ReactProvider>
);
}
const getSale = (networkId: number) => {
if (!web3) return;
const saleJSON = require("../contracts/SaleToken.json");
const abi: AbiItem = saleJSON.abi;
const ca: string = saleJSON.networks[networkId].address;
const instance = new web3.eth.Contract(abi, ca);
setSaleContract(instance);
};
myContract.methods
.minting(123)
.send({from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'})
.then(function(result){
...
});
https://github.com/Uniswap/web3-react
ethers.js
이더리움 블록체인 및 해당 생태계와 상호 작용하기 위한 완전하고 컴팩트한 라이브러리입니다. web3.js 이후 나온 최신 라이브러리입니다.
Ethers.wallets
:const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const createContract = async (providerOrSigner: Web3Provider | Signer) => {
const tempContract = new ethers.Contract(
CONTRACT_ADDRESS,
CONTRACT_ABI,
providerOrSigner
);
};
Provider는 지갑 및 블록체인 네트워크 객체 / Signer는 앞으로 컨트랙트의 트랜잭션을 서명할 주소 객체입니다.
const call = () => {
return Contract.test1();
};
web3.js와 다르게 call, send 메소드를 호출하지 않아도 알아서 처리해줍니다.
Announcing ethers.js - a web3 alternative
GitHub - wagmi-dev/wagmi: React Hooks for Ethereum