Peraturanexchange.IO("api", ...)
fungsi dipanggil dengan cara yang digunakan untuk memanggil kaedah kontrak pintar.
Peraturanexchange.IO("api", ...)
fungsi mengembalikan nilai pulangan kaedah kontrak pintar yang dipanggil.
string, nombor, bool, objek, array, null dan semua jenis lain yang disokong oleh sistem
exchange.IO(k, alamat, kaedah)exchange.IO(k, alamat, kaedah,... args)exchange.IO(k, alamat, kaedah, nilai,... args)
Peraturank
parameter digunakan untuk menetapkan fungsiexchange.IO()
fungsi, ditetapkan kepada"api"
menunjukkan bahawa fungsi digunakan untuk memperluaskan permintaan panggilan.
k
betul
senar
Peraturanaddress
parameter digunakan untuk menentukan alamat kontrak pintar.
alamat
betul
senar
Peraturanmethod
parameter digunakan untuk menentukan kaedah kontrak pintar yang akan dipanggil.
kaedah
betul
senar
Perkhidmatanvalue
parameter digunakan untuk menetapkan jumlah ETH yang akan dihantar.stateMutability
atribut kaedah kontrak pintar yang akan dilaksanakan adalahpayable
, kemudianvalue
parameter perlu lulus."stateMutability": "payable"
Atribut boleh dilihat dari ABI.exchange.IO()
fungsi akan menentukan parameter yang diperlukan berdasarkanstateMutability
Atribut dalam ABI yang telah didaftarkan.stateMutability
atribut adalahnonpayable
, kemudianvalue
Parameter tidak perlu dihantar.
nilai
palsu
nombor,string
Peraturanarg
parameter digunakan untuk menentukan parameter kaedah kontrak pintar yang akan dipanggil.arg
parameter, dan jenis dan bilanganarg
parameter bergantung kepada kaedah kontrak pintar yang akan dipanggil.
arg
palsu
rentetan, nombor, bool, dan semua jenis lain yang disokong 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
}
Peraturandecimals
kaedah adalahconstant
kaedah ERC20 yang tidak menimbulkan penggunaan gas dan ia boleh menyoal data ketepatan token.decimals
Nilai pulangan: data ketepatan 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"))
}
Peraturanallowance
kaedah adalahconstant
kaedah ERC20 yang tidak menjana penggunaan gas dan boleh pertanyaan jumlah yang dibenarkan token untuk alamat kontrak tertentu.allowance
kaedah mengambil 2 parameter, yang pertama adalah alamat dompet dan yang kedua adalah alamat yang dibenarkan.
owner
: alamat dompet, contoh digantikan dengan rentetan spender
: alamat kontrak yang dibenarkan, contoh digantikan oleh rentetan Uniswap 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 || {})
}
Peraturanmulticall
kaedah adalah bukan-constant
kaedahUniswap V3
yang menjana penggunaan gas dan digunakan untuk menebus token dengan pelbagai cara.
Perkhidmatanmulticall
kaedah boleh mempunyai pelbagai cara untuk lulus parameter, anda boleh memeriksa ABI yang mengandungi kaedah secara khusus, anda perlu mendaftar ABI sebelum memanggil kaedah.
Untuk contoh khususmulticall
anda boleh merujuk kepada platform
Beberapa butiran diterangkan di sini menggunakan kod palsu:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: alamat penghala v2 Uniswap V3.value
: jumlah ETH untuk dipindahkan, ditetapkan kepada 0 jika token dalam operasi pertukaran bukan ETH.deadline
: deadline
ialah parametermulticall
kaedah, yang boleh ditetapkan kepada (new Date().getTime() / 1000) + 3600, menunjukkan bahawa ia sah selama satu jam.data
: data
ialah parametermulticall
kaedah, data operasi pembungkusan yang akan dilakukan.
Sama sepertiexchange.IO("api", "eth", "send", "toAddress", toAmount)
, yanggasLimit/gasPrice/nonce
tetapan panggilan kaedah boleh ditentukan apabila memanggilmulticall
kaedah.
Sekali lagi, kita menggunakan kod palsu untuk menerangkan:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
Parameter{gasPrice: 11, gasLimit: 111, nonce: 111}
boleh ditetapkan mengikut keperluan khusus, yang ditetapkan kepada parameter terakhirexchange.IO()
fungsi.
Anda boleh terlepasnonce
dan menggunakan sistem nilai lalai, atau meninggalkangasLimit/gasPrice/nonce
mematikan dan menggunakan nilai lalai sistem untuk semua.