PHP Tron

Инструменты Tron и TRC-20 — от Pavlo Popov (IT-HEALER)

EN RU

Справочник API

Полный справочник публичных классов и методов PHP Tron.

Все классы находятся в пространстве имён ItHealer\Tron. Денежные значения возвращаются как Brick\Math\BigDecimal (приводите к строке через (string) или ->__toString()). Передавать суммы можно как string, int, float или BigDecimal — для точности рекомендуются строки.


Tron — главный фасад

ItHealer\Tron\Tron — единственная точка входа в библиотеку.

Создание

public static function make(
    ?string $apiKey = null,
    string $baseUri = 'https://api.trongrid.io',
    ?string $proxy = null
): Tron

Создаёт клиент для TronGrid (или совместимой ноды).

public function __construct(Api $api)

Низкоуровневый конструктор, принимающий полностью настроенный экземпляр Api.

Мнемоники

public function mnemonicGenerate(int $wordCount = 15): array

Сгенерировать мнемонику. $wordCount ∈ {12, 15, 18, 21, 24}. Возвращает string[] (слова).

public function mnemonicValidate(string|array $mnemonic): bool

Проверить мнемонику по словарю BIP39 и контрольной сумме. Возвращает bool.

public function mnemonicToSeed(string|array $mnemonic, ?string $passphrase = null): string

Получить бинарный seed. Возвращает seed в виде hex-string.

Кошельки

public function createWallet(string $name, ?string $passphrase = null, int $mnemonicSize = 15): Wallet

Создать новый кошелёк (генерируется свежая мнемоника, выводится первичный адрес с индексом 0). Возвращает Wallet.

public function importWallet(string $name, string|array $mnemonic, ?string $passphrase = null): Wallet

Восстановить кошелёк из существующей мнемоники. Бросает TronException, если мнемоника некорректна. Возвращает Wallet.

Адреса

public function createAddress(Wallet $wallet, ?string $title = null, ?int $index = null): Address

Вывести следующий адрес (или конкретный $index) и добавить его в кошелёк. Возвращает Address.

public function deriveAddress(Wallet $wallet, ?string $title = null, int $index = 0): Address

Вывести адрес по $index без изменения кошелька. Возвращает Address.

public function importAddress(string $address, ?string $title = null): Address

Создать watch-only Address (без приватного ключа, не может подписывать). Возвращает Address.

public function validateAddress(string|Address $address): bool

Проверить адрес через ноду. Возвращает bool.

Аккаунт, баланс и ресурсы

public function getAccount(string|Address $address): AccountDTO

Получить полную информацию об аккаунте. Возвращает AccountDTO.

public function getResources(string|Address $address): AccountResourcesDTO

Получить bandwidth и energy. Возвращает AccountResourcesDTO.

public function getBalance(string|Address $address): BigDecimal

Баланс TRX (в TRX, не в SUN). Возвращает BigDecimal.

Токены TRC-20

public function getTRC20Contract(string $contractAddress): TRC20Contract

Возвращает помощник TRC20Contract.

public function getTRC20Balance(string|Address $address, string $contractAddress): BigDecimal

Баланс токена у адреса (уже масштабирован по decimals токена). Возвращает BigDecimal.

Переводы TRX

public function transferPreview(string|Address $from, string|Address $to, BigDecimal|float|int|string $amount): TransferPreviewDTO

Оценить комиссии / итоговый баланс без отправки. Возвращает TransferPreviewDTO.

public function transfer(Address $from, string|Address $to, BigDecimal|float|int|string $amount): TransferSendDTO

Подписать и отправить. $from должен быть «расходуемым» Address. Бросает TronException при ошибке. Возвращает TransferSendDTO.

public function transferAll(Address $from, string|Address $to): TransferSendDTO

Отправить весь баланс за вычетом сетевых комиссий. Возвращает TransferSendDTO.

Переводы TRC-20

public function transferTRC20Preview(string $contractAddress, string|Address $from, string|Address $to, BigDecimal|float|int|string $amount, BigDecimal|float|int|string $feeLimit = 30): TRC20TransferPreviewDTO

Возвращает TRC20TransferPreviewDTO.

public function transferTRC20(string $contractAddress, Address $from, string|Address $to, BigDecimal|float|int|string $amount, BigDecimal|float|int|string $feeLimit = 30): TRC20TransferSendDTO

Подписать и отправить перевод токена. Возвращает TRC20TransferSendDTO.

public function transferTRC20All(string $contractAddress, Address $from, string|Address $to, BigDecimal|float|int|string $feeLimit = 30): TRC20TransferSendDTO

Отправить весь баланс токена. Возвращает TRC20TransferSendDTO.

История

public function getTransfers(string|Address $address): Transfers

Возвращает итератор Transfers по переводам TRX.

public function getTRC20Transfers(string|Address $address): TRC20Transfers

Возвращает итератор TRC20Transfers.

public function getTransactionInfo(string $txid): TransactionInfoDTO

Возвращает TransactionInfoDTO.

public function getTransfer(string $txid): ?TransferDTO

Возвращает TransferDTO или null.

Константы


Wallet

ItHealer\Tron\Wallet\Wallet — value-объект: пара мнемоника/seed и выведенные из неё адреса. Не выполняет ввод-вывод сам по себе.

Свойства

Методы

public function addAddress(Address $address): void
public function getAddresses(): array          // Address[]
public function getPrimaryAddress(): ?Address   // индекс 0
public function findAddress(string $address): ?Address
public function maxIndex(): ?int                // наибольший использованный индекс
public function toArray(): array
public static function fromArray(array $data): Wallet

Address

ItHealer\Tron\Wallet\Address — один адрес Tron.

Свойства

Методы

public function isSpendable(): bool   // false для watch-only / без ключа
public function toArray(): array
public static function fromArray(array $data): Address
public function __toString(): string  // возвращает адрес

Crypto\Mnemonic

ItHealer\Tron\Crypto\Mnemonic — статические помощники BIP39 (также доступны через фасад Tron).

public static function generate(int $wordCount = 15): array      // string[]
public static function validate(string|array $mnemonic): bool
public static function toSeed(string|array $mnemonic, ?string $passphrase = null): string  // hex

Crypto\Encryption

ItHealer\Tron\Crypto\Encryption — AES-256-GCM на основе пароля (ключ выводится через PBKDF2).

public static function encrypt(string $plaintext, string $password): string  // base64 (salt+iv+tag+ciphertext)
public static function decrypt(string $payload, string $password): string     // бросает TronException при неверном пароле

Storage\WalletStore

ItHealer\Tron\Storage\WalletStore — файловое хранилище кошельков с необязательным шифрованием и переносимыми бэкапами.

public function __construct(string $directory, ?string $password = null)

Если задан $password, каждый файл кошелька шифруется AES-256-GCM.

public function save(Wallet $wallet): string   // возвращает путь к файлу
public function exists(string $name): bool
public function load(string $name): Wallet      // бросает TronException, если нет файла / неверный пароль
public function names(): array                  // string[]
public function all(): array                    // Wallet[]
public function delete(string $name): void
public function backup(Wallet|array $wallets, string $file, string $password): void  // всегда зашифрован
public function restore(string $file, string $password): array                        // Wallet[]

Storage\Database

ItHealer\Tron\Storage\Database — тонкая обёртка SQLite (PDO), используемая монитором депозитов. Требует расширение pdo_sqlite. Создаёт файл и таблицы автоматически.

public function __construct(string $path)   // поддерживается ':memory:'
public function pdo(): \PDO

Webhook\WebhookSender

ItHealer\Tron\Webhook\WebhookSender — доставляет подписанные JSON-вебхуки по HTTP POST.

public function __construct(string $url, ?string $secret = null, int $timeoutMs = 10000)

public function isConfigured(): bool

// Значение заголовка X-Tron-Signature: "sha256=<hmac>"
public static function signature(string $body, string $secret): string

// Отправить payload. Возвращает ['ok' => bool, 'code' => int, 'error' => ?string].
public function send(array $payload): array

Webhook\DepositMonitor

ItHealer\Tron\Webhook\DepositMonitor — отслеживает адреса на новые входящие транзакции TRX / TRC-20 и отправляет вебхуки. Состояние хранится в SQLite.

public function __construct(Tron $tron, Database $db, ?WebhookSender $sender = null, array $options = [])

$options:

Методы

public function watch(string $address, ?string $label = null): void  // идемпотентно
public function unwatch(string $address): void
public function watched(): array          // строки: id, address, label, watch_from, created_at
public function deposits(int $limit = 50): array  // последние депозиты, новые сверху
public function poll(): array             // один тик; возвращает новые обнаруженные депозиты
public function run(int $intervalSeconds = 30, ?int $maxTicks = null, ?callable $onDeposit = null): void

Строка депозита содержит: id, address, txid, asset, contract, amount, from_address, block_time, detected_at, webhook_status, webhook_code, webhook_attempts. Полное руководство — docs/WEBHOOKS.md.


Api\TRC20Contract

ItHealer\Tron\Api\TRC20Contract — получается через Tron::getTRC20Contract().

public readonly string $address;

public function name(): string
public function symbol(): string
public function decimals(): int
public function balanceOf(string $address): BigDecimal

Итераторы переводов

Оба реализуют Iterator и автоматически листают страницы. Все методы-строители возвращают $this (цепочка вызовов). Ограничивайте число прочитанных элементов через break в цикле.

Transfers (TRX) — ItHealer\Tron\Api\Methods\Transfers

public function onlyConfirmation(?Confirmation $confirmed): static
public function onlyDirection(?Direction $direction): static
public function limit(int $limit): static            // 1..200, размер страницы
public function orderBy(?OrderBy $orderBy): static
public function minTimestamp(?int $minTimestamp): static   // мс
public function maxTimestamp(?int $maxTimestamp): static   // мс
public function searchInterval(bool $searchInterval): static

При итерации возвращает элементы TransferDTO.

TRC20Transfers — ItHealer\Tron\Api\Methods\TRC20Transfers

public function onlyConfirmation(?Confirmation $confirmed): static
public function limit(int $limit): static
public function fingerprint(?string $fingerprint): static
public function orderBy(?OrderBy $orderBy): static
public function minTimestamp(?int $minTimestamp): static
public function maxTimestamp(?int $maxTimestamp): static
public function contractAddress(?string $contractAddress): static  // фильтр по токену

При итерации возвращает элементы TRC20TransferDTO.

Внимание: у TRC20Transfers нет onlyDirection(). Фильтруйте входящие переводы, сравнивая $transfer->to с отслеживаемым адресом.

DTO

Все DTO неизменяемы, имеют toArray() и находятся в ItHealer\Tron\Api\DTO.

AccountDTO

AccountResourcesDTO

TransferPreviewDTO

TransferSendDTO

TRC20TransferPreviewDTO

TRC20TransferSendDTO

TransferDTO

TRC20TransferDTO

TransactionInfoDTO


Перечисления (Enums)

Пространство имён ItHealer\Tron\Api\Enums.


Исключения

ItHealer\Tron\Exceptions\TronException наследует \Exception. Бросается при некорректном вводе, неудачных предпросмотрах/переводах, ошибках расшифровки, ошибках HTTP и проблемах хранилища. Оборачивайте вызовы, затрагивающие сеть или недоверенный ввод, в try/catch.