안녕하세요, klaytn docs의 faq를 보면 web3.js와 web3j를 사용하여 klaytn에 직접 요청을 보낼 수 없다 라고 되어 있는데 klaytn v1.8.0에서도 이는 마찬가지일까요? 이전처럼 caver-js와 caver-java로만 이용 가능할까요?
1.8.0 부터 eth 호환성을 개선하였기 때문에 이더리움과 동일하게 처리하지 못하는 클레이튼의 독자적인 기능 또는 이더리움에서만 작동하는 기능들 재외하고는 web3.js 지원이 개선되는것으로 보시면 될것같습니다.
단 end-point node 를 직접 운영하시는 경우에는 설정한.옵션에따라 차이가 있을것으로 생각되고요.
답변 되셨길 바랍니다. 감사합니다.
web3-java도 지원이 가능할까요? 또, web3-js와 web3-java지원이 가능해지면 klaytn docs에 관련 내용이 업데이트 될수 있을까요?
안녕하세요.
Klaytn이 v1.8.0이 되면서 eth
네임스페이스로 오는 요청들은 이더리움의 자료구조로 해석을 하고 반환하는 자료구조 또한 이더리움의 자료구조로 리턴을 해주게끔 변경이 되었습니다.
해당 내용은 이미 https://docs.klaytn.com/dapp/json-rpc/api-references/eth 에 상세하게 기술이 되어 있습니다.
다만, web3-java와 web3-js 를 100% 지원한다고 문서 상에 기술하는 데는 어려움이 있습니다.
예를 들어, https://docs.klaytn.com/dapp/json-rpc/api-references/eth/caution 문서를 보시면 이더리움과 클레이튼이 태생적으로 다른 디자인을 택하기 때문에 발생하는 차이점, 한계점 등이 기술되어 있는데요.
Klaytn에서는 PoW를 합의알고리즘으로 채택하고 있지 않기 때문에 블록을 조회할 때 리턴되는 필드 중 difficulty 필드의 값은 언제나 0x1
로 고정이되어 리턴이 됩니다. 이더리움은 현재 이 값이 상당히 큰 값으로 반환이 되고 있죠.
만약 이 필드 값을 web3-java에서 처리할 때, 특정 값보다 낮으면 에러를 리턴하는 로직이 있다면 어떻게 될까요? 그러면 자료구조(구성하고 있는 필드 그리고 이름)는 동일하지만 사용할 수 없겠죠.
클레이튼이 v1.8.0이 되면서 이더리움과의 호환성을 최대한 맞추었고 대부분 문제 없이 동작할 테지만, web3-java가 100% 동작한다고는 보장하긴 어려울 거 같습니다.
사용하는데 크게 무리는 없을 것으로 생각이 되지만, 이 부분은 유의해주시고 Toward Ethereum Equivalence #1 — Klaytn v1.8.0 소개 | by Klaytn | Klaytn Korea | Feb, 2022 | Medium 도 참고 부탁드립니다.