Sumber daya yang dimuat... Pemuatan...

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

Peraturanexchange.IO("api", ...)fungsi dipanggil dengan cara yang digunakan untuk memanggil metode kontrak pintar.

Peraturanexchange.IO("api", ...)fungsi mengembalikan nilai yang dikembalikan dari metode yang disebut kontrak pintar. string, number, bool, object, array, null dan semua tipe lain yang didukung oleh sistem

exchange.IO(k, alamat, metode)exchange.IO(k, alamat, metode,... args)exchange.IO(k, alamat, metode, nilai,... args)

Peraturankparameter digunakan untuk mengatur fungsi dariexchange.IO()fungsi, diatur untuk"api"menunjukkan bahwa fungsi digunakan untuk memperluas permintaan panggilan. k benar string PeraturanaddressParameter digunakan untuk menentukan alamat kontrak pintar. alamat benar string PeraturanmethodParameter digunakan untuk menentukan metode kontrak pintar yang akan dipanggil. metode benar string Peraturanvalueparameter digunakan untuk mengatur jumlah ETH yang akan dikirim.stateMutabilityAtribut metode kontrak pintar yang akan dieksekusi adalahpayable, kemudianvalueParameter harus dilewati."stateMutability": "payable"Atribut dapat dilihat dari ABI.exchange.IO()fungsi akan menentukan parameter yang diperlukan berdasarkanstateMutabilityAtribut dalam ABI yang telah terdaftar.stateMutabilityatribut adalahnonpayable, kemudianvalueParameter tidak perlu dilewati. nilai palsu nomor, string Peraturanargparameter digunakan untuk menentukan parameter metode kontrak pintar yang akan dipanggil.argparameter, dan jenis dan jumlahargparameter tergantung pada metode kontrak pintar yang akan dipanggil. arg palsu string, number, bool, dan semua jenis lain yang didukung oleh sistem

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
}

Peraturandecimalsmetode adalahconstantmetode ERC20 yang tidak menimbulkan konsumsi gas dan dapat menanyakan data presisi token.decimalsNilai pengembalian: data presisi 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"))   
}

Peraturanallowancemetode adalahconstantmetode ERC20 yang tidak menghasilkan konsumsi gas dan dapat menanyakan jumlah yang sah dari token untuk alamat kontrak tertentu.allowancemetode mengambil 2 parameter, yang pertama adalah alamat dompet dan yang kedua adalah alamat otorisasi.
owner: alamat dompet, contohnya diganti dengan string owner, penggunaan sebenarnya perlu mengisi alamat tertentu.spender: alamat kontrak yang sah, contohnya digantikan oleh string spender, penggunaan sebenarnya perlu mengisi alamat tertentu, misalnya dapatUniswap 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 || {})
}

Peraturanmulticallmetode ini adalah non-constantmetodeUniswap V3yang menghasilkan konsumsi gas dan digunakan untuk menebus token dengan berbagai cara. Peraturanmulticallmetode mungkin memiliki berbagai cara untuk melewati parameter, Anda dapat memeriksa ABI yang berisi metode secara khusus, Anda perlu mendaftarkan ABI sebelum memanggil metode.

Untuk contoh spesifik darimulticallmetode panggilan, Anda dapat merujuk ke platform yang tersedia untuk umumUniswap V3 Trade Template

Beberapa detail dijelaskan di sini menggunakan pseudo-kode:


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

ContractV3SwapRouterV2: alamat router v2 dari Uniswap V3.value: jumlah ETH yang akan ditransfer, ditetapkan menjadi 0 jika tokenIn token dari operasi pertukaran bukan ETH.deadline: deadlineadalah parameter darimulticallmetode, yang dapat diatur untuk (new Date().getTime() / 1000) + 3600, menunjukkan bahwa itu berlaku selama satu jam.data: dataadalah parameter darimulticallmetode, data dari operasi pengemasan yang akan dilakukan.

Mirip denganexchange.IO("api", "eth", "send", "toAddress", toAmount), yanggasLimit/gasPrice/noncepengaturan panggilan metode dapat ditentukan saat memanggilmulticallmetode. Sekali lagi, kita menggunakan pseudo-kode untuk menggambarkan:


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

Parameter{gasPrice: 11, gasLimit: 111, nonce: 111}dapat diatur sesuai dengan kebutuhan khusus, yang diatur ke parameter terakhir dariexchange.IO()fungsi. Anda bisa melewatkannoncedan menggunakan sistem default nilai, atau meninggalkangasLimit/gasPrice/nonceUnduh dan gunakan nilai default sistem untuk semua.

pertukaran.IO (("kunci",...) pertukaran.IO (("alamat")