Kandungan berikut adalah contoh beberapa panggilan kaedah kontrak pintar.
angka perpuluhan
Peraturandecimals
kaedah adalahconstant
kaedahERC20
yang tidak menghasilkangas
penggunaan, dan ia boleh menyoal data ketepatantoken
.
Peraturandecimals
Nilai pulangan: data ketepatantoken
.
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
}
Ganjaran
Peraturanallowance
kaedah adalahconstant
kaedahERC20
yang tidak menghasilkangas
Penggunaan, dan ia boleh menyoal jumlah yang dibenarkantoken
untuk alamat kontrak tertentu.
Peraturanallowance
kaedah perlu lulus dalam 2 parameter, yang pertama adalah alamat dompet, dan yang kedua adalah alamat yang dibenarkan.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
: Alamat dompet digantikan dengan rentetan spender
: Alamat kontrak yang dibenarkan digantikan oleh rentetan Uniswap V3 router v1
.
meluluskan
Peraturanapprove
kaedah adalah bukan-constant
kaedahERC20
yang menghasilkangas
penggunaan, yang digunakan untuk membenarkantoken
jumlah operasi kepada alamat kontrak tertentu.
Peraturanapprove
kaedah perlu lulus dalam 2 parameter, yang pertama adalah alamat yang akan diberi kuasa dan yang kedua adalah jumlah yang dibenarkan.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
: Alamat kontrak yang dibenarkan, contohnya digantikan oleh rentetan Uniswap V3 router v1
address.
amount
: Bilangan kebenaran, diwakili di sini menggunakan rentetan hexadecimal, sepadan dengan nilai desimal1e18
, dibahagikan dengantoken
unit ketepatan dalam contoh (iaitu, 1e18), menghasilkan 1token
authorized.
Parameter ketigaexchange.IO
fungsi dilewatkan nama kaedahapprove
, yang juga boleh ditulis dalam bentukmethodId
, contohnya:
pelbagai panggilan
Peraturanmulticall
kaedah adalah kaedah yang tidak tetapUniswap V3
, yang akan menghasilkangas
penggunaan dan digunakan untuk menukar token dalam pelbagai cara.
Peraturanmulticall
method mungkin mempunyai pelbagai kaedah untuk menyampaikan parameter. anda boleh menanyakan ABI yang mengandungi kaedah untuk butiran. anda perlu mendaftarkan ABI sebelum memanggil kaedah. nilai pulangan:txid
.
Untuk contoh khususmulticall
panggilan kaedah, sila rujuk kepada orang ramai
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 kontrak router v2 Uniswap V3contractV3SwapRouterV2
: alamat penghala v2 dari Uniswap V3, penggunaan sebenar memerlukan alamat tertentu untuk diisi...value
: Jumlah ETH yang dipindahkan, tetapkannya kepada 0 jikatokenIn
Token untuk operasi pertukaran bukan ETH, ia perlu diisi mengikut keadaan sebenar.deadline
: Ia boleh ditetapkan untuk(new Date().getTime() / 1000) + 3600
, yang bermaksud ia sah selama satu jam.data
: Data operasi pembungkusan yang perlu dilakukan, ia perlu diisi mengikut keadaan sebenar.
Ia juga mungkin untuk menentukangasLimit/gasPrice/nonce
tetapan untuk panggilan kaedah:
exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
Anda boleh menetapkan parameter{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}
mengikut keperluan khusus anda, parameter ditetapkan kepada parameter terakhirexchange.IO
fungsi.
Anda boleh terlepasnonce
dan menggunakan sistem lalai, atau tidak menetapkangasLimit/gasPrice/nonce
dan gunakan semua nilai lalai sistem.
Perlu diperhatikan bahawa dalam contoh, atributstateMutability
dalammulticall(uint256,bytes[])
kaedah adalahpayable
, danvalue
Parameter perlu dihantar.
AtributstateMutability":"payable"
boleh dilihat dariABI
.exchange.IO
fungsi akan menentukan parameter yang diperlukan mengikutstateMutability
atribut dalamABI
yang telah didaftarkan.
JikastateMutability
atribut adalahnonpayable
, parametervalue
tidak perlu diserahkan.