দ্যexchange.IO("decode", ...)
ফাংশনটি ডিকোডিংয়ের জন্য ব্যবহৃত হয়।
দ্যexchange.IO("decode", ...)
ফাংশনটি ডিকোড করা ডেটা ফেরত দেয়। স্ট্রিং ফেরত দেয় যখন শুধুমাত্র একটি ডেটা নির্দিষ্ট করা হয়dataFormat
প্যারামিটার. একটি অ্যারে রিটার্ন করে যখন একটির বেশি ডেটা নির্দিষ্ট করা হয়dataFormat
প্যারামিটার।
অ্যারে, স্ট্রিং
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()
ফাংশন শুধুমাত্র এনকোডিং সমর্থন করে না, কিন্তু এছাড়াও ডিকোডিং.