다음 컨텐츠는 일부 스마트 계약 방법 호출의 예입니다.
소수
의decimals
방법은constant
방법ERC20
생성하지 않는gas
소비, 그리고 그것은 정밀 데이터를 검색 할 수 있습니다token
...
의decimals
매개 변수는 없습니다. 반환 값:token
.
function main(){
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302" // The contract address of the token, in the example the token is 1INCH
Log(exchange.IO("api", tokenAddress, "decimals")) // Query, print 1INCH tokens with precision index of 18
}
보조금
의allowance
방법은constant
방법ERC20
생성하지 않는gas
소비, 그리고 그것은 특정의 허가된 양을 검색 할 수 있습니다.token
특정 계약 주소로
의allowance
이 방법은 2개의 매개 변수를 통과해야 합니다. 첫 번째는 지갑 주소이고 두 번째는 승인 주소입니다. 반환 값:token
.
function main(){
// The contract address of the token, in the example the token is 1INCH
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
var owner = ""
var spender = ""
// For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the current exchange object bound to the wallet to the spender address authorized 1 1INCH.
Log(exchange.IO("api", tokenAddress, "allowance", owner, spender))
}
owner
: 지갑 주소는 예제에서 문자열 spender
: 허가 계약 주소는 문자열에 의해 대체됩니다. 실제 사용에서, 당신은 예를 들어 주소를 구체적으로 채워야 합니다.Uniswap V3 router v1
.
승인
의approve
이 방법은constant
방법ERC20
생성하는gas
소비를 허용하는 데 사용됩니다.token
거래 금액은 특정 계약 주소입니다.
의approve
이 방법은 2개의 매개 변수를 통과해야 합니다. 첫번째는 승인될 주소이고 두번째는 승인된 금액입니다.txid
.
function main(){
// The contract address of the token, in the example the token is 1INCH
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
var spender = ""
var amount = "0xde0b6b3a7640000"
// 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, amount))
}
spender
: 허가 계약의 주소는, 예를 들어 문자열에 의해 대체됩니다Uniswap V3 router v1
address.
amount
: 여기 hexadecimal 문자열을 사용하여 표시 된 권한의 수는 decimal 값에 해당합니다.1e18
,token
예제에서의 정밀 단위 (즉, 1e18) 는 1을 낸다.token
authorized.
세 번째 매개 변수는exchange.IO
함수가 전달됩니다 방법 이름approve
, 이 또한 형태로 작성 될 수 있습니다methodId
, 예를 들어:
복수 호출
의multicall
이 방법은 일정한 방법이 아닙니다Uniswap V3
, 이것은 생성gas
소비되고 여러 가지 방법으로 토큰을 교환하는 데 사용됩니다.
의multicall
메소드는 매개 변수를 전달하는 여러 메소드를 가질 수 있습니다. 자세한 내용은 메소드를 포함하는 ABI에 문의할 수 있습니다. 메소드를 호출하기 전에 ABI를 등록해야합니다. 반환 값:txid
.
구체적인 예제multicall
방법 호출, 대중을 참조하십시오
function main() {
var ABI_Route = ""
var contractV3SwapRouterV2 = ""
var value = 0
var deadline = (new Date().getTime() / 1000) + 3600
var data = ""
exchange.IO("abi", contractV3SwapRouterV2, ABI_Route)
exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
}
ABI_Route
: Uniswap V3contractV3SwapRouterV2
: Uniswap V3의 라우터 v2 주소, 실제 사용은 특정 주소를 입력해야 합니다...value
: ETH의 양을 전송, 0으로 설정tokenIn
거래 거래에 필요한 토큰은 ETH가 아니라 실제 상황에 따라 채워야 합니다.deadline
: 설정할 수 있습니다(new Date().getTime() / 1000) + 3600
1시간 동안 유효합니다.data
: 수행해야 하는 포장 작업의 데이터는 실제 상황에 따라 채워야 합니다.
또한gasLimit/gasPrice/nonce
메소드 호출 설정:
exchange.IO("api", contractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 5000000000, gasLimit: 21000})
매개 변수를 설정할 수 있습니다{gasPrice: 5000000000, gasLimit: 21000, nonce: 100}
당신의 특정 필요에 따라, 매개 변수는exchange.IO
기능.
방치 할 수 있습니다.nonce
그리고 시스템 기본값을 사용하거나 설정하지 않습니다gasLimit/gasPrice/nonce
그리고 모든 시스템 기본값을 사용하세요.
이 예제에서,stateMutability
안쪽multicall(uint256,bytes[])
방법은payable
, 그리고value
매개 변수를 입력해야 합니다.
그 속성stateMutability":"payable"
이 부분의 본문은ABI
.exchange.IO
함수는 요구되는 매개 변수를stateMutability
속성ABI
등록됐습니다.
만약stateMutability
속성은nonpayable
, 매개 변수value
전달할 필요가 없습니다.