Cảnh báo rủi ro: Đề phòng huy động vốn bất hợp pháp dưới danh nghĩa 'tiền điện tử' và 'blockchain'. — Năm cơ quan bao gồm Ủy ban Giám sát Ngân hàng và Bảo hiểm
Tìm kiếm
Đăng nhập
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
Xem thị trường
Hiểu về ngăn xếp Web3: Làm cách nào để trở thành nhà phát triển Web3?
区块律动BlockBeats
特邀专栏作者
2022-01-07 09:39
Bài viết này có khoảng 5514 từ, đọc toàn bộ bài viết mất khoảng 8 phút
Web3 là một ngăn xếp giao thức dành cho các ứng dụng phi tập trung hoàn toàn.

Tiêu đề gốc: "Xác định ngăn xếp web3"

Tác giả gốc: Nader Dabit

Biên soạn gốc: Các thành viên của cộng đồng The Graph

Bạn muốn xây dựng trên web3? Nader Dabit chỉ ra các khối xây dựng của ngăn xếp công nghệ web3 trong hướng dẫn giới thiệu

Trong chương tiếp theo của "Xây dựng trên web3", Kỹ sư quan hệ nhà phát triển Edge & Node, Nader Dabit giải thích về ngăn xếp web3 và cách các nhà phát triển khái niệm hóa các lớp xây dựng khác nhau trên web3.

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

Khi xây dựng một trang web truyền thống hoặc ứng dụng dành cho thiết bị di động, tôi thường dựa vào một số khối xây dựng nhất định để hoàn thành công việc:

- API/Máy chủ ứng dụng (REST hoặc GraphQL)

- Lớp xác thực (được quản lý hoặc thủ công)

- cơ sở dữ liệu

- Các framework, nền tảng và thư viện máy khách

- lưu trữ tập tin

Sử dụng các 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 các mục đích của mình. Vì vậy, điều này trông như thế nào trong web3?

Hóa ra, câu trả lời cho câu hỏi này không đơn giản như vậy bởi vì:

- Mô hình này hoàn toàn khác về nhiều mặt

- các công cụ, công nghệ và hệ sinh thái web3 không trưởng thành như web2

Tôi cũng khó hiểu hơn cách thiết lập, chạy và xây dựng ứng dụng web3 vì tôi tiếp cận mọi thứ giống như cách tôi làm trong thế giới web2.

Sau hơn 8 tháng làm việc, nghiên cứu, thử nghiệm và xây dựng, tôi muốn chia sẻ với bạn những gì tôi biết được.

Web3 là gì?

Web3 là một ngăn xếp giao thức dành cho các ứng dụng phi tập trung hoàn toàn.

Web3 là một ngăn xếp giao thức dành cho các ứng dụng phi tập trung hoàn toàn.

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ó ý nghĩa và đặc điểm riêng.

Một số tính năng của web3 là:

- Hạ tầng mạng phi tập trung

- Quyền sở hữu (dữ liệu, nội dung và nền tảng)

- Thanh toán kỹ thuật số địa phương

- Nhận dạng cá nhân toàn quyền

- Cơ sở hạ tầng phân tán, không tin cậy, mạnh mẽ

- Phần phụ trợ mở, công khai, có thể kết hợp

Mặc dù 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ế các ứng dụng tiền nhiệm của chúng, nhưng các ngôn ngữ địa phương mới được kích hoạt bởi các chuỗi khối cũng cho phép các mô hình ứng dụng mới.

Thanh toán kỹ thuật số bản địa và cơ sở hạ tầng phụ trợ chung -- chẳng hạn như học máy, thiết bị di động, thực tế ảo và các công nghệ nguyên thủy, nền tảng và khối xây dựng khác -- cho phép xây dựng các loại ứng dụng hoàn toàn mới, một số loại ứ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 chắc chắn. Mặc dù tôi nghĩ đối với một số loại ứng dụng, việc xây dựng trên ngăn xếp công nghệ phi tập trung là một lựa chọn tốt hơn - giống như hầu hết mọi quyết định công nghệ, nó phụ thuộc vào những gì bạn đang xây dựng.

Bây giờ, hãy bắt đầu đào sâu vào ngăn xếp web3, được chia thành các danh mục sau:

- chuỗi khối

- Môi trường phát triển chuỗi khối

- lưu trữ tập tin

- Cơ sở dữ liệu P2P

- API (chỉ mục và truy vấn)

- danh tính

- Khách hàng (khung và thư viện)

chuỗi khối

chuỗi khối

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

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

Trong không gian chuỗi khối, học Solidity và EVM (hoặc Máy ảo Ethereum) có lẽ là điều tốt nhất nên làm khi bắt đầu với tư cách là nhà phát triển chuỗi khối. Sử dụng bộ 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 lớp thứ hai khác của Ethereum, chuỗi bên và thậm chí cả các chuỗi khối khác như Avalanche, Fantom và Celo.

Điều đó nói rằng, Rust đang bắt đầu trở nên phổ biến hơn trong không gian blockchain, với sự hỗ trợ Rust hàng đầu từ Solana, NEAR, Polkadot và những người khác. Có thể bạn không thể mắc sai lầm khi học cả hai ngôn ngữ, nhưng đối với những người mới bắt đầu, nếu ai đó hỏi tôi hôm nay, tôi sẽ nói rằng Solidity vẫn sẽ là lựa chọn tốt hơn.

Ngoài những đề xuất này, đây là một mẫu chuỗi khối không toàn diện có sự kết hợp vững chắc giữa công nghệ, tiện ích, cộng đồng, động lực 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

- ZKrollups:ZKSync, Starknet,Hermez - Lớp Ethereum thông lượng cao 2, nhưng không tương thích với EVM

- Các bản tổng hợp lạc quan: Arbitrum & Optimism - Ethereum lớp 2, tương thích với EVM (tìm hiểu thêm về sự khác biệt giữa các bản tổng hợp Lạc quan và ZKrollups tại đây).

- Đa giác - Ethereum sidechain

- Solana - thông lượng cao, chi phí giao dịch thấp, thời gian tạo khối nhanh, nhưng khó học hơn EVM (Rust)

- NEAR - chuỗi khối cơ bản, hợp đồng thông minh có thể được viết bằng Rust hoặc Assemblyscript

- Cosmos - một hệ sinh thái của các chuỗi khối có thể tương tác

- Polkadot - Nền tảng điện toán dựa trên chuỗi khối cho phép các chuỗi khối được xây dựng trên nền tảng này thực hiện các giao dịch giữa chúng, tạo ra một mạng lưới các chuỗi khối được kết nối với nhau

- Fantom - Chuỗi khối cơ bản tương thích với EVM

- Avalanche - Chuỗi khối cơ bản tương thích với EVM

- Celo - Chuỗi khối cơ bản tương thích với EVM được thiết kế để giúp mọi người có điện thoại thông minh dễ dàng gửi, nhận và lưu trữ tiền điện tử

- Tezos - blockchain cơ bản không tương thích với EVM, nhiều dự án NFT đang sử dụng nó

Môi trường phát triển chuỗi khối

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

- Hardhat (JavaScript) là một tùy chọn mới hơn, nhưng nó đang thu hút sự chú ý. Tài liệu của họ rất tuyệt, công cụ và trải nghiệm của nhà phát triển rất tuyệt và cá nhân tôi luôn sử dụng nó để xây dựng các ứng dụng phi tập trung.

- Truffle (JavaScript) là 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 thử nghiệm trong trận chiến và được ghi lại đầy đủ. Nó đã xuất hiện được một thời gian và nhiều nhà phát triển sử dụng nó.

- Foundry là một môi trường phát triển Solidity mới từ Paradigm cho thấy nhiều hứa hẹn. Các tính năng chính của nó là khả năng viết bài kiểm tra trong Solidity, hỗ trợ fuzzing và tốc độ (nó được viết bằng Rust). Tôi đã viết một bài giới thiệu riêng về nó ở đây.

- Brownie là một khung thử nghiệm và phát triển hợp đồng thông minh dựa trên Python để phát triển Solidity/EVM.

lưu trữ tập tin

lưu trữ tập tin

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

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

- IPFS--Giao thức hệ thống tệp ngang hàng

- Ưu điểm: Đáng tin cậy, có tài liệu tốt, có hệ sinh thái khổng lồ

- Nhược điểm: Nếu không sửa dữ liệu sẽ bị mất.

- Arweave - Cho phép bạn lưu trữ dữ liệu vĩnh viễn với một khoản phí giao dịch. Tôi là người hâm mộ Arweave và đã viết một bài blog về nó tại đây.

- Filecoin - Từ Phòng thí nghiệm giao thức, cùng một nhóm đã xây dựng IPFS, một giao thức được thiết kế để cung cấp một hệ thống lưu trữ dữ liệu liên tục. Thật tuyệt khi có nhiều cách để các nhà phát triển xây dựng trên Filecoin, bao gồm cả web3.storage.

- Skynet - Tôi chưa sử dụng cái này trong sản xuất, nhưng đã dùng thử và nó có vẻ hoạt động tốt. API ở đây trông rất tuyệt. Tôi có một số câu hỏi như độ bền của dữ liệu trong bao lâu và khả năng tương tác của Skynet với các giao thức khác.

Cơ sở dữ liệu P2P

Ngoài 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 sẽ sử dụng cơ sở dữ liệu trong ngăn xếp công nghệ truyền thống, nhưng chúng được sao chép trên N nút trên mạng phi tập trung và do đó đáng tin cậy hơn (ít nhất là trên lý thuyết).

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

- Mạng gốm - một nền tảng nguồn mở phi tập trung để tạo, lưu trữ và chia sẻ dữ liệu. Ceramic cũng có một giao thức nhận dạng tốt mà tôi sẽ đề cập sau. Có lẽ là giải pháp lưu trữ ngoài chuỗi yêu thích hiện tại của tôi. Đây là một bản demo khá tốt.

- Textile ThreadDB - Cơ sở dữ liệu đa bên được xây dựng trên IPFS và Libp2p. Nếu tôi hiểu chính xác, có thể nó đang trải qua một sự thay đổi API lớn vào lúc này. Tôi đã thử nó và nó cho thấy một số triển vọng, nhưng tài liệu và DX cần một số cải tiến.

- GunDB - Cơ sở dữ liệu ngang hàng, phi tập trung. Gun đã xuất hiện từ khá lâu và một số ứng dụng khá thú vị đã được xây dựng cùng với nó.

Xét về mức độ trưởng thành, tôi cho rằng hệ sinh thái của các giải pháp lưu trữ ngoài chuỗi vẫn chưa đạt đến mức cần thiết để thiết lập các trường hợp sử dụng nâng cao hơn mà một số nhà phát triển có thể mong muốn. Một số thách thức ở đây là dữ liệu trực tiếp, phát hiện và giải quyết xung đột, ủy quyền ghi, tài liệu và trải nghiệm chung của nhà phát triển.

Kết hợp các giải pháp dữ liệu ngoài chuỗi với các giao thức chuỗi khối là một trong những rào cản 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 phi tập trung hoàn toàn có khả năng hỗ trợ bất kỳ loại ứng dụng nào.

API (Chỉ mục và Truy vấn)

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

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

Trong hầu hết các ứng dụng, bạn cần chức năng như dữ liệu quan hệ, sắp xếp, lọc, tìm kiếm toàn văn, phân trang và nhiều loại truy vấn khác. Để làm được đ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ả.

Theo truyền thống, đây là những gì cơ sở dữ liệu thực hiện trong ngăn xếp công nghệ tập trung, nhưng lớp lập chỉ mục bị thiếu trong ngăn xếp web3.

Graph, một giao thức để lập chỉ mục và truy vấn dữ liệu chuỗi khối, 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 để thực hiện điều đó. Bất kỳ ai cũng có thể xây dựng và xuất bản API GraphQL mở, được gọi là biểu đồ con, giúp truy vấn dữ liệu chuỗi khối dễ dàng.

Để tìm hiểu thêm về The Graph, hãy xem tài liệu tại đây (https://thegraph.com/docs/) hoặc hướng dẫn của tôi tại đây (https://dev.to/dabit3/building-graphql-apis-on-ethereum-4poa ).

xác thực

Trong web3, xác thực là một mô hình hoàn toàn khác. 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 nhà cung cấp OAuth và người dùng được yêu cầu cung cấp thông tin này để đổi lấy quyền truy cập vào ứng dụng.

Trong web3, danh tính hoàn toàn xoay quanh các khái niệm về ví và mật mã khóa công khai.

Mặc dù"cái ví"Tên phục vụ mục đích của nó, nhưng tôi thấy thuật ngữ này khó hiểu đối với những người mới sử dụng web3 vì nó liên quan đến xác thực và danh tính. Tôi hy vọng trong tương lai chúng ta có thể tìm ra một số cách khác để diễn đạt ví tiền là gì, bởi vì nó không chỉ kết hợp các khía cạnh tài chính mà còn cả danh tính và danh tiếng.

Là 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.

Ở cấp độ rất cơ bản (và là một yêu cầu rất phổ biến), bạn có thể muốn yêu cầu quyền truy cập vào ví của người dùng. Để thực hiện việc này, thông thường bạn có thể truy cập ví của người dùng trong môi trường windows (trình duyệt web) hoặc sử dụng bộ điều hợp ví như WalletConnect hoặc Solana.

Ví dụ: nếu họ có sẵn ví Ethereum, bạn sẽ có thể truy cập window.ethereum. Điều này cũng đúng với Solana (window.solana), Arweave (window.arweaveWallet) và một số ví khác. WalletConnect rất phù hợp với web di động và React Native vì nó cho phép người dùng ủy quyền bằng ví di động của họ 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ể yêu cầu người dùng ký 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áy chủ. Đây là một ví dụ sử dụng ví EVM và đây là một ví dụ sử dụng Solana/Phantom.

Điều gì về việc quản lý hồ sơ người dùng theo cách phi tập trung? Mạng gốm cung cấp bộ giao thức và công cụ mạnh mẽ nhất để quản lý danh tính phi tập trung. Gần đây, họ đã xuất bản một bài đăng trên blog phác thảo một số cập nhật gần đây 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 muốn bắt đầu từ đó, sau đó khám phá tài liệu của họ để hiểu cách bắt đầu xây dựng và cân nhắc xem dự án ví dụ của tôi tại đây bằng cách sử dụng Ceramic self.id.

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

SpruceID cũng là một thứ có vẻ hứa hẹn, nhưng tôi chưa thử.

Cả Ceramic và Spruce đều triển khai đặc tả DID của W3C, bản thân nó là thứ mà tôi coi là một phần không thể thiếu của web3. Trong trường hợp đó, bất kỳ triển khai tập trung nào của DID đều đi ngược lại những gì đặc điểm kỹ thuật đang cố gắng đạt được.

khách hàng

Đối với các khung JavaScript, bạn thực sự có thể xây dựng với bất kỳ thứ gì bạn muốn, vì SDK chuỗi khối phía máy khách hầu hết là bất khả tri về khung. Điều đó nói rằng, phần lớn các dự án và ví dụ được xây dựng trong React. Ngoài ra còn có các thư viện như Bộ điều hợp ví Solana cung cấp các công cụ bổ sung cho React, vì vậy tôi cho rằng việc học hoặc làm quen với React có thể là một bước đi thông minh.

Đối với SDK máy khách của Ethereum, có web3.js và ethers.js. Đối với tôi, Ethers dễ truy cập 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ử dụng @solana/web3.js và/hoặc Anchor. Tôi thấy thư viện máy khách Anchor là lựa chọn đầu tiên của mình để xây dựng các chương trình Solana, vì dù sao thì tôi cũng đang sử dụng khung Anchor và tôi thấy thư viện này dễ hiểu hơn @solana/web3.js.

các thỏa thuận khác

Radicle là một giao thức cộng tác mã phi tập trung được xây dựng trên Git. Nó có thể được coi là một phiên bản phi tập trung của GitHub.

Livepeer là một mạng truyền phát video phi tập trung. Nó đã hoàn thiện và được sử dụng rộng rãi, với hơn 70.000 GPU hoạt động trên web.

tóm tắt

tóm tắt

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

Nếu bạn có bất kỳ phản hồi hoặc ý tưởng nào về những gì tôi đã bỏ lỡ ở đây, vui lòng chia sẻ suy nghĩ của bạn với tôi. Thật thú vị khi thấy tất cả các hoạt động diễn ra xung quanh web3, vì các nhà phát triển rất háo hức tham gia. Trong khi cơ sở hạ tầng vẫn đang phát triể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 cho phép mọi người phối hợp mà không phải từ bỏ quyền lực và quyền kiểm soát cho các tập đoàn lớn là rất quan trọng và chúng tôi đang tiến gần hơn đến việc hiện thực hóa tầm nhìn đó.

tiêu đề ban đầu

Web3.0
nhà phát triển
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Tài khoản chính thức
https://twitter.com/OdailyChina