Như chúng ta đã biết Blockchain sẽ giúp cho thông tin được lưu trữ ở nhiều Node (server) khác nhau, khiến việc tấn công và thay đổi thông tin sẽ trở nên khó khăn, nhưng nhờ vậy nó có thể hoạt động 24/7 mà không cần bất kỳ bên thứ 3 nào quản lý. Tạo nên một nền kinh tế tiền tệ không biên giới như hiện nay, và dẫn đầu là các đồng Coin có vốn hóa lớn như Bitcoin và Ethereum. Trong bài viết này mình sẽ tập trung hướng dẫn cho anh em Cách build 1 Blockchain bài bản nhất, cũng đi từ 2 cách mà mình đã chia sẻ ở bài trước.. ai chưa đọc thì xem tại đây.
Trong bài này mình sẽ bóc tách kỹ quy trình làm Chain riêng chi tiết cho anh em, ở đây mình sẽ chưa đưa vội kiến thức quá sâu về lập trình/code, để tránh gây phức tạp thêm vấn đề khi chưa cần thiết.
Để xây dựng 1 Blockchain, anh em sẽ trải qua các giai đoạn sau:
- Use case Blockchain
- Chọn Framework phù hợp để build/fork (nếu làm Non-EVM blockchain thì bỏ qua bước này)
- Chọn thuật toán đồng thuận
- Cấu hình core logic cho Blockchain
- DevOps
- Triển khai Testnet
- Audit security, phòng vệ attack
- Deploy & Maintain network
Nội dung chính
Use case Blockchain là gì?
Nó sẽ là nhu cầu thực để người dùng muốn chuyển qua Blockchain của anh em xài.. nếu build không kỹ thì chẳng ai muốn qua chain anh em dùng cả => sẽ gãy demand.
Một số use case phổ biến có thể tham khảo:
- Decentralization, Reliable, Safe: 3 yếu tố này buộc phải có ngay từ đầu.
- Vertical Scalability: đây là cách gọi khi muốn mở rộng Blockchain theo chiều dọc, build theo hướng này thì về sau muốn tăng được TPS, anh em cần thêm nhiều tài nguyên vào 1 Node để tăng cường khả năng xử lý.
- Horizontal Scalability: mở rộng Blockchain theo chiều ngang, cách này sẽ phải tăng số lượng Node hoặc shard nếu muốn tăng TPS.
- Parallel transaction execution: cho phép thực thi song song các transaction.
- Upgradeable web3 infrastructure: có khả năng nâng cấp mà không cần tạo ra 1 phiên bản mới cho ứng dụng (này đang là xu thế nha anh em).
- High throughput: khả năng xử lý nhiều yêu cầu/giao dịch trong 1 khoảng thời gian nhất định.
- Low latency: là khoảng thời gian ngắn mà 1 yêu cầu mất từ khi bắt đầu -> nhận được phản hồi, mục đích tạo trải nghiệm mượt mà cho người dùng (muốn build blockchain dành cho gameFi thì nên ưu tiên cho use case này).
- Batch storage: giao dịch và lưu trữ theo lô.
- Embedded on-chain change management protocols: các giao thức được quản lý và nhúng trực tiếp trên chuỗi tạo sự nhất quán và an toàn cho thông tin.
- Implement dynamic NFTs: nếu Chain thiên về phục vụ cho NFT thì nên chú trọng phần triển khai NFT động.
- Micro-payments: trước giờ crypto vẫn chưa thể phục vụ được cho thanh toán vi mô, nghĩa là muốn mua ly cafe, chai nước hay cốc trà đá vẫn có thể thanh toán bằng crypto thì nó chưa làm được.. gặp nhiều rào cản về gas fee cũng như rate giữa fiat và crypto chưa ổn định. Nếu muốn đánh vào case này, anh em cần đánh mạnh 3 thứ: Parallel transaction execution, High throughput và Low latency.
Chọn Framework phù hợp để Build Blockchain
Tiếp theo, anh em cần chọn Blockchain famework, như trước đó mình có chia sẻ cho anh em 2 cách tạo Blockchain chuẩn.. ai chưa đọc thì xem ngay bên dưới cho dễ hiểu nhé.
2 Cách tạo 1 Blockchain chuẩn có người dùng hoạt động
- Fork từ source của Ethereum rồi custom lại (EVM-based protocol).
- Sử dụng substrate framework của Polkadot để build Parachain.
- Build trên Cosmos, sử dụng Cosmos SDKs.
=> Số 2 & 3 là build theo hướng Non-EVM, nên sẽ không tương thích với Ethereum
Chọn thuật toán đồng thuận (Consensus mechanism)
Hiện nay có rất nhiều thuật toán đồng thuận để anh em lựa chọn, ví dụ:
- PoW (Proof of Work)
- PoS (Proof of Stake)
- DPOS (Delegated Proof of Stake)
- PoA (Proof of Authority)
- PoB (Proof of Burn)
- PBFT (Practical Byzantine Fault Tolerance)
- SBFT (Simplified Byzantine Fault Tolerance)
Tham khảo thêm: Các thuật toán đồng thuận trong Blockchain
Cấu hình các Logic cốt lõi cho Blockchain
Nếu muốn tạo 1 chain riêng phục vụ cho nhu cầu phát triển thì phải xây dựng được giải pháp trên đó, logic dưới đây sẽ giúp bạn khái quát được các thông số.
- Genesis Block
- Hashing
- Previous block hash
- Nonce
- Block size
- Merkle root
- Timestamp
- Node Operator
- Validator Flow
- Transaction & states
- Gas & transaction fees
- Computing transaction gas
- Set up Header information
- Modify Block height theo nhu cầu
- Building Pallets
- Chọn Permission module phù hợp
- Memory pool (nơi các giao dịch chờ đợi, trước khi được tải lên Blockchain)
- Epoch (sẽ có 1 số lượng khối nhất định được xác thực trong mỗi Epoch, các Validator chỉ có thể trở thành trình xác thực chính thức sau khi kết thúc Epoch)
- Staking
- Governance
Development Operations (DevOps)
- Hosting test network
- Cấu hình nơi lưu trữ file storage của Blockchain
- Khởi tạo genesis key store
- Tính toán số lượng Node khi chạy testnet
- API integration
Khởi chạy Blockchain trên Testnet
Giai đoạn này sẽ đưa Blockchain lên Testnet để chạy thử nghiệm các tính năng, xác thực giao dịch, block operation,.. ngoài ra còn một số thứ anh em phải set up thêm trong quá trình chạy testnet:
- Create Faucet cho Blockchain (Nơi nhận Coin mạng testnet để chạy thử transfer, deploy smart contract).
- Phát triển testnet network cho wallet.
- Tạo Block explorer để tracking new block producer và các giao dịch (TXs).
- Dùng Monitoring tool để giám sát và đo lường hiệu quả hoạt động của mạng lưới.
Trong giai đoạn này, anh em cần kiểm tra nghiêm ngặt các vấn đề:
- Các logic, chức năng chạy đúng hết chưa.
- Transfer có xảy ra bug nào không?
- Khả năng mở rộng của Blockchain.
- Tình hình hoạt động của các Smart contract.
- Tìm kiếm các lỗ hổng bảo mật và fix.
- Kiểm tra Connect network.
- Khả năng tích hợp Cross-chain?
- Đánh giá lại toàn bộ hiệu suất hoạt động của Blockchain có đúng với mục đích ban đầu.
Audit security, phòng vệ attack
Đây sẽ là quá trình kiểm tra chi tiết hơn về các lỗ hổng bảo mật, phòng vệ tất cả khả năng attack có thể xảy ra.. để không, deploy lên mainnet luôn là ăn shit..
Các loại attack phổ biến hiện nay:
- Sybil Attack: tạo ra lượng lớn các Node để tấn công và kiểm soát mạng.
- Eclipse: ngắt kết nối mạng xung quanh 1 Node và thao túng nó.
- Timejacking: cung cấp thời gian sai lệch cho 1 Node làm ảnh hưởng việc xác minh transfer và thêm data vào block.
- Replay: gửi lại giao dịch hợp lệ đến 1 Blockchain khác.
- Long-range: cố gắng tạo chuỗi giả dài hơn chuỗi chính, phá hoại mạng lưới.
- Short address attack: cố gắng tạo ra 1 địa chỉ với số byte ít hơn thông thường, và khai thác sự cố trên ví người nhận.
- Front-running: giao dịch của hacker chèn vào trước nạn nhân, để can thiệp và get balance.
Deploy & Maintain network
Nếu đã đi được đến đây thì mọi thứ đã ngon lành hết, anh em chỉ cần khởi chạy Blockchain trên mainnet để mọi người dễ dàng sử dụng. Nhưng nên nhớ là dù testnet kỹ đến đâu vẫn có nguy cơ bỏ sót lỗi, sau khi lên mainnet vẫn cần tiếp tục quan sát và khắc phục lỗi tồn đọng nếu có. Và ban đầu cũng nên chạy Node cục bộ trước, không nên public ra ngoài.
Comments (No)