Активация Tron адреса
Для активации адреса нужен уже активированный адрес, на котором уже есть некоторое количество TRX. Для получения TRX в тестнете Shasta можно использовать faucet.
CreateAccount API
Ранее мы уже обсуждалигенерацию Tron адреса и что, его нужно активировать. Одним из способов активации было – вызов Create Account API. Попробуем это сделать.
Итак, допустим у нас есть адрес TRcaRU8eLxUsnj2htorxZGncT9ZB4xYxQr
с TRX на балансе и новый сгенерированный адрес TH4STRrsWLpmFVv1jQTeB3J7ERwe7PZWsY
,
который мы хотим активировать. Активация адреса – это транзакция, которую нужно будет создать, подписать приватным ключом и потом отправить в сеть. Поэтому нужно сперва указать библиотеки приватный ключ от аккаунта, с которого мы будем подписывать транзакции. И вызываем апи для активации адреса:
1
2
3
4
$tron->setPrivateKey('YOUR-PRIVATE-KEY');
$transaction = $tron->registerAccount(
'TRcaRU8eLxUsnj2htorxZGncT9ZB4xYxQr', 'TH4STRrsWLpmFVv1jQTeB3J7ERwe7PZWsY'
);
В ответ получим объект “неподписанной” транзакции в виде массива. У транзакции будет поле txID
– идентификатор этой транзакции.
Далее у нас будет 1 минута, чтобы подписать эту транзакцию и забродкастить её (отправить на ноду).
1
2
3
4
5
6
7
8
9
$signedTransaction = $tron->signTransaction($transaction);
$result = $tron->sendRawTransaction($signedTransaction);
if (!$result['result']) {
echo 'Error: ' . $result['message'] . PHP_EOL;
} else {
echo 'Transaction hash: ' . $result['txid'] . PHP_EOL;
}
// Transaction hash: 7a6546cda0f49753691805596b159f9eeb72895da788612bd1b99d946d9ef783
Метод signTransaction()
добавляет в массив транзакции поле signature
, в котором хранится подпись txID
этой транзакции нашим приватным ключом. Далее метод sendRawTransaction()
под капотом вызывает API метод full ноды wallet/broadcasttransaction
. В ответ получаем результат и хэш этой транзакции. По хэшу можно найти транзакцию на эксплорере:
Отправка TRX
Еще одним способом активации нового адреса является отправка TRX с уже активированного адреса. Достаточно будет отправить 0.1 TRX:
1
2
3
4
5
6
7
8
9
$result = $tron->sendTransaction(
'TH4STRrsWLpmFVv1jQTeB3J7ERwe7PZWsY', 0.1, 'TRcaRU8eLxUsnj2htorxZGncT9ZB4xYxQr'
);
if (!$result['result']) {
echo 'Error: ' . $result['message'] . PHP_EOL;
} else {
echo 'Transaction hash: ' . $result['txid'] . PHP_EOL;
}
Указываем куда (TH4STRrsWLpmFVv1jQTeB3J7ERwe7PZWsY
), сколько TRX (можно указать в виде дробного числа 0.1
) и с какого адреса TRcaRU8eLxUsnj2htorxZGncT9ZB4xYxQr
отправляем. Здесь под капотом сразу будет транзакция создана, подписана и забродкащена. В ответ мы уже получаем результат брокаста с хэшем транзакции на блокчейне.
Если планируем все транзакции отправлять с одного адреса, то можно один раз указать свой адрес:
1
2
3
4
$tron->setPrivateKey('YOUR-PRIVATE-KEY');
$tron->setAddress('TRcaRU8eLxUsnj2htorxZGncT9ZB4xYxQr');
$transaction = $tron->sendTransaction('TH4STRrsWLpmFVv1jQTeB3J7ERwe7PZWsY', 0.1);
Отправка TRC-10 токена
Ещё одним вариантом активации адреса может быть отправка TRC-10 токена на этот адрес. Попробуем это сделать в тетснете Nile, указав в качестве ноды https://api.nileex.io
:
1
2
3
$fullNode = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.nileex.io');
$solidityNode = new \IEXBase\TronAPI\Provider\HttpProvider('https://api.nileex.io');
$tron = new \IEXBase\TronAPI\Tron($fullNode, $solidityNode);
Где взять TRC-10 токены в тестнете? Можно воспользоваться faucet-ом для сети Nile. Там можно получить 100
TRN
токенов.
Имея у себя на балансе TRC-10 токены и немного TRX (для покрытия transaction fee), можно попробовать перевести немного токенов на новый адрес:
1
2
3
4
5
6
$result = $tron->sendTokenTransaction('TY5vve1fL4odqFmVwB4pwCJsiy8jfGJaFe', 10, 1005416);
if (!$result['result']) {
echo 'Error: ' . $result['message'] . PHP_EOL;
} else {
echo 'Transaction hash: ' . $result['txid'] . PHP_EOL;
}
В примере выше мы переводим 10 токенов на адрес TY5vve1fL4odqFmVwB4pwCJsiy8jfGJaFe
. Что такое третий параметр 1005416
? Это айди TRC-10 токена. Где его взять? Можно через API, можно прямо в эксплорере.
Только TRC-10 токены имеют айдишники. Для TRC-20 токенов это неактуально.
Вызов sendTokenTransaction()
под капотом создаст транзакцию, подпишет и отправит на ноду. В ответ мы получим уже результат с хэшем транзакции и данные подписанной транзакции.