Die Ressourcen sind geladen. Beförderung...

exchange.IO("Api",...)

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)

DiekParameter wird verwendet, um die Funktion derexchange.IO()Funktion, auf"api"zeigt an, dass die Funktion zur Erweiterung der Anrufanfrage verwendet wird. k wahr String DieaddressDer Parameter wird verwendet, um die Adresse des Smart Contracts anzugeben. Anschrift wahr String DiemethodDer Parameter wird verwendet, um die Methode des zu aufrufenden Smart Contracts anzugeben. Methode - Das stimmt. String DievalueDer ETH-Parameter wird verwendet, um den zu versendenden ETH-Betrag festzulegen.stateMutabilityAttribut der auszuführenden Smart Contract-Methode istpayable, dann dievalueDer Parameter muss übergeben werden."stateMutability": "payable"Das Attribut kann im ABI angezeigt werden.exchange.IO()Funktion wird den erforderlichen Parameter auf der Grundlage derstateMutabilityDas ist ein Attribut in der ABI, das registriert wurde.stateMutabilityAttribut istnonpayable, dann dievalueParameter muss nicht übergeben werden. Wert falsche Zahl, Zeichenfolge DieargParameter wird verwendet, um die Parameter der Methode des zu aufrufenden Smart Contracts anzugeben.argParameter und die Art und Anzahl derargParameter 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
}

DiedecimalsMethode ist eineconstantDie ERC20-Technologie ist eine Methode, die keinen Gasverbrauch verursacht und die Präzisionsdaten eines Tokens abfragen kann.decimalsRü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"))   
}

DieallowanceMethode ist eineconstantDie ERC20-Methode, die keinen Gasverbrauch erzeugt und den zugelassenen Betrag eines Tokens für eine bestimmte Vertragsadresse abfragen kann.allowanceDie 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 owner ersetzt, der tatsächliche Gebrauch muss die spezifische Adresse ausfüllen.spender: die Adresse des genehmigten Auftrags, das Beispiel wird durch die Zeichenfolge spender ersetzt, die tatsächliche Verwendung muss die spezifische Adresse ausfüllen, zum Beispiel kann es seinUniswap 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 || {})
}

DiemulticallDie Methode ist nichtconstantVerfahren derUniswap V3die Gasverbrauch erzeugt und zur Einlösung von Token auf verschiedene Arten verwendet wird. DiemulticallMethode 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 BeispielemulticallSie können sich auf die öffentlich zugänglichen Plattformen beziehen.Uniswap V3 Trade Vorlage

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: deadlineist der Parameter dermulticallMethode, die auf (neues Datum (().getTime (()) / 1000) + 3600 eingestellt werden kann, was anzeigt, dass sie für eine Stunde gültig ist.data: dataist der Parameter dermulticallMethode, die Daten des zu durchführenden Verpackungsverfahrens.

Ähnlich wieexchange.IO("api", "eth", "send", "toAddress", toAmount), diegasLimit/gasPrice/nonceDie Einstellung des Methodenanrufs kann beim Aufrufen dermulticallMethode. 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 dienonceund verwenden Sie den System-Standardwert, oder lassen SiegasLimit/gasPrice/nonceDeaktivieren und verwenden Sie den Systemstandardwert für alle.

Auswechselung.IO (("Schlüssel",...) Ausgleich.IO (("Adresse")