Bắt đầu với Solidity | Bài giảng 21: Gọi các hợp đồng khác

律动

Gần đây tôi đã học lại solidity, củng cố các chi tiết và viết “Solidity Minimalist Primer” cho người mới bắt đầu sử dụng (những người lập trình có thể tìm thấy một hướng dẫn khác), cập nhật 1-3 lần một tuần.

Tất cả các mã và hướng dẫn là mã nguồn mở tại github: github .com / AmazingAng / WTFSolidity

Gọi hợp đồng đã triển khai

Các nhà phát triển viết các hợp đồng thông minh để gọi các hợp đồng khác, cho phép các chương trình trên mạng Ethereum được sử dụng lại, do đó xây dựng một hệ sinh thái phát triển mạnh. Nhiều dự án web3 dựa vào việc viện dẫn các hợp đồng khác, chẳng hạn như canh tác năng suất. Trong bài nói chuyện này, chúng tôi sẽ chỉ cho bạn cách gọi hàm của hợp đồng đích khi mã hợp đồng (hoặc giao diện) và địa chỉ được biết.

Hợp đồng mục tiêu

Hãy bắt đầu bằng cách viết một hợp đồng đơn giản, OtherContract, để gọi nó.

Hợp đồng này chứa biến trạng thái x, nhật ký sự kiện được kích hoạt khi nhận được ETH và ba hàm:

getBalance(): Trả về số dư ETH của hợp đồng.

setX(): hàm phải trả bên ngoài, có thể đặt giá trị của x và gửi ETH đến hợp đồng.

getX(): Đọc giá trị của x.

Gọi hợp đồng OtherContract

Chúng ta có thể tạo một tham chiếu đến hợp đồng bằng cách sử dụng địa chỉ của hợp đồng và mã hợp đồng (hoặc giao diện): _Name(_Address), trong đó _Name là tên hợp đồng và _Address là địa chỉ hợp đồng. Sau đó gọi hàm của nó với một tham chiếu đến hợp đồng: _Name(_Address).f(), trong đó f() là hàm được gọi.

Dưới đây là 4 ví dụ về việc gọi hợp đồng:

1. Chuyển địa chỉ hợp đồng

Chúng ta có thể truyền địa chỉ hợp đồng đích vào hàm, tạo tham chiếu đến hợp đồng đích và sau đó gọi hàm đích. Ví dụ: chúng ta viết một hàm callSetX trong hợp đồng mới, truyền vào địa chỉ hợp đồng OtherContract đã triển khai _Address và tham số x:

2. Chuyển các biến hợp đồng

Chúng ta có thể chuyển trực tiếp tham chiếu hợp đồng trong hàm và chỉ cần thay đổi loại địa chỉ của tham số trên thành tên hợp đồng đích, tốt hơn OtherContract. Ví dụ sau đây triển khai hàm getX() gọi hợp đồng đích.

3. Tạo biến hợp đồng

Chúng ta có thể tạo một biến hợp đồng và sau đó sử dụng nó để gọi hàm objective. Trong ví dụ sau, chúng ta lưu trữ một tham chiếu đến hợp đồng OtherContract cho biến oc:

4. Gọi hợp đồng và gửi ETH

Nếu hàm của hợp đồng đích phải trả, thì chúng ta có thể chuyển tiền vào hợp đồng bằng cách gọi nó: _Name(_Address).f{value: _Value}(), trong đó _Name là tên hợp đồng, _Address là địa chỉ hợp đồng, f là tên của hàm khách quan và _Value là số lượng ETH sẽ được chuyển (tính bằng wei).

Hàm setX của hợp đồng OtherContract phải trả và trong ví dụ sau, chúng ta chuyển tiền đến và đi từ hợp đồng đích bằng cách gọi setX.

Sau khi chuyển, chúng ta có thể quan sát sự thay đổi số dư ETH của hợp đồng mục tiêu thông qua sự kiện Log và hàm getBalance().

Tóm tắt

Trong bài nói chuyện này, chúng tôi sẽ chỉ cho bạn cách tạo tham chiếu đến hợp đồng thông qua mã hợp đồng mục tiêu (hoặc giao diện) và địa chỉ, để gọi các chức năng của hợp đồng đích.

Tuyên bố miễn trừ trách nhiệm: Thông tin trên trang này có thể đến từ bên thứ ba và không đại diện cho quan điểm hoặc ý kiến của Gate. Nội dung hiển thị trên trang này chỉ mang tính chất tham khảo và không cấu thành bất kỳ lời khuyên tài chính, đầu tư hoặc pháp lý nào. Gate không đảm bảo tính chính xác hoặc đầy đủ của thông tin và sẽ không chịu trách nhiệm cho bất kỳ tổn thất nào phát sinh từ việc sử dụng thông tin này. Đầu tư vào tài sản ảo tiềm ẩn rủi ro cao và chịu biến động giá đáng kể. Bạn có thể mất toàn bộ vốn đầu tư. Vui lòng hiểu rõ các rủi ro liên quan và đưa ra quyết định thận trọng dựa trên tình hình tài chính và khả năng chấp nhận rủi ro của riêng bạn. Để biết thêm chi tiết, vui lòng tham khảo Tuyên bố miễn trừ trách nhiệm.
Bình luận
0/400
Không có bình luận