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

ウェブ3

exchange.IO("アビ"...)

FMZ Quant トレーディング プラットフォームでは,主に様々な機能を実装し,ブロックチェーンに関連する呼び出しをexchange.IO()機能について説明しますexchange.IO()呼び出し方法は,その機能に応じて別々に機能します.exchange.IO("abi", ...)ABI を登録するために使用されます.

exchange.IO(k,アドレス,abiContent)

についてkパラメータは,機能の設定に使用されますexchange.IO()設定されている"abi"この関数は登録するために使用されます.ABI- わかった k 本当 文字列 についてaddressパラメータはスマートコントラクトのアドレスを指定するために使用されます. アドレス 本当 文字列 についてabiContentパラメータは,指定するために使用されますABIスマートコントラクトです abiコンテンツ 本当 文字列

function main() {
    // register Uniswap SwapRouter02 abi
    var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
    
    // Get the ```ABI``` content of the contract can be obtained with the following URL, taking the ```result``` field only, e.g:
    exchange.IO("abi", routerAddress, abi)
}

スマートコントラクトを呼び出す方法は,標準ERC20方法である場合は登録する必要はありません. 持ってきてABI契約内容は,次のURLで取得できます.resultフィールドのみ,例えば:

https://api.etherscan.io/api?module=contract&action=getabi&address=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45

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メソッドを呼び出すことができます

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

exchange.IO("コード",...)

についてexchange.IO("encode", ...)データのエンコーディングのために呼び出されます.

についてexchange.IO("encode", ...)暗号化されたデータを返します. 文字列

exchange.IO(k,データフォーマット,...args)exchange.IO(k,アドレス,データ形式)exchange.IO(k,アドレス,データ 形式,... args)

についてkパラメータは,機能の設定に使用されますexchange.IO()設定されている"encode"この関数はデータコーディングに使用される. k 本当 文字列 についてaddressスマートコントラクトのアドレスを設定するために使用されます.exchange.IO("encode", ...)機能, 通過するaddressスマートコントラクトのメソッド呼び出しの暗号化を示します.exchange.IO("encode", ...)機能,もしaddressパラメータが渡されない場合,この関数は指定された型順序をコードするために使用され,機能的に同等である.abi.encodeSolidity- わかった アドレス 偽り 文字列 についてdataFormatパラメータは,暗号化されたデータの方法,タイプ,順序を指定するために使用されます. data 形式 本当 文字列 についてargパラメータは,特定のデータ値を指定するために使用されます.dataFormatパラメーターは,一つ以上あります.argパラメータ,およびargパラメータは,dataFormatパラメータ設定 アルグ 偽り 文字列,数,タプル,配列,およびシステムによってサポートされる他のすべてのタイプ

function main() {
    // Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
    // Calling the unwrapWETH9 method requires registering the ABI first, which is omitted here
    // "owner" represents the wallet address, which need to fill in the specific, 1 represents the number of unpacking, unpacking a WETH into ETH
    var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
    Log(data)
}

暗号化メソッドを呼び出すunwrapWETH9:

function main() {
    var x = 10 
    var address = "0x02a5fBb259d20A3Ad2Fdf9CCADeF86F6C1c1Ccc9"
    var str = "Hello World"
    var array = [1, 2, 3]
    var ret = exchange.IO("encode", "uint256,address,string,uint256[]", x, address, str, array)   // uint i.e. uint256 , the type length needs to be specified on FMZ
    Log("ret:", ret)
    /*
    000000000000000000000000000000000000000000000000000000000000000a    // x
    00000000000000000000000002a5fbb259d20a3ad2fdf9ccadef86f6c1c1ccc9    // address
    0000000000000000000000000000000000000000000000000000000000000080    // Offset of str
    00000000000000000000000000000000000000000000000000000000000000c0    // Offset of array
    000000000000000000000000000000000000000000000000000000000000000b    // The length of str
    48656c6c6f20576f726c64000000000000000000000000000000000000000000    // str data
    0000000000000000000000000000000000000000000000000000000000000003    // The length of the array
    0000000000000000000000000000000000000000000000000000000000000001    // array the first data
    0000000000000000000000000000000000000000000000000000000000000002    // array the second data
    0000000000000000000000000000000000000000000000000000000000000003    // array the third data
    */
}

暗号化例と同じですabi.encodeSolidity:

function main() {
    var types = "tuple(a uint256,b uint8,c address),bytes"
    var ret = exchange.IO("encode", types, {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }, "0011")
    Log("encode: ", ret)
}

トゥップルまたはトゥップルを含むタイプ順序のエンコーディングをサポートします. このタイプオーダーは,tuple, bytesだから電話をする時exchange.IO()2つのパラメータを入力します.

    1. トゥープル型に対応する変数:
    
    {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }
    
    

    送信されたパラメータは,また,構造とタイプのtuple定義されているようにtypesフォームのパラメータ:tuple(a uint256,b uint8,c address).

    1. 型に対応する変数bytes:
    "0011"
    
function main() {
    var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"]   // ETH address, USDT address
    var ret = exchange.IO("encode", "address[]", path)
    Log("encode: ", ret)
}

配列または配列を含むタイプの連続的なコーディングをサポートします.

についてexchange.IO()この関数は,encode函数呼び出しコードをhex特定の用途については,公開されているプラットフォームを参照してください.Uniswap V3 Trade テンプレート- わかった 暗号化方法がスマートコントラクトを呼び出す場合,対応するABIを最初に登録する必要があります.

exchange.IO"エンコードパック"

についてexchange.IO("encodePacked", ...)この関数は,encodePacked encoding.

についてexchange.IO("encodePacked", ...)この関数は,encodePacked暗号化されたデータ 文字列

exchange.IO(k,データフォーマット,...args)

についてkパラメータは,機能の設定に使用されますexchange.IO()設定されている"encodePacked"この関数がデータに使用されるという意味ですencodePacked暗号化する k 本当 文字列 についてdataFormatパラメータは,種類と順序を指定するために使用されますencodePacked暗号化されたデータ data 形式 本当 文字列 についてargパラメータは,特定のデータ値を指定するために使用されます.dataFormatパラメーターは,一つ以上あります.argパラメータ,およびargパラメータは,dataFormatパラメータ設定 アルグ 本当 文字列,数,タプル,配列,およびシステムによってサポートされる他のすべてのタイプ

function main() {
    var fee = exchange.IO("encodePacked", "uint24", 3000)
    var tokenInAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
    var tokenOutAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"
    var path = tokenInAddress.slice(2).toLowerCase()
    path += fee + tokenOutAddress.slice(2).toLowerCase()
    Log("path:", path)
}

服用時にUniswap V3交換経路のようなパラメータを通す必要があります.encodePackedコード操作:

exchange.IO("解読",...)

についてexchange.IO("decode", ...)解読に使われる方法で呼び出されます

についてexchange.IO("decode", ...)文字列を返します.dataFormat数値が 1 つ以上ある場合,配列を返します.dataFormatパラメーター array、string について

exchange.IO(k,データ 形式,データ)

についてkパラメータは,機能の設定に使用されますexchange.IO()機能,そしてそれを設定"decode"この関数はデータ解読に使用される. k 本当 文字列 についてdataFormatパラメータは,解読されたデータの種類と順序を指定するために使用されます. data 形式 本当 文字列 についてdataパラメーターは,解読されるデータを設定するために使用されます. データ 本当 文字列

function main() {
    var types = "tuple(a uint256,b uint8,c address),bytes"
    var ret = exchange.IO("encode", types, {
        a: 30,
        b: 20,
        c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    }, "0011")
    Log("encode: ", ret)            

    var rawData = exchange.IO("decode", types, ret)
    Log("decode:", rawData)
}

逆の操作exchange.IO("encode", ...)機能:

function main() {
    // register SwapRouter02 abi
    var walletAddress = "0x398a93ca23CBdd2642a07445bCD2b8435e0a373f"
    var routerAddress = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var abi = `[{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct IV3SwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"}]`
    exchange.IO("abi", routerAddress, abi)   // abi only uses the contents of the local exactOutput method, the full abi can be searched on the Internet              

    // encode path
    var fee = exchange.IO("encodePacked", "uint24", 3000)
    var tokenInAddress = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
    var tokenOutAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7"
    var path = tokenInAddress.slice(2).toLowerCase()
    path += fee + tokenOutAddress.slice(2).toLowerCase()
    Log("path:", path)              

    var dataTuple = {
        "path" : path, 
        "recipient" : walletAddress, 
        "amountOut" : 1000, 
        "amountInMaximum" : 1, 
    }
    // encode SwapRouter02 exactOutput 
    var rawData = exchange.IO("encode", routerAddress, "exactOutput", dataTuple)
    Log("method hash:", rawData.slice(0, 8))   // 09b81346
    Log("params hash:", rawData.slice(8))              

    // decode exactOutput params
    var decodeRaw = exchange.IO("decode", "tuple(path bytes,recipient address,amountOut uint256,amountInMaximum uint256)", rawData.slice(8))
    Log("decodeRaw:", decodeRaw)
}

この例では,まずencodePacked操作についてpathパラメータ処理exactOutput後で暗号化される必要がある方法呼び出しが必要です.path設定されたパラメータです.encodeについてexactOutputルーティング契約の方法,タイプパラメータが1つだけtuple方法名exactOutputこのコードは:0x09b81346,そして,exchange.IO("decode", ...)解読する方法decodeRaw変数と一致するdataTuple.

データ処理については,exchange.IO()暗号化だけでなく解読もサポートします

exchange.IO("鍵"...)

についてexchange.IO("key", ...)プライベートキーを切り替えるように呼びます

exchange.IO(k,キー)

パラメータk機能を設定するために使用されます.exchange.IO()設定されている"key"この関数はプライベートキーを切り替えるのに使われます k 本当 文字列 についてkeyパラメーターはプライベートキーを設定するために使用されます キー 本当 文字列

function main() {
    exchange.IO("key", "Private Key")   // "Private Key" represents the private key string, which needs to be filled in specifically
}

についてexchange.IO()この機能は,プライベートキーの切り替えをサポートし,複数のウォレットアドレスを操作できます.複数のウォレットアドレスを操作するために,複数の交換オブジェクトを追加することも可能です (参照: {@var/EXCHANGE/exchanges exchanges}).

exchange.IO(アピ)

についてexchange.IO("api", ...)スマートコントラクトのメソッドを呼び出すのに使われます.

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

exchange.IO(k,住所,方法)exchange.IO(k,アドレス,方法,... args)exchange.IO(k,アドレス,方法,値,... args)

についてkパラメータは,機能の設定に使用されますexchange.IO()設定されている"api"呼び出し要求を拡張するために使用されていることを示します. k 本当 文字列 についてaddressパラメータはスマートコントラクトのアドレスを指定するために使用されます. アドレス 本当 文字列 についてmethodこのパラメータは,呼び出すスマートコントラクトのメソッドを指定するために使用されます. 方法 本当 文字列 についてvalue送信されるETHの量を設定するために使用されます.stateMutability実行されるスマートコントラクトメソッドの属性はpayableそしてvalueパラメータをパスする必要があります."stateMutability": "payable"ABI から見ることができます.exchange.IO()必要なパラメータを決定します.stateMutability登録されたABIの属性.stateMutability属性はnonpayableそしてvalueパラメータは渡す必要はありません. 価値 偽り 数、文字列 についてargパラメータは,呼び出されるスマートコントラクトのメソッドのパラメータを指定するために使用されます.argパラメータ,およびarg呼び出すためのスマートコントラクトの方法に依存します アルグ 偽り 文字列,数, bool,およびシステムによってサポートされる他のすべてのタイプ

function main(){
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"    // The contract address of the token, the token is 1INCH in the example
    Log(exchange.IO("api", tokenAddress, "decimals"))                  // Query, print 1INCH tokens with precision index of 18
}

についてdecimals方法としてconstantERC20 の方法で,ガス消費を発生せず,トークンの精度データをクエリすることができます.decimals方法にはパラメータがない.返却値:トークンの精度データ.

function main(){
    // The contract address of the token, in the example the token is 1INCH
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                          

    // For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
    Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))   
}

についてallowance方法としてconstant特定の契約アドレスに対するトークンの許可された金額をクエリすることができます.allowanceこの方法には2つのパラメータがあります.最初のパラメータはウォレットアドレスで,もう1つは認証アドレスです.返却値:トークンの認証金額です.
owner: 財布の住所,例は文字列ownerに置き換えられ,実際の使用は特定の住所を記入する必要があります.spender: 許可された契約の住所,例は文字列で置き換えられます spender,実際の使用は,特定の住所を記入する必要があります.Uniswap V3 router v1 address.

function main(){
    // The contract address of the token, the token is 1INCH in the example
    var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"                 

    // 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", "0xde0b6b3a7640000"))  
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.  
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
    var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
    var tokenInName = "ETH"
    var amountIn = 0.01
    var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100}   // This is an example, depending on the actual scene settings
    var data = ""                                                       // The encoded data, here is the empty string, depending on the actual scene settings
    var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}

についてmulticallこの方法はconstant方法Uniswap V3複数の方法でトークンを換算するために使用されます についてmulticall方法にはパラメータをパスする様々な方法がある場合,特定の方法を含む ABI をチェックできます.メソッドを呼び出す前に ABI を登録する必要があります.返回値: txid.

具体例についてはmulticall公開されているプラットフォームを参照できます.Uniswap V3 Trade テンプレート

いくつかの詳細は 擬似コードで説明されています


exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)

ContractV3SwapRouterV2: Uniswap V3のルーター v2のアドレスvalue: 交換取引のトークンはETHでない場合,転送するETHの金額を0に設定します.deadline: deadlineは,このパラメータです.multicall(new Date().getTime() / 1000) + 3600 に設定できる方法で,1時間有効であることを示します.data: dataは,このパラメータです.multicall方法,行なわれる梱包作業のデータ

似たものexchange.IO("api", "eth", "send", "toAddress", toAmount)についてgasLimit/gasPrice/nonce呼び出すときに指定できます.multicall方法について 偽コードを使って説明します


exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})

パラメータ{gasPrice: 11, gasLimit: 111, nonce: 111}特定の必要に応じて設定することができます.exchange.IO()機能 省略してもいいnonceシステムデフォルト値を使用するgasLimit/gasPrice/nonceシステムデフォルト値をすべてに有効にします

exchange.IO("住所")

についてexchange.IO("address")この関数は, {@var/EXCHANGE exchange} exchange オブジェクトによって設定された財布のアドレスを取得するように呼び出されます.

についてexchange.IO("address")設定されたウォレットアドレスを返します. 文字列

exchange.IO(k)

についてkパラメータは,機能の設定に使用されますexchange.IO()設定されている"address"この関数は設定されたウォレットアドレスを取得するために使用されます. k 本当 文字列

function main() {
    Log(exchange.IO("address"))         // Print the wallet address of the private key configured on the exchange object
}

exchange.IO("ベース",...)

についてexchange.IO("base", ...)RPCノードアドレスを設定する方法で呼び出されます.

exchange.IO(k アドレス)

についてkパラメータは,機能の設定に使用されますexchange.IO()設定されている"base"この関数は RPC ノードを切り替えるのに使われます. k 本当 文字列 についてaddressこのパラメータは,RPCノードアドレスを設定するために使用されます. アドレス 本当 文字列

function main() {
    var chainRpc = "https://bsc-dataseed.binance.org"
    e.IO("base", chainRpc)    // Switching to BSC chain
}
TA