Sumber daya yang dimuat... Pemuatan...

Metode Panggilan Kontrak Cerdas

Konten berikut adalah contoh beberapa panggilan metode kontrak pintar.

  • angka desimal Peraturandecimalsmetode adalahconstantmetodeERC20yang tidak menghasilkangaskonsumsi, dan dapat menanyakan data presisi daritokenAku tidak tahu. PeraturandecimalsNilai 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 Peraturanallowancemetode adalahconstantmetodeERC20yang tidak menghasilkangasKonsumsi, dan dapat menanyakan jumlah yang diizinkan daritokenuntuk alamat kontrak tertentu. Peraturanallowancemetode 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 owner dalam contoh.spender: Alamat kontrak yang sah diganti dengan string spender dalam contoh. dalam penggunaan yang sebenarnya, Anda perlu mengisi alamat secara khusus, misalnya alamat dapatUniswap V3 router v1.

  • menyetujui Peraturanapprovemetode ini adalah non-constantmetodeERC20yang menghasilkangaskonsumsi, yang digunakan untuk mengizinkantokenjumlah operasi ke alamat kontrak tertentu. Peraturanapprovemetode 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 spender, penggunaan sebenarnya perlu mengisi alamat tertentu, misalnya dapatUniswap V3 router v1 address. amount: Jumlah otorisasi, yang diwakili di sini dengan menggunakan string hexadecimal, sesuai dengan nilai desimal1e18, dibagi dengantokensatuan presisi dalam contoh (yaitu, 1e18), menghasilkan 1token authorized.

    Parameter ketiga dariexchange.IOfungsi dilewatkan nama metodeapprove, yang juga dapat ditulis dalam bentukmethodId, misalnya: 0x571ac8b0. Hal ini juga mungkin untuk menulis nama metode standar penuh, seperti approve(address,uint256) .

  • multi-panggilan Peraturanmulticallmetode adalah metode nonkonstan dariUniswap V3, yang akan menghasilkangaskonsumsi dan digunakan untuk bertukar token dalam berbagai cara. Peraturanmulticallmetode 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 darimulticallmetode panggilan, silakan merujuk pada publikUniswap V3 Trading Class Library templatedari platform kami.

    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 V3, harus diisi sesuai dengan situasi aktual.contractV3SwapRouterV2: alamat router v2 dari Uniswap V3, penggunaan sebenarnya membutuhkan alamat tertentu untuk diisi...value: Jumlah ETH yang ditransfer, atur ke 0 jikatokenIntoken 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/noncepengaturan 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.IOfungsi. Anda bisa melewatkannoncedan menggunakan sistem default, atau tidak mengaturgasLimit/gasPrice/noncedan gunakan semua nilai default sistem.

    Perlu dicatat bahwa dalam contoh, atribut daristateMutabilitydalammulticall(uint256,bytes[])metode adalahpayable, danvalueParameter harus diteruskan. Atribut daristateMutability":"payable"dapat dilihat dariABI.exchange.IOfungsi akan menentukan parameter yang diperlukan sesuai denganstateMutabilityatribut dalamABIyang telah terdaftar. JikastateMutabilityatribut adalahnonpayable, parametervaluetidak perlu diserahkan.

Dukungan untuk Mengganti Kunci Pribadi Panggilan fungsi lainnya