Tài nguyên đang được tải lên... tải...

Phương pháp gọi hợp đồng thông minh

Nội dung sau đây là một ví dụ về một số cuộc gọi phương thức hợp đồng thông minh.

  • số thập phân Cácdecimalsphương pháp là mộtconstantphương phápERC20mà không tạo ragastiêu thụ, và nó có thể truy vấn dữ liệu chính xác của mộttoken. CácdecimalsPhản hồi giá trị: dữ liệu chính xác củatoken.

    function main(){
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, in the example the token is 1INCH
        Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
    }
    
  • trợ cấp Cácallowancephương pháp là mộtconstantphương phápERC20mà không tạo ragastiêu thụ, và nó có thể truy vấn số lượng được phép của một sốtokencho một địa chỉ hợp đồng nhất định. CácallowancePhương pháp cần phải đi qua trong 2 tham số, một là địa chỉ ví, và một thứ hai là địa chỉ được ủy quyền.token.

    function main(){
        // The contract address of the token, in the example the token is 1INCH
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"            
        var owner = ""
        var spender = ""
        
        // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the current exchange object bound to the wallet to the spender address authorized 1 1INCH.
        Log(exchange.IO("api", tokenAddress, "allowance", owner, spender))
    }
    

    owner: Địa chỉ ví được thay thế bằng chuỗi owner trong ví dụ.spender: Địa chỉ hợp đồng được ủy quyền được thay thế bằng chuỗi spender trong ví dụ.Uniswap V3 router v1.

  • chấp thuận CácapprovePhương pháp này không phải là...constantphương phápERC20tạo ragastiêu thụ, được sử dụng để cho phép mộttokensố tiền giao dịch đến một địa chỉ hợp đồng nhất định. Cácapprovephương pháp cần phải vượt qua trong 2 tham số, một là địa chỉ được ủy quyền và thứ hai là số tiền được ủy quyền.txid.

    function main(){
        // The contract address of the token, in the example the token is 1INCH
        var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
        var spender = ""
        var amount = "0xde0b6b3a7640000"
        
        // The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token.
        Log(exchange.IO("api", tokenAddress, "approve", spender, amount))
    }
    

    spender: Địa chỉ của hợp đồng được ủy quyền, ví dụ được thay thế bằng chuỗi spender, việc sử dụng thực tế cần phải điền vào địa chỉ cụ thể, ví dụ, nó có thể đượcUniswap V3 router v1 address. amount: Số lượng ủy quyền, được thể hiện ở đây bằng một chuỗi hexadecimal, tương ứng với một giá trị thập phân của1e18, chia chotokenđơn vị chính xác trong ví dụ (tức là 1e18), tạo ra 1token authorized.

    Các tham số thứ ba củaexchange.IOhàm được truyền tên phương thứcapprove, cũng có thể được viết dưới dạngmethodId, ví dụ: 0x571ac8b0. Nó cũng có thể viết tên phương thức tiêu chuẩn đầy đủ, chẳng hạn như approve(address,uint256) .

  • nhiều cuộc gọi Cácmulticallphương pháp là một phương pháp không liên tục củaUniswap V3, sẽ tạo ragastiêu thụ và được sử dụng để trao đổi token theo nhiều cách. Cácmulticallmethod có thể có nhiều phương thức truyền tham số. Bạn có thể truy vấn ABI chứa phương thức để biết chi tiết. Bạn cần đăng ký ABI trước khi gọi phương thức. Trả về giá trị:txid.

    Đối với các ví dụ cụ thể vềmulticallphương pháp gọi, xin vui lòng tham khảo công chúngUniswap V3 Trading Class Library mẫucủa nền tảng của chúng tôi.

    function main() {
        var ABI_Route = ""
        var contractV3SwapRouterV2 = ""
        var value = 0
        var deadline = (new Date().getTime() / 1000) + 3600
        var data = ""
        exchange.IO("abi", contractV3SwapRouterV2, ABI_Route)
        exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
    }
    

    ABI_Route: ABI của Uniswap V3s router v2 hợp đồng, nó cần phải được điền vào theo tình hình thực tế.contractV3SwapRouterV2: địa chỉ router v2 của Uniswap V3, việc sử dụng thực tế đòi hỏi một địa chỉ cụ thể phải được điền vào...value: Số tiền ETH được chuyển giao, đặt nó thành 0 nếutokenIntoken cho giao dịch trao đổi không phải là ETH, nó cần phải được điền vào theo tình hình thực tế.deadline: Nó có thể được thiết lập thành(new Date().getTime() / 1000) + 3600, có nghĩa là nó có hiệu lực trong một giờ.data: Dữ liệu về hoạt động đóng gói cần thực hiện, nó cần phải được điền theo tình hình thực tế.

    Nó cũng có thể xác địnhgasLimit/gasPrice/noncethiết lập cho các cuộc gọi phương thức:

    exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
    

    Bạn có thể đặt tham số{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}theo nhu cầu cụ thể của bạn, các tham số được thiết lập cho các tham số cuối cùng củaexchange.IOchức năng. Bạn có thể bỏ quanoncevà sử dụng hệ thống mặc định, hoặc không đặtgasLimit/gasPrice/noncevà sử dụng tất cả các giá trị mặc định của hệ thống.

    Cần lưu ý rằng trong ví dụ, thuộc tính củastateMutabilitytrongmulticall(uint256,bytes[])phương pháp làpayable, vàvalueParameter cần được truyền vào. Thuộc tính củastateMutability":"payable"có thể được xem từABI.exchange.IOchức năng sẽ xác định các thông số cần thiết theostateMutabilitythuộc tính trongABIđã được đăng ký. NếustateMutabilitythuộc tính lànonpayable, tham sốvaluekhông cần phải được chuyển vào.

Hỗ trợ chuyển đổi khóa riêng Các cuộc gọi chức năng khác