資源の読み込みに... 荷物...

exchange.IO"アピ"は"th"で

呼び出す方法exchange.IO("api", "eth", ...)この関数は Ethereum RPC メソッドを呼び出すのに使われます

についてexchange.IO("api", "eth", ...)この関数は,呼び出された RPC メソッドの返却値を返します. 文字列,数, bool,オブジェクト,配列,null,およびシステムでサポートされる他のすべてのタイプ

exchange.IO(k,ブロックチェーン,rpcメソッド)exchange.IO(k,blockChain,rpcメソッド,...args)

についてkパラメータは,機能の設定に使用されますexchange.IO()設定されている"api"呼び出し要求を拡張するために使用されていることを示します. k 本当 文字列 についてblockChainパラメータは,機能の設定に使用されますexchange.IO()設定されている"eth"この関数は,Ethereumネットワーク上の RPC メソッド呼び出しに使用されていることを示します. ブロックチェーン 本当 文字列 についてrpcMethod呼び出す RPC メソッドを設定するために使用されます.exchange.IO()機能 rpcメソッド 本当 文字列 についてarg呼び出す RPC メソッドのパラメータを指定するために使用されます.argパラメータの種類と数argRPC 方法によって決定されます.rpcMethodパラメーター アルグ 偽り 文字列,数, bool,オブジェクト,配列,関数,null,およびシステムでサポートされる他のすべてのタイプ

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()))
}

財布のETHの残高を確認してください.

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)
}

ETHの送金には,{gasPrice: 11, gasLimit: 111, nonce: 111}パラメータ,最後のパラメータに設定されますexchange.IO()特定のニーズに応じて機能します.nonceシステムデフォルトを使用し,または残すgasLimit/gasPrice/nonceシステムデフォルト値をすべてに有効にします

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)
}

問い合わせgasPrice:

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)
}

問い合わせeth_estimateGas:

この2番目のパラメータはexchange.IO()機能する"eth"直接Ethereumノードサーバーに利用可能な RPCメソッドを呼び出すことができます

{@楽しいビッグデシマル} {@楽しいビッグイン}

交換する. 交換する.IO (("コード",...)