이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
매개 변수로encode
의exactOutput
라우팅 계약의 방법, 타입의 하나의 매개 변수만tuple
방법 이름exactOutput
코딩:0x09b81346
, 그리고exchange.IO("decode", ...)
그 결과의 암호를 해독하는 방법decodeRaw
, 변수와 일치합니다dataTuple
.
데이터 처리를 위해,exchange.IO()
이 기능은 암호화뿐만 아니라 해독도 지원합니다.