Aelf Blockchain: Phần 1 – Giới thiệu về Aelf

11 min read

Thời gian gần đây, tôi có cơ hội được tham gia dự án đầu tiên về blockchain. Đôi nét về blockchain với bản thân tôi thì trước đây tôi chưa có cơ hội được tiếp xúc và tìm hiểu về blockchain. Thông qua cơ hội làm việc lần này tôi có cơ hội được tìm hiểu về blockchain nói chung cũng như là về Aelf

Ok, về blockchain thì có rất nhiều các bài viết chia sẻ và tôi tin là các chia sẻ của ae NCC trên ant cũng có. Vì thế nên tôi sẽ không chia sẻ lại nữa. Chúng ta hãy cùng đi tìm hiểu về Aelf

1. Aelf là gì ?

Để tiện cho việc theo dõi cũng như là tự mình đánh giá lại những điều tôi nói tôi sẽ đính kèm 1 vài nguồn tham khảo ở đây :

Theo như quảng cáo của aelf thì aelf là 1 blockchain mang những đặc trưng như là: đương nhiên rồi – Một nền tảng đầy hứa hẹn, layer-1 blockchain network, hiệu năng caotính mở rộng vượt trội, rất thích hợp với các ứng dụng Web3 như là DeFi hay là Metaverse,…

Ok để tổng hợp nhanh thì ta sẽ có

Hiệu năng và khả năng mở rộng vượt trội

  • Cloud-native và hiệu suất cao: Aelf hoạt động trên các trung tâm dữ liệu đám mây, đảm bảo tốc độ xử lý nhanh chóng cho các hợp đồng thông minh và ứng dụng.
  • Thực thi hợp đồng song song: Khả năng thực thi nhiều hợp đồng thông minh cùng lúc giúp tăng đáng kể thông lượng giao dịch và giảm tắc nghẽn.
  • Microservices: Chia nhỏ các hợp đồng thông minh thành các dịch vụ siêu nhỏ độc lập tăng tính linh hoạt và khả năng bảo trì.
  • MainChain và SideChains: Cấu trúc chuỗi chính và nhiều chuỗi phụ giúp mở rộng quy mô gần như không giới hạn, hỗ trợ nhiều ứng dụng cùng lúc mà không ảnh hưởng đến hiệu suất.

Tập trung vào Web3 và Metaverse

  • Thu hẹp rào cản: Aelf cung cấp cơ sở hạ tầng hoàn chỉnh cho các ứng dụng Web3 như DeFi và Metaverse, giúp việc phát triển và sử dụng trở nên dễ dàng và tiết kiệm chi phí hơn.
  • Cổng vào Metaverse: Aelf hướng đến việc trở thành một phần không thể thiếu của Metaverse, tạo điều kiện thuận lợi cho mọi người tiếp cận thế giới ảo này.

Tính năng nổi bật khác

  • Cross-chain: Tính năng cross-chain tích hợp sẵn cho phép trao đổi dữ liệu nhanh chóng và an toàn giữa các blockchain khác nhau.
  • SideChains linh hoạt: Sự kết hợp giữa SideChains dùng chung và SideChains độc quyền giúp giảm chi phí cho cả nhà phát triển và người dùng, đồng thời nâng cao hiệu suất tổng thể của mạng lưới.

2. Architecture

Chúng ta cùng tìm hiểu 3 thành phần quan trọng và đóng vai trò xương sống cho hệ sinh thái của Aelf blockchain:

  • Core
  • Cross-chain
  • Smartcontract

3. Programming Aspect

Aelf được xây dựng bằng .Net sử dụng ABP Framework. Một số ưu điểm của stack:

  • Hiệu năng vượt trội (.Net)
  • Đa nền tảng:
    • Windows
    • MacOS
    • Linix
  • Open Source
  • Cung cấp sẵn nhiều Pattens hiện đại
  • Cộng đồng .Net đông đảo
  • Cung cấp phong phú (high-level) các giao thức giao tiếp:
    • RPC, gRPC
    • P2P
    • Thích hợp với crosschain communicate ,….

Phương thức giao tiếp chính là gRPC dùng Protobuf để định nghĩa payload

Coding rules

Đội ngũ developers của Aelf có hẳn 1 rule về việc review codes:

https://github.com/AElfProject/AElf/issues/1040

4. Infrastructure

Trên đây là sơ đồ cấu trúc của 1 node bao gồm sự phân tách giữa hệ điều hành (OS) và phần Kernel

OS

Triển khai ứng dụng và các layer về hạ tầng. Hiểu đơn giản là triển khai việc đồng bộ hóa giữa các chuối khối, triển khai expose các API và RPC

Kernel

Chứa các logic và các nguyên tắc về việc thực thi các smartcontract. Chứa logic về truy cập và database, block data. Implement các thư viện và plugin

Bên cạnh đó Aelf có một môi trường cho việc thực thi các smartcontract (native runtime)

Aelf được phát triển để có khả năng tương thích với các nền tảng cloud: Azure và AWS: https://x.com/aelfblockchain/status/1235444465034092549

5. Cross-chain

Vấn đề

Vấn đề đối với các blockchain phổ biến là khả năng mở rộng – vấn đề tắc nghẽn của các blockchain. Khi một chuỗi càn xử lý transaction 1 cách tuần tự (thường là add vào queue). Gỉa xử 1 dApp chiếm nhiều tài nguyên, sẽ gây ra ảnh hưởng đến hiệu năng của các dApp khác

Giải pháp của Aelf

AElf sử dụng chuỗi bên (sidechains) – mỗi chuỗi tập trung vào 1 số usecase, chúng hoạt động đọc lập nhưng vẫn giao tiếp với nhau

Tóm lại:

  • Mục đích của chuỗi bên: Tăng khả năng mở rộng và hiệu quả bằng cách phân phối nhiệm vụ xử lý trên nhiều chuỗi.
  • Tính độc lập và chuyên biệt: Mỗi chuỗi bên hoạt động độc lập và tập trung vào các trường hợp sử dụng cụ thể.
  • Giao tiếp gián tiếp: Chuỗi chính và chuỗi bên giao tiếp thông qua gốc Merkle, đảm bảo tính bảo mật và hiệu quả.
  • Xác minh chuỗi chéo: Cơ chế gốc Merkle và lập chỉ mục cho phép xác minh giao dịch giữa các chuỗi.

=> AElf sử dụng sidechains độc lập để tăng khả năng mở rộng và hiệu quả, đồng thời sử dụng root Merkle và lập chỉ mục để đảm bảo giao tiếp và xác minh an toàn giữa các chuỗi.

Kiến trúc của Cross-chain

Khái niệm:

  • Main chain và side chain là các blockchain độc lập, có mạng lưới ngang hàng riêng.
  • Side chain hoạt động song song, liên kết với main chain qua cơ chế giao tiếp cross-chain.
  • Main chain đóng vai trò trung tâm, lập chỉ mục dữ liệu từ tất cả các side chain.
  • Side chain không có thông tin về nhau, cần main chain làm cầu nối để xác minh thông tin cross-chain.

Kiến trúc node:

  • Mỗi node có một server và một client để giao tiếp hai chiều giữa main chain và side chain.
  • Server và client được triển khai dưới dạng plugin của node.

Vòng đời side chain:

  • Yêu cầu tạo side chain.
  • Chờ main chain chấp nhận.
  • Khởi tạo side chain và được main chain tự động lập chỉ mục.
  • Xác minh cross-chain chỉ được thực hiện nếu side chain được lập chỉ mục chính xác.

Giao tiếp:

  • Side chain yêu cầu main chain cung cấp ngữ cảnh khởi tạo khi lần đầu tiên được khởi động.
  • Sau khi khởi tạo, side chain báo hiệu cho main chain rằng nó đã sẵn sàng để được lập chỉ mục.
  • Trong quá trình lập chỉ mục, thông tin về các khối không thể đảo ngược được trao đổi giữa side chain và main chain.
  • Main chain ghi kết quả cuối cùng vào khối, được tính toán với dữ liệu cross-chain từ tất cả các side chain.
  • Side chain cũng ghi lại dữ liệu trong hợp đồng từ main chain.
  • AElf cung cấp triển khai giao tiếp cross-chain với gRPC.

Cache:

  • Sử dụng lớp cache để lưu trữ dữ liệu cross-chain nhận được từ các node từ xa.
  • Dữ liệu cross-chain được lưu trong cache theo chain id và block height với giới hạn số lượng.
  • Cache giúp tách rời phần giao tiếp và logic chạy node.

Cross chain contract:

  • Hầu hết dữ liệu cross-chain được lưu trữ bởi Cross chain contract.
  • Dữ liệu cross-chain được đóng gói trong giao dịch trong quá trình khai thác và kết quả tính toán được lưu trữ bởi hợp đồng.
  • Dữ liệu cross-chain trong khối là kết quả lập chỉ mục side chain của các phép tính trong hợp đồng này.
  • Xác minh cross-chain chỉ hoạt động chính xác với dữ liệu trong hợp đồng này.

Luồng dữ liệu:

  • Main/Side chain node nhận dữ liệu cross-chain từ phía bên kia và đưa vào bộ nhớ cục bộ.
  • Giao dịch lập chỉ mục được đóng gói bởi miner và dữ liệu cross-chain đi vào State thông qua Crosschain Contract.

6. Smartcontract

Sơ đồ kiến trúc:

  • Micro Service: Các smartcontact hoạt động như các dịch vụ siêu nhỏ, giao tiếp qua Message Queue hoặc RPC.
  • Verification Module: Đảm bảo tính hợp lệ của các giao dịch và hợp đồng.
  • P2P Module: Quản lý kết nối ngang hàng giữa các node.
  • Storage Module: Lưu trữ dữ liệu blockchain, bao gồm trạng thái hợp đồng và các giao dịch.
  • Packing Module: Đóng gói các giao dịch vào các khối.
  • Core: Thành phần cốt lõi của blockchain, xử lý đồng thuận và thực thi các khối.
  • Các ngôn ngữ lập trình: Hỗ trợ nhiều ngôn ngữ lập trình khác nhau như C#, Java, etc.
  • Docker: Cho phép đóng gói và triển khai các smartcontact một cách dễ dàng.

Tổng quan

  • Nền tảng blockchain hoạt động như một cơ sở dữ liệu phân tán lưu trữ tất cả các smartcontract.
  • Mỗi hợp đồng có một địa chỉ duy nhất để truy vấn và cập nhật trạng thái.
  • Mã hợp đồng chứa các phương thức xử lý kiểm tra quyền và logic nghiệp vụ.

Cấu trúc Smartcontract trong aelf

  • Giao diện (Interface):
    • Hỗ trợ nhiều ngôn ngữ lập trình.
    • Sử dụng định dạng Protobuf cho các định nghĩa đa ngôn ngữ.
  • Trạng thái (State):
    • SDK cung cấp các prototype (nguyên mẫu) trạng thái.
    • Nhà phát triển có thể truy vấn và cập nhật trạng thái trực tiếp thông qua các prototype này.
  • Logic nghiệp vụ (Business Logic):
    • Protobuf plugins tạo ra khung xương của smartcontract minh.
    • Nhà phát triển điền vào logic bằng cách ghi đè các phương thức.

Các thành phần liên quan

  • Smartcontract trong aelf được phân chia giữa Kernel, runtime và SDK.
  • Kernel định nghĩa các thành phần cốt lõi và xử lý các vấn đề trừu tượng hóa trong quá trình thực thi.
  • Smartcontract phụ thuộc vào các mô-đun runtime và dự án SDK.
  • Smartcontract và dữ liệu blockchain là cốt lõi của hệ thống, xác định logic và quy tắc thay đổi trạng thái blockchain.
  • Giao dịch kích hoạt các phương thức trong hợp đồng để thay đổi trạng thái.
  • Smartcontract là một phần quan trọng giúp dApps hoạt động, chúng triển khai một phần của lớp nghiệp vụ được đưa vào blockchain.

Tổng quan về kiến trúc

  • Smartcontract trong aelf được định nghĩa như các micro-service, không phụ thuộc vào ngôn ngữ lập trình cụ thể.
  • Ví dụ: Consensus Protocol (Giao thức đồng thuận) là một dịch vụ được định nghĩa bằng Smartcontract.

Tương tác với chuỗi (Chain Interactions)

  • Smartcontract tương tác với chuỗi và truy cập thông tin ngữ cảnh thông qua bridge và bridge host.
  • SDK cung cấp các tính năng để giao tiếp qua bridge.
  • Bridge cung cấp thông tin ngữ cảnh quan trọng như:
    • Self: Địa chỉ của hợp đồng hiện tại
    • Sender: Địa chỉ gửi giao dịch
    • Origin: Địa chỉ ký giao dịch
    • OriginTransactionId và TransactionId: ID của các giao dịch liên quan
  • Bridge cũng cho phép:
    • Kích hoạt sự kiện (Events) tương tự như ghi log
    • Gọi các phương thức trên hợp đồng khác ở chế độ chỉ đọc (không lưu thay đổi trạng thái)
    • Gửi giao dịch inline, có thể lưu các thay đổi trạng thái

Trạng thái (State)

  • Smartcontract đọc và/hoặc sửa đổi trạng thái.
  • SDK cung cấp các state helpers và truy cập thông qua StateProvider của bridge.

Runtime và Thực thi

  • Khi các giao dịch trong một khối được thực thi, mỗi giao dịch tạo ra một trace chứa:
    • Giá trị trả về của phương thức được gọi
    • Lỗi (nếu có)
    • Kết quả từ các lời gọi nội bộ trong InlineTraces
    • Sự kiện được kích hoạt trong Logs

SDK

  • aelf có SDK C# để phát triển smartcontract.
  • SDK bao gồm:
    • Các helpers để giao tiếp với bridge
    • Cơ sở hạ tầng kiểu như ContractState, MappedState, và SingletonState
  • Bất kỳ nhà phát triển hoặc công ty nào cũng có thể tạo SDK và runtime cho một ngôn ngữ cụ thể bằng cách điều chỉnh nó để giao tiếp với bridge thông qua gRPC

7. Một số khái niệm quan trọng trong smartcontract

Service

Hiểu đơn giản là định nghĩa ‘Interface’ 1 smartcontract bằn protobuf

Mỗi service bao gồm các methods:

  • Actions: Để thay đổi trạng thái của 1 smartcontract
  • Views: Phương thức để hiển thị trạng thái

Events

Hiểu đơn giản là định dạng 1 payload mà chúng ta muốn log ra (có thể dùng trong trường hợp audit)

Message

Type hoặc interface mà chúng ta định nghĩa cho payload hoặc return type của các methos

8. Tổng kết

Trên đây cung cấp 1 cái nhìn ‘kỹ thuật‘ khá là tổng quan về Aelf block chain. Có rất nhiều phần mà tôi cũng thật sự chưa hiểu hết và có đầy đủ kiến thức để trình bày. Nếu bạn đọc có quan tâm tôi gợi ý 1 số khái niệm chúng ta có thể tìm hiểu, đây hoàn toàn là những kinh nghiệm non nớt của tôi khi tham gia 1 dự án với Aelf. Một số khái niệm:

  • Các native smartcontract được xây dựng sẵn trong Aelf
  • Aelf Contract Standards (ACS): Các chuẩn smartcontract được xây dựng sẵn và cung cấp bởi Aelf

Trong bài tiếp theo tôi sẽ giới thiệu 1 vài công cụ cho các lập trình viên khi mới làm việc với Aelf

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *