TronWeb отправит trc20 usdt
Я хочу использовать TronWeb для отправки токена trc20. Нужно ли мне использовать для этого contract(). At()? Значит, мне нужно относиться к токену trc20 как к смарт-контракту?
3 ответа
Перво-наперво, чтобы уточнить, что каждый токен в любой сети (не только tron) имеет свой собственный смарт-контракт, который был опубликован в сети.
вот код для получения баланса вашего счета и еще один для перевода USDT
не забудьте инициализировать код своим закрытым ключом и сетевыми конечными точками
обратите внимание, что для выполнения транзакции вам потребуется тронная энергия и пропускная способность, о которых вы можете прочитать по этой ссылке
const CONTRACT = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"
async function getBalance(account) {
const {
abi
} = await tronWeb.trx.getContract(CONTRACT);
const contract = tronWeb.contract(abi.entrys, CONTRACT);
const balance = await contract.methods.balanceOf(account).call();
console.log("balance:", balance.toString());
}
async function transferUSDT(destination, amount) {
const {
abi
} = await tronWeb.trx.getContract(CONTRACT);
const contract = tronWeb.contract(abi.entrys, CONTRACT);
const resp = await contract.methods.transfer(destination, amount).send();
console.log("transfer:", resp);
}
Первый шаг — инициализируйте экземпляр tronWeb:
const tronWeb = new TronWeb({
headers: {
'TRON-PRO-API-KEY': 'XXXXXXXXX-f915-XXXX-b320-7b67c4ecef9d'
},
fullHost: 'https://api.shasta.trongrid.io',
// privateKey: DEFAULT_PRIVATE_KEY, // you can specify default key
});
Затем получите экземпляр записи контракта:
async function initContract(contractAddress: string, privateKey: string) {
// I prefer to specify the key here, because I work with multiple private keys
tronWeb.setPrivateKey(privateKey);
return this.tronWeb.contract().at(contractAddress);
}
Наконец, отправьте функцию токенов TRC20 :
async function sendTokenTransaction(privateKeyFrom: string, to: string, value: number, contractAddress: string): Promise<string | null> {
try {
const contract = await initContract(contractAddress, privateKeyFrom);
const hash = await contract.transfer(to, value).send();
return hash;
} catch (err) {
console.log(`sendTokenTransaction: ${err}`);
}
return null;
}
Пример отправки 1 USDT (сеть Shasta):
// https://shasta.tronscan.org/#/contract/TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs
const usdtContractAddress = "TG3XXyExBkPp9nzdajDZsozEu4BkaSJozs";
const privateKey = "478XXXXXXX851B9163263A90E126F8758133504602BEB669AA613D64ADB9D390";
const to = "TH3JABY4URcbpenmXhYyfi8smvSp1niyX2";
sendTokenTransaction(privateKey, to, 1_000_000, usdtContractAddress);
официальную документациюСсылка на
Когда вы запускаете компонент tronweb с закрытым ключом, вы можете использовать контракт (). At()
tronWeb = new TronWeb(
'https://api.nileex.io/',
'https://api.nileex.io/',
'https://event.nileex.io/',
'your privateKey'
);