Tronsave
🇬🇧 English
Search
K

Buy energy by API using private key

This is full example buy enery by API key using private key
Javascript
const TronWeb = require('tronweb')
const TRONSAVE_RECEIVER_ADDRESS = "TWZEhq5JuUVvGtutNgnRBATbF8BnHGyn4S" //in testnet mode change it to "TATT1UzHRikft98bRFqApFTsaSw73ycfoS"
const PRIVATE_KEY = "your_private_key" //Change it
const TRON_FULLNODE = "https://api.trongrid.io" //in testnet mode change it to "https://api.nileex.io"
const TRONSAVE_API_URL = "https://api.tronsave.io" //in testnet mode change it to "https://api-dev.tronsave.io"
const REQUEST_ADDRESS = "your_request_address" //Change it
const TARGET_ADDRESS = "your_target_address" //Change it
const BUY_AMOUNT = 100000 //Chanageable
const DURATION = 3 * 86400 * 1000 //3 days.Changeable
const tronWeb = new TronWeb({
fullNode: TRON_FULLNODE,
solidityNode: TRON_FULLNODE,
eventServer: TRON_FULLNODE,
privateKey: PRIVATE_KEY,
})
const GetEstimate = async (request_address, target_address, amount, duration) => {
const url = TRONSAVE_API_URL + "/v0/estimate-trx"
//see more at https://docs.tronsave.io/buy-energy-on-telegram/using-api-key-to/buy-energy
const body = {
"amount": amount,
"buy_energy_type": "MEDIUM",
"duration_millisec": duration,
"request_address": request_address,
"target_address": target_address || request_address,
"is_partial": true
}
const data = await fetch(url, {
method: "POST",
headers: {
"content-type": "application/json",
},
body: JSON.stringify(body)
})
const response = await data.json()
/**
* Example response
* @link https://docs.tronsave.io/market/how-to-buy-energy/buy-on-rest-api
{
"unit_price": 45,
"duration_millisec": 259200000,
"available_energy": 4298470,
"estimate_trx": 13500000,
}
*/
return response
}
const GetSignedTransaction = async (estimate_trx, request_address) => {
const dataSendTrx = await tronWeb.transactionBuilder.sendTrx(TRONSAVE_RECEIVER_ADDRESS, estimate_trx, request_address)
const signed_tx = await tronWeb.trx.sign(dataSendTrx, PRIVATE_KEY);
return signed_tx
}
const CreateOrder = async (signed_tx, target_address, unit_price, duration) => {
const url = TRONSAVE_API_URL + "/v0/buy-energy"
//see more at https://docs.tronsave.io/buy-energy-on-telegram/using-api-key-to/buy-energy
const body = {
"resource_type": "ENERGY",
"unit_price": unit_price,
"allow_partial_fill": true,
"target_address": target_address,
"duration_millisec": duration,
"tx_id": signed_tx.txID,
"signed_tx": signed_tx
}
const data = await fetch(url, {
method: "POST",
headers: {
"content-type": "application/json",
},
body: JSON.stringify(body)
})
const response = await data.text()
//Example response
// @link https://docs.tronsave.io/market/how-to-buy-energy/buy-on-rest-api
// "651d2306e55c073f6ca0992e" //order id in tronsave
return response
}
const BuyEnergyUsingPrivateKey = async () => {
//Step 1: Estimate the cost of buy order
const estimate_data = await GetEstimate(REQUEST_ADDRESS, TARGET_ADDRESS, BUY_AMOUNT, DURATION)
const { unit_price, estimate_trx, available_energy } = estimate_data
console.log(estimate_data)
/*
{
"unit_price": 45,
"duration_millisec": 259200000,
"available_energy": 4298470,
"estimate_trx": 13500000,
}
*/
const is_ready_fulfilled = available_energy >= BUY_AMOUNT //if available_energy equal buy_amount it means that your order can be fulfilled 100%
if (is_ready_fulfilled) {
//Step 2: Build signed transaction by using private key
const signed_tx = await GetSignedTransaction(estimate_trx, REQUEST_ADDRESS)
console.log(signed_tx);
/*
{
"resource_type": "ENERGY",
"unit_price": 45,
"allow_partial_fill": true,
"target_address": "TM6ZeEgpefyGWeMLuzSbfqTGkPv8Z6Jm4X",
"duration_millisec": 259200000,
"tx_id": "446eed36e31249b98b201db2e81a3825b185f1a3d8b2fea348b24fc021e58e0d",
"signed_tx": {
"visible": false,
"txID": "446eed36e31249b98b201db2e81a3825b185f1a3d8b2fea348b24fc021e58e0d",
"raw_data": {
"contract": [
{
"parameter": {
"value": {
"amount": 13500000,
"owner_address": "417a0d868d1418c9038584af1252f85d486502eec0",
"to_address": "41055756f33f419278d9ea059bd2b21120e6add748"
},
"type_url": "type.googleapis.com/protocol.TransferContract"
},
"type": "TransferContract"
}
],
"ref_block_bytes": "0713",
"ref_block_hash": "6c5f7686f4176139",
"expiration": 1691465106000,
"timestamp": 1691465046758
},
"raw_data_hex": "0a02071322086c5f7686f417613940d084b5999d315a68080112640a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412330a15417a0d868d1418c9038584af1252f85d486502eec0121541055756f33f419278d9ea059bd2b21120e6add74818e0fcb70670e6b5b1999d31",
"signature": ["xxxxxxxxx"]
}
}
*/
//Step 3: Create order
const dataCreateOrder = await CreateOrder(signed_tx, TARGET_ADDRESS, unit_price, DURATION)
console.log(dataCreateOrder);
}
}
BuyEnergyUsingPrivateKey()