についてexchange.IO("api", ...)
スマートコントラクトのメソッドを呼び出すのに使われます.
についてexchange.IO("api", ...)
この関数は"スマートコントラクト"と呼ばれるメソッドの返却値を返します.
文字列,数, bool,オブジェクト,配列,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
呼び出すためのスマートコントラクトの方法に依存します
アルグ
偽り
文字列,数, 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
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
特定の契約アドレスに対するトークンの許可された金額をクエリすることができます.allowance
この方法には2つのパラメータがあります.最初のパラメータはウォレットアドレスで,もう1つは認証アドレスです.返却値:トークンの認証金額です.
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
(new Date().getTime() / 1000) + 3600 に設定できる方法で,1時間有効であることを示します.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
システムデフォルト値をすべてに有効にします