Web3가 뭔지 아시나요?
아뿔싸 탈중앙화에 대한 기본지식이 없어도 된다는 명품 연기에 내가 속았구나! 면접 중 머리가 하얗게 바래지는 순간은 여러번이나 이번만큼은 아니었던거 같다. 해당 면접을 복기하고자 내가 받았던 질문들을 정리해보고자 한다.
Web3는 블록체인을 비롯하여 인터넷에서의 데이터 소유권과 제어를 분산시키는 기술을 포괄하는 용어
AWS 공식 홈페이지에서 알려주는 Web3에 대한 정리이다.
Web2는 우리가 지금 사용하는 거의 모든 서비스 유튜브, 페이스북, 인스타그램, 스포티파이와 같은 서비스 들이라고 보면 된다. 아니그럼 그냥 Web2쓰면 되지 굳이 굳이 Web3를 만들었는가 라는 의문이 들기 시작한다.
Web2는 혁신적이었지만, 심각한 중앙화 문제를 만들어 냈다. 내 모든 데이터는 서버에 저장이되고, 사용자는 플랫폼에 종속이되어 제작한 창작물의 가치를 훼손 당하기도 한다.
또한 중앙 서버가 데이터를 삭제할 수도 있고, 알고리즘을 변경시킬 수도 있으며 서비스가 종료되어 버리는 경우도 있다. 이러한 한계를 극복하기 위해 태어난 것이 Web3이다.
그럼 Web3는 뭐가 다른데?
Web3는 중앙서버 없이, 운영하는 컴퓨터(노드)로 이루어져 있다.
그래서 Web3는 “분산 서버 네트워크”라고 보는 게 정확하다.
여전히 모호하다. Web3가 정확하게 무슨일을 하는지 알게되면, 이해에 도움이 될 거 같다. Web3가 하는 일은 크게 5가지라고 볼 수 있다.
1.사용자가 디지털 자산을 ‘직접’ 소유하도록 만드는 일
Web2에서는:
게임 아이템 = 회사 DB 속 데이터
프로필 정보 = 회사 서버만 접근 가능
계정이 삭제되면 자산도 같이 사라짐
Web3에서는:
NFT, Token 등 자산은 지갑 주소가 소유
서버 종료와 무관하게 온체인에
남음 “회사 → 사용자 중심”으로 소유권 이동
2.중앙 서버 없이 신뢰와 검증을 제공하는 역할
암호학적 검증, 서명(Signature), 합의 알고리즘(PoW/PoS), 스마트 컨트랙트 조합으로 Web3는 서버 없이도 신뢰를 제공한다.
3.코드로 계약을 실행하는 스마트 컨트랙트 운영
스마트 컨트랙트? 똑똑한 계약? 이 뭔데.
블록체인 위에서 실행되는 변경 불가능한 프로그램. 조건이 충족되면 누구나 동일한 결과를 얻을 수 있는 자동화된 계약 시스템이다.
즉 조건이 만족하면 바로 실행이 되는 프로그램이다.
간단한 예를 들어 보자
사용자가 지갑에서 특정 행동을 했을 때
- 컨트랙트 함수 선택
- 입력값 전달
- 가스비 설정
- 서명(Signature)
지갑은 개인키로 트랜잭션에 서명 → 서명된 트랜잭션이 만들어진다.
지갑 → 노드로 RPC 전송하고, 각 노드들은 트랜잭션은 mempool에 넣게 된다.
노드는 트랜잭션이 유효한지 확인하고, 블록을 생성한다. 트랜잭션은 이더리움 위에서 실행되고, 실행 결과로 state가 변경이된다.
완성된 블록은 네트워크 전체에 알려지고 사용자는 성공과 실패값을 반환받는다... 어렵다
스마트 컨트랙트는 즉 사용자의 서명된 트랜잭션이 블록에 포함될 때,
EVM이 그 코드를 실행하고 상태(State)를 검증된 방식으로 업데이트해주는 시스템 이라고 이해하면 될 거 같다.
Web3는 네트워크상 이러한 스마트 컨트랙트가 작동되어 신뢰성을 보증한다.
4.사용자 정체성(ID)을 지갑 기반으로 통합
Web3 로그인 = 개인키 서명(Sign)
5.네트워크 참여자에게 직접 보상을 분배하는 경제 구조 구현
Web3는 토큰 인센티브를 통해 사용자에게 직접 가치가 돌아온다. 우리가 흔히 말하는 채굴이 해당 과정을 말한다.
서명? 트랜잭션? 가스비? 지갑?이 뭐예요?
모르겠다 어려운 개념이 마구잡이로 등장하기 시작한다. 짧고 담백하게 요약해보겠다!
지갑은 유저 개인 고유의 키값을 기반으로한 디지털 서명으로 이루어진 ID이다.
서명은 내가 어떤 메시지에 동의했다는 것을 증명하는 증거, 개인키로 생성하며, 지갑 주소(공개키)로 누구나 검증할 수 있다.
트랜잭션은 블록체인의 상태를 직접 바꾸는 요청, 즉 토큰의 전송, NFT발행등이 있다!
가스비는 통행료다. 우리 네트워크를 통해서 블록체인의 상태가 변경됐네? 수고비는 줘야겠지? 라는 개념이다.
발빠른 프론트들이여 우리는 무엇을 해야하는가!
내가 Web3에 대한 글을 적으면서 느낀점은 너무나도 어려운 개념이라는 것이다.
스테이블 코인 등 블록체인의 시대는 다가오지만 그 개념을 이해한 사람은 소수에 불과하다.
우리는 이런한 기술에 대한 이해와 사용자가 사용하는 서비스의 편리함의 간격을 줄이기 위해 노력해야한다.
이미 Web3를 다루기 위한 라이브러리는 Web3.js, ethers.js 등 선보이고있다.
해당 라이브러리들은 지갑을 연결하고, 트랜젝션을 생성하며, 블록체인을 조회할 수 있다.
이러한 툴을 이용해 이전의 개발자들이 복잡한 은행업무를 휼륭히 웹으로 이식한 것처럼, 저 듣기만 해도 복잡한 블록체인 생태계를 사용자들에게 쾌적한 UX로 제공하기 위해 힘써야 된다는 생각이 든다.