La méthode d'appel deexchange.IO("api", "eth", ...)
fonction est utilisée pour appeler la méthode Ethereum RPC.
Leexchange.IO("api", "eth", ...)
la fonction renvoie la valeur de retour de la méthode appelée RPC.
chaîne, nombre, bool, objet, tableau, nul et tous les autres types pris en charge par le système
exchange.IO(k, chaîne de blocs, méthode rpc)exchange.IO(k, chaîne de blocs, méthode rpc,...args)
Lek
Le paramètre est utilisé pour définir la fonction deexchange.IO()
fonction, réglée sur"api"
indique que la fonction est utilisée pour étendre la demande d'appel.
K
vrai
chaîne
LeblockChain
Le paramètre est utilisé pour définir la fonction deexchange.IO()
fonction, réglée sur"eth"
indique que la fonction est utilisée pour les appels de méthode RPC sur le réseau Ethereum.
Chaîne de blocs
vrai
chaîne
LerpcMethod
paramètre est utilisé pour définir la méthode RPC à appeler par leexchange.IO()
fonction.
RpcMéthode
vrai
chaîne
Learg
paramètre est utilisé pour spécifier les paramètres de la méthode RPC à appeler.arg
Le type et le nombre dearg
Les paramètres dépendent de la méthode RPC spécifiée par lerpcMethod
paramètre.
arg
faux
chaîne, nombre, bool, objet, tableau, fonction, nul et tous les autres types pris en charge par le système
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()))
}
Vérifiez le solde d'ETH dans votre portefeuille:
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)
}
Pour les virements en ETH, vous pouvez définir le{gasPrice: 11, gasLimit: 111, nonce: 111}
paramètre, qui est réglé sur le dernier paramètre duexchange.IO()
Vous pouvez omettre lesnonce
et utiliser le système par défaut, ou laissergasLimit/gasPrice/nonce
désactiver et utiliser la valeur par défaut du système pour tous.
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)
}
RequêtesgasPrice
:
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)
}
Requêteseth_estimateGas
:
Le deuxième paramètre duexchange.IO()
fonction avec"eth"
peut appeler directement les méthodes RPC disponibles pour le serveur de nœud Ethereum.
Je ne sais pas.
Je vous en prie. le code de l'échange.IO (("code",...)