Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9

A PHP API for interacting with the Tron Protocol

30.05.2025, 12:34. Показов 1356. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста, в чем ошибка? Использую данную библиотеку https://github.com/iexbase/tron-api используется такой код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
ini_set("display_errors",1);
error_reporting(E_ALL); 
  require __DIR__ . '/vendor/autoload.php';
 $provider_url = 'https://nile.trongrid.io';
 
use IEXBase\TronAPI\Tron;
 
 
try {
    $fullNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
    $solidityNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
    $eventServer = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    echo $e->getMessage();
}
 
 
try {
    $tron = new Tron($fullNode, $solidityNode, $eventServer);
    $tron->setPrivateKey(private_key); // тут указываю приватный ключ от контракта
    $contract = $tron->contract('TRYQ8gSqk8BY6kqJ868UCnDqPC7LtAgaaA');  // сам контракт и на эту строку указывает
    $generateAddress = $contract->generateAddress();
    echo $generateAddress;
 
 
 
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    echo $e->getMessage();
}
Но получаю такую ошибку
Uncaught Error: Call to undefined method IEXBase\TronAPI\Tron::contract() in /var/www/html/test.php:22
То есть хочу создавать новые адреса для приема TRX, затем проверять поступление средств на указанный адрес. А адреса эти создаются ведь для контракта. Поясните, кто знает, как реализовать или использовать другую библиотеку. Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2025, 12:34
Ответы с готовыми решениями:

Как передать переменную php из 1.php в 2.php без include
Всем добрый день, как передать в подобном примере переменную без include, require? Есть 1.php с...

Передать значение из php в php и из php в js
Здравствуйте! У меня есть php файл (назовем тест1), содержащий: while (true) { ...

[PHP] Картинки на PHP
Всем приветы, вот сижу пишу код одной штучки... вобщем проблема в том, что мне надо вывести...

14
118 / 19 / 7
Регистрация: 27.05.2025
Сообщений: 72
30.05.2025, 13:27
Лучший ответ Сообщение было отмечено HowTron как решение

Решение

Call to undefined method IEXBase\TronAPI\Tron::contract()
contract() отсутствует в текущей версии библиотеки iexbase/tron-api. для генерации адресов используется createAccount()
Документация: https://iexbase.github.io/tron-api/
1
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9
30.05.2025, 15:25  [ТС]
George99, Баланс я могу получить, а вот при попытке сгенерировать счет получаю
Fatal error: Uncaught TypeError: IEXBase\TronAPI\Tron::createAccount(): Return value must be of type array, IEXBase\TronAPI\TronAddress returned in /var/www/html/vendor/iexbase/tron-api/src/Tron.php:1305 Stack trace: #0 /var/www/html/test.php(29): IEXBase\TronAPI\Tron->createAccount() #1 {main} thrown in /var/www/html/vendor_7.4/iexbase/tron-api/src/Tron.php on line 1305
Код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
ini_set("display_errors",1);
error_reporting(E_ALL); 
  require __DIR__ . '/vendor/autoload.php';
  $provider_url = 'https://nile.trongrid.io';
 
 
use IEXBase\TronAPI\Tron;
 
$fullNode = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.trongrid.io');
$solidityNode = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.trongrid.io');
$eventServer = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.trongrid.io');
 
try {
    $tron = new \IEXBase\TronAPI\Tron($fullNode, $solidityNode, $eventServer);
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    exit($e->getMessage());
}
 
 
 $tron->setAddress('TRYQ8gSqk8BY6kqJ868UCnDqPC7LtAgaaA');
//Balance
echo $tron->getBalance(null, true);
 
// Transfer Trx
//var_dump($tron->send('to', 1.5));
 
//Generate Address
echo $tron->createAccount();
 
//Get Last Blocks
//var_dump($tron->getLatestBlocks(2));
 
//Change account name (only once)
//var_dump($tron->changeAccountName('address', 'NewName'));
 
 
// Contract
$tron->contract('TRYQ8gSqk8BY6kqJ868UCnDqPC7LtAgaaA');
Добавлено через 1 час 3 минуты
George99, разобрался, благодарю

Добавлено через 9 минут
Только деньги почему-то не поступили на родительский кошелек, а где-то на сгенерированном повисли. Как так? В чем может быть проблема?
0
118 / 19 / 7
Регистрация: 27.05.2025
Сообщений: 72
30.05.2025, 15:33
Только деньги почему-то не поступили на родительский кошелек, а где-то на сгенерированном повисли. Как так? В чем может быть проблема?
Разумеется, и это не проблема, а принцип работы. Адреса не привязаны к кошельку, createAccount() — это полностью независимый кошелек со своим приватным ключом. Надо на него переключиться и явно сделать перевод.
0
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9
30.05.2025, 15:53  [ТС]
George99, а можно по подробней, пожалуйста, на примере, как это сделать, ну к примеру переключиться. И мне хотелось бы чтобы был 1 кошелек родительский, я думал вот контракт и есть этот родительский, и к нему уже создаются дочерние. Буду Вам признателен, если Вас не затруднит.

Добавлено через 7 минут
George99, Если я использую generateAddress() вместо createAccount(), то по всей логике получается что будет создан дочерний кошелек, правильно?

Добавлено через 2 минуты
Что-то все равно не так... и если использую generateAddress() куда-то уходят не понятно куда...

Добавлено через 3 минуты
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php 
ini_set("display_errors",1);
error_reporting(E_ALL); 
  require __DIR__ . '/vendor/autoload.php';
 
 
 
use IEXBase\TronAPI\Tron;
$fullNode = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.trongrid.io');
$solidityNode = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.trongrid.io');
$eventServer = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.trongrid.io');
 
try {
    $tron = new \IEXBase\TronAPI\Tron($fullNode, $solidityNode, $eventServer);
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    exit($e->getMessage());
}
 
 
 
try {
    $tron = new \IEXBase\TronAPI\Tron();
    $tron->setAddress('TRYQ8gSqk8BY6kqJ868UCnDqPC7LtAgaaA');
 
    $generateAddress = $tron->generateAddress(); // or createAddress()
    $isValid = $tron->isAddress($generateAddress->getAddress());
 
 
    echo 'Address hex: '. $generateAddress->getAddress();
    echo '<br>Address base58: '. $generateAddress->getAddress(true);
    echo '<br>Private key: '. $generateAddress->getPrivateKey();
    echo '<br>Public key: '. $generateAddress->getPublicKey();
    echo '<br>Is Validate: '. $isValid;
 
    echo 'Raw data: '.$generateAddress->getRawData();
 
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    echo $e->getMessage();
}
Скажите, пожалуйста, при таком коде будут же дочерние адреса?

Добавлено через 1 минуту
Проверил, снова куда-то деньги ушли(
0
118 / 19 / 7
Регистрация: 27.05.2025
Сообщений: 72
30.05.2025, 16:04
Лучший ответ Сообщение было отмечено HowTron как решение

Решение

на примере, как это сделать, ну к примеру переключиться
Это самый простой приблизительный сценарий:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
require __DIR__ . '/vendor/autoload.php';
 
use IEXBase\TronAPI\Tron;
 
// 1. Настройка подключения
$provider_url = 'https://nile.trongrid.io'; // Testnet
$fullNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
$solidityNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
$eventServer = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
 
try {
    $tron = new Tron($fullNode, $solidityNode, $eventServer);
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    exit("Connection error: " . $e->getMessage());
}
 
// 2. Основной кошелек (куда собираем средства)
$mainWallet = 'TRYQ8gSqk8BY6kqJ868UCnDqPC7LtAgaaA';
 
// 3. Генерация нового адреса (выполняется один раз)
try {
    $newAccount = $tron->createAccount();
    
    // Сохраняем данные в БД
    $newAddress = $newAccount->getAddress();       // TYxZw7qs1uCBLxFaM3cahaMSxJsKeuxTon
    $privateKey = $newAccount->getPrivateKey();    // e7523099810f3d793346f12092c5dee59f2ba909c7c35f48550c2aa018e029c7
    
    // Пример сохранения в базу:
    // $db->query("INSERT INTO wallets (address, private_key) VALUES (?, ?)", [$newAddress, $privateKey]);
    
    echo "Новый адрес: " . $newAddress . PHP_EOL;
    echo "Приватный ключ: " . $privateKey . PHP_EOL;
    
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    exit("Generation error: " . $e->getMessage());
}
 
// 4. Ручной перевод средств с нового адреса на основной
try {
    // Получаем данные из БД (пример для адреса TYxZw7qs1uCBLxFaM3cahaMSxJsKeuxTon)
    $address = 'TYxZw7qs1uCBLxFaM3cahaMSxJsKeuxTon';
    $privateKey = 'e7523099810f3d793346f12092c5dee59f2ba909c7c35f48550c2aa018e029c7';
    
    // Устанавливаем текущий кошелек
    $tron->setAddress($address);
    $tron->setPrivateKey($privateKey);
    
    // Проверяем баланс
    $balance = $tron->getBalance(null, true); // Баланс в TRX
    echo "Баланс адреса {$address}: {$balance} TRX" . PHP_EOL;
    
    // Если есть средства - переводим
    if ($balance > 0.1) { // Оставляем 0.1 TRX на комиссии
        $amount = $balance - 0.1; // Отправляем всё минус резерв
        
        // Выполняем перевод
        $result = $tron->send($mainWallet, $amount);
        
        if ($result && $result['result']) {
            echo "Успешно отправлено {$amount} TRX" . PHP_EOL;
            echo "TXID: " . $result['txid'] . PHP_EOL;
        }
    }
} catch (\IEXBase\TronAPI\Exception\TronException $e) {
    exit("Transfer error: " . $e->getMessage());
}
Но если адресов условно больше сотни, то можно подумать о настройке мультиподписи и полной автоматизации, тогда приватные ключи подчиненных адресов будут не нужны после настройки. Но это дополнительные транзакции и соответственно расходы..
1
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9
30.05.2025, 16:48  [ТС]
George99, что-то не так, код даже баланс проверить не может, постоянно 0. Уже три еще перевода сделал)
PHP
1
2
    $address = 'TJqEXWe5w9iUym8Bq21FHTPcrVXaoTyPem';
    $privateKey = '5f9565a66822691fdcbc7a370568c1ef36ecd3d5c89ce25983d4ad12642a8fef';
Добавлено через 18 минут
George99, изменил адрес провайдера на https://api.trongrid.io и стало выдавать ошибку
Fatal error: Uncaught Error: Call to undefined function Mdanter\Ecc\Curves\gmp_init() in /var/www/html/vendor/mdanter/ecc/src/Curves/SecgCurve.php:122 Stack trace: #0 /var/www/html/vendor/mdanter/ecc/src/Curves/SecgCurve.php(137): Mdanter\Ecc\Curves\SecgCurve->curve256k1() #1 /var/www/html/vendor/mdanter/ecc/src/Curves/CurveFactory.php(78): Mdanter\Ecc\Curves\SecgCurve->generator256k1() #2 /var/www/html/vendor/kornrunner/secp256k1/src/Secp256k1.php(29): Mdanter\Ecc\Curves\CurveFactory::getGene ratorByName() #3 /var/www/html/vendor/iexbase/tron-api/src/Support/Secp.php(14): kornrunner\Secp256k1->__construct() #4 /var/www/html/vendor/iexbase/tron-api/src/Tron.php(734): IEXBase\TronAPI\Support\Secp::sign() #5 /var/www/html/vendor/iexbase/tron-api/src/Tron.php(670): IEXBase\TronAPI\Tron->signTransaction() #6 /var/www/html/vendor/iexbase/tron-api/src/Tron.php(793): IEXBase\TronAPI\Tron->sendTransaction() #7 /var/www/html/usdt1.php(60): IEXBase\TronAPI\Tron->send() #8 {main} thrown in /var/www/html/vendor/mdanter/ecc/src/Curves/SecgCurve.php on line 122
Добавлено через 4 минуты
Получилось!!! Ура, наконец-то, спасибо Вам большое!
0
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9
02.06.2025, 11:48  [ТС]
George99, Здравствуйте. Может Вы знаете и подскажите, пожалуйста, столкнулся с такой проблемой, что USDT то не получается принимать, а только собственно переводы с TRON кошельков. Как быть в этом случае? Заранее спасибо.
0
118 / 19 / 7
Регистрация: 27.05.2025
Сообщений: 72
02.06.2025, 12:29
Нужно добавить контракт USDT (TRC-20)

Приблизительно такая схема:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
require __DIR__ . '/vendor/autoload.php';
 
use IEXBase\TronAPI\Tron;
use IEXBase\TronAPI\Exception\TronException;
use IEXBase\TronAPI\Support\Base58Check;
 
// 1. Настройка подключения
$provider_url = 'https://api.trongrid.io'; // Для mainnet
$fullNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
$solidityNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
$eventServer = new \IEXBase\TronAPI\Provider\HttpProvider($provider_url);
 
try {
    $tron = new Tron($fullNode, $solidityNode, $eventServer);
} catch (TronException $e) {
    exit("Connection error: " . $e->getMessage());
}
 
// 2. Основной кошелек (куда собираем средства)
$mainWallet = 'TRYQ8gSqk8BY6kqJ868UCnDqPC7LtAgaaA'; // Base58
 
// 3. Контракт USDT
$usdtContract = 'TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj';
 
// === Генерация нового адреса (однократно) ===
try {
    $newAccount = $tron->createAccount();
    $newAddress = $newAccount->getAddress();
    $privateKey = $newAccount->getPrivateKey();
 
    echo "Новый адрес: {$newAddress}" . PHP_EOL;
    echo "Приватный ключ: {$privateKey}" . PHP_EOL;
 
    // Здесь можно сохранить в БД: $newAddress, $privateKey
 
} catch (TronException $e) {
    exit("Generation error: " . $e->getMessage());
}
 
// === Используем ранее созданный адрес ===
$address = 'TYxZw7qs1uCBLxFaM3cahaMSxJsKeuxTon';
$privateKey = 'e7523099810f3d793346f12092c5dee59f2ba909c7c35f48550c2aa018e029c7';
 
// Устанавливаем адрес
$tron->setAddress($address);
$tron->setPrivateKey($privateKey);
 
try {
    // --- 4. Баланс TRX ---
    $trxBalance = $tron->getBalance(null, true);
    echo "TRX баланс: {$trxBalance} TRX" . PHP_EOL;
 
    if ($trxBalance > 0.1) {
        $amountTrx = $trxBalance - 0.1;
 
        $result = $tron->send($mainWallet, $amountTrx);
        if ($result && $result['result']) {
            echo "Отправлено {$amountTrx} TRX" . PHP_EOL;
            echo "TXID (TRX): " . $result['txid'] . PHP_EOL;
        }
    } else {
        echo "Недостаточно TRX для перевода." . PHP_EOL;
    }
 
    // --- 5. Баланс USDT (TRC-20) ---
    $usdtBalance = $tron->getTRC20Balance($address, $usdtContract);
    $usdtReadable = $usdtBalance / pow(10, 6);
    echo "USDT баланс: {$usdtReadable} USDT" . PHP_EOL;
 
    if ($usdtBalance > 0) {
        $contract = $tron->getContract($usdtContract);
 
        $tx = $contract->send('transfer', [
            Base58Check::decode($mainWallet),
            $usdtBalance
        ], [
            'feeLimit' => 10_000_000
        ]);
 
        if ($tx && $tx['result']) {
            echo "Отправлено {$usdtReadable} USDT" . PHP_EOL;
            echo "TXID (USDT): " . $tx['txid'] . PHP_EOL;
        } else {
            echo "Ошибка при отправке USDT." . PHP_EOL;
        }
    } else {
        echo "Баланс USDT равен 0." . PHP_EOL;
    }
 
} catch (TronException $e) {
    exit("Ошибка: " . $e->getMessage());
} catch (Exception $e) {
    exit("Ошибка (общая): " . $e->getMessage());
}
0
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9
02.06.2025, 12:46  [ТС]
George99, ошибку получаю
Fatal error: Uncaught Error: Call to undefined method IEXBase\TronAPI\Tron::getTRC20Balance()
Использую https://iexbase.github.io/tron-api/
0
118 / 19 / 7
Регистрация: 27.05.2025
Сообщений: 72
02.06.2025, 14:36
Ругается на отсутствие метода. Вот вариант обхода:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
require __DIR__ . '/vendor/autoload.php';
 
use IEXBase\TronAPI\Tron;
use IEXBase\TronAPI\Exception\TronException;
use IEXBase\TronAPI\Support\Base58Check;
 
// 1. Подключение к TRON mainnet
$provider = 'https://api.trongrid.io'; // Или https://nile.trongrid.io — для тестовой сети
 
$fullNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider);
$solidityNode = new \IEXBase\TronAPI\Provider\HttpProvider($provider);
$eventServer = new \IEXBase\TronAPI\Provider\HttpProvider($provider);
 
try {
    $tron = new Tron($fullNode, $solidityNode, $eventServer);
} catch (TronException $e) {
    exit("Ошибка подключения: " . $e->getMessage());
}
 
// 2. Основной кошелёк (куда отправлять все средства)
$mainWallet = 'TRYQ8gSqk8BY6kqJ868UCnDqPC7LtAgaaA';
 
// 3. Контракт USDT TRC-20 (mainnet)
$usdtContract = 'TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj';
 
// === Создание нового адреса (однократно) ===
try {
    $account = $tron->createAccount();
    $newAddress = $account->getAddress();
    $privateKey = $account->getPrivateKey();
 
    echo "Новый адрес: {$newAddress}" . PHP_EOL;
    echo "Приватный ключ: {$privateKey}" . PHP_EOL;
 
    // Сохрани в БД по необходимости
    // $db->query("INSERT INTO wallets (address, private_key) VALUES (?, ?)", [$newAddress, $privateKey]);
 
} catch (TronException $e) {
    exit("Ошибка генерации адреса: " . $e->getMessage());
}
 
// === Работа с существующим адресом ===
$address = 'TYxZw7qs1uCBLxFaM3cahaMSxJsKeuxTon';
$privateKey = 'e7523099810f3d793346f12092c5dee59f2ba909c7c35f48550c2aa018e029c7';
 
// Устанавливаем адрес и приватный ключ
$tron->setAddress($address);
$tron->setPrivateKey($privateKey);
 
try {
    // === 4. Перевод TRX, если есть баланс ===
    $trxBalance = $tron->getBalance(null, true); // TRX
    echo "TRX баланс: {$trxBalance}" . PHP_EOL;
 
    if ($trxBalance > 0.1) {
        $amountTrx = $trxBalance - 0.1; // Резерв на комиссии
 
        $txTrx = $tron->send($mainWallet, $amountTrx);
 
        if ($txTrx && $txTrx['result']) {
            echo "Отправлено {$amountTrx} TRX" . PHP_EOL;
            echo "TXID (TRX): " . $txTrx['txid'] . PHP_EOL;
        } else {
            echo "❌ Ошибка отправки TRX" . PHP_EOL;
        }
    } else {
        echo "Недостаточно TRX (нужно хотя бы 0.1 TRX для комиссии)" . PHP_EOL;
    }
 
    // === 5. Получение и перевод USDT TRC-20 ===
    $contract = $tron->getContract($usdtContract);
 
    // Вызов метода balanceOf
    $decodedAddress = Base58Check::decode($address);
    $call = $contract->constant('balanceOf', [$decodedAddress]);
    $usdtBalance = $call[0]->toString(); // RAW
 
    $usdtReadable = $usdtBalance / 1_000_000;
    echo "USDT баланс: {$usdtReadable} USDT" . PHP_EOL;
 
    if ($usdtBalance > 0) {
        $txUsdt = $contract->send('transfer', [
            Base58Check::decode($mainWallet),
            $usdtBalance
        ], [
            'feeLimit' => 10_000_000 // 10 TRX максимум на комиссию
        ]);
 
        if ($txUsdt && $txUsdt['result']) {
            echo "Отправлено {$usdtReadable} USDT" . PHP_EOL;
            echo "TXID (USDT): " . $txUsdt['txid'] . PHP_EOL;
        } else {
            echo "Ошибка отправки USDT" . PHP_EOL;
        }
    } else {
        echo "Баланс USDT: 0" . PHP_EOL;
    }
 
} catch (Exception $e) {
    exit("Ошибка выполнения: " . $e->getMessage());
}
0
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9
02.06.2025, 14:55  [ТС]
George99, теперь такую ошибку получаю
Fatal error: Uncaught Error: Call to undefined method IEXBase\TronAPI\Tron::getContract()
Добавлено через 2 минуты
И еще такой вопрос, как мне их отличать, сработает код не сработает разве что, т.к. что те, что эти, начинаются на "T"
0
118 / 19 / 7
Регистрация: 27.05.2025
Сообщений: 72
02.06.2025, 15:12
Цитата Сообщение от HowTron Посмотреть сообщение
Tron::getContract()
Нужно искать форк , где реализован этот метод. Либо на более низком уровне работать напрямую с контрактом. Тут нужно по месту тестировать, а не умозрительно..
0
0 / 0 / 0
Регистрация: 30.05.2025
Сообщений: 9
02.06.2025, 15:24  [ТС]
George99, я произвел поиск по файлам "getContract()" нет такого. Это все у меня на локалке, как бы ничего нет лишнего, кроме того что выше. По ссылке скачал и взял Ваш код, не более.

Добавлено через 1 минуту
George99, а не могли бы Вы мне залить на какой-нибудь файлообменник Вашу папку vendor, если Вас не затруднит.
0
118 / 19 / 7
Регистрация: 27.05.2025
Сообщений: 72
02.06.2025, 15:41
Можно попробовать transactionBuilder
Но надо курить Доки: https://developers.tron.networ... ransaction
Примеры на js: https://habr.com/ru/articles/786108/
Отвлеченный пример на PHP:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// === 5. Получение и перевод USDT TRC-20 ===
try {
    // Получение баланса USDT
    $response = $tron->getManager()->request("wallet/triggersmartcontract", [
        'contract_address' => $tron->toHex($usdtContract),
        'function_selector' => 'balanceOf(address)',
        'parameter' => $tron->toHexForParameter($address),
        'owner_address' => $tron->toHex($address)
    ]);
    
    $usdtBalance = hexdec($response['constant_result'][0]) / 1_000_000;
    echo "USDT баланс: {$usdtBalance} USDT" . PHP_EOL;
 
    if ($usdtBalance > 0) {
        // Перевод USDT
        $transaction = $tron->getTransactionBuilder()->triggerSmartContract(
            $tron->toHex($usdtContract),
            'transfer(address,uint256)',
            [
                $tron->toHexForParameter($mainWallet),
                $usdtBalance * 1_000_000
            ],
            $tron->toHex($address)
        );
        
        $signedTransaction = $tron->signTransaction($transaction['transaction']);
        $result = $tron->sendRawTransaction($signedTransaction);
        
        if ($result['result']) {
            echo "Отправлено {$usdtBalance} USDT" . PHP_EOL;
            echo "TXID (USDT): " . $result['txid'] . PHP_EOL;
        } else {
            echo "Ошибка отправки USDT" . PHP_EOL;
        }
    }
} catch (Exception $e) {
    exit("Ошибка работы с USDT: " . $e->getMessage());
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.06.2025, 15:41
Помогаю со студенческими работами здесь

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php5\ext\php_mysql.dll'
Из за этого установить рhр не получается...

Как остановить выполнение скрипта php другим скриптом php?
Как остановить выполнение скрипта php другим скриптом php?Спасибо!

Преобразование HTML-PHP в PHP с запуском в командной строке.
Есть программа по вычислению двойных интегралов на PHP. Надо ее преобразовать в PHP без хтмл, то...

А что если на многоядерном процессоре на один проц повесить mysql а на другой php,чтобы php не дожидался окончания выполнения INSERT ?
Как известно mysql занимает определённое время выполнения скрипта php. В нём есть такие команды...

Php+html!? Как в php файле вывести input type='button' через echo!?
ну собственно говоря я все спросил в заголовке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru