
Nhà phát triển Web2, làm thế nào để bước vào Web3?
Tuyển chọn TechFlowTuyển chọn TechFlow

Nhà phát triển Web2, làm thế nào để bước vào Web3?
Hiểu nền tảng blockchain, khám phá cách sử dụng blockchain, sau đó chọn một hướng chuyên sâu phù hợp với sở thích của bản thân.
Tác giả: Tiny Bear
AI và Web3 là hai trong số ít lĩnh vực hiện tại được đánh giá là có tiềm năng lớn. Mức lương trong ngành Web3 tương đối cao, có nhiều vị trí làm việc từ xa và cơ hội làm việc toàn cầu, do đó rất nhiều lập trình viên Web2 muốn chuyển sang Web3.
Khó khăn nhất khi học phát triển Web3 có lẽ là không biết bắt đầu từ đâu. Sau hơn 10 năm phát triển, nội dung của Web3 ngày càng mở rộng, nhiều phần còn liên quan chặt chẽ với nhau, khiến các lập trình viên mới dễ bối rối: nên bắt đầu học gì, học những gì.
Tôi bắt đầu tham gia Web3 từ năm 2017, làm về phát triển hợp đồng thông minh, truyền bá công nghệ và theo dõi sát sự phát triển của blockchain. Dựa trên hiểu biết tổng thể về Web3, tôi đã biên soạn lộ trình học tập dưới đây, hy vọng sẽ giúp mọi người có định hướng rõ ràng hơn khi học.
Bài viết này là bản giải thích cho lộ trình học tập nói trên. Lộ trình mang tính tương tác[1], khi gặp thuật ngữ chưa hiểu, bạn có thể nhấn vào mũi tên nhỏ ở góc phải thuật ngữ để xem phần giải thích bên cạnh.
Trong lộ trình học tập, tôi chia việc học Web3 thành vài giai đoạn: tìm hiểu nền tảng blockchain, khám phá trải nghiệm ứng dụng blockchain, sau đó tùy theo sở thích cá nhân mà chọn một hướng chuyên sâu.
Các bạn mới bước vào Web3 không nên ôm đồm quá nhiều hướng cùng lúc, mà nên lựa chọn và tập trung vào một điểm cụ thể, đào sâu nghiên cứu. Như vậy sẽ tránh bị lạc lối và dễ nhìn thấy tiến bộ của bản thân hơn.
Tìm hiểu nền tảng blockchain
Công nghệ đằng sau blockchain vẫn là sự mở rộng của các công nghệ máy tính truyền thống. Làm phát triển trong Web3, các kiến thức như cơ sở dữ liệu, cấu trúc dữ liệu, mạng máy tính và ngôn ngữ lập trình vẫn là bắt buộc phải nắm vững.
Tuy nhiên cách vận hành phi tập trung của blockchain ban đầu khá khó hiểu, vì nó không chỉ đơn thuần là vấn đề kỹ thuật mà còn chứa đựng tư tưởng xã hội hóa.
Nếu chỉ nghĩ về mặt kỹ thuật, ta dễ thắc mắc tại sao số lượng BTC lại bị giới hạn ở 21 triệu? Chẳng phải chương trình nào cũng có thể sửa đổi sao?
Nếu có thể trả lời được câu hỏi này, thì coi như bạn đã hiểu gần hết nền tảng blockchain (blockchain là gì, hoạt động ra sao).
Công dụng của blockchain, lý do vì sao nó hữu ích, và các trường hợp cần dùng đến công nghệ blockchain là quá trình hiểu biết ngày càng sâu sắc theo thời gian.
Hiện tại công nghệ blockchain vẫn còn nhiều vấn đề, nhưng nhìn tổng thể, blockchain là một công nghệ tăng cường chủ quyền cá nhân và giúp cộng tác nhóm trở nên minh bạch hơn.
Tôi từng gặp nhiều bạn hay lấy ưu điểm của Web2 so sánh với khuyết điểm của Web3. Khi học một công nghệ mới, chúng ta nên giữ thái độ cởi mở, mới có thể tiếp thu tốt hơn.
Sự thay đổi mà blockchain mang lại không trực tiếp bằng AI, do đó ta dễ đánh giá thấp giá trị của nó.
Khám phá trải nghiệm blockchain
Sau khi đã có hiểu biết nền tảng về blockchain, bạn có thể bắt tay trải nghiệm các ứng dụng blockchain thực tế, ví dụ như sử dụng phần mềm ví [2] để tạo tài khoản riêng, nếu có điều kiện thì có thể sở hữu một ít tiền mã hóa (sẽ có chút rào cản ban đầu, tuy rằng cũng có thể dùng coin thử nghiệm. Nhưng trải nghiệm thật luôn khác biệt).
Hãy cảm nhận quá trình ký giao dịch, xem trình duyệt blockchain, quá trình đóng gói giao dịch và xuất khối.
Khi sử dụng, bạn sẽ cảm nhận tốc độ giao dịch khác nhau giữa các chuỗi, từ đó hiểu thêm về các cơ chế đồng thuận khác nhau, cố gắng hiểu cách mà mỗi cơ chế cân bằng giữa phi tập trung, an toàn và hiệu suất.
Nếu thấy thú vị, bạn có thể trải nghiệm thêm việc hoán đổi tài sản trên DEX, giao dịch NFT, quản trị DAO.
So với Web2, điểm khác biệt then chốt của ứng dụng Web3 là: tài sản của bạn chỉ thuộc về bạn (bất kỳ thông tin nào cũng có thể coi là một dạng tài sản), chỉ có chữ ký riêng tư của bạn mới kiểm soát được tài sản, không ai có thể tước đoạt. Một điểm khác nữa là: các ứng dụng Web3 thường mã nguồn mở, tất cả mọi người đều bình đẳng tham gia vào một quy tắc minh bạch.
Nếu bạn công nhận giá trị và ý nghĩa của Web3, hãy thử tham gia xây dựng Web3.
Chọn hướng đi
Bài viết này chủ yếu thảo luận từ góc độ kỹ thuật. Bạn có thể chọn hướng nghiên cứu hoặc phát triển (trong dự án Web3 còn có mảng vận hành cộng đồng cũng rất thú vị, nhưng không đề cập ở đây).
Nếu có nền tảng lý thuyết hoặc học thuật tốt, hoặc thích khám phá điều mới, bạn có thể chọn hướng nghiên cứu, ví dụ nghiên cứu mật mã học, thuật toán đồng thuận, giải pháp mở rộng, kinh tế học token... Thường yêu cầu đọc rất nhiều bài báo khoa học bằng tiếng Anh.
Hướng phát triển chia thành hai loại lớn: phát triển chuỗi và phát triển ứng dụng
Phát triển chuỗi
Phát triển chuỗi đòi hỏi kỹ năng cao hơn, mức lương cũng cao hơn, nhưng nhu cầu thị trường ít hơn so với phát triển ứng dụng. Theo thời gian, ứng dụng dần mở rộng, nhu cầu phát triển ứng dụng sẽ ngày càng tăng, trong khi phát triển chuỗi sẽ dần ổn định, cơ hội tạo chuỗi mới không nhiều. Hướng này phù hợp với những bạn thích nghiên cứu tầng底层.
Làm phát triển chuỗi, có thể chọn phát triển chuỗi mới, hoặc làm chuỗi mở rộng lớp 2, lớp 3:
Phát triển chuỗi mới, thường chỉ Layer1, cần hiểu những nội dung sau:
-
Geth: phần mềm nút Ethereum viết bằng Go, được sử dụng rộng rãi trong phát triển và tùy chỉnh các chuỗi tương thích EVM.
-
Reth: triển khai Ethereum bằng Rust, cung cấp lựa chọn client Ethereum hiệu suất cao.
-
Substrate: framework xây dựng blockchain tùy chỉnh bằng Rust, do Parity phát triển. Ngoài được dùng phổ biến trong hệ sinh thái Polkadot, nhiều chuỗi độc lập cũng dùng Substrate để tùy chỉnh.
-
Cosmos SDK: framework phát triển blockchain mô-đun bằng Go, hầu hết các chuỗi mới tương thích mạng Cosmos đều được xây dựng dựa trên Cosmos SDK.
-
Một số chuỗi khác dùng máy ảo Move hoặc máy ảo Solana VM để phát triển.
Mở rộng Layer2 hoặc chuỗi ứng dụng layer3
Do sức chứa giao dịch của chuỗi chính có hạn, đặc biệt là Ethereum và Bitcoin, không thể đáp ứng hàng loạt người dùng. Tư tưởng Layer2 là chuyển một phần giao dịch ra ngoài chuỗi chính (Layer2) để thực thi, Layer1 chỉ chịu trách nhiệm xác minh kết quả thực thi của Layer2. Layer3 thường là blockchain được tùy chỉnh cho từng ứng dụng cụ thể. Người phát triển chuỗi cần hiểu các nội dung sau:
-
OP Stack: framework Layer2 do Optimism phát triển, là framework được dùng phổ biến nhất trong các chuỗi Layer2 Ethereum.
-
Polygon CDK: bộ công cụ phát triển chuỗi do Polygon phát triển, hỗ trợ mở rộng linh hoạt hơn: như Validium, zkRollup, v.v.
-
StarkEx: giải pháp mở rộng lớp 2 do StarkWare phát triển, sử dụng công nghệ ZKStark. Các giải pháp ZK tương tự khác gồm ZK Stack của Matter Labs (đội ngũ đứng sau zkSync).
-
Arbitrum Stylus (phiên bản nâng cấp của Arbitrum Nitro) và Arbitrum Orbit: giải pháp mở rộng Layer2 và Layer3 do đội Arbitrum phát triển, Stylus cung cấp lớp thực thi hỗ trợ lập trình đa ngôn ngữ.
Muốn làm phát triển chuỗi, bạn cũng cần tìm hiểu về blockchain mô-đun. Tư tưởng mô-đun là chia blockchain vốn trước đây là một khối thành nhiều tầng, mỗi tầng giải quyết một vấn đề khác nhau, thậm chí do các chuỗi khác nhau đảm nhiệm. Có 4 tầng:
-
Tầng thực thi: xử lý việc thực thi hợp đồng thông minh, giống như module EVM của Ethereum, về cơ bản Layer2 chính là một tầng thực thi.
-
Tầng thanh toán: dùng để thanh toán giao dịch, đảm bảo an toàn tài sản và hiệu lực giao dịch trên chuỗi.
-
Tầng đồng thuận: module đảm bảo các nút đạt được sự đồng thuận về giao dịch.
-
Khả dụng dữ liệu (DA): tầng đảm bảo dữ liệu trên chuỗi được lưu trữ và truy cập đúng cách, dùng trong các giải pháp mở rộng lớp 2 để xác minh tính hợp lệ của giao dịch lớp 2. Các phương án DA khác nhau gồm: EIP4844 dùng Blob làm DA, AnyTrust, EigenDA, Avail DA, Celestia, NearDA, v.v.
Một xu hướng khác là tích hợp dần khả năng chứng minh không kiến thức (ZKP) lên blockchain, ví dụ dùng ZKP để chứng minh việc thực thi giao dịch (zkRollup cũng áp dụng ở lớp 2, nhưng cũng có thể áp dụng ở lớp 1), dùng ZKP để chứng minh trạng thái lưu trữ, thực hiện client nhẹ, client vô trạng thái nhằm tăng cường phi tập trung. Một số chuỗi còn dùng ZKP để thực hiện giao dịch riêng tư.
Nếu bạn chọn phát triển chuỗi, lời khuyên cho người mới bắt đầu là học Go, tìm hiểu Geth và Op Stack, các framework khác tùy theo nhu cầu và sở thích để nghiên cứu.
Phần mở rộng Layer2 phía trên chủ yếu từ góc nhìn Ethereum. Gần đây cũng có nhiều nhóm đang phát triển giải pháp mở rộng cho Bitcoin, thu hút sự chú ý lớn. Về cơ bản có hai cách: mở rộng qua kênh (bao gồm cả kênh trạng thái) và mở rộng qua sidechain. Loại thứ nhất kế thừa độ an toàn cao của Bitcoin, nhưng khả năng mở rộng lập trình kém. Đại diện tiêu biểu là mạng Lightning, kết hợp với các phương án xác minh client như RGB, RGB++. Loại thứ hai kế thừa độ an toàn thấp hơn, ví dụ dùng MPC để vượt chuỗi, nhưng có thể mở rộng lập trình tốt hơn. Cũng có một số giải pháp kết hợp cả hai.
Hiện tại ngành vẫn đang trong giai đoạn khám phá các giải pháp mở rộng cho Bitcoin. Nếu bạn là người tin tưởng vào Bitcoin, hãy theo dõi sát sao.
Phát triển ứng dụng
Nếu muốn làm phát triển ứng dụng, bạn không cần hiểu quá sâu về tầng底层 của chuỗi, nhưng cần hiểu các đặc điểm của từng chuỗi như hiệu suất blockchain, mức độ phi tập trung.
Ví dụ, nếu muốn phát triển ứng dụng mạng xã hội hoặc game, bạn cần chuỗi底层 có hiệu suất cao; còn nếu phát triển ứng dụng DEFI giá trị cao, có thể yêu cầu cao hơn về tính phi tập trung.
Ngoài ra, ngôn ngữ lập trình mà chuỗi底层 hỗ trợ, mức độ sôi động của hệ sinh thái và mức độ hỗ trợ ứng dụng cũng cần cân nhắc, vì chúng ảnh hưởng đến khối lượng công việc triển khai và chi phí thu hút người dùng.
Đối với những bạn tìm việc cũng tương tự: hệ sinh thái càng sôi động thì cơ hội việc làm càng nhiều, nhưng cạnh tranh cũng lớn hơn.
Việc chọn một chuỗi底层 phù hợp rất quan trọng đối với sự thành công của ứng dụng. Hầu hết thường chọn phát triển dựa trên một hoặc một nhóm chuỗi nhất định, cũng có một số ứng dụng cần hỗ trợ nhiều chuỗi, đặc biệt là các ứng dụng hạ tầng như ví, cầu nối xuyên chuỗi, oracles cung cấp giá, v.v., thường phải hỗ trợ rất nhiều chuỗi.
Chọn hệ sinh thái phù hợp
Dưới đây là bảng so sánh sơ lược các hệ sinh thái, để bạn tham khảo:
Bitcoin: có sự đồng thuận và quy mô vốn lớn nhất, nhưng khả năng script bị giới hạn, số lượng ứng dụng có thể xây dựng trực tiếp trên chuỗi Bitcoin còn ít, nhiều ứng dụng cần kết hợp indexer hoặc phương án xác minh client để thực hiện, hệ sinh thái chưa trưởng thành, tuy nhiên xét về mặt phát triển, có thể tiềm ẩn nhiều cơ hội.
Hệ sinh thái EVM: bao gồm Ethereum và nhiều chuỗi tương thích EVM (bao gồm cả Tron), một phần các lớp 2 của BTC cũng là chuỗi tương thích EVM. Các chuỗi tương thích này có mô hình lập trình giống nhau, đều dùng Solidity để phát triển hợp đồng thông minh (và chương trình chạy trên chuỗi). Hệ sinh thái phong phú, công cụ phát triển hoàn thiện, tài nguyên học tập dồi dào.
Solana: phát triển mạnh mẽ trong năm qua, về quy mô hệ sinh thái xếp thứ hai, nhưng vẫn cách xa hệ sinh thái EVM. Ưu điểm của Solana là thông lượng lớn, phí giao dịch thấp. Hợp đồng Solana dùng Rust để phát triển,门槛 cao hơn.
TON: dựa vào Telegram với lượng người dùng khổng lồ, gần đây热度 rất cao. TON cũng có đặc điểm hiệu suất cao, hợp đồng thông minh chủ yếu dùng Func, nhưng hệ sinh thái TON phát triển ngắn, thư viện công cụ chưa hoàn thiện, tài nguyên phát triển ít.
Còn có một số hệ sinh thái blockchain khác như: hệ sinh thái Move (gồm Sui / Aptos), hệ sinh thái Starknet, hệ sinh thái ICP, hệ sinh thái AO/AR, v.v., đều có ưu điểm riêng, nhưng hiện tại关注度 thấp hơn.
Phần mô tả trên phản ánh tình hình hiện tại của các hệ sinh thái. Sự phát triển của từng hệ sinh thái là động, các hệ sinh thái khác nhau cũng có văn hóa riêng. Mọi người có thể lựa chọn theo sở thích cá nhân.
Lời khuyên cho người mới bắt đầu là nên khởi đầu từ hệ sinh thái EVM, vì tài liệu phong phú và hệ sinh thái ổn định.
Phát triển hợp đồng
So với phát triển ứng dụng Internet, phát triển ứng dụng Web3 có sự thay đổi lớn: phần lớn logic backend được chuyển thành hợp đồng thông minh chạy trên chuỗi (một phần logic backend cũng được chuyển lên frontend, xem phần tiếp theo), nhằm loại bỏ sự phụ thuộc vào server tập trung.
Cũng có nhiều ứng dụng Web3 không liên quan đến phát triển hợp đồng, ví dụ như: ví, sàn giao dịch, dịch vụ dữ liệu trên chuỗi... Khi phát triển các ứng dụng này, cần hiểu cách tương tác với hợp đồng. Xem phần tiếp theo.
Ngôn ngữ phổ biến nhất để phát triển hợp đồng trong hệ sinh thái EVM là Solidity – bắt buộc phải học. Yul là ngôn ngữ hợp ngữ để phát triển hợp đồng, nếu có thời gian rảnh có thể tìm hiểu thêm.
Các chuỗi hệ sinh thái như Solana, TON, Move có ngôn ngữ phát triển riêng, chúng tôi sẽ giới thiệu riêng trong các dịp khác.
IDE phát triển Solidity, người mới bắt đầu nên dùng Remix IDE online. Trong phát triển dự án thông thường, dùng VS Code + framework phát triển. Framework giúp biên dịch, triển khai và kiểm thử hợp đồng thông minh. Framework nên ưu tiên dùng Foundry (kiểm thử thuận tiện hơn), sau đó là Hardhat.
Khi phát triển hợp đồng, cần hiểu và biết sử dụng các chuẩn Token/NFT thông dụng như ERC20, ERC2612, ERC721, ERC1155. Việc dùng lại "bánh xe" (tức thư viện) cũng là thói quen tốt. OpenZeppelin là một thư viện hợp đồng thông minh, đã triển khai các chuẩn khác nhau, dùng thư viện có thể giảm khối lượng công việc và nâng cao độ an toàn chương trình.
Khi phát triển chương trình hợp đồng, hãy cố gắng tuân thủ các chuẩn. Điểm này khác với phát triển Web2: chương trình Web2 thường do chính mình gọi, còn hợp đồng thông minh thường công khai để bất kỳ ai cũng có thể gọi, và càng nhiều người gọi thì giá trị chương trình càng lớn. Tuân thủ chuẩn giúp người khác dễ dàng tích hợp chương trình của bạn hơn.
Nâng cao phát triển hợp đồng
Việc nhập môn Solidity đơn giản, nhưng để trở thành một kỹ sư hợp đồng xuất sắc cần học (luyện) rất nhiều kỹ năng, ví dụ như nắm vững kỹ thuật tối ưu hợp đồng để giảm phí Gas, dùng Create2 để tạo và dự đoán địa chỉ hợp đồng, hiểu cơ chế gọi底层 Call và gọi ủy quyền (delegate call), hiểu cách nâng cấp hợp đồng, linh hoạt ứng dụng chữ ký ngoại tuyến để giảm phí cho người dùng, dùng cây Merkel để giảm chi phí lưu trữ trên chuỗi, nắm vững các lỗ hổng an toàn phổ biến, hiểu cách thức quản trị DAO và cách triển khai, hiểu về trừu tượng tài khoản (account abstraction), biết cách tận dụng oracle để lấy dữ liệu ngoài chuỗi, v.v.
Ngoài ra, DEFI (tài chính phi tập trung) hiện là ứng dụng quan trọng nhất trong Web3. Hiểu các khái niệm tài chính thông dụng, quen thuộc với hoạt động của DEFI thông dụng, hiểu cách hoạt động của flash loan sẽ mang lại cho bạn nhiều cơ hội hơn.
Frontend và Backend của ứng dụng Web3
Hợp đồng đóng vai trò như chương trình backend. Một ứng dụng Web3 trải nghiệm tốt cũng không thể thiếu frontend. Vì tài sản trong ứng dụng Web3 do người dùng tự lưu trữ, nên frontend cần kết nối với ví để hoàn thành tương tác.
Backend của ứng dụng Web3 chủ yếu đóng vai trò như một tầng cache, vì dữ liệu trên chuỗi không phải là dữ liệu cấu trúc kiểu cơ sở dữ liệu, không thuận tiện cho việc truy vấn. Thêm backend làm tầng cache dữ liệu có thể tối ưu trải nghiệm người dùng.
Hiện nay cũng có nhiều nhà cung cấp dịch vụ dữ liệu trên chuỗi chuyên biệt. Dữ liệu mở trên chuỗi rất lớn, là một kho báu dữ liệu. Nếu bạn quan tâm đến big data, đây cũng là một hướng đi tốt.
Khi phát triển frontend Web3, cần hiểu các phương pháp kết nối ví thông dụng, như biết cách tích hợp các thành phần ví frontend như MetaMask, WalletConnect, Web3Modal... Tương tác frontend với chuỗi thường thông qua các thư viện tương tác như Vim.sh, Ethers.js, Web3.js... Thực ra các thư viện này là bao bọc dịch vụ RPC do nút chuỗi cung cấp. Khi gọi, frontend dùng URL của nút RPC để xác định tương tác với chuỗi nào, dùng ABI và địa chỉ hợp đồng để xác định gọi hàm cụ thể nào.
Backend Web3 chủ yếu xử lý dữ liệu, ví dụ quét khối, lấy dữ liệu sự kiện cụ thể từ hợp đồng xác định. Phương pháp tương tác với chuỗi tương tự frontend, nhưng tùy theo ngôn ngữ backend khác nhau mà dùng các thư viện bao bọc khác nhau để giao tiếp với nút Web3 RPC. Thư viện dùng phổ biến gồm: backend Go dùng go-ethereum, backend Node.js dùng Vim.sh, Ethers.js... Hãy làm quen kỹ các thư viện này.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News












