이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
방법은constant
ERC20의 방법은 가스 소비를 생성하지 않으며 특정 계약 주소에 대한 승인 된 토큰 금액을 검색 할 수 있습니다.allowance
이 방법은 2개의 매개 변수를 취하고, 첫 번째는 지갑 주소이고 두 번째는 승인 주소입니다. 반환 값: 토큰의 승인 금액.
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
방법 호출, 당신은 공개 가능한 플랫폼을 참조할 수 있습니다
이 부분에서는 위조 코드를 사용하여 몇 가지 세부 사항을 설명합니다.
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
설정 해제하고 모든 시스템 기본값을 사용하세요.