리소스 로딩... 로딩...

웹3

exchange.IO("Abi",...)

FMZ 퀀트 트레이딩 플랫폼에서는 주로 다양한 기능을 구현합니다.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("api", eth,...)

호출 방법exchange.IO("api", "eth", ...)이 함수는 이더리움 RPC 메소드를 호출하는 데 사용됩니다.

exchange.IO("api", "eth", ...)함수는 호출된 RPC 방법의 반환 값을 반환합니다. 문자열, 숫자, bool, object, array, null 및 시스템에서 지원하는 다른 모든 타입

exchange.IO(k, 블록 체인, rpc 메소드)exchange.IO(k, 블록 체인, rpc 메소드,...args)

k매개 변수exchange.IO()함수, 설정"api"함수가 호출 요청을 확장하는 데 사용되는 것을 나타냅니다. k 사실 문자열 의blockChain매개 변수exchange.IO()함수, 설정"eth"함수가 Ethereum 네트워크에서 RPC 메소드 호출에 사용된다는 것을 나타냅니다. 블록 체인 사실 문자열 의rpcMethod이 매개 변수는 RPC 메소드를 설정하는 데 사용됩니다.exchange.IO()기능. rpc 방법 사실 문자열 의arg매개 변수는 호출되는 RPC 메소드의 매개 변수를 지정하는 데 사용됩니다.arg매개 변수arg그 매개 변수들은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:

두 번째 매개 변수는exchange.IO()함수"eth"이더리움 노드 서버에서 사용할 수 있는 RPC 메소드를 직접 호출할 수 있습니다.

###############################################################################################################################################################################################################################################################

exchange.IO("코드",...)

exchange.IO("encode", ...)데이터 인코딩을 위해 함수가 호출됩니다.

exchange.IO("encode", ...)함수는 암호화된 데이터를 반환합니다. 문자열

exchange.IO(k, dataFormat,...args)exchange.IO(k, 주소, 데이터 포맷)exchange.IO(k, 주소, 데이터 포맷,...args)

k매개 변수exchange.IO()함수, 설정"encode"함수는 데이터 코딩에 사용됩니다. k 사실 문자열 의address이 매개 변수는 스마트 계약의 주소를 설정하는 데 사용됩니다.exchange.IO("encode", ...)기능,address매개 변수는 스마트 계약에 메소드 호출을 코딩을 나타냅니다.exchange.IO("encode", ...)기능, 만약address매개 변수가 전달되지 않는 경우, 함수는 지정된 타입 순서를 코딩하는 데 사용되며 기능적으로abi.encode안쪽Solidity... 주소 거짓 문자열 의dataFormat이 매개 변수는 암호화된 데이터의 방법, 유형 및 순서를 지정하는 데 사용됩니다. 데이터 형식 사실 문자열 의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.encode안쪽Solidity:

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()인코딩을 위해, 당신은 두 개의 매개 변수를 전달해야 합니다:

    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 무역 템플릿- 네 코드 메소드가 스마트 컨트랙트를 호출할 때 해당 ABI가 먼저 등록되어야 합니다.

exchange.IO("코드 포장",...)

exchange.IO("encodePacked", ...)함수에서 호출되는 방식은encodePacked encoding.

exchange.IO("encodePacked", ...)함수는encodePacked암호화된 데이터 문자열

exchange.IO(k, dataFormat,...args)

k매개 변수exchange.IO()함수, 설정"encodePacked"함수가 데이터에 사용되는 것을 의미합니다.encodePacked코딩. k 사실 문자열 의dataFormat매개 변수는 종류와 순서를 지정하는 데 사용됩니다encodePacked암호화된 데이터 데이터 형식 사실 문자열 의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", ...)function는 해독된 데이터를 반환합니다.dataFormat매개 변수. 매개 변수에 의해 지정된 하나 이상의 데이터가 있을 때 배열을 반환dataFormat매개 변수 배열,string

exchange.IO(k, data포맷, 데이터)

k매개 변수exchange.IO()기능, 그리고 설정"decode"함수가 데이터 디코딩에 사용된다는 뜻입니다. k 사실 문자열 의dataFormat이 매개 변수는 복호화된 데이터의 종류와 순서를 지정하는 데 사용됩니다. 데이터 형식 사실 문자열 의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매개 변수로encodeexactOutput라우팅 계약의 방법, 타입의 하나의 매개 변수만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()함수는 개인 키를 전환하는 것을 지원하며 여러 지갑 주소를 조작할 수 있습니다. 여러 지갑 주소를 조작하기 위해 여러 교환 객체를 추가 할 수도 있습니다.

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

exchange.IO("api", ...)이 함수는 스마트 계약의 메소드를 호출하는 데 사용되는 방식으로 호출됩니다.

exchange.IO("api", ...)함수는 소위 스마트 계약 방법의 반환 값을 반환합니다. 문자열, 숫자, bool, object, array, 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방법은constant이 ERC20의 방법은 가스 소비를 발생하지 않으며 토큰의 정확성 데이터를 검색 할 수 있습니다.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방법은constantERC20의 방법은 가스 소비를 생성하지 않으며 특정 계약 주소에 대한 승인 된 토큰 금액을 검색 할 수 있습니다.allowance이 방법은 2개의 매개 변수를 취하고, 첫 번째는 지갑 주소이고 두 번째는 승인 주소입니다. 반환 값: 토큰의 승인 금액.
owner: 지갑의 주소는, 예제는 문자열 owner에 의해 대체됩니다, 실제 사용은 특정 주소를 채워야 합니다.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 무역 템플릿

이 부분에서는 위조 코드를 사용하여 몇 가지 세부 사항을 설명합니다.


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.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