이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()
인코딩을 위해, 당신은 두 개의 매개 변수를 전달해야 합니다:
{
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}
전달된 매개 변수는 또한 구조와 유형의tuple
, 그 정의에 따라types
양식의 매개 변수:tuple(a uint256,b uint8,c address)
.
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
문자열 형식입니다. 특정 사용을 위해 공개된 플랫폼을 참조할 수 있습니다.