- web3는 각 사용자가 노드가 되어 탈중앙화된 분산네트워크를 구성하여, 네트워크에서 정보를 읽거나 쓸 뿐만 아니라, 서비스를 제공할 수도 있는 이코노미를 의미한다.
⛲ web1은 클라이언트(사용자)가 서버로부터 컨텐츠를 제공받기만 했던 웹을 의미한다.
🎡 web2는 AJAX의 등장으로 클라이언트가 서버와 상호작용을 하여 서버에 데이터를 기록할 수 있는 웹을 의미한다.- web2에서 소수의 플랫폼 기업이 사용자의 개인정보를 제공받아 이를 통해서 광고와 같은 수익을 창출하였다.
- 또한, web2에서는 해커들이 악의적으로 사용자들의 개인정보를 탈취하는 문제가 있다.
⚓ 또한, 개인 정보의 보안은 플랫폼 기업에 의존해야 한다.- web3는 위와 같은 문제를 해결하고자 등장하였다.
- web3는 중앙집중적인 플랫폼 이코노미를 벗어나, 모든 참여자가 플랫폼이 될 수 있는 분산형 인터넷을 의미한다.
✈ web3는 이를 구현하기 위해서 블록체인 기술을 사용한다.- web3에서는 모든 데이터가 공유되며, 동시에 암호화 기술을 통해 개인정보의 제공없이 사용자는 신원을 식별할 수 있다.
🚀 그 누구도 특정 사용자가 서비스에 접근하지 못하도록 막거나 거부할 수 없다.
결제는 자체 토큰을 사용한다.
🛸 ex. 이더
web3 기반 dApp은 탈중앙화되어 누군가의 검열이 불가능하다.
web3 기반 dApp은 수 많은 노드로 구성된 분산형 네트워크이기에 특정 노드가 다운되어도 서비스가 지속적으로 유지될 수 있다.
🛸 SPOF(single point of failure)가 없다.
- web3.js는 이더리움 네트워크와 상호작용할 수 있는 다양한 메서드를 제공하는 자바스크립트 라이브러리이다.
- 이더리움을 사용해 dApp을 만드는 것은, 솔리디티 언어로 스마트 컨트랙트를 개발하거나, 블록체인과 상호작용하는 클라이언트를 개발하는 것을 의미한다.
🍺 이중에 후자를 위해서 사용하는 라이브러리가 web3.js다.- web3.js는 이더리움 블록체인과 JSON RPC(Remote Procedure Call)를 이용해 소통한다.
- 이더리움에서는 클라이언트가 JSON RPC의 형식에 맞춰서 이더리움 노드에 데이터를 요청한다.
- web3.js와 연결된 노드를 provider라고 한다.
window.ethereum은 공급자(provider) 객체로, EIP-1139를 통해 메타마스크와 같은 지갑 소프트웨어는 웹페이지에 자바스크립트 객체 형태로 자신의 API를 노출한다.
EIP-1139는 이더리움 공급자 API를 통일하여 지갑간 상호 운영이 가능하도록 하였다.
🍸 EIP-1139에서 이더리움 공급자 객체는 브라우저 내에서 window.ethereum으로 지정되어 있고, 크롬 개발자 콘솔창에서도 window.ethereum로 공급자 객체를 확인할 수 있다.
🍖 Infura에서는 RPC URL과 API KEY를 제공해주고, 이를 통해서 직접 이더리움 네트워크에 접근하여 블록을 동기화하지 않아도, 네트워크에 접근할 수 있게 해준다.
🍖 https://infura.io/
🍇 caver.js에 관련된 클레이튼 문서 : https://ko.docs.klaytn.com/dapp/sdk/caver-js
참고 자료 출처 : 코드 스테이츠
혹시 코드스테이츠 어디에서 보신거에요? 링크 부탁드려도 될까요?