ডেটা প্রক্রিয়াকরণ শুধুমাত্র কোডিং সমর্থন করে না (encode
), কিন্তু ডিকোডিং (decode
) ব্যবহার করুনexchange.IO("decode", types, rawData)
কার্য সম্পাদন করার জন্যdecode
operation.
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
, যা ফলাফল ডিকোড করা হয়decodeRaw
দ্বারাexchange.IO ("decode",...)
পদ্ধতি, এবং এটি পরিবর্তনশীল সঙ্গে সামঞ্জস্যপূর্ণdataTuple
.