Lesson 2

Khái niệm cơ bản về Ethereum và Solidity

Ethereum là một nền tảng dựa trên blockchain hỗ trợ các hợp đồng thông minh và các ứng dụng phi tập trung (dApps).

Tổng quan về Ethereum

Ethereum là một nền tảng phần mềm phân tán, mã nguồn mở dựa trên blockchain, đã nổi lên như một thách thức lớn đối với Bitcoin. Ethereum lần đầu tiên được đề xuất vào năm 2013 bởi nhà nghiên cứu tiền điện tử Vitalik Buterin, người đã đề xuất thêm ngôn ngữ kịch bản để lập trình vào Bitcoin. Nó được ra mắt vào ngày 30 tháng 7 năm 2015. Sự phát triển của Ethereum được tài trợ bởi một đợt bán hàng cộng đồng trực tuyến, một loại hình cung cấp dịch vụ cộng đồng trong đó các mã thông báo tiền điện tử được phát hành.

Đọc thêm: Ethereum là gì?

Tiền điện tử gốc của Ethereum được gọi là Ether (ETH) và nó có ngôn ngữ lập trình được gọi là Solidity. Blockchain, công nghệ cơ bản của Ethereum, là một sổ cái phân tán duy trì danh sách hồ sơ vĩnh viễn, chống giả mạo. Kiến trúc phi tập trung này cho phép các nhà phát triển tạo ra nhiều ứng dụng phi tập trung (dApps), tận dụng hệ sinh thái mạnh mẽ và tính linh hoạt của nền tảng.

Một trong những tính năng cốt lõi của Ethereum là hỗ trợ hợp đồng thông minh, là hợp đồng kỹ thuật số được thực thi tự động dựa trên các điều kiện được xác định trước như chúng tôi đã đề cập trong Bài học 1. Các hợp đồng thông minh này tạo ra một môi trường không cần sự tin cậy, nơi các giao dịch có thể được tiến hành một cách an toàn và minh bạch mà không cần đến bên trung gian. Những người khai thác trên mạng Ethereum đang sản xuất mã thông báo Ether, không chỉ đóng vai trò là tiền tệ mà còn là phương tiện để thanh toán phí sử dụng trên nền tảng; sau “The Merge”, Ethereum đã chuyển sang cơ chế Proof-of-Stake (PoS), trong đó người xác thực (không phải người khai thác) xác thực các giao dịch và tạo các khối mới. Thay vì sản xuất mã thông báo Ether, người xác thực kiếm được phí giao dịch và chặn phần thưởng bằng Ether khi họ tham gia vào mạng. Ether vẫn đóng vai trò là phương tiện để thanh toán phí sử dụng trên nền tảng, nhưng việc phát hành và phân phối nó khác với cơ chế Proof-of-Work (PoW) trước đây.

Khả năng lưu trữ dApps và hợp đồng thông minh của Ethereum đã thu hút sự quan tâm đáng kể từ các nhà phát triển và tổ chức, khiến nó trở thành nền tảng hàng đầu để xây dựng các giải pháp đổi mới trong các ngành khác nhau, bao gồm tài chính, chuỗi cung ứng và trò chơi, cùng nhiều ngành khác. Khi hệ sinh thái Ethereum tiếp tục phát triển, nó vẫn đi đầu trong công nghệ blockchain, thúc đẩy sự đổi mới và thúc đẩy một cộng đồng phát triển mạnh mẽ gồm các nhà phát triển cũng như người dùng.

Đọc thêm: Hợp nhất là gì?

Đọc thêm: DApp là gì?

Giới thiệu ngôn ngữ lập trình Solidity

Solidity là ngôn ngữ lập trình kiểu tĩnh, cấp cao được thiết kế đặc biệt để viết hợp đồng thông minh trên chuỗi khối Ethereum. Được phát triển bởi nhóm cốt lõi của Ethereum, cú pháp của Solidity chịu ảnh hưởng của JavaScript, khiến nó trở nên quen thuộc và dễ tiếp cận đối với nhiều nhà phát triển. Ngôn ngữ này là Turing-complete, cho phép các nhà phát triển tạo ra logic phức tạp và triển khai các chức năng khác nhau trong hợp đồng thông minh của họ. Solidity biên dịch thành mã byte của Máy ảo Ethereum (EVM), được thực thi trên mạng Ethereum.

Trong Solidity, nhà phát triển có thể xác định cấu trúc dữ liệu tùy chỉnh, tạo các hàm do người dùng xác định và triển khai các cơ chế kiểm soát truy cập, cùng với các tính năng khác. Với Solidity, có thể tạo ra một loạt các ứng dụng phi tập trung, bao gồm nền tảng tài chính phi tập trung (DeFi), mã thông báo không thể thay thế (NFT), tổ chức tự trị phi tập trung (DAO), v.v.

Cấu trúc của hợp đồng Solidity: Ví dụ

Hợp đồng Solidity là một đoạn mã độc lập bao gồm các biến, hàm, sự kiện và công cụ sửa đổi cùng với các thành phần khác. Cấu trúc cơ bản của hợp đồng Solidity như sau:

  1. Chỉ thị Pragma: Dòng này chỉ định phiên bản trình biên dịch Solidity tương thích cho hợp đồng thông minh. Ví dụ:

    Độ rắn 
     độ rắn pragma ^0.8.0;
    
  2. Định nghĩa hợp đồng: Dòng này khai báo hợp đồng và tên của nó. \
    Ví dụ:

    Hợp đồng Solidity 
     SimpleToken {
    
  3. Biến trạng thái: Đây là các biến lưu trữ trạng thái của hợp đồng trên blockchain. Ví dụ: bạn có thể lưu trữ tổng nguồn cung cấp mã thông báo:

    Solidity 
     uint256 công cộng Tổng cung;
    
  4. Chức năng: Các chức năng xác định hành vi của hợp đồng và có thể được gọi bởi người dùng bên ngoài hoặc các hợp đồng khác. Đây là một chức năng đơn giản để chuyển mã thông báo:

    Chuyển hàm Solidity 
     (địa chỉ người nhận, số tiền uint256) công khai {
     // ... transfer logic ...
    }
    
  5. Sự kiện: Sự kiện được sử dụng để ghi lại các hành động cụ thể trong hợp đồng và có thể được giám sát bởi người dùng hoặc hợp đồng bên ngoài. Ví dụ: sự kiện Chuyển khoản trong hợp đồng mã thông báo:

    Chuyển giao sự kiện Solidity 
     (địa chỉ được lập chỉ mục từ, địa chỉ được lập chỉ mục tới, giá trị uint256);
    
  6. Công cụ sửa đổi: Công cụ sửa đổi được sử dụng để sửa đổi hành vi của các chức năng, thường là để kiểm soát truy cập hoặc kiểm tra điều kiện tiên quyết. Ví dụ: công cụ sửa đổi để kiểm tra xem người gửi có đủ mã thông báo để chuyển hay không:

    Công cụ sửa đổi JavaScript 
     hasEnoughTokens(số tiền uint256) {
     require(balanceOf[msg.sender] >= amount, "Insufficient balance");
     _;
    }
    
  7. Hàm tạo: Hàm tạo là một hàm đặc biệt khởi tạo các biến trạng thái của hợp đồng khi nó được triển khai. Ví dụ: khởi tạo tổng nguồn cung cấp mã thông báo:

    Hàm tạo JavaScript 
     (uint256 _totalSupply) {
     totalSupply = _totalSupply;
     balanceOf[msg.sender] = _totalSupply;
    }
    

Kết hợp tất cả lại với nhau, một hợp đồng Solidity đơn giản cho token có thể trông như thế này:

Độ bền pragma của TypeScript 
 ^0.8.0; 

 hợp đồng SimpleToken { 
 uint256 public TotalSupply; 
 ánh xạ (địa chỉ => uint256) public BalanceOf; Chuyển 

 sự kiện (địa chỉ được lập chỉ mục từ, địa chỉ được lập chỉ mục tới, giá trị uint256); 

 công cụ sửa đổi hasEnoughTokens(số tiền uint256) {
        require(balanceOf[msg.sender] >= amount, "Insufficient balance");
        _;
    }
}

Điểm nổi bật
Ethereum là một nền tảng dựa trên blockchain hỗ trợ các hợp đồng thông minh và các ứng dụng phi tập trung (dApps).
Tiền điện tử gốc của Ethereum là Ether (ETH).
Solidity là ngôn ngữ lập trình cấp cao được sử dụng để viết hợp đồng thông minh trên Ethereum.
Hợp đồng thông minh trên Ethereum thực hiện tự động dựa trên các điều kiện được xác định trước.
Ethereum đã chuyển sang cơ chế Proof-of-Stake (PoS) để xác thực các giao dịch và tạo các khối mới.
Solidity cho phép các nhà phát triển xác định cấu trúc dữ liệu, tạo chức năng, triển khai kiểm soát truy cập, v.v.
Hệ sinh thái của Ethereum thu hút các nhà phát triển và tổ chức từ nhiều ngành khác nhau.
Hợp đồng vững chắc bao gồm pragma, định nghĩa hợp đồng, biến trạng thái, hàm, sự kiện, công cụ sửa đổi và hàm tạo.
Hợp đồng vững chắc có thể được sử dụng để tạo nền tảng DeFi, NFT, DAO, v.v.

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
Catalog
Lesson 2

Khái niệm cơ bản về Ethereum và Solidity

Ethereum là một nền tảng dựa trên blockchain hỗ trợ các hợp đồng thông minh và các ứng dụng phi tập trung (dApps).

Tổng quan về Ethereum

Ethereum là một nền tảng phần mềm phân tán, mã nguồn mở dựa trên blockchain, đã nổi lên như một thách thức lớn đối với Bitcoin. Ethereum lần đầu tiên được đề xuất vào năm 2013 bởi nhà nghiên cứu tiền điện tử Vitalik Buterin, người đã đề xuất thêm ngôn ngữ kịch bản để lập trình vào Bitcoin. Nó được ra mắt vào ngày 30 tháng 7 năm 2015. Sự phát triển của Ethereum được tài trợ bởi một đợt bán hàng cộng đồng trực tuyến, một loại hình cung cấp dịch vụ cộng đồng trong đó các mã thông báo tiền điện tử được phát hành.

Đọc thêm: Ethereum là gì?

Tiền điện tử gốc của Ethereum được gọi là Ether (ETH) và nó có ngôn ngữ lập trình được gọi là Solidity. Blockchain, công nghệ cơ bản của Ethereum, là một sổ cái phân tán duy trì danh sách hồ sơ vĩnh viễn, chống giả mạo. Kiến trúc phi tập trung này cho phép các nhà phát triển tạo ra nhiều ứng dụng phi tập trung (dApps), tận dụng hệ sinh thái mạnh mẽ và tính linh hoạt của nền tảng.

Một trong những tính năng cốt lõi của Ethereum là hỗ trợ hợp đồng thông minh, là hợp đồng kỹ thuật số được thực thi tự động dựa trên các điều kiện được xác định trước như chúng tôi đã đề cập trong Bài học 1. Các hợp đồng thông minh này tạo ra một môi trường không cần sự tin cậy, nơi các giao dịch có thể được tiến hành một cách an toàn và minh bạch mà không cần đến bên trung gian. Những người khai thác trên mạng Ethereum đang sản xuất mã thông báo Ether, không chỉ đóng vai trò là tiền tệ mà còn là phương tiện để thanh toán phí sử dụng trên nền tảng; sau “The Merge”, Ethereum đã chuyển sang cơ chế Proof-of-Stake (PoS), trong đó người xác thực (không phải người khai thác) xác thực các giao dịch và tạo các khối mới. Thay vì sản xuất mã thông báo Ether, người xác thực kiếm được phí giao dịch và chặn phần thưởng bằng Ether khi họ tham gia vào mạng. Ether vẫn đóng vai trò là phương tiện để thanh toán phí sử dụng trên nền tảng, nhưng việc phát hành và phân phối nó khác với cơ chế Proof-of-Work (PoW) trước đây.

Khả năng lưu trữ dApps và hợp đồng thông minh của Ethereum đã thu hút sự quan tâm đáng kể từ các nhà phát triển và tổ chức, khiến nó trở thành nền tảng hàng đầu để xây dựng các giải pháp đổi mới trong các ngành khác nhau, bao gồm tài chính, chuỗi cung ứng và trò chơi, cùng nhiều ngành khác. Khi hệ sinh thái Ethereum tiếp tục phát triển, nó vẫn đi đầu trong công nghệ blockchain, thúc đẩy sự đổi mới và thúc đẩy một cộng đồng phát triển mạnh mẽ gồm các nhà phát triển cũng như người dùng.

Đọc thêm: Hợp nhất là gì?

Đọc thêm: DApp là gì?

Giới thiệu ngôn ngữ lập trình Solidity

Solidity là ngôn ngữ lập trình kiểu tĩnh, cấp cao được thiết kế đặc biệt để viết hợp đồng thông minh trên chuỗi khối Ethereum. Được phát triển bởi nhóm cốt lõi của Ethereum, cú pháp của Solidity chịu ảnh hưởng của JavaScript, khiến nó trở nên quen thuộc và dễ tiếp cận đối với nhiều nhà phát triển. Ngôn ngữ này là Turing-complete, cho phép các nhà phát triển tạo ra logic phức tạp và triển khai các chức năng khác nhau trong hợp đồng thông minh của họ. Solidity biên dịch thành mã byte của Máy ảo Ethereum (EVM), được thực thi trên mạng Ethereum.

Trong Solidity, nhà phát triển có thể xác định cấu trúc dữ liệu tùy chỉnh, tạo các hàm do người dùng xác định và triển khai các cơ chế kiểm soát truy cập, cùng với các tính năng khác. Với Solidity, có thể tạo ra một loạt các ứng dụng phi tập trung, bao gồm nền tảng tài chính phi tập trung (DeFi), mã thông báo không thể thay thế (NFT), tổ chức tự trị phi tập trung (DAO), v.v.

Cấu trúc của hợp đồng Solidity: Ví dụ

Hợp đồng Solidity là một đoạn mã độc lập bao gồm các biến, hàm, sự kiện và công cụ sửa đổi cùng với các thành phần khác. Cấu trúc cơ bản của hợp đồng Solidity như sau:

  1. Chỉ thị Pragma: Dòng này chỉ định phiên bản trình biên dịch Solidity tương thích cho hợp đồng thông minh. Ví dụ:

    Độ rắn 
     độ rắn pragma ^0.8.0;
    
  2. Định nghĩa hợp đồng: Dòng này khai báo hợp đồng và tên của nó. \
    Ví dụ:

    Hợp đồng Solidity 
     SimpleToken {
    
  3. Biến trạng thái: Đây là các biến lưu trữ trạng thái của hợp đồng trên blockchain. Ví dụ: bạn có thể lưu trữ tổng nguồn cung cấp mã thông báo:

    Solidity 
     uint256 công cộng Tổng cung;
    
  4. Chức năng: Các chức năng xác định hành vi của hợp đồng và có thể được gọi bởi người dùng bên ngoài hoặc các hợp đồng khác. Đây là một chức năng đơn giản để chuyển mã thông báo:

    Chuyển hàm Solidity 
     (địa chỉ người nhận, số tiền uint256) công khai {
     // ... transfer logic ...
    }
    
  5. Sự kiện: Sự kiện được sử dụng để ghi lại các hành động cụ thể trong hợp đồng và có thể được giám sát bởi người dùng hoặc hợp đồng bên ngoài. Ví dụ: sự kiện Chuyển khoản trong hợp đồng mã thông báo:

    Chuyển giao sự kiện Solidity 
     (địa chỉ được lập chỉ mục từ, địa chỉ được lập chỉ mục tới, giá trị uint256);
    
  6. Công cụ sửa đổi: Công cụ sửa đổi được sử dụng để sửa đổi hành vi của các chức năng, thường là để kiểm soát truy cập hoặc kiểm tra điều kiện tiên quyết. Ví dụ: công cụ sửa đổi để kiểm tra xem người gửi có đủ mã thông báo để chuyển hay không:

    Công cụ sửa đổi JavaScript 
     hasEnoughTokens(số tiền uint256) {
     require(balanceOf[msg.sender] >= amount, "Insufficient balance");
     _;
    }
    
  7. Hàm tạo: Hàm tạo là một hàm đặc biệt khởi tạo các biến trạng thái của hợp đồng khi nó được triển khai. Ví dụ: khởi tạo tổng nguồn cung cấp mã thông báo:

    Hàm tạo JavaScript 
     (uint256 _totalSupply) {
     totalSupply = _totalSupply;
     balanceOf[msg.sender] = _totalSupply;
    }
    

Kết hợp tất cả lại với nhau, một hợp đồng Solidity đơn giản cho token có thể trông như thế này:

Độ bền pragma của TypeScript 
 ^0.8.0; 

 hợp đồng SimpleToken { 
 uint256 public TotalSupply; 
 ánh xạ (địa chỉ => uint256) public BalanceOf; Chuyển 

 sự kiện (địa chỉ được lập chỉ mục từ, địa chỉ được lập chỉ mục tới, giá trị uint256); 

 công cụ sửa đổi hasEnoughTokens(số tiền uint256) {
        require(balanceOf[msg.sender] >= amount, "Insufficient balance");
        _;
    }
}

Điểm nổi bật
Ethereum là một nền tảng dựa trên blockchain hỗ trợ các hợp đồng thông minh và các ứng dụng phi tập trung (dApps).
Tiền điện tử gốc của Ethereum là Ether (ETH).
Solidity là ngôn ngữ lập trình cấp cao được sử dụng để viết hợp đồng thông minh trên Ethereum.
Hợp đồng thông minh trên Ethereum thực hiện tự động dựa trên các điều kiện được xác định trước.
Ethereum đã chuyển sang cơ chế Proof-of-Stake (PoS) để xác thực các giao dịch và tạo các khối mới.
Solidity cho phép các nhà phát triển xác định cấu trúc dữ liệu, tạo chức năng, triển khai kiểm soát truy cập, v.v.
Hệ sinh thái của Ethereum thu hút các nhà phát triển và tổ chức từ nhiều ngành khác nhau.
Hợp đồng vững chắc bao gồm pragma, định nghĩa hợp đồng, biến trạng thái, hàm, sự kiện, công cụ sửa đổi và hàm tạo.
Hợp đồng vững chắc có thể được sử dụng để tạo nền tảng DeFi, NFT, DAO, v.v.

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.