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

exchange.IO("api",...)

Cácexchange.IO("api", ...)hàm được gọi theo cách được sử dụng để gọi các phương thức của hợp đồng thông minh.

Cácexchange.IO("api", ...)hàm trả về giá trị trả về của phương thức gọi là hợp đồng thông minh. chuỗi, số, bool, đối tượng, mảng, null và tất cả các loại khác được hỗ trợ bởi hệ thống

exchange.IO(k, địa chỉ, phương pháp)exchange.IO(k, địa chỉ, phương pháp,...args)exchange.IO(k, địa chỉ, phương pháp, giá trị,...args)

Cácktham số được sử dụng để thiết lập chức năng củaexchange.IO()chức năng, được thiết lập thành"api"chỉ ra rằng hàm được sử dụng để mở rộng yêu cầu gọi. k đúng chuỗi Cácaddresstham số được sử dụng để chỉ định địa chỉ của hợp đồng thông minh. địa chỉ đúng chuỗi Cácmethodtham số được sử dụng để xác định phương thức của hợp đồng thông minh được gọi. phương pháp đúng chuỗi Cácvaluetham số được sử dụng để thiết lập số tiền ETH được gửi.stateMutabilitythuộc tính của phương thức hợp đồng thông minh được thực thi làpayable, sau đó làvaluetham số cần phải được thông qua."stateMutability": "payable"có thể xem từ ABI.exchange.IO()chức năng sẽ xác định các thông số cần thiết dựa trênstateMutabilitytính năng trong ABI đã được đăng ký.stateMutabilitythuộc tính lànonpayable, sau đó làvaluetham số không cần phải được truyền. giá trị sai số, chuỗi Cácargtham số được sử dụng để xác định các tham số của phương thức của hợp đồng thông minh được gọi. Có thể có nhiều hơn mộtargtham số, và loại và số lượngargCác tham số phụ thuộc vào phương pháp của hợp đồng thông minh được gọi. arg sai chuỗi, số, bool, và tất cả các loại khác được hỗ trợ bởi hệ thống

function main(){
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, the token is 1INCH in the example
    Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
}

Cácdecimalsphương pháp là mộtconstantphương pháp ERC20 mà không phải chịu tiêu thụ khí và nó có thể truy vấn các dữ liệu chính xác của một token.decimalsreturn value: các dữ liệu chính xác của token.

function main(){
    // The contract address of the token, in the example the token is 1INCH
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                          

    // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
    Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))   
}

Cácallowancephương pháp là mộtconstantphương pháp ERC20 mà không tạo ra tiêu thụ khí và có thể truy vấn số tiền được ủy quyền của một token cho một địa chỉ hợp đồng nhất định.allowancePhương pháp này có 2 tham số, đầu tiên là địa chỉ ví và thứ hai là địa chỉ được ủy quyền.
owner: địa chỉ của ví, ví dụ được thay thế bằng chuỗi owner, việc sử dụng thực tế cần phải điền vào địa chỉ cụ thể.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.

function main(){
    // The contract address of the token, the token is 1INCH in the example
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                 

    // 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", "0xde0b6b3a7640000"))  
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.  
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
    var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var tokenInName = "ETH"
    var amountIn = 0.01
    var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100}   // This is an example, depending on the actual scene settings
    var data = ""                                                       // The encoded data, here is the empty string, depending on the actual scene settings
    var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}

CácmulticallPhương pháp này không phải là...constantphương phápUniswap V3tạo ra tiêu thụ khí và được sử dụng để đổi token theo nhiều cách. Cácmulticallphương thức có thể có nhiều cách để truyền tham số, bạn có thể kiểm tra ABI có chứa phương thức cụ thể, bạn cần đăng ký ABI trước khi gọi phương thức.

Đối với các ví dụ cụ thể vềmulticallcác cuộc gọi phương pháp, bạn có thể tham khảo các nền tảngUniswap V3 Trade Mẫu

Một số chi tiết được mô tả ở đây bằng cách sử dụng mã giả:


exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)

ContractV3SwapRouterV2: địa chỉ của bộ định tuyến v2 của Uniswap V3.value: số tiền ETH để chuyển, được đặt thành 0 nếu token trong giao dịch trao đổi không phải là ETH.deadline: deadlinelà tham số củamulticallphương pháp, có thể được đặt thành (new Date().getTime() / 1000) + 3600, cho thấy nó có hiệu lực trong một giờ.data: datalà tham số củamulticallphương pháp, dữ liệu của hoạt động đóng gói được thực hiện.

Tương tự nhưexchange.IO("api", "eth", "send", "toAddress", toAmount), cácgasLimit/gasPrice/noncethiết lập của phương thức gọi có thể được chỉ định khi gọimulticallphương pháp. Một lần nữa, chúng tôi sử dụng mã giả để mô tả:


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

Các thông số{gasPrice: 11, gasLimit: 111, nonce: 111}có thể được thiết lập theo nhu cầu cụ thể, được thiết lập cho tham số cuối cùng củaexchange.IO()chức năng. Bạn có thể bỏ quanoncevà sử dụng hệ thống mặc định giá trị, hoặc đểgasLimit/gasPrice/noncetắt và sử dụng giá trị mặc định của hệ thống cho tất cả.

trao đổi.IO (("khóa",...) trao đổi.IO (("địa chỉ")