위험 경고: '가상화폐', '블록체인'이라는 이름으로 불법 자금 모집 위험에 주의하세요. — 은행보험감독관리위원회 등 5개 부처
검색
로그인
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
시장 동향 보기
Web3 스택 이해: Web3 개발자가 되는 방법?
区块律动BlockBeats
特邀专栏作者
2022-01-07 09:39
이 기사는 약 5514자로, 전체를 읽는 데 약 8분이 소요됩니다
Web3는 완전히 분산된 애플리케이션을 위한 프로토콜 스택입니다.

원래 제목: "web3 스택 정의"

원작자: 네이더 다빗

원문 편집: The Graph 커뮤니티 회원

web3에서 빌드하고 싶습니까? Nader Dabit은 소개 가이드에서 web3 기술 스택의 빌딩 블록을 지적합니다.

"Building on web3"의 다음 장에서는 Edge & Node Developer Relations Engineer Nader Dabit이 web3 스택과 개발자가 web3에서 구축하는 다양한 레이어를 개념화하는 방법에 대해 설명합니다.

저는 약 10년 동안 전통적인 풀스택 개발자로 있다가 2021년 4월에 web3로 전환했습니다. 이 모든 새로운 기술과 아이디어에 뛰어들면서 가장 먼저 궁금한 것은 "web3 스택이란 무엇입니까?"였습니다.

기존의 웹 또는 모바일 앱을 구축할 때 작업을 완료하기 위해 특정 구성 요소에 의존하는 경우가 많습니다.

- API/애플리케이션 서버(REST 또는 GraphQL)

- 인증 계층(관리 또는 수동)

- 데이터베이스

- 클라이언트 프레임워크, 플랫폼 및 라이브러리

- 파일 저장

이러한 핵심 구성 요소를 사용하여 내가 원하는 대부분의 유형의 애플리케이션을 구축하거나 최소한 대부분의 목적을 달성할 수 있습니다. 그렇다면 이것은 web3에서 어떻게 보일까요?

결과적으로 이 질문에 대한 답은 다음과 같은 이유로 그리 간단하지 않습니다.

- 이 패러다임은 여러 면에서 완전히 다릅니다.

- web3 도구, 기술 및 생태계는 web2만큼 성숙하지 않습니다.

또한 web2 세계에서와 같은 방식으로 접근하기 때문에 web3 애플리케이션을 시작, 실행 및 구축하는 방법을 이해하기가 더 어렵습니다.

지난 8개월여 동안 일하고, 연구하고, 실험하고, 구축한 후에 제가 알게 된 것을 여러분과 공유하고 싶습니다.

웹3란?

Web3는 완전히 분산된 애플리케이션을 위한 프로토콜 스택입니다.

Web3는 완전히 분산된 애플리케이션을 위한 프로토콜 스택입니다.

이 분산형 기술 스택을 사용하여 고유한 의미와 특성을 가진 분산형 애플리케이션을 구축할 수 있습니다.

web3의 일부 기능은 다음과 같습니다.

- 분산형 네트워크 인프라

- 소유권(데이터, 콘텐츠 및 플랫폼)

- 현지 디지털 결제

- 자주적 신원

- 분산되고 신뢰할 수 없는 강력한 인프라

- 공개, 공개, 구성 가능한 백엔드

탈중앙화 기술 스택에 구축된 일부 애플리케이션이 이전 기술을 대체할 것이지만, 블록체인으로 가능해진 새로운 토착어는 새로운 애플리케이션 패러다임도 가능하게 합니다.

머신 러닝, 모바일 장치, 가상 현실 및 기타 기본 기술, 플랫폼 및 빌딩 블록과 같은 기본 디지털 지불 및 공통 백엔드 인프라는 완전히 새로운 유형의 애플리케이션을 구축할 수 있게 하며 일부는 아직 상상하지 못했습니다.

이것은 모든 것이 web3로 대체된다는 것을 의미합니까? 불확실한. 일부 유형의 응용 프로그램에 대해 생각하지만 분산 기술 스택을 기반으로 구축하는 것이 더 나은 옵션입니다. 거의 모든 기술 결정과 마찬가지로 구축 대상에 따라 다릅니다.

이제 다음 범주로 분류된 web3 스택을 파헤쳐 보겠습니다.

- 블록체인

- 블록체인 개발 환경

- 파일 저장

- P2P 데이터베이스

- API(인덱스 및 쿼리)

- 신원

- 클라이언트(프레임워크 및 라이브러리)

블록체인

블록체인

선택하여 구축할 수 있는 블록체인은 무수히 많습니다. 아무도 없다"최고", 대신 그들 사이의 다양한 장단점을 고려해야 합니다.

새로운 것을 배울 때 나에게 자주 중요한 한 가지는 내가 배우는 것에 파레토 원리를 적용하는 것입니다. 즉, 그 시간과 노력에 대한 결과를 얻는 가장 효율적인 방법은 무엇입니까? 이 아이디어에 따르면 가장 많은 견인력과 동기를 얻으면서 최단 시간 내에 새로운 것을 배울 수 있습니다.

블록체인 공간에서 Solidity와 EVM(또는 Ethereum Virtual Machine)을 배우는 것은 아마도 블록체인 개발자로 시작할 때 할 수 있는 최선의 방법일 것입니다. 이 기술 세트(및 기술 스택)를 사용하여 이더리움뿐만 아니라 다른 이더리움 2차 계층, 사이드체인, 심지어 Avalanche, Fantom 및 Celo와 같은 다른 블록체인을 위해 구축할 수 있습니다.

즉, Rust는 Solana, NEAR, Polkadot 등의 최고의 Rust 지원으로 블록체인 공간에서 더욱 인기를 끌기 시작했습니다. 두 언어 중 하나를 배우는 데 잘못 갈 수는 없겠지만, 초보자의 경우 오늘 누군가 나에게 묻는다면 Solidity가 여전히 더 나은 선택이 될 것이라고 말하고 싶습니다.

이러한 권장 사항 외에도 기술, 유틸리티, 커뮤니티, 모멘텀 및 미래 실행 가능성이 견고하게 혼합된 블록체인의 포괄적이지 않은 샘플이 있습니다.

- Ethereum - 최초의 스마트 계약 플랫폼

- ZKrollups:ZKSync, Starknet,Hermez - 높은 처리량의 Ethereum 레이어 2이지만 기본적으로 EVM과 호환되지 않음

- 낙관적 롤업: Arbitrum & Optimism - EVM과 호환되는 이더리움 레이어 2(여기에서 낙관적 롤업과 ZKrollup의 차이점에 대해 자세히 알아보십시오).

- 다각형 - 이더리움 사이드체인

- Solana - 높은 처리량, 낮은 트랜잭션 비용, 빠른 블록 시간, 그러나 EVM(Rust)보다 배우기 어렵습니다.

- NEAR - 기본 블록체인, 스마트 계약은 Rust 또는 Assemblyscript로 작성할 수 있습니다.

- Cosmos - 상호 운용 가능한 블록체인 생태계

- 폴카닷(Polkadot) - 블록체인 기반 컴퓨팅 플랫폼으로 블록체인 위에 구축된 블록체인 간에 거래를 실행하여 상호 연결된 블록체인의 인터넷을 생성합니다.

- Fantom - EVM 호환 기본 블록체인

- Avalanche - EVM 호환 기본 블록체인

- Celo - 스마트폰만 있으면 누구나 쉽게 암호화폐를 보내고 받고 저장할 수 있도록 설계된 EVM 호환 기본 블록체인

- Tezos - 비 EVM 호환 기본 블록체인, 많은 NFT 프로젝트에서 사용 중

블록체인 개발 환경

EVM 개발을 위해 사용할 수 있는 몇 가지 우수한 개발 환경이 있습니다.

- Hardhat(JavaScript)은 최신 옵션이지만 인기를 얻고 있습니다. 그들의 문서는 훌륭하고 도구 및 개발자 경험은 훌륭하며 개인적으로 분산 응용 프로그램을 구축하는 데 항상 사용합니다.

- Truffle(JavaScript)은 EVM에서 애플리케이션을 구축하고 개발하기 위한 도구 세트입니다. 성숙하고 실전 테스트를 거쳤으며 문서화도 잘 되어 있습니다. 그것은 한동안 주변에 있었고 많은 개발자들이 그것을 사용합니다.

- Foundry는 큰 가능성을 보여주는 Paradigm의 ​​새로운 Solidity 개발 환경입니다. 주요 기능은 Solidity로 테스트를 작성하는 기능, 퍼징 지원 및 속도(Rust로 작성됨)입니다. 나는 그것에 대한 별도의 소개를 여기에 썼습니다.

- Brownie는 Solidity/EVM 개발을 위한 Python 기반 스마트 계약 개발 및 테스트 프레임워크입니다.

파일 저장

파일 저장

web3에서 사진, 비디오 및 기타 파일을 어디에 저장합니까? 이러한 대용량 파일을 온체인에 저장하는 것은 일반적으로 비용이 많이 들기 때문에 아마도 그곳에 저장하고 싶지 않을 것입니다.

대신 몇 가지 파일 스토리지 프로토콜 중 하나를 사용할 수 있습니다.

- IPFS--Peer-to-Peer 파일 시스템 프로토콜

- 장점: 신뢰할 수 있고, 좋은 문서가 있으며, 거대한 생태계가 있습니다.

- 단점: 데이터가 고정되지 않으면 유실됩니다.

- Arweave - 한 번의 거래 수수료로 데이터를 영구적으로 저장할 수 있습니다. 저는 Arweave의 팬이며 여기에 대한 블로그 게시물을 작성했습니다.

- Filecoin - 영구 데이터 스토리지 시스템을 제공하도록 설계된 프로토콜인 IPFS를 구축한 동일한 팀인 Protocol Labs에서 제공합니다. 개발자가 web3.storage를 포함하여 Filecoin을 구축할 수 있는 방법이 있다는 것은 좋은 일입니다.

- Skynet - 아직 프로덕션에서는 사용하지 않았지만 사용해 본 결과 잘 작동하는 것 같습니다. 여기의 API는 훌륭해 보입니다. 데이터의 지속성, Skynet과 다른 프로토콜의 상호 운용성 등 몇 가지 질문이 있습니다.

P2P 데이터베이스

파일 저장소 및 온체인 저장소 외에도 데이터를 오프체인에 저장해야 할 수도 있습니다. 이러한 유형의 솔루션은 기존 기술 스택에서 데이터베이스를 사용하는 방법과 유사하게 사용할 수 있지만 분산 네트워크의 N 노드에 복제되므로 (적어도 이론적으로는) 더 안정적입니다.

몇 가지 옵션은 다음과 같습니다.

- 세라믹 네트워크 - 데이터 생성, 호스팅 및 공유를 위한 분산형 오픈 소스 플랫폼입니다. Ceramic은 또한 멋진 ID 프로토콜을 가지고 있는데 나중에 다루겠습니다. 아마도 제가 현재 가장 좋아하는 오프체인 스토리지 솔루션일 것입니다. 여기 아주 좋은 데모가 있습니다.

- Textile ThreadDB - IPFS 및 Libp2p에 구축된 다자간 데이터베이스입니다. 내가 올바르게 이해했다면 현재 큰 API 변경이 진행 중일 수 있습니다. 나는 그것을 시도했고 그것은 약간의 전망을 보여주지만 문서와 DX는 약간의 개선이 필요합니다.

- GunDB - 분산형 P2P 데이터베이스입니다. Gun은 꽤 오랫동안 사용되어 왔으며 꽤 흥미로운 응용 프로그램이 함께 구축되었습니다.

성숙도 측면에서 오프체인 스토리지 솔루션의 생태계는 아직 일부 개발자가 원하는 고급 사용 사례를 설정하는 데 필요한 정도가 아니라고 생각합니다. 여기에서 해결해야 할 과제 중 일부는 라이브 데이터, 충돌 감지 및 해결, 쓰기 권한 부여, 문서화 및 일반 개발자 경험입니다.

오프 체인 데이터 솔루션을 블록체인 프로토콜과 결합하는 것은 모든 유형의 애플리케이션을 지원할 수 있는 완전히 분산된 프로토콜 스택을 갖기 전에 건너야 하는 마지막 큰 장애물 중 하나입니다.

API(인덱스 및 쿼리)

우리가 블록체인과 상호 작용하고 그 위에 구축하는 방식은 기존 기술 스택의 데이터베이스와 매우 다릅니다. 블록체인을 사용하면 다른 애플리케이션이나 프런트 엔드에서 직접 효율적이고 쉽게 사용할 수 있는 형식으로 데이터가 저장되지 않습니다.

블록체인은 쓰기 작업에 최적화되어 있습니다. 초당 트랜잭션, 블록 시간 및 트랜잭션 비용을 중심으로 한 혁신에 대해 자주 듣습니다. 블록체인 데이터는 일정 기간 동안 블록에 기록되므로 기본 읽기 작업을 제외한 모든 작업이 불가능합니다.

대부분의 애플리케이션에는 관계형 데이터, 정렬, 필터링, 전체 텍스트 검색, 페이지 매김 및 기타 여러 유형의 쿼리와 같은 기능이 필요합니다. 이를 위해서는 효율적인 검색을 위해 데이터를 인덱싱하고 구성해야 합니다.

전통적으로 이것은 데이터베이스가 중앙 집중식 기술 스택에서 수행하는 작업이지만 web3 스택에는 인덱싱 계층이 없습니다.

블록체인 데이터를 인덱싱하고 쿼리하기 위한 프로토콜인 Graph는 이 프로세스를 더 쉽게 만들고 이를 위한 분산 솔루션을 제공합니다. 누구나 블록체인 데이터를 쉽게 쿼리할 수 있도록 하는 하위 그래프라고 하는 개방형 GraphQL API를 빌드하고 게시할 수 있습니다.

The Graph에 대해 자세히 알아보려면 여기(https://thegraph.com/docs/)에서 설명서를 확인하거나 여기에서 내 자습서(https://dev.to/dabit3/building-graphql-apis-on-ethereum-4poa)를 확인하십시오. ).

입증

web3에서 인증은 완전히 다른 패러다임입니다. web2에서 인증은 거의 항상 사용자의 개인 정보를 기반으로 합니다. 이 정보는 일반적으로 양식 또는 OAuth 공급자를 통해 수집되며 사용자는 애플리케이션에 액세스하는 대가로 이 정보를 제공해야 합니다.

web3에서 신원은 전적으로 지갑과 공개 키 암호화의 개념을 중심으로 이루어집니다.

하지만"지갑"이름은 그 목적에 부합하지만 인증 및 신원과 관련하여 web3를 처음 접하는 사람들에게 혼동을 주는 용어라는 것을 알았습니다. 미래에는 지갑이 무엇인지를 표현하는 다른 방법을 알아낼 수 있기를 바랍니다. 지갑은 금융의 측면뿐만 아니라 정체성과 평판도 결합하기 때문입니다.

개발자로서 다양한 방법으로 사용자의 지갑 및 주소에 액세스하고 상호 작용하는 방법을 이해해야 합니다.

매우 기본적인 수준(및 매우 일반적인 요구 사항)에서 사용자의 지갑에 대한 액세스를 요청할 수 있습니다. 이를 위해서는 일반적으로 윈도우 환경(웹 브라우저)에서 사용자의 지갑에 접근하거나, WalletConnect나 Solana와 같은 지갑 어댑터를 사용할 수 있습니다.

예를 들어 Ethereum 지갑을 사용할 수 있는 경우 window.ethereum에 액세스할 수 있습니다. Solana(window.solana), Arweave(window.arweaveWallet) 및 소수의 기타 지갑도 마찬가지입니다. WalletConnect는 사용자가 장치에서 직접 모바일 지갑으로 인증할 수 있기 때문에 모바일 웹 및 React Native에 적합합니다.

인증을 직접 처리하려는 경우 사용자가 트랜잭션에 서명한 다음 어딘가에서 디코딩하여 사용자를 인증하도록 할 수 있지만 일반적으로 서버가 필요합니다. 다음은 EVM 지갑을 사용한 예이고, 솔라나/팬텀을 사용한 예입니다.

분산된 방식으로 사용자 프로필을 관리하는 것은 어떻습니까? Ceramic Network는 탈중앙화된 ID를 관리하기 위한 가장 강력한 프로토콜 및 도구 모음을 제공합니다. 그들은 최근 일부 최신 업데이트를 요약하고 모든 도구가 함께 작동하는 방법에 대한 몇 가지 지침을 제공하는 블로그 게시물을 게시했습니다. 거기에서 시작한 다음 그들의 문서를 탐색하여 구축을 시작하는 방법을 이해하고 여기에서 Ceramic self.id를 사용하여 내 예제 프로젝트를 살펴보고 싶습니다.

사용자의 ENS 텍스트 레코드를 가져오려는 경우 ensjs 라이브러리는 사용자 데이터를 가져오는 멋진 API를 제공합니다.

SpruceID도 유망해 보이지만 아직 시도하지는 않았습니다.

Ceramic과 Spruce는 모두 W3C의 DID 사양을 구현하며, 그 자체가 web3의 필수 부분이라고 생각합니다. 그렇기 때문에 DID의 모든 중앙 집중식 구현은 사양이 달성하려는 것과 반대됩니다.

고객

JavaScript 프레임워크에 관한 한, 클라이언트 측 블록체인 SDK는 대부분 프레임워크에 구애받지 않기 때문에 원하는 것은 무엇이든 구축할 수 있습니다. 즉, 대부분의 프로젝트와 예제는 React로 빌드됩니다. React를 위한 추가 도구를 제공하는 Solana Wallet Adapter와 같은 라이브러리도 있으므로 React를 배우거나 익숙해지는 것이 현명한 조치일 수 있습니다.

Ethereum의 클라이언트 SDK에는 web3.js와 ethers.js가 있습니다. 나에게는 Ethers가 더 접근하기 쉽고 더 나은 문서를 가지고 있지만 web3.js는 더 오래되었습니다.

Solana에서는 @solana/web3.js 및/또는 Anchor를 사용할 수 있습니다. 나는 Anchor 프레임워크를 사용하고 있기 때문에 Solana 프로그램을 구축하기 위한 첫 번째 선택이 Anchor 클라이언트 라이브러리라는 것을 알았고 @solana/web3.js보다 이해하기 더 쉽습니다.

기타 계약

Radicle은 Git 위에 구축된 분산 코드 협업 프로토콜입니다. GitHub의 분산 버전으로 생각할 수 있습니다.

Livepeer는 탈중앙화 비디오 스트리밍 네트워크입니다. 70,000개 이상의 GPU가 웹에 존재하는 성숙하고 널리 사용됩니다.

요약하다

요약하다

이 게시물은 내가 배우고 실험하고 web3 개발자로부터 피드백을 수집하는 동안 계속 유지하는 살아있는 문서가 될 것입니다.

여기서 놓친 부분에 대한 피드백이나 아이디어가 있으면 의견을 공유해 주세요. 개발자들이 참여하기를 열망하기 때문에 web3 주변에서 일어나는 모든 활동을 보는 것은 신나는 일입니다. 인프라가 여전히 진화하고 있는 동안 사람들이 대기업에 권력과 통제권을 양도하지 않고도 조정할 수 있는 진정한 분산 프로토콜 및 애플리케이션을 구축한다는 비전이 중요하며 우리는 그 비전 실현에 점점 가까워지고 있습니다.

원래 제목

Web3.0
개발자
Odaily 공식 커뮤니티에 가입하세요