Konten berikut adalah contoh beberapa panggilan metode kontrak pintar.
angka desimal
Peraturandecimals
metode adalahconstant
metodeERC20
yang tidak menghasilkangas
konsumsi, dan dapat menanyakan data presisi daritoken
Aku tidak tahu.
Peraturandecimals
Nilai pengembalian: data presisitoken
.
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
}
tunjangan
Peraturanallowance
metode adalahconstant
metodeERC20
yang tidak menghasilkangas
Konsumsi, dan dapat menanyakan jumlah yang diizinkan daritoken
untuk alamat kontrak tertentu.
Peraturanallowance
metode perlu lulus dalam 2 parameter, yang pertama adalah alamat dompet, dan yang kedua adalah alamat otorisasi.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 diganti dengan string spender
: Alamat kontrak yang sah diganti dengan string Uniswap V3 router v1
.
menyetujui
Peraturanapprove
metode ini adalah non-constant
metodeERC20
yang menghasilkangas
konsumsi, yang digunakan untuk mengizinkantoken
jumlah operasi ke alamat kontrak tertentu.
Peraturanapprove
metode harus lulus dalam 2 parameter, yang pertama adalah alamat yang akan diizinkan dan yang kedua adalah jumlah yang diizinkan.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 sah, contohnya digantikan oleh string Uniswap V3 router v1
address.
amount
: Jumlah otorisasi, yang diwakili di sini dengan menggunakan string hexadecimal, sesuai dengan nilai desimal1e18
, dibagi dengantoken
satuan presisi dalam contoh (yaitu, 1e18), menghasilkan 1token
authorized.
Parameter ketiga dariexchange.IO
fungsi dilewatkan nama metodeapprove
, yang juga dapat ditulis dalam bentukmethodId
, misalnya:
multi-panggilan
Peraturanmulticall
metode adalah metode nonkonstan dariUniswap V3
, yang akan menghasilkangas
konsumsi dan digunakan untuk bertukar token dalam berbagai cara.
Peraturanmulticall
metode dapat memiliki beberapa metode untuk menyampaikan parameter. Anda dapat menanyakan ABI yang berisi metode untuk rincian. Anda perlu mendaftarkan ABI sebelum memanggil metode.txid
.
Untuk contoh spesifik darimulticall
metode panggilan, silakan merujuk pada publik
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 dari kontrak router v2 Uniswap V3contractV3SwapRouterV2
: alamat router v2 dari Uniswap V3, penggunaan sebenarnya membutuhkan alamat tertentu untuk diisi...value
: Jumlah ETH yang ditransfer, atur ke 0 jikatokenIn
token untuk operasi pertukaran bukan ETH, itu perlu diisi sesuai dengan situasi yang sebenarnya.deadline
: Bisa diatur ke(new Date().getTime() / 1000) + 3600
, yang berarti itu berlaku selama satu jam.data
: Data dari operasi pengemasan yang akan dilakukan, perlu diisi sesuai dengan situasi yang sebenarnya.
Hal ini juga mungkin untuk menentukangasLimit/gasPrice/nonce
pengaturan untuk panggilan metode:
exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
Anda dapat mengatur parameter{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}
sesuai dengan kebutuhan spesifik Anda, parameter diatur ke parameter terakhir dariexchange.IO
fungsi.
Anda bisa melewatkannonce
dan menggunakan sistem default, atau tidak mengaturgasLimit/gasPrice/nonce
dan gunakan semua nilai default sistem.
Perlu dicatat bahwa dalam contoh, atribut daristateMutability
dalammulticall(uint256,bytes[])
metode adalahpayable
, danvalue
Parameter harus diteruskan.
Atribut daristateMutability":"payable"
dapat dilihat dariABI
.exchange.IO
fungsi akan menentukan parameter yang diperlukan sesuai denganstateMutability
atribut dalamABI
yang telah terdaftar.
JikastateMutability
atribut adalahnonpayable
, parametervalue
tidak perlu diserahkan.