Trang Chủ

Hợp đồng thông minh sử dụng Solidity (phần 1)

Giới thiệu

Hợp đồng thông minh : Đơn giản là một chương trình chạy trên chuỗi khối Ethereum, có địa chỉ cụ thể trên chuỗi khối, không được kiểm soát bởi người dùng.

Máy ảo Ethereum (EVM): Đó là môi trường để tài khoản Ethereum và hợp đồng thông minh hoạt động.

Solidity : Một ngôn ngữ lập trình cấp cao, sử dụng để phát triển các hợp đồng thông minh.

Phối lại: Một IDE trực tuyến cho phép phát triển, biên dịch, triển khai các hợp đồng thông minh cho Ethereum.

Dưới đây là một ví dụ đơn giản về Hợp đồng thông minh:

Vòng đời của Hợp đồng thông minh

Như thể hiện trong hình trên, vòng đời của hợp đồng thông minh tuân theo các bước bên dưới:

  • Hợp đồng thông minh được thực hiện bằng ngôn ngữ cấp cao như Solidity.
  • Hợp đồng thông minh được biên dịch theo hai kết quả cụ thể là: Bytecode (là ngôn ngữ máy dựa trên ngăn xếp được biên dịch và thực thi bởi EVM) và ABI – Giao diện nhị phân ứng dụng (là tệp JSON mô tả hợp đồng phân tán và các chức năng của hợp đồng thông minh). ABI là cầu nối giữa Web2 và Web3.
  • Sau đó, hợp đồng thông minh được triển khai. Điều này bao gồm việc tạo một giao dịch đóng gói mã bytecode của hợp đồng thông minh và gửi nó đến mạng. Giao dịch nhận được tài khoản hợp đồng của chính nó có địa chỉ, số dư, Nonce và giữ mã bytecode trong trường dữ liệu.
  • Cuối cùng, một hợp đồng thông minh được gọi ra. Điều này bao gồm các cuộc gọi bên ngoài đến hợp đồng thông minh.

Lưu ý đặc biệt :

  • Khi hợp đồng được tạo, hàm khởi tạo được thực thi một lần và lệnh gọi đầu tiên đó luôn được kích hoạt bởi tài khoản EOA (Tài khoản được sở hữu bên ngoài).
  • Hợp đồng thông minh không thể tự thực thi . Nó yêu cầu một cuộc gọi bên ngoài được thực hiện.
  • Khi nó được thực thi, các giao dịch phát sinh từ việc thực hiện sẽ được sao chép trên blockchain và cuối cùng, dữ liệu meta hợp đồng thông minh được cập nhật.

Tính vững chắc: Các biến và hàm

Biến

Các loại giá trị sau:

địa chỉ myAddress; // 0x00000000000000000000000000000000000000

trạng thái enum {hoạt động, không hoạt động, hủy bỏ};

ánh xạ (địa chỉ => đơn vị) số dư;

Loại hình Giá trị mặc định Thí dụ
int và uint (tất cả các kích thước) 0 số int; tuổi uint; // 0
bool sai cờ bool; // sai
sợi dây Chuỗi trống tên chuỗi; // “”
byte1 đến byte32 Tất cả các byte được đặt thành 0 giới tính byte3; // 0x000000
Mảng tĩnh Tất cả các mục được đặt thành giá trị mặc định int [3] số; // [0, 0, 0]
Mảng động Mảng trống int [] số; // []
cấu trúc Mỗi phần tử được đặt thành giá trị mặc định struct Sinh viên {string name; uint age; bool giới tính;}
địa chỉ (byte20)
enum
ánh xạ (dưới dạng bảng băm)

Khái niệm về giá trị “ không xác định ” hoặc “ null ” không tồn tại trong Solidity.

Có ba loại biến:

  • Biến trạng thái : Các biến có giá trị được lưu trữ vĩnh viễn trong bộ lưu trữ hợp đồng.
  • Biến cục bộ: Các biến có giá trị hiện diện cho đến khi hàm đang thực thi.
  • Biến toàn cầu : Các biến đặc biệt tồn tại trong không gian tên toàn cầu được sử dụng để lấy thông tin về blockchain.

Cú pháp:

Thí dụ:

Phạm vi biến trạng thái:

Tên Mô tả
Công cộng Có thể được truy cập trong hợp đồng nội bộ. Trình biên dịch tự động tạo các hàm getter cho tất cả các biến trạng thái công khai.
Nội bộ ( mặc định ) Có thể được truy cập nội bộ từ hợp đồng hiện tại. Và hợp đồng kế thừa từ nó mà không sử dụng điều này.
Riêng tư Chỉ có thể được truy cập nội bộ từ hợp đồng hiện tại.

Chức năng

Cú pháp:

Thí dụ:

Phạm vi chức năng:

Tên Mô tả
Riêng tư Chỉ được gọi bằng chính hợp đồng chính.
Nội bộ Chỉ được gọi bằng chính hợp đồng chính. Và hợp đồng kế thừa từ nó.
Bên ngoài Chỉ được gọi từ bên thứ ba.
Công khai ( mặc định ) Bên ngoài và bên trong.

Ví dụ về tiền điện tử

Hợp đồng sau đây thực hiện hình thức đơn giản nhất của tiền điện tử

Người giới thiệu

https://docs.soliditylang.org/en/v0.8.16/introduction-to-smart-contracts.html

https://remix.ethereum.org/

Cảm ơn vì đã đọc!!=
Chia sẻ bài viết ngay