Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

번개멍

Web3j란 무엇인가 본문

카테고리 없음

Web3j란 무엇인가

번개멍 2022. 12. 27. 12:45

Web3J 란 무엇인가

  • JAVA를 이용하여 Ethereum 노드에 연결하여 Ethereum 및 SmartContract를 활용할수 있는 라이브러리

특징

  • HTTP 및 IPC를 통한 이더리움의 JSON-RPC API 구현
  • 이더리움 지갑 지원
  • JAVA code를 이용하여 SmartContract create, deploy, transact 를 할수 있다.
  • 필터 작업을 위한 반응형 프로그래밍을 지원한다.(WebSocket)
  • ENS(이더리움 이름 서비스) 지원
  • Infura 지원
  • ERC20과 ERC721 기준 토큰 지원
  • CLI 지원

설치

Web3j CLI 설치 = https://docs.web3j.io/4.8.7/command_line_tools/

Web3j 의존성 설치

 

가나슈 설치

npm install -g ganache-cli

Web3j 이용하여 기본 web3 Client Version Check

Web3j web3j = Web3j.build(new HttpService("http://localhost:8545")); //https://polygon-rpc.com
        Web3ClientVersion web3ClientVersion = web3j.web3ClientVersion().send();
        System.out.println(web3ClientVersion.getWeb3ClientVersion());

Gas Price 확인

public BigInteger getGasPrice() {
        Web3j web3j = Web3j.build(new HttpService("https://polygon-rpc.com"));
        try {
            BigInteger gasPrice = web3j.ethGasPrice().send().getGasPrice();
            System.out.println(gasPrice);
            return gasPrice;
        } catch (Exception e) {
            return BigInteger.valueOf(0);
        }
    }

ERC20 소유량 확인(Wrapper)

소유량 확인을 위해 ERC20 표준 컨트랙트와 이를 Web3j에서 사용하기 위한 변환이 필요합니다.

변환 작업은 solcjs를 이용하여 진행합니다.

  • solcjs, web3j CLI install
brew install jq
curl -L get.web3j.io | sh
source $HOME/.web3j/source.sh

생성하고자 하는 컨트랙트를 선택하여 solcjs 를 이용하여 컴파일을 진행한다.

 solcjs contracts/ERC20Token.sol --abi --bin

생성된 ABI, BIN 파일을 이용하여 wrappers 를 생성한다.

web3j generate solidity -b contracts_ERC20Token_sol_ERC20Token.bin -a contracts_ERC20Token_sol_ERC20Token.abi -o . -p com

위에서 생성한 wrappers를 이용하여 폴리곤 네트워크에 balanceOf 를 통해 현재 EOA의 특정 토큰의 소유량을 확인할 수 있다.

public ERC20Token erc20Token() {
    Web3j web3j = Web3j.build(new HttpService("https://polygon-rpc.com"));
    Credentials credential = Credentials.create(privateKey);
    ContractGasProvider gasProvider = new DefaultGasProvider();
    FastRawTransactionManager manager = new FastRawTransactionManager(
            web3j,
            credential,
            new PollingTransactionReceiptProcessor(web3j, 3000, 3)
    );
    return ERC20Token.load("0x40f97ec376ac1c503e755433bf57f21e3a49f440", web3j, manager, gasProvider);
}
public void getBalance() throws ExecutionException, InterruptedException {
    BigInteger getBalance = erc20Token().balanceOf(eoaAddress).sendAsync().get();
    System.out.println(getBalance);
}

현재 소유량을 보여주면 단위가 wai 이기에 wai to ether 9개가 있다.!

Comments