SETTINGS
Content language
flag Vietnamese
Vietnamese
flag Vietnamese
Vietnamese
Tiếng việt
flag English
English
English
Channel logo
Coin98 Insights
Save
Copy link

So sánh Web2 và Web3: Cấu trúc của chúng có gì khác nhau?

Web2 và Web3 khác nhau như thế nào? Bài viết được tham khảo từ tác giả Preethi Kasosystemdy để so sánh Web2 và Web3 về mặt cấu trúc.
Avatar
Thanh Uyen
Published Sep 24 2022
Updated Feb 08 2023
12 min read
thumbnail

Sự xuất hiện của blockchain đã cho ra đời Web3, một thế hệ ứng dụng xây dựng dựa trên hoặc liên quan đến blockchain, mang đặc tính phân quyền và mã nguồn mở.

Web2 là sản phẩm được sinh ra từ HTML, JavaScript… trong khi Web3 là sản phẩm được sinh ra từ Blockchain, Smart contract, Block… Sự xuất hiện của Web3 đang dần thay đổi cách mọi người vận hành và tương tác trên mạng internet. Bài viết này được tham khảo từ tác giả Preethi Kasosystemdy.

Kiến thức trọng tâm: 

  • Web2 được cấu thành từ Front-end (JavaScript, HTML, CSS…), Back-end (Node.js, Python, Java, Go…) và Data base (cơ sở dữ liệu). 
  • Web3 được cấu tạo phức tạp hơn với sự xuất hiện của Smart Contract, Blockchain, EVM, Node, Layer 2…
  • Sự xuất hiện của blockchain và Web3 trao cho người dùng nhiều quyền kiểm soát và giúp người dùng thực hiện nhiều hành động hơn. 

Cấu trúc hoạt động của Web2

Web 2.0 là phiên bản nâng cấp của Web, bao gồm trang web hay ứng dụng cho phép người dùng lưu trữ, chia sẻ thông tin và tương tác với nhau. Một số ứng dụng Web2 nổi bật có thể kể đến là LinkedIn, Medium, Twitter, Facebook…

Lấy Twitter làm ví dụ, kiến trúc của một ứng dụng Web2 thường bao gồm những thành phần sau: 

  • Cơ sở lưu trữ dữ liệu: Dữ liệu người dùng như thời gian đăng ký, nội dung tweet, lượt thích, lượt retweet... được cập nhật liên tục thông qua một cơ sở dữ liệu. 
  • Back-end code: Được viết bởi ngôn ngữ lập trình chuyên dụng như Node.js, Java, Python, C+, Ruby, GO... Back-end code giúp xác định logic hoạt động của Twitter. Chẳng hạn như điều sẽ xảy ra khi một người dùng mới đăng ký, viết một tweets mới hoặc retweet & comments trên tweets của người khác.
  • Front-end code: Được viết bằng JavaScript, HTML và CSS. Frontend code giúp xác định giao diện người dùng của Twitter. Chẳng hạn như trang web trông như thế nào và điều gì sẽ xảy ra khi người dùng tương tác với từng phần trên site.

Nói chung, khi người dùng viết một tweet trên Twitter, họ đang tương tác với front-end của Twitter, front-end này lại tương tác với back-end và cuối cùng back-end tương tác với cơ sở dữ liệu. 

Cấu trúc hoạt động của Web3

Kiến trúc của Web3 hoàn toàn khác Web2, ngoại trừ frond-end code. Các ứng dụng Web 3.0 loại bỏ tính trung gian với blockchain. Đây là một mạng phân tán lưu trữ dữ liệu, dùng để viết smart contract (hợp đồng thông minh) giúp xác định logic hoạt động của ứng dụng. 

Vì không có một server tập trung, smart contract được viết ra để truy vấn dữ liệu và thực hiện các hoạt động logic. Đây là những đoạn mã dùng để tương tác với Ethereum blockchain thông qua máy ảo Ethereum (EVM). Front-end code lúc này sẽ tương tác trực tiếp với logic ứng dụng được xác định trong smart contract, thay vì phải thông qua back-end code. 

Trong Web 3.0, người dùng sẽ có toàn quyền kiểm soát và sở hữu dữ liệu của mình, đồng thời có bảo mật mã hóa. Bằng cách này, thông tin sẽ được chia sẻ dựa trên nhu cầu hoặc sự cho phép hoặc theo từng trường hợp cụ thể. 

Tìm hiểu thêm về tính chất và vai trò của Web3 ngay tại: Web3 là gì?

Blockchain

Trong bài viết này, tác giả sẽ đi phân tích chi tiết Ethereum blockchain. Ethereum blockchain thường được gọi là “máy tính thế giới”, vì nó có thể được truy cập bởi bất cứ ai ở bất cứ đâu. Ethereum không thuộc sở hữu của bất cứ ai, do đó nó mang tính phi tập trung. 

Ethereum blockchain được cấu thành bởi mạng lưới máy tính hay còn gọi là node. Các thay đổi trên máy được điều chỉnh theo các cơ chế đồng thuận. Dữ liệu chỉ có thể được ghi thêm vào Ethereum blockchain, các dữ liệu có sẵn sẽ không được cập nhật.

Smart Contract

Để xây dựng ứng dụng phi tập trung (dApp) trên Ethereum, các nhà phát triển cần phải triển khai các smart contract thông qua ngôn ngữ lập trình cấp cao như Solidity hay Vyper. Smart contract giúp xác định logic đằng sau những thay đổi trạng thái xảy ra trên blockchain. Smart contract có đặc tính không thể sửa đổi và can thiệp. 

Bởi vì mã của smart contract được lưu trữ trên Ethereum blockchain, ai cũng có thể kiểm tra logic ứng dụng của tất cả các smart contract trên mạng. 

Ethereum Virtual Machine (EVM)

EVM (máy ảo Ethereum) chịu trách nhiệm thực thi logic được xác định trong các smart contract trên mạng lưới Ethereum. EVM không hiểu các ngôn ngữ cấp cao như Solidity và Vyper, vì vậy, các nhà phát triển cần biên dịch những ngôn ngữ này thành bytecode. Mỗi Ethereum node được trang bị một EVM riêng, giúp đảm bảo tính bảo mật và phi tập trung.

Front-end

Front-end (giao diện người dùng) xác định logic và giao tiếp với logic ứng dụng được xác định trong smart contract thông qua node.

Mỗi node trong mạng Ethereum đều giữ một bản sao của tất cả các trạng thái trên Ethereum state machine, bao gồm mã và dữ liệu được liên kết với mọi smart contract. Bất kỳ node nào cũng có thể phát yêu cầu thực hiện giao dịch trên EVM. Sau khi tương tác với một trong những node này, một thợ đào sẽ thực hiện giao dịch và gửi kết quả thay đổi trạng thái cho phần còn lại của mạng. 

Có hai cách để bắt đầu một giao dịch mới:

  • Cách 1: Thiết lập node của riêng mình và chạy phần mềm tương thích (yêu cầu 32E và node setup). Tuy nhiên, ơ thời điểm hiện tại, người dùng không cần đủ 32E vẫn có thể tham gia quá trình trên nhờ giải pháp liquid staking.
  • Cách 2: Sử dụng các node được cung cấp bởi các dịch vụ của bên thứ ba như Infura, Alchemy và Quicknode.

Những node mà người dùng kết nối khi tương tác với blockchain thường được gọi là “Provider”.

Mọi provider đều triển khai JSON-RPC nhằm đảm bảo có một bộ phương pháp thống nhất khi front-end của các ứng dụng muốn tương tác với blockchain. Đây là giao thức RPC giúp xác định cấu trúc dữ liệu và quy tắc xử lý, sử dụng JSON (RFC 4627) làm định dạng dữ liệu.

Vai trò của ví trong Web3

Sau khi kết nối với blockchain thông qua provider, nhà phát triển có thể đọc trạng thái được lưu trữ trên blockchain. Để gửi giao dịch tới blockchain, nhà phát triển cần “ký” giao dịch bởi private key.

Chẳng hạn, một ứng dụng cho phép người dùng đọc và xuất bản bài viết trên blockchain. Các nhà phát triển của ứng dụng này cần có một node trên front-end, cho phép người dùng đọc bài viết này. (Lưu ý, việc đọc từ blockchain không yêu cầu ký giao dịch.)

Khi người dùng muốn xuất bản một bài đăng mới lên blockchain, DApp sẽ yêu cầu người dùng “ký” giao dịch bởi private key của họ, - sau đó DApp chuyển giao giao dịch đó sang blockchain. Nếu không, các node sẽ không chấp nhận giao dịch.

Việc “ký kết” các giao dịch là nơi các loại ví xuất hiện. Ở đây, tác giả lấy Metamask làm ví dụ sử dụng. Ví đóng vai trò trung gian cho phép người dùng ký để thực hiện các các giao dịch.

Metamask giúp các ứng dụng quản lý khóa và ký kết giao dịch bằng cách lưu trữ private key của người dùng trong trình duyệt. Bất cứ khi nào front-end cần người dùng ký một giao dịch, nó sẽ gọi đến Metamask.

Metamask cũng cung cấp kết nối với blockchain với tư cách là “provider” vì Metamask đã kết nối với các node do Infura cung cấp để ký giao dịch. Theo cách này, Metamask vừa là nhà cung cấp vừa là người ký. 

Vai trò của hệ thống lưu trữ off-chain

Việc phát triển ứng dụng với tất cả smart contract và dữ liệu lưu trữ trên Ethereum là bất khả thi vì chi phí đắt đỏ của chúng. Mỗi khi thêm dữ liệu mới vào blockchain, người dùng cần trả thêm tiền cho Ethereum vì điều này làm tăng chi phí cho các node đang duy trì Ethereum state machine. Để giảm thiểu chi phí, các nhà phát triển bắt đầu sử dụng giải pháp lưu trữ phi tập trung off-chain như IPFS và Arware.

IPFS là một hệ thống tệp phân tán để lưu trữ và truy cập dữ liệu. Thay vì lưu trữ dữ liệu trong cơ sở dữ liệu tập trung, hệ thống IPFS phân phối và lưu trữ dữ liệu trong một mạng ngang hàng (peer-to-peer). 

IPFS cũng có một layer gọi là “Filecoin”, chuyên khuyến khích các node trên khắp thế giới lưu trữ và truy xuất dữ liệu. Các nhà phát triển có thể sử dụng provider như Infura (cung cấp node IPFS) hoặc Pinata (cho phép “pin" các tệp dữ liệu vào IPFS, lấy IPFS hash và lưu trữ trên blockchain).

Swarm là mạng lưu trữ phi tập trung. Trong khi Filecoin là hệ thống riêng biệt, hệ thống khuyến khích của Swarm được tích hợp sẵn và thực thi thông qua các smart contract trên blockchain Ethereum để lưu trữ và truy xuất dữ liệu.

Với IPFS hoặc Swarm, kiến ​​trúc ứng dụng Web3 trông như sau.

Trong sơ đồ này, mã front-end không được lưu trữ trên blockchain. Thay vào đó, mã này có thể được lưu trữ trên trên Web server, tương tự trong Web 2.0. Điều này khiến dApp mang tính tập trung. 

Để xây dựng một ứng dụng phi tập trung thực sự, nhà phát triển chọn lưu trữ front-end trên một giải pháp lưu trữ phi tập trung, chẳng hạn như IPFS hoặc Swarm.

Truy vấn blockchain

Có hai cách chính để đọc dữ liệu từ các smart contract trên blockchain.

Smart contract events

Các nhà phát triển có thể sử dụng Web3.js library để truy vấn smart contract events.

Chẳng hạn, khi một smart contract gửi luồng thanh toán liên tục từ người A đến người B mỗi block, thì nhà phát triển có thể tạo ra một event mỗi khi một khoản thanh toán mới được thực hiện cho người B. Front-end code có thể truy vấn các sự kiện đang được kích hoạt bởi smart contract và thực hiện các hành động cụ thể dựa trên hợp đồng đó.

The Graph

The Graph là giải pháp off-chain giúp truy vấn dữ liệu on-chain trong logic ứng dụng với độ trễ thấp, sử dụng ngôn ngữ truy vấn GraphQL. Các nhà phát triển có thể xác định smart contract nào cần lập chỉ mục, sự kiện và lệnh gọi hàm nào để truy vấn bằng cách chuyển đổi các sự kiện sắp tới thành các thực thể mà logic front-end của nhà phát triển (hoặc bất kỳ thứ gì đang sử dụng API) có thể sử dụng.

Mở rộng quy mô DApp

Hiện Ethereum chưa có khả năng mở rộng, các giao dịch trên dApp thuộc Ethereum thường có phí gas cao và giao dịch chậm trễ. Để giải quyết vấn đề này, các giải pháp Layer 2 đã được phát triển, nổi bật trong đó là Polygon. 

Thay vì thực hiện các giao dịch trên blockchain chính, Polygon sử dụng “sidechains”. Mỗi sidechain là một blockchain thứ cấp giao tiếp với chain chính bằng cách tổng hợp các block và gửi cho chain chính.

Một số giải pháp Layer 2 khác là Optimistic Rollup và zkRollup. Những giải pháp này thực hiện hàng loạt các giao dịch off-chain bằng cách sử dụng smart contract “rollups”, sau đó định kỳ gửi các giao dịch này cho chain chính.

Kết luận

Như vậy, với lối kiến trúc phức tạp, Web3 mang đặc tính phi tập trung, cho phép người dùng toàn quyền kiểm soát dữ liệu và hoạt động của mình. Bất cứ ai cũng có thể truy cập và sử dụng Web3. Với các giải pháp mở rộng ngày càng phát triển, trong tương lai Web3 sẽ còn giúp người dùng thực hiện nhiều hoạt động hơn nữa. 

RELEVANT SERIES