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

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설정 해제하고 모든 시스템 기본값을 사용하세요.

교환.IO (("키",...) 교환.IO (("주소")