Xây dựng sản phẩm Web3/NFT từ số 0

LixiNFT

Động lực

Tết vừa rồi mình có một trải nghiệm thú vị là xây dựng một dapp để lì xì bằng đồng crypto. Mặc dù mình đã biết đến crypto từ lâu và dùng nhiều dapp để mua bán hay tham gia IDO, việc xây dựng 1 dapp từ con số 0 tăng hiểu biết của mình khoảng 10x về công nghệ này. Mình hy vọng sau bài này sẽ có nhiều người bắt tay vào code hay design thử những dapp cho riêng mình.

3 tuần trước Tết, khi thấy các bạn nhân viên trong công ty mình hì hục đi in bao lì xì để kịp tặng cho đối tác, mình và một số đồng nghiệp tự hỏi “Tại sao lại không làm việc này nhờ blockchain?” Và thế là LixiNFT ra đời.

Câu hỏi đầu tiên nhóm mình phải trả lời “thế LixiNFT có gì khác với Lixi Truyền Thống”? Bởi vì như rất nhiều post trong group đã nói, phần lớn các dự án crypto được vẽ ra chỉ để gắn chữ “Crypto”, “NFT”, hay “Blockchain” vào, chứ trên thực tế, cách làm truyền thống vẫn hay hơn gấp nhiều lần. (ví dụ, ehem, ga..fi…, à mà thôi :).

LixiNFT có 3 điểm khác biệt chính với Lì Xì giấy:

  1. Ai cũng có thể “In” ra được, chỉ với máy tính, internet, và … Ví Metamask (tất nhiên là phải có tiền trong ví thì mới lì xì được).
  2. Có thể gửi cho bất kì ai trên trái đất. Thay vì phải tiếp xúc và đưa trực tiếp.
  3. Có thể giữ lại “Bao Lì Xì” vĩnh viễn mà ko thêm chỗ trong ngăn bàn, thay vì vứt bao giấy vào xọt rác hay để dành dùng cho năm sau.

Ngoài ra trong lúc phát triển sản phẩm, một bạn trong team để ý là mọi người sau khi nhận lì xì giấy trong thường mở ra, chơi “đầu, đít” để tăng tính “may rủi” trong những ngày Tết. Thế là bọn mình có thêm tính năng Xổ Số LixiNFT May Mắn (xem ảnh).

LixiNFT
LixiNFT tạo bao lì xì trên crypto thật dễ dàng

NFT là gì? Tại sao NFT có thể trở thành xu hướng đầu tư mới trong năm 2022

Phát triển ứng dụng Web3

2 Untitled

Để làm được dapp này thì nhóm mình phải tìm hiểu về Web3, mặc dù trong team có những kỹ sư lập trình đến 20 năm kinh nghiệm. Vậy thì web3 là cái quái gì nhỉ?

  1. Decentralization – Tính phi tập trung:Sau hơn 20 phát triển thì phần lớn công nghệ Web2 tập trung vào tay các công ty công nghệ lớn như Google, Facebook, Alibaba…, hay còn gọi là BigTech. Trái lại thì Web3 được tạo ra để tương phản và tạo nên trào lưu mới là “Phi tập trung” và chuyển dịch quyền lực từ BigTech sang Người Dùng Cuối. Vì vậy, các dapp thường ko lưu data của user, ngoại trừ các thông tin tối thiểu trên Blockchain, vốn là một Cơ Sở Dữ Liệu mở, ai cũng có quyền đọc, ghi và được sở hữu bởi cộng đồng, thay vì một cá nhân hay tổ chức nào đó.
  2. Private Key – Chìa khóa bảo mật:
    Để truy cập vào CSDL này thì bạn cần một chìa khóa để mở, để tránh trường hợp ai cũng có quyền can thiệp vào dữ liệu của bạn. Nếu không có chìa khóa này, không ai có thể thay đổi dữ liệu của bạn. Và không có chìa khóa này, thì các ứng dụng chỉ có thể đọc được dữ liệu của bạn, chứ không thay đổi được.
  3. Metamask – Ví crypto:
    Bạn có thể có nhiều chìa khóa, mỗi chìa khóa làm một việc khác nhau. Bạn cần một nơi để lưu các chìa khóa này. Đó chính là Ví . Ví điện tử này khác tất cả các ví điện tử bạn đã biết như MoMo hay ZaloPay, ở chỗ nó không lưu trên máy chủ và bạn và không ai khác ngoài bạn, có quyền truy cập vào nó. Bạn có thể dùng bất kì ví nào nhưng cần kiểm tra xem ví đó có ghi lại chìa khóa bảo mật của bạn đi đâu không. Metamask là một Ví được tin dùng nhiều nhất (20tr users dùng hàng tháng) nhưng hơi khó dùng. TrustWallet dễ dùng nhưng lại không có browser nên phải kết hợp với 1 trình duyệt khác qua giao thức WalletConnect.
  4. Compability – Tính tương thích:
    Trong kỷ nguyên của Web2, bạn gần như quên mất từ “tương thích phần mềm”. Các web app chạy mượt ở bất cứ thiết bị và ở bất cứ đâu.Việc này nghe chừng đơn giản, nhưng trên Web3 lại rất khó khăn. Các Ví crypto không hoạt động giống nhau trên các thiết bị của người dùng vì tuổi đời của Metamask hay các ví tương tự. Người dùng Android sẽ khác với iPhone, người này dùng chrome, người kia lại dùng Cờ Rôm.Đó là còn chưa kể đến các loại Mạng. Ethereum là phổ biến nhưng phí gas lại cao quá. Polygon, Harmony, KardiaChain thì rẻ nhưng lượng người dùng ở VN thì chưa nhiều.

    Cũng giống như các sản phẩm tech khác, các nhà phát triển dapp cần hiểu rõ tất cả các hành vi của người dùng thì sản phẩm mới hoạt động tốt. Do thời gian quá ít (3 tuần trước Tết), LixiNFT quyết định chỉ hỗ trợ Ví Metamask, trên mạng BSC, và ưu tiên người dùng Mobile.

  5. Smart Contract – Hợp đồng thông minh (SMC):
    Là một tên gọi mỹ miều cho các dòng lệnh của một ứng dụng phi tập trung. Từ hợp đồng có lẽ đến từ việc các dòng mã này được lưu công khai, nên ai (nếu có kiến thức lập trình) cũng có thể “làm chứng” (hay audit) cho những dòng mã này. Tính bất biến của blockchain khiến cho những dòng code này có nhiều tính chất của một hợp đồng pháp lý, sau khi đã được “kí” bằng chìa khóa bảo mật của bạn lập trình viên.Tính bất biến của hợp đồng thông minh này nhiều khi cũng gây khó chịu cho các LTV của Web2 vì mọi thứ trên Web2 có thể thay đổi rất dễ dàng. Mỗi thay đổi trên Blockchain cần tạo ra một hợp đồng mới, ngoài việc phải mất phí GAS, địa chỉ hợp đồng cũng thay đổi, khiến cho tất cả các reference trỏ đến hợp đồng cũ bị hỏng. May là Ethereum nghĩ ra một chuẩn EIP 897 – DelegatoryProxy cho phép cập nhật SMC mới, nhưng không ảnh hưởng đến các module khác đã sử dụng SMC này.Dần dần, khi đã hiểu được xu hướng “Code is Law” thì nhóm cũng quen dần với cách lập trình này cho các SMC.
  6. Web3 Frontend – Giao diện Web3
    Blockchain cho phép ai cũng có thể tương tác trực tiếp với SMC qua các website như bscscan.com. Tuy nhiên giao diện tương tác của nó sẽ làm cho những người dùng non-tech cao chạy xa bay. Do đó, bạn cần tạo ra những giao diện web thân thiện với người dùng. Và đó là những web3 sites như pancakeswap.finance hay axieinfinity.com. Còn site của LixiNFT thì là lixinft.me .Trong Web2, các Website Frontend đóng vai trò nói chuyện giữa User và Backend. Còn với Web3, nó phải tương tác cùng 1 lúc giữa 3 thực thể: User, Blockchain (tương đương với các backend), và Ví của User.Trong Web2, Frontend và Backend thường nằm trên một máy chủ, hoặc 1 cụm máy chủ giống nhau. Còn trong Web3, Frontend, Blockchain, và Ví của User nằm ở 3 nơi khác nhau hoàn toàn.
  7. Backend.
    Trên lý thuyết các bạn có thể dùng blockchain làm backend. Nhưng vì đặc tính decentralized của blockchain, tốc độ truy cập rất chậm. ~1s cho việc đọc và ~15s cho việc ghi (nếu như network không bị nghẽn). Do vậy các dapp thường có backend riêng, để cache dữ liệu, hoặc ghi thêm lớp dữ liệu bổ trợ cho dữ liệu trên blockchain.Việc này dẫn đến website của bạn phải support kiến trúc micro-services và sử dụng mô hình producer-consumer để xử lý các giao dịch bất đồng bộ (asynchronous) từ các services trong hệ thống.
  8. Mất tiền oan.
    Giống như hầu hết các web3 app khác, LixiNFT làm việc với tiền của người dùng. Một sai xót nhỏ thôi cũng dẫn đến hậu quả là mất tiền của người dùng. Trong lúc phát triển, hệ thống có một bug nhỏ, là dùng nhầm địa chỉ của testnet với mainnet, dẫn đến việc 1 thành viên của nhóm gửi tiền vào 1 địa chỉ ví mà không nằm trong kiểm soát của hệ thống, và đành phải tạm biệt với một số lượng BNB không nhỏ 😭.
  9. Testnet → Mainnet = Staging → Production.
    Bất kì hệ thống blockchain nào cũng có 1 Mainnet và 1 hoặc nhiều Testnet. Testnet là mạng để test, QA trước khi deploy code lên Mainnet. Nó giống như khái niệm deploy code từ Staging lên Production trong Web2.Một bài học sau sự cố trên là bọn mình luôn test mọi thứ trên testnet trước khi đưa lên mainnet. Có thể làm việc này bằng 2 cách. 1 là nhận biết user đang nối với ví Metamask trên mạng nào, và gọi các SMC trên mạng ấy. 2 là tách biệt ra một hệ thống riêng. 1 cái chỉ gọi testnet, 1 cái chỉ gọi mainnet.Cách 1 thì linh hoạt và tiết kiệm hơn, nhưng bọn mình chọn cách 2. testnets.lixinft.melixinft.me là 2 hệ thống riêng biệt hoàn toàn, nằm trên 2 cluster riêng trên máy chủ Amazon AWS. Khi user đang kết nối sai mạng, bắt họ chuyển sang đúng mạng thì mới cho làm việc tiếp.

    Ngoài việc hạn chế được rủi ro chuyển tiền nhầm mạng, setup này giống với cách bọn mình triển khai các ứng dụng Web2 trước đây. Khi code được đẩy lên Staging, team QA sử dụng và test trước, ổn rồi mới ủn lên Production. Các token trên Testnet có thể xin (mint) thoải mai nên Team QA có thể test thoải mái mà ko tốn xu nào.

  10. DevOps.
    Sau 2 tuần làm việc thì team Dev muốn xỉu vì hệ thống quá phức tạp. Việc update code trên rất nhiều service và servers mất rất nhiều thời gian của LTV. May mắn là có một bạn DevOps cực giỏi trong công ty đã hỗ trợ setup. Mỗi khi LTV commit code vào nhánh develop trên Github thì hệ thống tự động deploy lên Staging(Testnet). Khi code merge vào nhánh master thì Production (Mainnet) được cập nhật. Kết quả là life cycle của LTV rất nhẹ nhàng chỉ việc code, merge code, qa, (ăn, ngủ), repeat.

Trên đây là 10 bài học mà nhóm mình đã học được trong quá trình làm sản phẩm trong 3 tuần. Tuy khá là ngoằn ngoèo nhưng giúp cho team có một cái nhìn khác hẳn về Web3 so với những gì bọn mình biết ở Web2.

Thành quả

Cuối cùng thì team cũng ship kịp thời LixiNFT.me để mừng tuổi bạn bè và đồng nghiệp đúng như mong muốn ban đầu.

3 Untitled

 

Ngày mùng 7 Tết, Hà Nội vượt 2,000 ca F0, SG vẫn mở cửa bình thường, nhưng 2 văn phòng của công ty Cohost AI vẫn làm việc trên Zoom và ấm áp không khí Tết bằng hoạt động lì xì nhau qua NFT. Mặc dù bao lì xì do 1 người tạo ra và người nhận vào “claim” sau khi được duyệt. Nhưng trên thực tế thì lại không hoạt động như vậy. 90% các bạn đã được duyệt lại là ví mới mở, và không có tí GAS nào để thực hiện được giao dịch “claim” trên. Do vậy, khi chủ bao ấn nút “Gửi Lì Xì” cho một bạn, thì bạn đó có 0.01 BNB trong ví và trở thành “trạm bơm ga”. Các bạn khác có thể đến xin Gas để có thể Claim dc Lì Xì, tạo ra một mạng lưới lì xì cho nhau rất vui và đậm không khí Xuân đầu năm.

Bên cạnh đó, thì LixiNFT cũng giúp cho các bạn sinh viên của Funix – trường học trên mây của anh @Nam trải nghiệm công nghệ NFT này, cũng như được nhận những đồng KAI đầu tiên trong đời.

Các bạn đọc bài post này muốn trải nghiệm Lì Xì NFT là ntn có thể vào testnets.lixinft.me để tạo vào gửi lì xì cho người khác giống như Bao Lì Xì này https://bit.ly/lixinft-tndlg.

Chúc các bạn một năm mới thật nhiều may mắn trong công cuộc chinh phục Web3/Metaverse trong năm 2022.

Facebook Comments Box
Chia sẻ

Join The Discussion

Compare listings

Compare
NHẬN THÔNG BÁO

Không muốn bỏ lỡ tin tức? Để lại email ngay để nhận được những bài học mới nhất hoàn toàn miễn phí!