کےexchange.IO("decode", ...)
فنکشن کو اس طرح بلایا جاتا ہے جو ڈیکوڈنگ کے لئے استعمال ہوتا ہے۔
کےexchange.IO("decode", ...)
تقریب کوڈت اعداد و شمار واپس کرتا ہے. ایک تار واپس کرتا ہے جب صرف ایک ڈیٹا کی طرف سے مخصوص ہےdataFormat
پیرامیٹر. ایک صف لوٹاتا ہے جب ایک سے زیادہ اعداد و شمار کی طرف سے مخصوص ہیںdataFormat
پیرامیٹر.
صف٬سلسلہ
exchange.IO(k، ڈیٹا فارمیٹ، ڈیٹا)
کے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()
فنکشن نہ صرف کوڈنگ کی حمایت کرتا ہے، بلکہ ڈیکوڈنگ.