एफएमजेड क्वांट ट्रेडिंग प्लेटफॉर्म में, यह मुख्य रूप से विभिन्न कार्यों को लागू करता है, ब्लॉकचेन से संबंधित कॉलexchange.IO()
निम्नलिखित दस्तावेज मेंexchange.IO()
अपने कार्य के अनुसार अलग से कार्य करता है।exchange.IO("abi", ...)
एबीआई को पंजीकृत करने के लिए कार्य का प्रयोग किया जाता है।
exchange.IO(k, पता, abiContent)
..k
पैरामीटर का उपयोग फंक्शन सेट करने के लिए किया जाता हैexchange.IO()
फंक्शन, पर सेट"abi"
का अर्थ है कि फ़ंक्शन का उपयोग पंजीकरण के लिए किया जाता हैABI
.
क
सच
स्ट्रिंग
दaddress
पैरामीटर का उपयोग स्मार्ट कॉन्ट्रैक्ट के पते को निर्दिष्ट करने के लिए किया जाता है।
पता
सच
स्ट्रिंग
दabiContent
पैरामीटर का उपयोग निर्दिष्ट करने के लिए किया जाता हैABI
स्मार्ट कॉन्ट्रैक्ट का।
abiसामग्री
सच
स्ट्रिंग
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", ...)
function का उपयोग Ethereum RPC विधि को कॉल करने के लिए किया जाता है.
..exchange.IO("api", "eth", ...)
फ़ंक्शन RPC विधि का लौटाया गया मान लौटाता है।
string, number, bool, object, array, null और सिस्टम द्वारा समर्थित अन्य सभी प्रकार
exchange.IO(k, blockChain, rpcMethod)exchange.IO(k, blockChain, rpcMethod,...args)
..k
पैरामीटर का उपयोग फंक्शन सेट करने के लिए किया जाता हैexchange.IO()
फंक्शन, पर सेट"api"
इंगित करता है कि फ़ंक्शन का उपयोग कॉल अनुरोध का विस्तार करने के लिए किया जाता है.
क
सच
स्ट्रिंग
दblockChain
पैरामीटर का उपयोग फंक्शन सेट करने के लिए किया जाता हैexchange.IO()
फंक्शन, पर सेट"eth"
यह दर्शाता है कि फ़ंक्शन का उपयोग एथेरियम नेटवर्क पर आरपीसी विधि कॉल के लिए किया जाता है।
ब्लॉकचेन
सच
स्ट्रिंग
दrpcMethod
पैरामीटर RPC विधि सेट करने के लिए प्रयोग किया जाता है द्वारा बुलाया जाना हैexchange.IO()
कार्य।
rpc विधि
सच
स्ट्रिंग
दarg
पैरामीटर का उपयोग आरपीसी विधि के मापदंडों को निर्दिष्ट करने के लिए किया जाता है। एक से अधिक हो सकते हैंarg
प्रकार और संख्याarg
मापदंडों RPC विधि द्वारा निर्दिष्ट पर निर्भर करते हैंrpcMethod
पैरामीटर
आर्ग
झूठी
string, number, bool, object, array, function, null, और अन्य सभी प्रकार सिस्टम द्वारा समर्थित
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()))
}
अपने बटुए में ईटीएच की शेष राशि की जाँच करेंः
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)
}
ईटीएच हस्तांतरण के लिए, आप सेट कर सकते हैं{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"
सीधे एथेरियम नोड सर्वर के लिए उपलब्ध आरपीसी विधियों को कॉल कर सकते हैं.
{@मज़ा BigDecimal}, {@मज़ा BigInt}
..exchange.IO("encode", ...)
फ़ंक्शन को डेटा एन्कोडिंग के लिए बुलाया जाता है.
..exchange.IO("encode", ...)
फ़ंक्शन एन्कोडेड डेटा लौटाता है.
स्ट्रिंग
exchange.IO(k, dataFormat,...args)exchange.IO(k, पता, डेटा प्रारूप)exchange.IO(k, पता, डेटाफॉर्मेट,...args)
..k
पैरामीटर का उपयोग फंक्शन सेट करने के लिए किया जाता हैexchange.IO()
फंक्शन, पर सेट"encode"
इसका अर्थ है कि फ़ंक्शन का उपयोग डेटा कोडिंग के लिए किया जाता है।
क
सच
स्ट्रिंग
द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
, 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
विशिष्ट उपयोग के लिए, आप सार्वजनिक रूप से उपलब्ध प्लेटफार्मों का संदर्भ ले सकते हैं
..exchange.IO("encodePacked", ...)
फ़ंक्शन एक तरह से कहा जाता है कि के लिए प्रयोग किया जाता हैencodePacked
encoding.
..exchange.IO("encodePacked", ...)
फ़ंक्शन रिटर्नencodePacked
एन्कोडेड डेटा।
स्ट्रिंग
exchange.IO(k, dataFormat,...args)
..k
पैरामीटर का उपयोग फंक्शन सेट करने के लिए किया जाता हैexchange.IO()
फंक्शन, पर सेट"encodePacked"
का अर्थ है कि फ़ंक्शन का उपयोग डेटा के लिए किया जाता हैencodePacked
एन्कोडिंग।
क
सच
स्ट्रिंग
द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
पैरामीटर
array、string
exchange.IO(k, dataफॉर्मेट, डेटा)
..k
पैरामीटर का उपयोग फंक्शन सेट करने के लिए किया जाता हैexchange.IO()
कार्य, और इसे सेट करने के लिए"decode"
इसका अर्थ है कि फ़ंक्शन का उपयोग डेटा डिकोडिंग के लिए किया जाता है।
क
सच
स्ट्रिंग
द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
के कार्य को सेट करने के लिए प्रयोग किया जाता हैexchange.IO()
फंक्शन, पर सेट"key"
इसका अर्थ है कि फ़ंक्शन का उपयोग निजी कुंजी को स्विच करने के लिए किया जाता है.
क
सच
स्ट्रिंग
दkey
पैरामीटर का उपयोग निजी कुंजी सेट करने के लिए किया जाता है.
कुंजी
सच
स्ट्रिंग
function main() {
exchange.IO("key", "Private Key") // "Private Key" represents the private key string, which needs to be filled in specifically
}
..exchange.IO()
फ़ंक्शन निजी कुंजी स्विच करने का समर्थन करता है और यह कई वॉलेट पते को हेरफेर कर सकता है। कई वॉलेट पते को हेरफेर करने के लिए कई एक्सचेंज ऑब्जेक्ट (देखेंः {@var/EXCHANGE/exchanges exchanges}) जोड़ना भी संभव है।
..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"
इंगित करता है कि फ़ंक्शन का उपयोग कॉल अनुरोध का विस्तार करने के लिए किया जाता है.
क
सच
स्ट्रिंग
दaddress
पैरामीटर का उपयोग स्मार्ट कॉन्ट्रैक्ट के पते को निर्दिष्ट करने के लिए किया जाता है।
पता
सच
स्ट्रिंग
दmethod
पैरामीटर का उपयोग स्मार्ट कॉन्ट्रैक्ट की विधि को निर्दिष्ट करने के लिए किया जाता है।
विधि
सच
स्ट्रिंग
दvalue
पैरामीटर का उपयोग ईटीएच की मात्रा को भेजने के लिए किया जाता है।stateMutability
निष्पादित करने के लिए स्मार्ट अनुबंध विधि की विशेषता हैpayable
, फिरvalue
पैरामीटर पारित करने की जरूरत है."stateMutability": "payable"
एट्रिब्यूट को एबीआई से देखा जा सकता है।exchange.IO()
समारोह के आधार पर आवश्यक पैरामीटर निर्धारित करेगाstateMutability
एबीआई में विशेषता है कि पंजीकृत किया गया है.stateMutability
विशेषता हैnonpayable
, फिरvalue
पैरामीटर को पास करने की आवश्यकता नहीं है।
मूल्य
झूठी
संख्या, स्ट्रिंग
दarg
पैरामीटर का उपयोग स्मार्ट अनुबंध की विधि के मापदंडों को निर्दिष्ट करने के लिए किया जाता है।arg
पैरामीटर, और प्रकार और संख्याarg
पैरामीटर स्मार्ट अनुबंध की विधि पर निर्भर करता है बुलाया जा रहा है।
आर्ग
झूठी
स्ट्रिंग, संख्या, bool, और सिस्टम द्वारा समर्थित अन्य सभी प्रकार
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
ईआरसी20 की ऐसी विधि जो गैस की खपत नहीं करती है और यह टोकन के सटीक डेटा को क्वेरी कर सकती है।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
विधि के पास पैरामीटर पास करने के विभिन्न तरीके हो सकते हैं, आप एबीआई की जांच कर सकते हैं जिसमें विधि विशेष रूप से है, आपको विधि को कॉल करने से पहले एबीआई को पंजीकृत करने की आवश्यकता है। रिटर्न मानः txid.
विशिष्ट उदाहरणों के लिएmulticall
विधि कॉल, आप सार्वजनिक रूप से उपलब्ध प्लेटफार्मों का संदर्भ ले सकते हैं
कुछ विवरण यहाँ छद्म-कोड का उपयोग करके वर्णित हैं:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: Uniswap V3 के राउटर v2 का पता।value
: स्थानांतरित करने के लिए ईटीएच की राशि, यदि एक्सचेंज ऑपरेशन का टोकन ईटीएच नहीं है तो 0 पर सेट की जाती है।deadline
: deadline
के पैरामीटर हैmulticall
विधि, जिसे (नई दिनांक))) / 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"
इसका मतलब है कि फ़ंक्शन का उपयोग कॉन्फ़िगर किए गए वॉलेट पते को प्राप्त करने के लिए किया जाता है.
क
सच
स्ट्रिंग
function main() {
Log(exchange.IO("address")) // Print the wallet address of the private key configured on the exchange object
}
..exchange.IO("base", ...)
फ़ंक्शन को आरपीसी नोड पता सेट करने के तरीके से बुलाया जाता है.
exchange.IO(k, पता)
..k
पैरामीटर का उपयोग फंक्शन सेट करने के लिए किया जाता हैexchange.IO()
फंक्शन, पर सेट"base"
इसका मतलब है कि फ़ंक्शन का उपयोग आरपीसी नोड्स को स्विच करने के लिए किया जाता है।
क
सच
स्ट्रिंग
दaddress
पैरामीटर का उपयोग आरपीसी नोड पते को सेट करने के लिए किया जाता है.
पता
सच
स्ट्रिंग
function main() {
var chainRpc = "https://bsc-dataseed.binance.org"
e.IO("base", chainRpc) // Switching to BSC chain
}
धागे
टीए