Dieexchange.IO("api", ...)
Funktion wird auf eine Weise aufgerufen, die verwendet wird, um die Methoden des Smart Contracts aufzurufen.
Dieexchange.IO("api", ...)
Funktion gibt den Rückgabewert der sogenannten Smart-Contract-Methode zurück.
String, number, bool, object, array, null und alle anderen vom System unterstützten Typen
exchange.IO(k, Anschrift, Methode)exchange.IO(k, Anschrift, Methode,... args)exchange.IO(k, Anschrift, Methode, Wert,... args)
Diek
Parameter wird verwendet, um die Funktion derexchange.IO()
Funktion, auf"api"
zeigt an, dass die Funktion zur Erweiterung der Anrufanfrage verwendet wird.
k
wahr
String
Dieaddress
Der Parameter wird verwendet, um die Adresse des Smart Contracts anzugeben.
Anschrift
wahr
String
Diemethod
Der Parameter wird verwendet, um die Methode des zu aufrufenden Smart Contracts anzugeben.
Methode
- Das stimmt.
String
Dievalue
Der ETH-Parameter wird verwendet, um den zu versendenden ETH-Betrag festzulegen.stateMutability
Attribut der auszuführenden Smart Contract-Methode istpayable
, dann dievalue
Der Parameter muss übergeben werden."stateMutability": "payable"
Das Attribut kann im ABI angezeigt werden.exchange.IO()
Funktion wird den erforderlichen Parameter auf der Grundlage derstateMutability
Das ist ein Attribut in der ABI, das registriert wurde.stateMutability
Attribut istnonpayable
, dann dievalue
Parameter muss nicht übergeben werden.
Wert
falsche
Zahl, Zeichenfolge
Diearg
Parameter wird verwendet, um die Parameter der Methode des zu aufrufenden Smart Contracts anzugeben.arg
Parameter und die Art und Anzahl derarg
Parameter hängen von der Methode des zu aufrufenden Smart Contracts ab.
Arg
falsche
String, number, bool und alle anderen vom System unterstützten Typen
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
}
Diedecimals
Methode ist eineconstant
Die ERC20-Technologie ist eine Methode, die keinen Gasverbrauch verursacht und die Präzisionsdaten eines Tokens abfragen kann.decimals
Rückgabewert: die Präzisionsdaten des Tokens.
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"))
}
Dieallowance
Methode ist eineconstant
Die ERC20-Methode, die keinen Gasverbrauch erzeugt und den zugelassenen Betrag eines Tokens für eine bestimmte Vertragsadresse abfragen kann.allowance
Die Methode nimmt 2 Parameter an, der erste ist die Wallet-Adresse und der zweite die autorisierte Adresse.
owner
: die Adresse der Brieftasche, das Beispiel wird durch die Zeichenfolge spender
: die Adresse des genehmigten Auftrags, das Beispiel wird durch die Zeichenfolge 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 || {})
}
Diemulticall
Die Methode ist nichtconstant
Verfahren derUniswap V3
die Gasverbrauch erzeugt und zur Einlösung von Token auf verschiedene Arten verwendet wird.
Diemulticall
Methode kann verschiedene Möglichkeiten haben, Parameter zu übergeben, Sie können die ABI überprüfen, die die Methode speziell enthält, Sie müssen die ABI registrieren, bevor Sie die Methode aufrufen.
Für konkrete Beispielemulticall
Sie können sich auf die öffentlich zugänglichen Plattformen beziehen.
Einige Details werden hier mit Pseudo-Code beschrieben:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data)
ContractV3SwapRouterV2
: Adresse des Routers v2 von Uniswap V3.value
: der zu übertragende Betrag an ETH, der auf 0 festgelegt ist, wenn das TokenIn-Token der Börsengeschäft nicht ETH ist.deadline
: deadline
ist der Parameter dermulticall
Methode, die auf (neues Datum (().getTime (()) / 1000) + 3600 eingestellt werden kann, was anzeigt, dass sie für eine Stunde gültig ist.data
: data
ist der Parameter dermulticall
Methode, die Daten des zu durchführenden Verpackungsverfahrens.
Ähnlich wieexchange.IO("api", "eth", "send", "toAddress", toAmount)
, diegasLimit/gasPrice/nonce
Die Einstellung des Methodenanrufs kann beim Aufrufen dermulticall
Methode.
Wir verwenden Pseudo-Code, um zu beschreiben:
exchange.IO("api", ContractV3SwapRouterV2, "multicall(uint256,bytes[])", value, deadline, data, {gasPrice: 123456, gasLimit: 21000})
Der Parameter{gasPrice: 11, gasLimit: 111, nonce: 111}
Die Anpassung an die spezifischen Bedürfnisse kann auf den letzten Parameter desexchange.IO()
Funktion.
Sie können dienonce
und verwenden Sie den System-Standardwert, oder lassen SiegasLimit/gasPrice/nonce
Deaktivieren und verwenden Sie den Systemstandardwert für alle.