ایف ایم زیڈ کوانٹ ٹریڈنگ پلیٹ فارم میں ، یہ بنیادی طور پر مختلف افعال کو نافذ کرتا ہے ، بلاکچین سے متعلق کالز کے ذریعےexchange.IO()
مندرجہ ذیل دستاویز میںexchange.IO()
اس کے فنکشن کے مطابق الگ الگ کام.exchange.IO("abi", ...)
ایک ABI رجسٹر کرنے کے لئے استعمال کیا جاتا ہے.
exchange.IO(k، پتہ، abiContent)
کےk
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"abi"
کا مطلب ہے کہ اس فنکشن کو رجسٹر کرنے کے لئے استعمال کیا جاتا ہےABI
.
k
سچ
سٹرنگ
کےaddress
اسمارٹ معاہدے کا پتہ بتانے کے لئے پیرامیٹر استعمال کیا جاتا ہے۔
ایڈریس
سچ
سٹرنگ
کےabiContent
پیرامیٹر کی وضاحت کرنے کے لئے استعمال کیا جاتا ہےABI
اسمارٹ کنٹریکٹ کا۔
abiContent
سچ
سٹرنگ
function main() {
// register Uniswap SwapRouter02 abi
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"}]`
// Get the ```ABI``` content of the contract can be obtained with the following URL, taking the ```result``` field only, e.g:
exchange.IO("abi", routerAddress, abi)
}
اسمارٹ کنٹریکٹ کو کال کرنے کے طریقوں کو رجسٹر کرنے کی ضرورت نہیں ہے اگر وہ معیاری ERC20 طریقوں ہیں۔
لے لوABI
معاہدے کا مواد مندرجہ ذیل URL پر حاصل کیا جا سکتا ہے،result
صرف میدان، مثال کے طور پر:
https://api.etherscan.io/api?module=contract&action=getabi&address=0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
کال کرنے کا طریقہexchange.IO("api", "eth", ...)
تقریب Ethereum RPC طریقہ کار کو کال کرنے کے لئے استعمال کیا جاتا ہے.
کےexchange.IO("api", "eth", ...)
فنکشن بلایا RPC طریقہ کار کی واپسی کی قیمت لوٹاتا ہے.
string, number, bool, object, array, null اور سسٹم کی معاونت کرنے والی دیگر تمام اقسام
exchange.IO(k، بلاکچین، rpcMethod)exchange.IO(k، بلاکچین، rpcMethod،...args)
کےk
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"api"
اشارہ کرتا ہے کہ فنکشن کو کال کی درخواست کو بڑھانے کے لئے استعمال کیا جاتا ہے.
k
سچ
سٹرنگ
کےblockChain
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"eth"
اشارہ کرتا ہے کہ یہ فنکشن ایتھرئم نیٹ ورک پر آر پی سی طریقہ کار کالوں کے لئے استعمال ہوتا ہے۔
بلاکچین
سچ
سٹرنگ
کےrpcMethod
پیرامیٹر کی طرف سے بلایا جائے گا RPC طریقہ مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن.
rpc طریقہ
سچ
سٹرنگ
کےarg
پیرامیٹر استعمال کیا جاتا ہے RPC طریقہ کار کے پیرامیٹرز کی وضاحت کرنے کے لئے بلایا جائے گا. ایک سے زیادہ ہو سکتا ہےarg
پیرامیٹر۔ قسم اور تعدادarg
پیرامیٹرز RPC طریقہ کار کی طرف سے مخصوص پر انحصارrpcMethod
پیرامیٹر.
ارگ
غلط
string, number, bool, object, array, function, null, and all other types supported by the system string, number, bool, object, array, function, null, and all other types supported by the system string, number, bool, object, array, function, null, and all other types supported by the system string, number, bool, object, array, function, function, null, and all other types supported by the system
function main() {
// "owner" needs to be replaced with the specific wallet address
// Parameter labels for the "latest" string position: 'latest', 'earliest' or 'pending', please refrer to https://eth.wiki/json-rpc/API#the-default-block-parameter
// The return value ethBalance is a hexadecimal string: 0x9b19ce56113070
var ethBalance = exchange.IO("api", "eth", "eth_getBalance", "owner", "latest")
// ETH has a precision unit of 1e18
var ethDecimal = 18
// Because of the JavaScript language precision, it is necessary to use the system underlying package function BigInt, BigDecimal to process
// Convert ethBalance to readable amount, 0x9b19ce56113070 to 0.043656995388076145
Log(Number((BigDecimal(BigInt(ethBalance))/BigDecimal(Math.pow(10, ethDecimal))).toString()))
}
اپنے بٹوے میں ETH کا بیلنس چیک کریں:
function mian() {
// ETH has a precision unit of 1e18
var ethDecimal = 18
// Number of transfers, readable amount e.g. 0.01 ETH
var sendAmount = 0.01
// Due to the JavaScript language precision, it is necessary to use the system underlying encapsulated functions BigInt, BigDecimal to process, and to convert the readable amount to the data processed on the chain
var toAmount = (BigDecimal(sendAmount)*BigDecimal(Math.pow(10, ethDecimal))).toFixed(0)
// "toAddress" is the address of the recipient's ETH wallet at the time of the transfer, which needs to be filled in specifically, and toAmount is the number of transfers
exchange.IO("api", "eth", "send", "toAddress", toAmount)
}
ETH ٹرانسفر کے لئے، آپ کو مقرر کر سکتے ہیں{gasPrice: 11, gasLimit: 111, nonce: 111}
پیرامیٹر، جس کے آخری پیرامیٹر پر مقرر کیا جاتا ہےexchange.IO()
آپ اپنی مخصوص ضروریات کے مطابق کام کر سکتے ہیں۔nonce
اور نظام ڈیفالٹ استعمال کریں، یا چھوڑgasLimit/gasPrice/nonce
غیر مقرر کریں اور تمام کے لئے سسٹم ڈیفالٹ قدر استعمال کریں.
function toAmount(s, decimals) {
return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}
function main() {
var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
Log("gasPrice:", toAmount(gasPrice, 0)) // 5000000000 , in wei (5 gwei)
}
استفسارgasPrice
:
function toAmount(s, decimals) {
// The toAmount function can convert hex-encoded values to decimal values
return Number((BigDecimal(BigInt(s))/BigDecimal(Math.pow(10, decimals))).toString())
}
function main() {
// Coding approve (authorization) method calls
var data = exchange.IO("encode", "0x111111111117dC0aa78b770fA6A738034120C302", "approve", "0xe592427a0aece92de3edee1f18e0157c05861564", "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")
Log("data:", data)
var gasPrice = exchange.IO("api", "eth", "eth_gasPrice")
Log("gasPrice:", toAmount(gasPrice, 0))
var obj = {
"from" : "0x0xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // walletAddress
"to" : "0x111111111117dC0aa78b770fA6A738034120C302",
"gasPrice" : gasPrice,
"value" : "0x0",
"data" : "0x" + data,
}
var gasLimit = exchange.IO("api", "eth", "eth_estimateGas", obj)
Log("gasLimit:", toAmount(gasLimit, 0))
Log("gas fee", toAmount(gasLimit, 0) * toAmount(gasPrice, 0) / 1e18)
}
استفسارeth_estimateGas
:
کے دوسرے پیرامیٹرexchange.IO()
کے ساتھ کام"eth"
براہ راست ایتھرئم نوڈ سرور کے لئے دستیاب RPC طریقوں کو کال کر سکتے ہیں.
{@fun BigDecimal}، {@fun BigInt}
کےexchange.IO("encode", ...)
فنکشن ڈیٹا کوڈنگ کے لئے بلایا جاتا ہے.
کےexchange.IO("encode", ...)
فنکشن کوڈڈ ڈیٹا واپس کرتا ہے.
سٹرنگ
exchange.IO(k، ڈیٹا فارمیٹ،...args)exchange.IO(k، پتہ، ڈیٹا فارمیٹ)exchange.IO(k، پتہ، ڈیٹا فارمیٹ،...args)
کےk
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"encode"
کا مطلب ہے کہ فنکشن کو ڈیٹا کوڈنگ کے لیے استعمال کیا جاتا ہے۔
k
سچ
سٹرنگ
کےaddress
پیرامیٹر اسمارٹ معاہدے کا پتہ مقرر کرنے کے لئے استعمال کیا جاتا ہے.exchange.IO("encode", ...)
فنکشن، میں منتقلaddress
پیرامیٹر اسمارٹ معاہدے پر طریقہ کال کوڈنگ کا اشارہ کرتا ہے.exchange.IO("encode", ...)
فنکشن، اگرaddress
پیرامیٹر منتقل نہیں کیا جاتا ہے، تقریب مخصوص قسم کے حکم کوڈ کرنے کے لئے استعمال کیا جاتا ہے اور فعال طور پر برابر ہےabi.encode
میںSolidity
.
ایڈریس
غلط
سٹرنگ
کےdataFormat
پیرامیٹر استعمال کیا جاتا ہے کوڈڈ ڈیٹا کے طریقہ کار، قسم، اور ترتیب کی وضاحت کرنے کے لئے.
ڈیٹا فارمیٹ
سچ
سٹرنگ
کےarg
پیرامیٹر مخصوص اعداد و شمار کی قیمت ہے کہ اس سے ملتا ہے کی وضاحت کرنے کے لئے استعمال کیا جاتا ہےdataFormat
پیرامیٹر. ایک سے زیادہ ہو سکتا ہےarg
پیرامیٹر، اور قسم اور تعدادarg
پیرامیٹرز پر منحصر ہےdataFormat
پیرامیٹر کی ترتیب.
ارگ
غلط
تار، نمبر، ٹپل، صف، اور نظام کی طرف سے حمایت کی تمام دیگر اقسام
function main() {
// Main network address of ContractV3SwapRouterV2: 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
// Calling the unwrapWETH9 method requires registering the ABI first, which is omitted here
// "owner" represents the wallet address, which need to fill in the specific, 1 represents the number of unpacking, unpacking a WETH into ETH
var data = exchange.IO("encode", "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45", "unwrapWETH9(uint256,address)", 1, "owner")
Log(data)
}
مثال کے طور پر، انکوڈنگ کے طریقہ کار کو فونunwrapWETH9
:
function main() {
var x = 10
var address = "0x02a5fBb259d20A3Ad2Fdf9CCADeF86F6C1c1Ccc9"
var str = "Hello World"
var array = [1, 2, 3]
var ret = exchange.IO("encode", "uint256,address,string,uint256[]", x, address, str, array) // uint i.e. uint256 , the type length needs to be specified on FMZ
Log("ret:", ret)
/*
000000000000000000000000000000000000000000000000000000000000000a // x
00000000000000000000000002a5fbb259d20a3ad2fdf9ccadef86f6c1c1ccc9 // address
0000000000000000000000000000000000000000000000000000000000000080 // Offset of str
00000000000000000000000000000000000000000000000000000000000000c0 // Offset of array
000000000000000000000000000000000000000000000000000000000000000b // The length of str
48656c6c6f20576f726c64000000000000000000000000000000000000000000 // str data
0000000000000000000000000000000000000000000000000000000000000003 // The length of the array
0000000000000000000000000000000000000000000000000000000000000001 // array the first data
0000000000000000000000000000000000000000000000000000000000000002 // array the second data
0000000000000000000000000000000000000000000000000000000000000003 // array the third data
*/
}
یہ کے کوڈنگ مثال کے برابر ہےabi.encode
میںSolidity
:
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)
}
یہ ایک tuple یا ایک tuple پر مشتمل ایک قسم کے حکم کی کوڈنگ کی حمایت کرتا ہے.
اس قسم کے حکم میں شامل ہیں:tuple
, bytes
، تو جب فونexchange.IO()
کوڈنگ کے لئے، آپ کو دو پیرامیٹرز کو منتقل کرنے کے لئے جاری رکھنے کی ضرورت ہے:
{
a: 30,
b: 20,
c: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
}
میں منتقل پیرامیٹرز کی ساخت اور قسم کے ساتھ بھی ہم آہنگ ہونا ضروری ہےtuple
، جیسا کہtypes
فارم کا پیرامیٹر:tuple(a uint256,b uint8,c address)
.
bytes
:"0011"
function main() {
var path = ["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", "0xdac17f958d2ee523a2206206994597c13d831ec7"] // ETH address, USDT address
var ret = exchange.IO("encode", "address[]", path)
Log("encode: ", ret)
}
یہ صفوں یا صفوں پر مشتمل اقسام کی ترتیب کوڈنگ کے لئے حمایت کرتا ہے:
کےexchange.IO()
فنکشنencode
طریقہ، جس میں فنکشن کال کوڈ واپس کر سکتے ہیںhex
string فارمیٹ۔ مخصوص استعمال کے لئے ، آپ عوامی طور پر دستیاب پلیٹ فارمز سے رجوع کرسکتے ہیں
کےexchange.IO("encodePacked", ...)
تقریب کے لئے استعمال کیا جاتا ہے کہ ایک طرح سے بلایا جاتا ہےencodePacked
encoding.
کےexchange.IO("encodePacked", ...)
فنکشن واپس کرتا ہےencodePacked
خفیہ کردہ ڈیٹا۔
سٹرنگ
exchange.IO(k، ڈیٹا فارمیٹ،...args)
کےk
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"encodePacked"
کا مطلب ہے کہ فنکشن ڈیٹا کے لئے استعمال کیا جاتا ہےencodePacked
کوڈنگ.
k
سچ
سٹرنگ
کےdataFormat
پیرامیٹر کی قسم اور ترتیب کی وضاحت کرنے کے لئے استعمال کیا جاتا ہےencodePacked
خفیہ کردہ ڈیٹا۔
ڈیٹا فارمیٹ
سچ
سٹرنگ
کےarg
پیرامیٹر مخصوص اعداد و شمار کی قیمت ہے کہ اس سے ملتا ہے کی وضاحت کرنے کے لئے استعمال کیا جاتا ہےdataFormat
پیرامیٹر. ایک سے زیادہ ہو سکتا ہےarg
پیرامیٹر، اور قسم اور تعدادarg
پیرامیٹرز پر منحصر ہےdataFormat
پیرامیٹر کی ترتیب.
ارگ
سچ
تار، نمبر، ٹپل، صف، اور نظام کی طرف سے حمایت کی تمام دیگر اقسام
function main() {
var fee = exchange.IO("encodePacked", "uint24", 3000)
var tokenInAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
var tokenOutAddress = "0x6b175474e89094c44da98b954eedeac495271d0f"
var path = tokenInAddress.slice(2).toLowerCase()
path += fee + tokenOutAddress.slice(2).toLowerCase()
Log("path:", path)
}
استعمال کرتے وقتUniswap V3
، آپ کو تبادلہ راستے کی طرح پیرامیٹرز میں منتقل کرنے کی ضرورت ہے، آپ کو استعمال کرنے کی ضرورت ہےencodePacked
کوڈنگ آپریشن:
کے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()
فنکشن نہ صرف کوڈنگ کی حمایت کرتا ہے، بلکہ ڈیکوڈنگ.
کےexchange.IO("key", ...)
تقریب نجی چابیاں سوئچ کرنے کے لئے ایک طرح سے بلایا جاتا ہے.
exchange.IO(K، کلید)
پیرامیٹرk
کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"key"
کا مطلب یہ ہے کہ اس فنکشن کا استعمال نجی کلید کو تبدیل کرنے کے لئے کیا جاتا ہے۔
k
سچ
سٹرنگ
کےkey
پیرامیٹر نجی کلید کی ترتیب کے لئے استعمال کیا جاتا ہے.
چابی
سچ
سٹرنگ
function main() {
exchange.IO("key", "Private Key") // "Private Key" represents the private key string, which needs to be filled in specifically
}
کےexchange.IO()
فنکشن نجی چابیاں تبدیل کرنے کی حمایت کرتا ہے اور یہ متعدد پرس پتوں کو جوڑ سکتا ہے۔ متعدد پرس پتوں کو جوڑنے کے لئے متعدد ایکسچینج آبجیکٹ شامل کرنا بھی ممکن ہے۔
کےexchange.IO("api", ...)
فنکشن کو اس طرح بلایا جاتا ہے جو اسمارٹ معاہدے کے طریقوں کو بلانے کے لئے استعمال ہوتا ہے۔
کےexchange.IO("api", ...)
فنکشن اسمارٹ کنٹریکٹ نامی طریقہ کار کی واپسی کی قیمت واپس کرتا ہے۔
string, number, bool, object, array, null اور سسٹم کی معاونت کرنے والی دیگر تمام اقسام
exchange.IO(k، پتہ، طریقہ)exchange.IO(k، پتہ، طریقہ،...args)exchange.IO(k، پتہ، طریقہ، قدر،...args)
کےk
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"api"
اشارہ کرتا ہے کہ فنکشن کو کال کی درخواست کو بڑھانے کے لئے استعمال کیا جاتا ہے.
k
سچ
سٹرنگ
کےaddress
اسمارٹ معاہدے کا پتہ بتانے کے لئے پیرامیٹر استعمال کیا جاتا ہے۔
ایڈریس
سچ
سٹرنگ
کےmethod
پیرامیٹر اسمارٹ معاہدے کا طریقہ بیان کرنے کے لئے استعمال کیا جاتا ہے جسے بلایا جائے۔
طریقہ کار
سچ
سٹرنگ
کےvalue
ETH کی رقم بھیجنے کے لئے مقرر کرنے کے لئے استعمال کیا جاتا ہے.stateMutability
اسمارٹ معاہدے کے طریقہ کار کی خصوصیت ہے جو عملدرآمد کیا جائے گاpayable
، پھرvalue
پیرامیٹر منتقل کرنے کی ضرورت ہے."stateMutability": "payable"
ABI سے دیکھا جا سکتا.exchange.IO()
تقریب کی بنیاد پر مطلوبہ پیرامیٹر کا تعین کرے گاstateMutability
رجسٹرڈ کیا گیا ہے کہ ABI میں وصف.stateMutability
وصف ہےnonpayable
، پھرvalue
پیرامیٹر منتقل کرنے کی ضرورت نہیں ہے.
قیمت
غلط
نمبر٬سلسلہ
کےarg
پیرامیٹر استعمال کیا جاتا ہے اسمارٹ معاہدے کے طریقہ کار کے پیرامیٹرز کی وضاحت کرنے کے لئے بلایا جا رہا ہے.arg
پیرامیٹر، اور قسم اور تعدادarg
پیرامیٹرز اسمارٹ کنٹریکٹ کے طریقہ کار پر منحصر ہے جسے بلایا جائے۔
ارگ
غلط
تار، نمبر، بول، اور نظام کی طرف سے حمایت کی دیگر تمام اقسام
function main(){
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302" // The contract address of the token, the token is 1INCH in the example
Log(exchange.IO("api", tokenAddress, "decimals")) // Query, print 1INCH tokens with precision index of 18
}
کےdecimals
طریقہ کار ایک ہےconstant
ERC20 کا طریقہ ہے کہ گیس کی کھپت کا سامنا نہیں کرتا اور یہ ایک ٹوکن کی صحت سے متعلق اعداد و شمار کو تلاش کر سکتے ہیں.decimals
طریقہ کار کے پاس کوئی پیرامیٹرز نہیں ہیں۔ واپسی کی قیمت: ٹوکن کے صحت سے متعلق ڈیٹا۔
function main(){
// The contract address of the token, in the example the token is 1INCH
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
// For example, the query yields 1000000000000000000, divided by the precision unit of the token 1e18, the wallet to which the current exchange object is bound has authorized 1 1INCH to the spender address
Log(exchange.IO("api", tokenAddress, "allowance", "owner", "spender"))
}
کےallowance
طریقہ کار ایک ہےconstant
ERC20 کا ایک طریقہ ہے جو گیس کی کھپت پیدا نہیں کرتا ہے اور ایک مخصوص معاہدے کے ایڈریس کے لئے ایک ٹوکن کی مجاز رقم سے استفسار کرسکتا ہے۔allowance
طریقہ کار 2 پیرامیٹرز لیتا ہے ، پہلا والٹ ایڈریس ہے اور دوسرا مجاز پتہ ہے۔ واپسی کی قیمت: ٹوکن کی اجازت کی رقم۔
owner
: بٹوے کا پتہ، مثال spender
: منظور شدہ معاہدے کا پتہ، مثال کے طور پر سلسلہ Uniswap V3 router v1
address.
function main(){
// The contract address of the token, the token is 1INCH in the example
var tokenAddress = "0x111111111117dC0aa78b770fA6A738034120C302"
// The hexadecimal string of the authorization amount: 0xde0b6b3a7640000 , the corresponding decimal string: 1e18 , 1e18 divided by the precision unit of the token, i.e. 1 token amount, so this refers to the authorization of one token
Log(exchange.IO("api", tokenAddress, "approve", "spender", "0xde0b6b3a7640000"))
}```
The ```approve``` method is a non-```constant``` method of ERC20, which generates gas consumption and is used to authorize the operation amount of a token to a contract address. The ```approve``` method takes 2 parameters, the first one is the address to be authorized and the second one is the amount to be authorized. Return value: txid.
```spender```: the address of the authorized contract, the example is replaced by the string "spender", the actual use needs to fill in the specific address, for example, it can be ```Uniswap V3 router v1``` address. ```0xde0b6b3a7640000```: the number of authorizations, here is the hexadecimal string, the corresponding decimal value is 1e18, divided by the token precision unit in the example (i.e. 1e18). The result is that 1 token is authorized. The third parameter of the ```exchange.IO()``` function is passed to the method name ```approve```, which can also be written in the form of methodId, such as "0x571ac8b0". It is also possible to write the full standard method name, for example: "approve(address,uint256)".
```javascript
function main() {
var ContractV3SwapRouterV2 = "0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45"
var tokenInName = "ETH"
var amountIn = 0.01
var options = {gasPrice: 5000000000, gasLimit: 21000, nonce: 100} // This is an example, depending on the actual scene settings
var data = "" // The encoded data, here is the empty string, depending on the actual scene settings
var tx = exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", (tokenInName == 'ETH' ? amountIn : 0), (new Date().getTime() / 1000) + 3600, data, options || {})
}
کےmulticall
طریقہ کار ایک غیرconstant
طریقہ کارUniswap V3
جو گیس کی کھپت پیدا کرتا ہے اور ٹوکن کو کئی طریقوں سے تبدیل کرنے کے لئے استعمال کیا جاتا ہے۔
کےmulticall
طریقہ پیرامیٹرز کو منتقل کرنے کے مختلف طریقے ہوسکتے ہیں ، آپ ABI کو چیک کرسکتے ہیں جس میں طریقہ خاص طور پر ہوتا ہے ، آپ کو طریقہ کار کو کال کرنے سے پہلے ABI کو رجسٹر کرنے کی ضرورت ہے۔ واپسی کی قیمت: txid۔
کے مخصوص مثالوں کے لئےmulticall
طریقہ کار کالز، آپ کو عوامی طور پر دستیاب پلیٹ فارم سے رجوع کر سکتے ہیں
یہاں کچھ تفصیلات کا استعمال کرتے ہوئے بیان کیا گیا ہے:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: Uniswap V3 کے روٹر v2 کا پتہ.value
: منتقلی کے لئے ETH کی رقم، اگر ایکسچینج آپریشن کا ٹوکن ETH نہیں ہے تو 0 پر سیٹ کریں۔deadline
: deadline
کے پیرامیٹر ہےmulticall
طریقہ، جس میں (نئی Date().getTime() / 1000) + 3600 پر مقرر کیا جا سکتا ہے، اس بات کا اشارہ ہے کہ یہ ایک گھنٹے کے لئے درست ہے.data
: data
کے پیرامیٹر ہےmulticall
طریقہ کار، پیکیجنگ آپریشن کے اعداد و شمار کو انجام دیا جائے گا.
اسی طرحexchange.IO("api", "eth", "send", "toAddress", toAmount)
،gasLimit/gasPrice/nonce
ترتیب کے طریقہ کار کال کی وضاحت کی جا سکتی ہےmulticall
طریقہ کار
ایک بار پھر، ہم بیان کرنے کے لئے جعلی کوڈ کا استعمال کرتے ہیں:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
پیرامیٹر{gasPrice: 11, gasLimit: 111, nonce: 111}
مخصوص ضروریات کے مطابق مقرر کیا جا سکتا ہے، جس کے آخری پیرامیٹر پر مقرر کیا جاتا ہےexchange.IO()
فنکشن.
آپ کو چھوڑ سکتے ہیںnonce
اور سسٹم ڈیفالٹ قدر کا استعمال کریں، یا چھوڑ دیںgasLimit/gasPrice/nonce
غیر مقرر کریں اور تمام کے لئے سسٹم ڈیفالٹ قدر استعمال کریں.
کےexchange.IO("address")
فنکشن {@var/EXCHANGE exchange} ایکسچینج آبجیکٹ کی طرف سے تشکیل والی پرس کا پتہ حاصل کرنے کے لئے اس طرح سے بلایا جاتا ہے.
کےexchange.IO("address")
فنکشن تشکیل شدہ بٹوے کا پتہ لوٹاتا ہے۔
سٹرنگ
exchange.IO(ک)
کےk
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"address"
کا مطلب یہ ہے کہ فنکشن استعمال کیا جاتا ہے تشکیل شدہ پرس ایڈریس حاصل کرنے کے لئے.
k
سچ
سٹرنگ
function main() {
Log(exchange.IO("address")) // Print the wallet address of the private key configured on the exchange object
}
کےexchange.IO("base", ...)
فنکشن RPC نوڈ ایڈریس مقرر کرنے کے لئے ایک طرح سے بلایا جاتا ہے.
exchange.IO(k، پتہ)
کےk
پیرامیٹر کی تقریب مقرر کرنے کے لئے استعمال کیا جاتا ہےexchange.IO()
فنکشن، پر مقرر"base"
کا مطلب یہ ہے کہ فنکشن کا استعمال آر پی سی نوڈس کو سوئچ کرنے کے لئے کیا جاتا ہے۔
k
سچ
سٹرنگ
کےaddress
پیرامیٹر RPC نوڈ ایڈریس مقرر کرنے کے لئے استعمال کیا جاتا ہے.
ایڈریس
سچ
سٹرنگ
function main() {
var chainRpc = "https://bsc-dataseed.binance.org"
e.IO("base", chainRpc) // Switching to BSC chain
}
تاریں
ٹی اے