ڈیٹا پروسیسنگ نہ صرف کوڈنگ کی حمایت (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
.