Sumber dimuat naik... memuat...

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

Kaedah panggilanexchange.IO("api", "eth", ...)fungsi digunakan untuk memanggil kaedah Ethereum RPC.

Peraturanexchange.IO("api", "eth", ...)fungsi mengembalikan nilai pulangan kaedah RPC yang dipanggil. string, nombor, bool, objek, array, null dan semua jenis lain yang disokong oleh sistem

exchange.IO(k, blockChain, rpcMethod)exchange.IO(k, blockChain, rpcMethod,...args)

Peraturankparameter digunakan untuk menetapkan fungsiexchange.IO()fungsi, ditetapkan kepada"api"menunjukkan bahawa fungsi digunakan untuk memperluaskan permintaan panggilan. k betul senar PeraturanblockChainparameter digunakan untuk menetapkan fungsiexchange.IO()fungsi, ditetapkan kepada"eth"menunjukkan bahawa fungsi digunakan untuk panggilan kaedah RPC di Rangkaian Ethereum. blockChain betul senar PerkhidmatanrpcMethodParameter digunakan untuk menetapkan kaedah RPC yang akan dipanggil olehexchange.IO()fungsi. rpcMethod betul senar Peraturanargparameter digunakan untuk menentukan parameter kaedah RPC yang akan dipanggil.argJenis dan bilanganargparameter bergantung kepada kaedah RPC yang ditentukan olehrpcMethodparameter. arg palsu string, nombor, bool, objek, array, fungsi, null, dan semua jenis lain yang disokong oleh sistem

function main() {
    // "owner" needs to be replaced with the specific wallet address
    // Parameter labels for the "latest" string position: 'latest', 'earliest' or 'pending', please refrer to https://eth.wiki/json-rpc/API#the-default-block-parameter
    // The return value ethBalance is a hexadecimal string: 0x9b19ce56113070
    var ethBalance = exchange.IO("api", "eth", "eth_getBalance", "owner", "latest")              

    // ETH has a precision unit of 1e18
    var ethDecimal = 18              

    // Because of the JavaScript language precision, it is necessary to use the system underlying package function BigInt, BigDecimal to process
    // Convert ethBalance to readable amount, 0x9b19ce56113070 to 0.043656995388076145
    Log(Number((BigDecimal(BigInt(ethBalance))/BigDecimal(Math.pow(10, ethDecimal))).toString()))
}

Periksa baki ETH dalam dompet anda:

function mian() {
    // ETH has a precision unit of 1e18
    var ethDecimal = 18  

    // Number of transfers, readable amount e.g. 0.01 ETH
    var sendAmount = 0.01  

    // Due to the JavaScript language precision, it is necessary to use the system underlying encapsulated functions BigInt, BigDecimal to process, and to convert the readable amount to the data processed on the chain
    var toAmount = (BigDecimal(sendAmount)*BigDecimal(Math.pow(10, ethDecimal))).toFixed(0)
    
    // "toAddress" is the address of the recipient's ETH wallet at the time of the transfer, which needs to be filled in specifically, and toAmount is the number of transfers
    exchange.IO("api", "eth", "send", "toAddress", toAmount)
}

Untuk pemindahan ETH, anda boleh menetapkan{gasPrice: 11, gasLimit: 111, nonce: 111}parameter, yang ditetapkan pada parameter terakhirexchange.IO()Anda boleh mengabaikannoncedan menggunakan sistem lalai, atau meninggalkangasLimit/gasPrice/noncemematikan dan menggunakan nilai lalai sistem untuk semua.

function toAmount(s, decimals) {
    return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}

function main() {
    var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
    Log("gasPrice:", toAmount(gasPrice, 0))   // 5000000000 , in wei (5 gwei)
}

SoalangasPrice:

function toAmount(s, decimals) {
    // The toAmount function can convert hex-encoded values to decimal values
    return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}                

function main() {
    // Coding approve (authorization) method calls
    var data = exchange.IO("encode", "0x111111111117dC0aa78b770fA6A738034120C302", "approve", "0xe592427a0aece92de3edee1f18e0157c05861564", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
    Log("data:", data)
    var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
    Log("gasPrice:", toAmount(gasPrice, 0))
    var obj = {
        "from" : "0x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",   // walletAddress
        "to"  : "0x111111111117dC0aa78b770fA6A738034120C302",
        "gasPrice" : gasPrice,
        "value" : "0x0",
        "data" : "0x" + data,
    }
    
    var gasLimit = exchange.IO("api", "eth", "eth_estimateGas", obj)
    Log("gasLimit:", toAmount(gasLimit, 0))
    Log("gas fee", toAmount(gasLimit, 0) * toAmount(gasPrice, 0) / 1e18)
}

Soalaneth_estimateGas:

Parameter keduaexchange.IO()fungsi dengan"eth"boleh langsung memanggil kaedah RPC yang tersedia untuk pelayan node Ethereum.

{@fun BigDecimal}, {@fun BigInt}

pertukaran.IO (("abi",...) pertukaran.IO (("kod",...)