Xác định ngăn xếp web3

Trung cấp1/8/2024, 2:50:04 AM
Bài viết khám phá ứng dụng và phát triển của Web3 trong blockchain.

Trong phần tiếp theo của việc Xây dựng trên web3, kỹ sư quan hệ phát triển của Edge & Node Nader Dabit mở rộng về ngăn xếp web3 và cách mà các nhà phát triển có thể hình dung các khía cạnh khác nhau của việc xây dựng trên web3.


Tôi chuyển sang web3 vào tháng 4 năm 2021 sau khi là một nhà phát triển full-stack truyền thống khoảng 10 năm. Trong khi đào sâu vào tất cả các công nghệ và ý tưởng mới này, điều đầu tiên tôi muốn biết là “ngăn xếp web3 là gì?

Khi xây dựng một ứng dụng web hoặc di động truyền thống, tôi thường phụ thuộc vào một số khối xây dựng để hoàn thành công việc.

  1. Máy chủ API / ứng dụng (REST hoặc GraphQL)
  2. Lớp xác thực (được quản lý hoặc tự tạo)
  3. Cơ sở dữ liệu
  4. Khung viện, nền tảng và thư viện phía khách hàng
  5. Lưu trữ tệp

Sử dụng những thành phần cốt lõi này, tôi có thể xây dựng hầu hết các loại ứng dụng mà tôi muốn, hoặc ít nhất là đạt được hầu hết mục tiêu. Vậy trong web3, điều này trông như thế nào?

Hóa ra, câu trả lời cho điều này không phải là một cách rõ ràng vì:

  1. Mô hình hoàn toàn khác biệt ở nhiều cách
  2. Các công cụ, công nghệ và hệ sinh thái web3 ít trưởng thành hơn so với web2

Đối với tôi, cũng khó khăn hơn khi tôi hiểu cách thức để bắt đầu và phát triển ứng dụng web3, bởi vì tôi tiếp cận vấn đề theo cùng cách mà tôi đã làm trong thế giới web2.

Sau khi làm việc, nghiên cứu, thử nghiệm và xây dựng các dự án trong khoảng 8 tháng qua, tôi muốn chia sẻ những gì tôi đã học được.

Web3 là gì?

Trước khi chúng ta xác định ngăn xếp web3, hãy cố gắng định nghĩa web3. Có vô số định nghĩa tùy thuộc vào người bạn hỏi, nhưng với tôi, tôi thấy điều nàyđịnh nghĩa spot on:

Web3 là bộ giao thức cho phép ứng dụng hoàn toàn phi tập trung.

Với ngăn xếp công nghệ phi tập trung này, chúng ta có thể bắt đầu xây dựng các ứng dụng phi tập trung có những ảnh hưởng và đặc điểm riêng của chúng.

Một số đặc điểm được kích hoạ bởi web3 là:

  • Hạ tầng web phi tập trung
  • Sở hữu (dữ liệu, nội dung và nền tảng)
  • Thanh toán số tự nhiên
  • Tự chủ nhân quyền về danh tính
  • Phân phối, không tin cậy, & cơ sở hạ tầng mạnh mẽ
  • Mở, công khai, có thể lắp ráp phía sau

Trong khi một số ứng dụng được xây dựng trên các ngăn xếp công nghệ phi tập trung sẽ thay thế những ứng dụng tiền nhiệm của họ, một mô hình mới của ứng dụng cũng đã trở nên khả thi nhờ các nguyên tố mới được kích hoạt bởi các chuỗi khối.

Thanh toán kỹ thuật số gốc và cơ sở hạ tầng phụ trợ công cộng - như học máy, thiết bị di động, thực tế ảo và các nguyên thủy công nghệ, nền tảng và khối xây dựng khác - cho phép các loại ứng dụng hoàn toàn mới được xây dựng, một số ứng dụng chưa được tưởng tượng.

Điều này có nghĩa là mọi thứ sẽ được thay thế bằng web3 không? Không nhất thiết. Mặc dù tôi nghĩ rằng xây dựng trên một ngăn xếp công nghệ phi tập trung là một lựa chọn tốt hơn đối với một số loại ứng dụng - giống như bất kỳ quyết định kỹ thuật nào, điều đó phụ thuộc vào việc bạn đang xây dựng gì.

Bây giờ chúng ta hãy bắt đầu khám phá ngăn xếp web3, được chia thành bộ các danh mục này:

  • Blockchain
  • Môi trường phát triển Blockchain
  • Lưu trữ tập tin
  • Giao thức dữ liệu ngoại chuỗi
  • API (indexing & querying)
  • Nhận diện
  • Khách hàng (khung viện và thư viện)
  • Oracles
  • Các giao thức khác

Blockchain

Có vô số chuỗi khối mà bạn có thể chọn để xây dựng. Không có một cái nào là "tốt nhất", thay vào đó bạn nên xem xét các sự đánh đổi khác nhau giữa chúng.

Một điều mà thường quan trọng với tôi khi học cái mới là ý tưởng về việc áp dụng Nguyên lý Paretovề những gì tôi đang học. tức là, cách hiệu quả nhất để tận dụng hết thời gian và công sức đó là gì. Theo ý tưởng này, tôi có thể đạt được sự bám đuổi và động lực nhất trong quá trình học cái mới nhất trong thời gian ngắn nhất.

Trong thế giới Blockchain, việc học Solidity và EVM(hoặc Máy ảo Ethereum) có thể là cách tốt nhất khi bắt đầu làm blockchain developer. Sử dụng kỹ năng này (và ngăn xếp công nghệ), bạn có thể xây dựng không chỉ cho Ethereum, mà còn cho các Ethereum Layer 2s, sidechains, và thậm chí cả các blockchains khác như Avalanche, Fantom, và Celo.

Nói vậy thôi, Rust đang trở nên ngày càng phổ biến trong thế giới blockchain, với Solana, NEAR, Polkadot và những người khác có hỗ trợ Rust cấp đầu tiên. Bạn có lẽ không thể sai khi học cả hai, nhưng đối với người mới bắt đầu, tôi nghĩ rằng Solidity vẫn là lựa chọn tốt hơn nếu ai đó hỏi tôi hôm nay.

Vượt xa lời khuyên đó, dưới đây là một mẫu không đầy đủ về các chuỗi khối có sự kết hợp vững chắc giữa công nghệ, tiện ích, cộng đồng, đà, và khả năng tồn tại trong tương lai:

  • Ethereum- nền tảng hợp đồng thông minh ban đầu
  • ZK rollups: ZKSync, Starknet, Hermez- Các lớp 2 Ethereum với khả năng xử lý cao, nhưng không tương thích mặc định với EVM
  • Optimistic rollups: Arbitrum & Lạc quan - Ethereum layer 2s, EVM tương thích (tìm hiểu thêm về sự khác biệt giữa optimistic và ZK rollups ở đây)
  • Polygon- Ethereum sidechain
  • Solana- khả năng xử lý cao, giao dịch giá rẻ, thời gian khối nhanh, nhưng khó hơn để học so với EVM (Rust)
  • NEAR - Blockchain Layer 1, có thể viết smart contract bằng Rust hoặc Assemblyscript
  • Cosmos- hệ sinh thái của các chuỗi khối tương tác
  • Polkadot- nền tảng tính toán dựa trên blockchain cho phép các blockchain xây dựng trên nó thực hiện giao dịch với nhau, tạo ra một internet liên kết của các blockchain
  • Aurora- Chuỗi tương thích EVM chạy trên giao thức NEAR.
  • Fantom- Lớp 1 tương thích EVM
  • Avalanche - Lớp 1 tương thích EVM
  • Celo- Lớp 1 tương thích với EVM, được thiết kế để dễ dàng cho bất kỳ ai sử dụng điện thoại thông minh để gửi, nhận và lưu trữ tiền điện tử
  • Tezos- Lớp 1 không tương thích với EVM, nhiều dự án NFT đang sử dụng nó

Khi tương tác với mạng, bạn sẽ cần sử dụng một điểm cuối RPC.

Có một vài cách bạn có thể làm điều này:

  1. Truy cập vào một điểm cuối RPC công cộng
  2. Chạy nút của bạn
  3. Truy cập một nhà cung cấp nút dưới dạng dịch vụ
  4. Truy cập một nhà cung cấp nút phi tập trung dưới dạng dịch vụ

Các điểm cuối RPC công cộng thường được mạng cung cấp, nhưng đối với hầu hết các ứng dụng sản xuất, bạn sẽ muốn tận dụng các điểm cuối riêng của mình vì chúng không ổn định hoặc không được khuyến nghị cho sản xuất.

Có một số nhà cung cấp dịch vụ RPC, đây là một số cái:

Cũng có một giải pháp web3 / phi tập trung,Mạng Pocketdường như đang thu hút sự chú ý.

Bất kỳ trong những lựa chọn này đều có lẽ là một cái cược tốt khi tương tác trực tiếp với mạng của bạn.

Môi trường phát triển Blockchain

Đối với việc phát triển EVM, có một số môi trường phát triển tốt có sẵn:

  • Hardhat (JavaScript) là một lựa chọn mới hơn, nhưng ngày càng trở nên phổ biến hơn. Tài liệu của họ rất tuyệt vời, công cụ và trải nghiệm phát triển được hoàn thiện, và đó là điều mà tôi đã sử dụng cá nhân để xây dựng dapps.
  • Truffle(JavaScript) là một bộ công cụ để xây dựng và phát triển ứng dụng trên EVM. Nó đã trưởng thành, được kiểm chứng qua thử nghiệm, và có tài liệu tốt. Nó đã tồn tại từ lâu và được nhiều nhà phát triển sử dụng.
  • Foundrylà môi trường phát triển Solidity mới từ Paradigm mà có nhiều tiềm năng. Những điểm nổi bật chính là khả năng viết các bài kiểm tra trong Solidity, hỗ trợ cho fuzzing và tốc độ (được viết bằng Rust). Tôi đã viết một bài giới thiệu riêng về nó ở đây.
  • Brownielà một framework phát triển và kiểm thử dựa trên Python cho việc phát triển hợp đồng thông minh cho Solidity / EVM.

Đối với phát triển Solana,Anchorđang nhanh chóng trở thành điểm nhập cảnh cho các nhà phát triển mới. Nó cung cấp một CLI để xây dựng, xây dựng và kiểm tra các chương trình Solana cũng như thư viện khách hàng mà bạn có thể sử dụng để xây dựng giao diện người dùng. Nó cũng bao gồm một DSL trừu tượng hóa rất nhiều sự phức tạp mà các nhà phát triển thường gặp phải khi bắt đầu với phát triển Solana và Rust.

Lưu trữ tệp

Chúng ta lưu trữ hình ảnh, video và các tập tin khác ở đâu trong web3? Việc lưu trữ bất cứ thứ gì lớn trên chuỗi thông tin thường rất tốn kém, vì vậy chúng ta có lẽ không muốn lưu trữ chúng ở đó.

Thay vào đó, chúng ta có thể sử dụng một trong số một số giao thức lưu trữ tệp.

  • IPFS- giao thức hệ thống tệp ngang hàng
    • ưu điểm: nó đáng tin cậy, được tài liệu rõ ràng với một hệ sinh thái lớn
    • cons: nếu dữ liệu không được ghim lại thì có thể bị mất
  • Arweave- cho phép bạn lưu trữ dữ liệu vĩnh viễn, chỉ cần thanh toán một lần phí giao dịch duy nhất. Tôi là người hâm mộ của Arweave và đã viết một bài đăng trên blog về nóở đây.
  • Filecoin- từ Protocol Labs, cùng đội ngũ đã xây dựng IPFS, đó là một giao thức được thiết kế để cung cấp hệ thống lưu trữ dữ liệu kiên trì. Có một số cáchđể nhà phát triển xây dựng trên Filecoin, bao gồm web3.storagerất đẹp.
  • Skynet - Tôi vẫn chưa sử dụng nó trong sản xuất, nhưng đã thử nghiệm và dường như hoạt động tốt. API ở đâyTrông rất tuyệt. Tôi có câu hỏi như là dữ liệu được lưu giữ trong bao lâu và tính tương thích của Skynet với các giao thức khác.

Các giao thức dữ liệu ngoại chuỗi

Ngoài việc lưu trữ tệp và lưu trữ trên chuỗi, bạn cũng có thể cần lưu trữ dữ liệu ngoại chuỗi. Bạn có thể sử dụng các loại giải pháp này tương tự như cách bạn có thể sử dụng cơ sở dữ liệu trong một ngăn xếp công nghệ truyền thống, nhưng thay vào đó chúng được sao chép trên n nút trên mạng phân cấp, và do đó đáng tin cậy hơn (ít nhất trong lý thuyết).

Một vài lựa chọn là:

  • Mạng Lưới Gốm Sứ- một nền tảng phi tập trung, mã nguồn mở cho việc tạo ra, lưu trữ và chia sẻ dữ liệu. Ceramic cũng có một giao thức định danh tuyệt vời mà tôi sẽ nói về sau. Có lẽ đây là giải pháp lưu trữ ngoại chuỗi yêu thích của tôi vào lúc này.Here’smột bản demo khá tốt.
  • VảiThreadDB - một cơ sở dữ liệu đa bên được xây dựng trên IPFS và Libp2p. Nếu tôi hiểu đúng, có thể đang trải qua một sự thay đổi lớn về API vào lúc này. Tôi đã thử nghiệm và thấy một số triển vọng, nhưng tài liệu và DX cần được cải thiện.
  • GunDB- một cơ sở dữ liệu phân cấp, ngang hàng. Gun đã tồn tại từ khá lâu và một số ứng dụng khá thú vịđã được xây dựng với nó.

Về mức độ chín muồi, quan điểm của tôi là hệ sinh thái các giải pháp lưu trữ ngoại chuỗi vẫn chưa đạt đến nơi cần phải để phát triển một số trường hợp sử dụng tiên tiến mà một số nhà phát triển có thể muốn. Một số thách thức ở đây là dữ liệu thời gian thực, phát hiện xung đột và giải quyết xung đột, quyền viết, tài liệu và trải nghiệm tổng quát của nhà phát triển.

Tích hợp các giải pháp dữ liệu ngoại chuỗi với các giao thức blockchain là một trong những thách thức lớn cuối cùng mà chúng ta cần vượt qua trước khi có một ngăn xếp giao thức hoàn toàn phi tập trung có khả năng hỗ trợ bất kỳ loại ứng dụng nào.

API (indexing & querying)

Có rất nhiều sự khác biệt trong cách chúng ta tương tác và xây dựng trên các chuỗi khối so với cơ sở dữ liệu trong ngăn xếp công nghệ truyền thống. Với các chuỗi khối, dữ liệu không được lưu trữ dưới dạng có thể tiết kiệm hoặc dễ dàng tiêu thụ trực tiếp từ các ứng dụng hoặc giao diện người dùng khác.

Các chuỗi khối được tối ưu hóa cho các hoạt động ghi. Bạn thường nghe về sự đổi mới diễn ra tập trung vào giao dịch mỗi giây, thời gian khối và chi phí giao dịch. Dữ liệu chuỗi khối được ghi trong các khối qua thời gian, làm cho bất cứ hoạt động đọc cơ bản nào khác là không thể.

Trong hầu hết các ứng dụng, bạn cần các tính năng như dữ liệu quan hệ, sắp xếp, lọc, tìm kiếm toàn văn bản, phân trang và nhiều loại khả năng truy vấn khác. Để làm điều này, dữ liệu cần được lập chỉ mục và tổ chức để truy xuất hiệu quả.

Truyền thống, đó là công việc mà cơ sở dữ liệu thực hiện trong ngăn xếp công nghệ tập trung, nhưng tầng lớp lập chỉ mục đó đã thiếu trong ngăn xếp web3.

The Graphlà một giao thức để lập chỉ mục và truy vấn dữ liệu blockchain, giúp quá trình này trở nên dễ dàng hơn và cung cấp một giải pháp phi tập trung để làm điều đó. Bất kỳ ai cũng có thể xây dựng và xuất bản các API GraphQL mở, được gọi là các siêu đồ thị, giúp việc truy vấn dữ liệu blockchain trở nên dễ dàng.

Để biết thêm về The Graph, hãy kiểm tra tài liệuở đâyhoặc hướng dẫn của tôiở đây.

Identity

Identity là một mô hình hoàn toàn khác biệt trong web3. Trong web2, xác thực hầu như luôn dựa trên thông tin cá nhân của người dùng. Thông tin này thường được thu thập thông qua một biểu mẫu hoặc một nhà cung cấp OAuth yêu cầu người dùng đưa ra để trao đổi quyền truy cập vào ứng dụng.

Trong web3, danh tính hoàn toàn xoay quanh ý tưởng về ví và mật mã khóa công khai.

Mặc dù tên gọi “ví” đáp ứng mục đích của nó, nhưng tôi thấy rằng những người mới sử dụng web3 thấy thuật ngữ này rất rối rắm khi liên quan đến xác thực và danh tính. Tôi hy vọng rằng trong tương lai chúng ta có thể tìm ra cách khác để truyền đạt ý nghĩa của một chiếc ví, vì nó kết hợp các khía cạnh của tài chính nhưng cũng danh tính và uy tín.

Là một nhà phát triển, bạn sẽ cần hiểu cách truy cập và tương tác với ví và địa chỉ của người dùng theo nhiều cách khác nhau.

Ở mức cơ bản nhất (và yêu cầu rất phổ biến), bạn có thể muốn yêu cầu truy cập vào ví của người dùng. Để làm điều này, bạn thường sẽ có thể truy cập vào ví của người dùng trong ngữ cảnh cửa sổ (trình duyệt web) hoặc sử dụng một cái gì đó như WalletConnecthoặcBộ chuyển đổi Ví Solana.

Ví dụ, nếu họ có ví Ethereum sẵn có, bạn sẽ có thể truy cập window.ethereum. Tương tự với Solana (window.solana), Arweave (window.arweaveWallet), và một số mã khác. WalletConnect tốt cho web di động và React Native vì nó cho phép người dùng ủy quyền bằng cách sử dụng ví di động trực tiếp từ thiết bị.

Nếu bạn muốn tự xử lý xác thực, bạn có thể cho phép người dùng ký một giao dịch và sau đó giải mã nó ở đâu đó để xác thực người dùng, nhưng điều này thường yêu cầu một máy chủ. Ở đâylà một ví dụ về cách mà điều đó có thể trông như thế nếu sử dụng một ví EVM, và ở đâylà một ví dụ về cách thực hiện điều này với Solana / Phantom.

Quản lý hồ sơ người dùng theo cách phi tập trung thế nào?Mạng Gốm sứcung cấp giao thức mạnh mẽ nhất và bộ công cụ để quản lý danh tính phi tập trung. Họ vừa mới phát hành một bài đăng trên blogvạch ra một số cập nhật gần đây nhất của họ và đưa ra một số hướng dẫn về cách tất cả các công cụ hoạt động cùng nhau. Tôi sẽ bắt đầu từ đó và sau đó khám phátài liệu của họđể hiểu cách bắt đầu xây dựng, và xem xét việc kiểm tra dự án mẫu của tôi ở đâysử dụng Ceramic self.id.

Nếu bạn muốn lấy thông tin người dùng ENS bản ghi văn bản, thư viện ENSJS cung cấp một API tốt để tìm nạp dữ liệu người dùng:

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name('sha.eth').getText('avatar')

SpruceIDcũng là một điều có vẻ hứa hẹn nhưng tôi vẫn chưa thử nó.

Sứ và Tùngcả hai cài đặtW3C DID đặc điểm kỹ thuật, bản thân nó cũng là thứ mà tôi sẽ coi là một khối xây dựng của web3. Như đã nói, bất kỳ việc triển khai tập trung nào của DID đều đi ngược lại ý tưởng về những gì đặc tả đang cố gắng thực hiện.

Client

Về các framework JavaScript, bạn có thể xây dựng với bất cứ thứ gì bạn muốn, vì các SDK blockchain phía máy khách chủ yếu không phụ thuộc vào framework. Tuy nhiên, có một số lượng lớn các dự án và ví dụ được xây dựng trong React. Cũng có một số thư viện như Solana Wallet Adapterđó cung cấp các tiện ích bổ sung cho React, vì vậy tôi nghĩ rằng việc học hoặc quen thuộc với React sẽ là một bước đi thông minh.

Đối với SDK phía máy khách trong Ethereum có web3.jsethers.js. Đối với tôi, Ethers dễ tiếp cận hơn và có tài liệu tốt hơn, mặc dù web3.js đã tồn tại lâu hơn.

Trong Solana, bạn có thể sẽ làm việc với@solana/web3.jsvà / hoặcAnchorTôi đã thấy thư viện khách Anchor là lựa chọn hàng đầu của tôi khi xây dựng các chương trình Solana vì tôi đang sử dụng framework Anchor và tôi thấy nó dễ hiểu hơn nhiều.@solana/web3.js.

Oracles

Oracles cho phép các nhà phát triển truy cập đến việc đọc dữ liệu thực tế & hệ thộ ngoại tại một hợp đồng mã thông minh.

Ví dụ, hầu hết các ứng dụng tài chính đều cần kiến thức về dữ liệu thế giới thực & các sự kiện diễn ra ngoài chuỗi, vì vậy Oracles đặc biệt quan trọng trong DeFi.

Chainlinklà một Oracle cho phép truy cập vào dữ liệu thế giới thực và tính toán ngoại chuỗi trong khi duy trì các cam kết về an toàn và đáng tin cậy có sẵn trong công nghệ blockchain.

Flux là một oracle chuỗi chéo cung cấp các hợp đồng thông minh với quyền truy cập vào nguồn cấp dữ liệu an toàn về mặt kinh tế.

Các giao thức khác

Radiclelà một giao thức cộng tác mã nguồn mở phân quyền được xây dựng trên Git. Có thể coi là một phiên bản phân quyền của GitHub.

Livepeer là một mạng phát trực tuyến video phi tập trung. Nó trưởng thành và được sử dụng rộng rãi với hơn 70.000 GPU trực tiếp trên mạng.

Kết thúc

Bài đăng này sẽ là một tài liệu sống mà tôi sẽ cập nhật khi tôi học, thử nghiệm và thu thập phản hồi từ các nhà phát triển xây dựng trong web3.

Nếu bạn có bất kỳ phản hồi hoặc ý tưởng nào về điều gì đó mà tôi đang bỏ sót ở đây, hãy tiếp cận và chia sẻ suy nghĩ của bạn với tôi. Thật là thú vị khi thấy tất cả các hoạt động xung quanh web3 đều đang diễn ra khi các nhà phát triển đang tham gia và tham gia vào. Mặc dù cơ sở hạ tầng vẫn đang tiếp tục phát triển, tuy nhiên, tầm nhìn xây dựng các giao thức và ứng dụng thực sự phi tập trung mà cho phép mọi người phối hợp mà không cần phải nhường quyền lực và kiểm soát cho các công ty lớn là một tầm nhìn quan trọng và chúng ta gần như đã biến tầm nhìn này thành hiện thực.

Tuyên bố:

  1. Bài viết này được sao chép từ [ edgeandnode]. Tất cả bản quyền thuộc về tác giả gốc [Nader Dabit]. Nếu có ý kiến phản đối bản in lại này, vui lòng liên hệ với Gate Họcnhóm, và họ sẽ xử lý nhanh chóng.
  2. Liability Disclaimer: Các quan điểm và ý kiến được thể hiện trong bài viết này đều thuộc về tác giả và không cung cấp bất kỳ lời khuyên đầu tư nào.
  3. Bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi nhóm Gate Learn. Trừ khi có nêu rõ, việc sao chép, phân phối hoặc đạo văn các bài viết dịch là không được phép.

Xác định ngăn xếp web3

Trung cấp1/8/2024, 2:50:04 AM
Bài viết khám phá ứng dụng và phát triển của Web3 trong blockchain.

Trong phần tiếp theo của việc Xây dựng trên web3, kỹ sư quan hệ phát triển của Edge & Node Nader Dabit mở rộng về ngăn xếp web3 và cách mà các nhà phát triển có thể hình dung các khía cạnh khác nhau của việc xây dựng trên web3.


Tôi chuyển sang web3 vào tháng 4 năm 2021 sau khi là một nhà phát triển full-stack truyền thống khoảng 10 năm. Trong khi đào sâu vào tất cả các công nghệ và ý tưởng mới này, điều đầu tiên tôi muốn biết là “ngăn xếp web3 là gì?

Khi xây dựng một ứng dụng web hoặc di động truyền thống, tôi thường phụ thuộc vào một số khối xây dựng để hoàn thành công việc.

  1. Máy chủ API / ứng dụng (REST hoặc GraphQL)
  2. Lớp xác thực (được quản lý hoặc tự tạo)
  3. Cơ sở dữ liệu
  4. Khung viện, nền tảng và thư viện phía khách hàng
  5. Lưu trữ tệp

Sử dụng những thành phần cốt lõi này, tôi có thể xây dựng hầu hết các loại ứng dụng mà tôi muốn, hoặc ít nhất là đạt được hầu hết mục tiêu. Vậy trong web3, điều này trông như thế nào?

Hóa ra, câu trả lời cho điều này không phải là một cách rõ ràng vì:

  1. Mô hình hoàn toàn khác biệt ở nhiều cách
  2. Các công cụ, công nghệ và hệ sinh thái web3 ít trưởng thành hơn so với web2

Đối với tôi, cũng khó khăn hơn khi tôi hiểu cách thức để bắt đầu và phát triển ứng dụng web3, bởi vì tôi tiếp cận vấn đề theo cùng cách mà tôi đã làm trong thế giới web2.

Sau khi làm việc, nghiên cứu, thử nghiệm và xây dựng các dự án trong khoảng 8 tháng qua, tôi muốn chia sẻ những gì tôi đã học được.

Web3 là gì?

Trước khi chúng ta xác định ngăn xếp web3, hãy cố gắng định nghĩa web3. Có vô số định nghĩa tùy thuộc vào người bạn hỏi, nhưng với tôi, tôi thấy điều nàyđịnh nghĩa spot on:

Web3 là bộ giao thức cho phép ứng dụng hoàn toàn phi tập trung.

Với ngăn xếp công nghệ phi tập trung này, chúng ta có thể bắt đầu xây dựng các ứng dụng phi tập trung có những ảnh hưởng và đặc điểm riêng của chúng.

Một số đặc điểm được kích hoạ bởi web3 là:

  • Hạ tầng web phi tập trung
  • Sở hữu (dữ liệu, nội dung và nền tảng)
  • Thanh toán số tự nhiên
  • Tự chủ nhân quyền về danh tính
  • Phân phối, không tin cậy, & cơ sở hạ tầng mạnh mẽ
  • Mở, công khai, có thể lắp ráp phía sau

Trong khi một số ứng dụng được xây dựng trên các ngăn xếp công nghệ phi tập trung sẽ thay thế những ứng dụng tiền nhiệm của họ, một mô hình mới của ứng dụng cũng đã trở nên khả thi nhờ các nguyên tố mới được kích hoạt bởi các chuỗi khối.

Thanh toán kỹ thuật số gốc và cơ sở hạ tầng phụ trợ công cộng - như học máy, thiết bị di động, thực tế ảo và các nguyên thủy công nghệ, nền tảng và khối xây dựng khác - cho phép các loại ứng dụng hoàn toàn mới được xây dựng, một số ứng dụng chưa được tưởng tượng.

Điều này có nghĩa là mọi thứ sẽ được thay thế bằng web3 không? Không nhất thiết. Mặc dù tôi nghĩ rằng xây dựng trên một ngăn xếp công nghệ phi tập trung là một lựa chọn tốt hơn đối với một số loại ứng dụng - giống như bất kỳ quyết định kỹ thuật nào, điều đó phụ thuộc vào việc bạn đang xây dựng gì.

Bây giờ chúng ta hãy bắt đầu khám phá ngăn xếp web3, được chia thành bộ các danh mục này:

  • Blockchain
  • Môi trường phát triển Blockchain
  • Lưu trữ tập tin
  • Giao thức dữ liệu ngoại chuỗi
  • API (indexing & querying)
  • Nhận diện
  • Khách hàng (khung viện và thư viện)
  • Oracles
  • Các giao thức khác

Blockchain

Có vô số chuỗi khối mà bạn có thể chọn để xây dựng. Không có một cái nào là "tốt nhất", thay vào đó bạn nên xem xét các sự đánh đổi khác nhau giữa chúng.

Một điều mà thường quan trọng với tôi khi học cái mới là ý tưởng về việc áp dụng Nguyên lý Paretovề những gì tôi đang học. tức là, cách hiệu quả nhất để tận dụng hết thời gian và công sức đó là gì. Theo ý tưởng này, tôi có thể đạt được sự bám đuổi và động lực nhất trong quá trình học cái mới nhất trong thời gian ngắn nhất.

Trong thế giới Blockchain, việc học Solidity và EVM(hoặc Máy ảo Ethereum) có thể là cách tốt nhất khi bắt đầu làm blockchain developer. Sử dụng kỹ năng này (và ngăn xếp công nghệ), bạn có thể xây dựng không chỉ cho Ethereum, mà còn cho các Ethereum Layer 2s, sidechains, và thậm chí cả các blockchains khác như Avalanche, Fantom, và Celo.

Nói vậy thôi, Rust đang trở nên ngày càng phổ biến trong thế giới blockchain, với Solana, NEAR, Polkadot và những người khác có hỗ trợ Rust cấp đầu tiên. Bạn có lẽ không thể sai khi học cả hai, nhưng đối với người mới bắt đầu, tôi nghĩ rằng Solidity vẫn là lựa chọn tốt hơn nếu ai đó hỏi tôi hôm nay.

Vượt xa lời khuyên đó, dưới đây là một mẫu không đầy đủ về các chuỗi khối có sự kết hợp vững chắc giữa công nghệ, tiện ích, cộng đồng, đà, và khả năng tồn tại trong tương lai:

  • Ethereum- nền tảng hợp đồng thông minh ban đầu
  • ZK rollups: ZKSync, Starknet, Hermez- Các lớp 2 Ethereum với khả năng xử lý cao, nhưng không tương thích mặc định với EVM
  • Optimistic rollups: Arbitrum & Lạc quan - Ethereum layer 2s, EVM tương thích (tìm hiểu thêm về sự khác biệt giữa optimistic và ZK rollups ở đây)
  • Polygon- Ethereum sidechain
  • Solana- khả năng xử lý cao, giao dịch giá rẻ, thời gian khối nhanh, nhưng khó hơn để học so với EVM (Rust)
  • NEAR - Blockchain Layer 1, có thể viết smart contract bằng Rust hoặc Assemblyscript
  • Cosmos- hệ sinh thái của các chuỗi khối tương tác
  • Polkadot- nền tảng tính toán dựa trên blockchain cho phép các blockchain xây dựng trên nó thực hiện giao dịch với nhau, tạo ra một internet liên kết của các blockchain
  • Aurora- Chuỗi tương thích EVM chạy trên giao thức NEAR.
  • Fantom- Lớp 1 tương thích EVM
  • Avalanche - Lớp 1 tương thích EVM
  • Celo- Lớp 1 tương thích với EVM, được thiết kế để dễ dàng cho bất kỳ ai sử dụng điện thoại thông minh để gửi, nhận và lưu trữ tiền điện tử
  • Tezos- Lớp 1 không tương thích với EVM, nhiều dự án NFT đang sử dụng nó

Khi tương tác với mạng, bạn sẽ cần sử dụng một điểm cuối RPC.

Có một vài cách bạn có thể làm điều này:

  1. Truy cập vào một điểm cuối RPC công cộng
  2. Chạy nút của bạn
  3. Truy cập một nhà cung cấp nút dưới dạng dịch vụ
  4. Truy cập một nhà cung cấp nút phi tập trung dưới dạng dịch vụ

Các điểm cuối RPC công cộng thường được mạng cung cấp, nhưng đối với hầu hết các ứng dụng sản xuất, bạn sẽ muốn tận dụng các điểm cuối riêng của mình vì chúng không ổn định hoặc không được khuyến nghị cho sản xuất.

Có một số nhà cung cấp dịch vụ RPC, đây là một số cái:

Cũng có một giải pháp web3 / phi tập trung,Mạng Pocketdường như đang thu hút sự chú ý.

Bất kỳ trong những lựa chọn này đều có lẽ là một cái cược tốt khi tương tác trực tiếp với mạng của bạn.

Môi trường phát triển Blockchain

Đối với việc phát triển EVM, có một số môi trường phát triển tốt có sẵn:

  • Hardhat (JavaScript) là một lựa chọn mới hơn, nhưng ngày càng trở nên phổ biến hơn. Tài liệu của họ rất tuyệt vời, công cụ và trải nghiệm phát triển được hoàn thiện, và đó là điều mà tôi đã sử dụng cá nhân để xây dựng dapps.
  • Truffle(JavaScript) là một bộ công cụ để xây dựng và phát triển ứng dụng trên EVM. Nó đã trưởng thành, được kiểm chứng qua thử nghiệm, và có tài liệu tốt. Nó đã tồn tại từ lâu và được nhiều nhà phát triển sử dụng.
  • Foundrylà môi trường phát triển Solidity mới từ Paradigm mà có nhiều tiềm năng. Những điểm nổi bật chính là khả năng viết các bài kiểm tra trong Solidity, hỗ trợ cho fuzzing và tốc độ (được viết bằng Rust). Tôi đã viết một bài giới thiệu riêng về nó ở đây.
  • Brownielà một framework phát triển và kiểm thử dựa trên Python cho việc phát triển hợp đồng thông minh cho Solidity / EVM.

Đối với phát triển Solana,Anchorđang nhanh chóng trở thành điểm nhập cảnh cho các nhà phát triển mới. Nó cung cấp một CLI để xây dựng, xây dựng và kiểm tra các chương trình Solana cũng như thư viện khách hàng mà bạn có thể sử dụng để xây dựng giao diện người dùng. Nó cũng bao gồm một DSL trừu tượng hóa rất nhiều sự phức tạp mà các nhà phát triển thường gặp phải khi bắt đầu với phát triển Solana và Rust.

Lưu trữ tệp

Chúng ta lưu trữ hình ảnh, video và các tập tin khác ở đâu trong web3? Việc lưu trữ bất cứ thứ gì lớn trên chuỗi thông tin thường rất tốn kém, vì vậy chúng ta có lẽ không muốn lưu trữ chúng ở đó.

Thay vào đó, chúng ta có thể sử dụng một trong số một số giao thức lưu trữ tệp.

  • IPFS- giao thức hệ thống tệp ngang hàng
    • ưu điểm: nó đáng tin cậy, được tài liệu rõ ràng với một hệ sinh thái lớn
    • cons: nếu dữ liệu không được ghim lại thì có thể bị mất
  • Arweave- cho phép bạn lưu trữ dữ liệu vĩnh viễn, chỉ cần thanh toán một lần phí giao dịch duy nhất. Tôi là người hâm mộ của Arweave và đã viết một bài đăng trên blog về nóở đây.
  • Filecoin- từ Protocol Labs, cùng đội ngũ đã xây dựng IPFS, đó là một giao thức được thiết kế để cung cấp hệ thống lưu trữ dữ liệu kiên trì. Có một số cáchđể nhà phát triển xây dựng trên Filecoin, bao gồm web3.storagerất đẹp.
  • Skynet - Tôi vẫn chưa sử dụng nó trong sản xuất, nhưng đã thử nghiệm và dường như hoạt động tốt. API ở đâyTrông rất tuyệt. Tôi có câu hỏi như là dữ liệu được lưu giữ trong bao lâu và tính tương thích của Skynet với các giao thức khác.

Các giao thức dữ liệu ngoại chuỗi

Ngoài việc lưu trữ tệp và lưu trữ trên chuỗi, bạn cũng có thể cần lưu trữ dữ liệu ngoại chuỗi. Bạn có thể sử dụng các loại giải pháp này tương tự như cách bạn có thể sử dụng cơ sở dữ liệu trong một ngăn xếp công nghệ truyền thống, nhưng thay vào đó chúng được sao chép trên n nút trên mạng phân cấp, và do đó đáng tin cậy hơn (ít nhất trong lý thuyết).

Một vài lựa chọn là:

  • Mạng Lưới Gốm Sứ- một nền tảng phi tập trung, mã nguồn mở cho việc tạo ra, lưu trữ và chia sẻ dữ liệu. Ceramic cũng có một giao thức định danh tuyệt vời mà tôi sẽ nói về sau. Có lẽ đây là giải pháp lưu trữ ngoại chuỗi yêu thích của tôi vào lúc này.Here’smột bản demo khá tốt.
  • VảiThreadDB - một cơ sở dữ liệu đa bên được xây dựng trên IPFS và Libp2p. Nếu tôi hiểu đúng, có thể đang trải qua một sự thay đổi lớn về API vào lúc này. Tôi đã thử nghiệm và thấy một số triển vọng, nhưng tài liệu và DX cần được cải thiện.
  • GunDB- một cơ sở dữ liệu phân cấp, ngang hàng. Gun đã tồn tại từ khá lâu và một số ứng dụng khá thú vịđã được xây dựng với nó.

Về mức độ chín muồi, quan điểm của tôi là hệ sinh thái các giải pháp lưu trữ ngoại chuỗi vẫn chưa đạt đến nơi cần phải để phát triển một số trường hợp sử dụng tiên tiến mà một số nhà phát triển có thể muốn. Một số thách thức ở đây là dữ liệu thời gian thực, phát hiện xung đột và giải quyết xung đột, quyền viết, tài liệu và trải nghiệm tổng quát của nhà phát triển.

Tích hợp các giải pháp dữ liệu ngoại chuỗi với các giao thức blockchain là một trong những thách thức lớn cuối cùng mà chúng ta cần vượt qua trước khi có một ngăn xếp giao thức hoàn toàn phi tập trung có khả năng hỗ trợ bất kỳ loại ứng dụng nào.

API (indexing & querying)

Có rất nhiều sự khác biệt trong cách chúng ta tương tác và xây dựng trên các chuỗi khối so với cơ sở dữ liệu trong ngăn xếp công nghệ truyền thống. Với các chuỗi khối, dữ liệu không được lưu trữ dưới dạng có thể tiết kiệm hoặc dễ dàng tiêu thụ trực tiếp từ các ứng dụng hoặc giao diện người dùng khác.

Các chuỗi khối được tối ưu hóa cho các hoạt động ghi. Bạn thường nghe về sự đổi mới diễn ra tập trung vào giao dịch mỗi giây, thời gian khối và chi phí giao dịch. Dữ liệu chuỗi khối được ghi trong các khối qua thời gian, làm cho bất cứ hoạt động đọc cơ bản nào khác là không thể.

Trong hầu hết các ứng dụng, bạn cần các tính năng như dữ liệu quan hệ, sắp xếp, lọc, tìm kiếm toàn văn bản, phân trang và nhiều loại khả năng truy vấn khác. Để làm điều này, dữ liệu cần được lập chỉ mục và tổ chức để truy xuất hiệu quả.

Truyền thống, đó là công việc mà cơ sở dữ liệu thực hiện trong ngăn xếp công nghệ tập trung, nhưng tầng lớp lập chỉ mục đó đã thiếu trong ngăn xếp web3.

The Graphlà một giao thức để lập chỉ mục và truy vấn dữ liệu blockchain, giúp quá trình này trở nên dễ dàng hơn và cung cấp một giải pháp phi tập trung để làm điều đó. Bất kỳ ai cũng có thể xây dựng và xuất bản các API GraphQL mở, được gọi là các siêu đồ thị, giúp việc truy vấn dữ liệu blockchain trở nên dễ dàng.

Để biết thêm về The Graph, hãy kiểm tra tài liệuở đâyhoặc hướng dẫn của tôiở đây.

Identity

Identity là một mô hình hoàn toàn khác biệt trong web3. Trong web2, xác thực hầu như luôn dựa trên thông tin cá nhân của người dùng. Thông tin này thường được thu thập thông qua một biểu mẫu hoặc một nhà cung cấp OAuth yêu cầu người dùng đưa ra để trao đổi quyền truy cập vào ứng dụng.

Trong web3, danh tính hoàn toàn xoay quanh ý tưởng về ví và mật mã khóa công khai.

Mặc dù tên gọi “ví” đáp ứng mục đích của nó, nhưng tôi thấy rằng những người mới sử dụng web3 thấy thuật ngữ này rất rối rắm khi liên quan đến xác thực và danh tính. Tôi hy vọng rằng trong tương lai chúng ta có thể tìm ra cách khác để truyền đạt ý nghĩa của một chiếc ví, vì nó kết hợp các khía cạnh của tài chính nhưng cũng danh tính và uy tín.

Là một nhà phát triển, bạn sẽ cần hiểu cách truy cập và tương tác với ví và địa chỉ của người dùng theo nhiều cách khác nhau.

Ở mức cơ bản nhất (và yêu cầu rất phổ biến), bạn có thể muốn yêu cầu truy cập vào ví của người dùng. Để làm điều này, bạn thường sẽ có thể truy cập vào ví của người dùng trong ngữ cảnh cửa sổ (trình duyệt web) hoặc sử dụng một cái gì đó như WalletConnecthoặcBộ chuyển đổi Ví Solana.

Ví dụ, nếu họ có ví Ethereum sẵn có, bạn sẽ có thể truy cập window.ethereum. Tương tự với Solana (window.solana), Arweave (window.arweaveWallet), và một số mã khác. WalletConnect tốt cho web di động và React Native vì nó cho phép người dùng ủy quyền bằng cách sử dụng ví di động trực tiếp từ thiết bị.

Nếu bạn muốn tự xử lý xác thực, bạn có thể cho phép người dùng ký một giao dịch và sau đó giải mã nó ở đâu đó để xác thực người dùng, nhưng điều này thường yêu cầu một máy chủ. Ở đâylà một ví dụ về cách mà điều đó có thể trông như thế nếu sử dụng một ví EVM, và ở đâylà một ví dụ về cách thực hiện điều này với Solana / Phantom.

Quản lý hồ sơ người dùng theo cách phi tập trung thế nào?Mạng Gốm sứcung cấp giao thức mạnh mẽ nhất và bộ công cụ để quản lý danh tính phi tập trung. Họ vừa mới phát hành một bài đăng trên blogvạch ra một số cập nhật gần đây nhất của họ và đưa ra một số hướng dẫn về cách tất cả các công cụ hoạt động cùng nhau. Tôi sẽ bắt đầu từ đó và sau đó khám phátài liệu của họđể hiểu cách bắt đầu xây dựng, và xem xét việc kiểm tra dự án mẫu của tôi ở đâysử dụng Ceramic self.id.

Nếu bạn muốn lấy thông tin người dùng ENS bản ghi văn bản, thư viện ENSJS cung cấp một API tốt để tìm nạp dữ liệu người dùng:

const ens = new ENS({ provider, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name('sha.eth').getText('avatar')

SpruceIDcũng là một điều có vẻ hứa hẹn nhưng tôi vẫn chưa thử nó.

Sứ và Tùngcả hai cài đặtW3C DID đặc điểm kỹ thuật, bản thân nó cũng là thứ mà tôi sẽ coi là một khối xây dựng của web3. Như đã nói, bất kỳ việc triển khai tập trung nào của DID đều đi ngược lại ý tưởng về những gì đặc tả đang cố gắng thực hiện.

Client

Về các framework JavaScript, bạn có thể xây dựng với bất cứ thứ gì bạn muốn, vì các SDK blockchain phía máy khách chủ yếu không phụ thuộc vào framework. Tuy nhiên, có một số lượng lớn các dự án và ví dụ được xây dựng trong React. Cũng có một số thư viện như Solana Wallet Adapterđó cung cấp các tiện ích bổ sung cho React, vì vậy tôi nghĩ rằng việc học hoặc quen thuộc với React sẽ là một bước đi thông minh.

Đối với SDK phía máy khách trong Ethereum có web3.jsethers.js. Đối với tôi, Ethers dễ tiếp cận hơn và có tài liệu tốt hơn, mặc dù web3.js đã tồn tại lâu hơn.

Trong Solana, bạn có thể sẽ làm việc với@solana/web3.jsvà / hoặcAnchorTôi đã thấy thư viện khách Anchor là lựa chọn hàng đầu của tôi khi xây dựng các chương trình Solana vì tôi đang sử dụng framework Anchor và tôi thấy nó dễ hiểu hơn nhiều.@solana/web3.js.

Oracles

Oracles cho phép các nhà phát triển truy cập đến việc đọc dữ liệu thực tế & hệ thộ ngoại tại một hợp đồng mã thông minh.

Ví dụ, hầu hết các ứng dụng tài chính đều cần kiến thức về dữ liệu thế giới thực & các sự kiện diễn ra ngoài chuỗi, vì vậy Oracles đặc biệt quan trọng trong DeFi.

Chainlinklà một Oracle cho phép truy cập vào dữ liệu thế giới thực và tính toán ngoại chuỗi trong khi duy trì các cam kết về an toàn và đáng tin cậy có sẵn trong công nghệ blockchain.

Flux là một oracle chuỗi chéo cung cấp các hợp đồng thông minh với quyền truy cập vào nguồn cấp dữ liệu an toàn về mặt kinh tế.

Các giao thức khác

Radiclelà một giao thức cộng tác mã nguồn mở phân quyền được xây dựng trên Git. Có thể coi là một phiên bản phân quyền của GitHub.

Livepeer là một mạng phát trực tuyến video phi tập trung. Nó trưởng thành và được sử dụng rộng rãi với hơn 70.000 GPU trực tiếp trên mạng.

Kết thúc

Bài đăng này sẽ là một tài liệu sống mà tôi sẽ cập nhật khi tôi học, thử nghiệm và thu thập phản hồi từ các nhà phát triển xây dựng trong web3.

Nếu bạn có bất kỳ phản hồi hoặc ý tưởng nào về điều gì đó mà tôi đang bỏ sót ở đây, hãy tiếp cận và chia sẻ suy nghĩ của bạn với tôi. Thật là thú vị khi thấy tất cả các hoạt động xung quanh web3 đều đang diễn ra khi các nhà phát triển đang tham gia và tham gia vào. Mặc dù cơ sở hạ tầng vẫn đang tiếp tục phát triển, tuy nhiên, tầm nhìn xây dựng các giao thức và ứng dụng thực sự phi tập trung mà cho phép mọi người phối hợp mà không cần phải nhường quyền lực và kiểm soát cho các công ty lớn là một tầm nhìn quan trọng và chúng ta gần như đã biến tầm nhìn này thành hiện thực.

Tuyên bố:

  1. Bài viết này được sao chép từ [ edgeandnode]. Tất cả bản quyền thuộc về tác giả gốc [Nader Dabit]. Nếu có ý kiến phản đối bản in lại này, vui lòng liên hệ với Gate Họcnhóm, và họ sẽ xử lý nhanh chóng.
  2. Liability Disclaimer: Các quan điểm và ý kiến được thể hiện trong bài viết này đều thuộc về tác giả và không cung cấp bất kỳ lời khuyên đầu tư nào.
  3. Bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi nhóm Gate Learn. Trừ khi có nêu rõ, việc sao chép, phân phối hoặc đạo văn các bài viết dịch là không được phép.
Comece agora
Inscreva-se e ganhe um cupom de
$100
!