[DEV: PHP] Перевод криптовалюты с выбранных адресов

Криптовалюты - это псевдоанонимное средство расчетов. С одной стороны, не нужно проходить проверку, чтобы создать кошелек, а с другой, по цепочке транзакций можно определить источник средств. Биржи и обменники не желают связываться с “грязными” монетами, для этого проводят KYC клиента и проверку каждой транзакции.

Крипто-кошелек содержит множество адресов. Обычно при трансфере, несколько монет объединяются в одну, а сдача возвращается на новый адрес.

Если у вас p2p-обмен, торговая площадка, телеграм-бот или сервис, связанный с выводом в фиатную валюту, то вам необходимо иметь изолированные транзакции в пределах одного адреса.

Такая функция уникальна, поскольку ни один другой процессинг (на момент написания статьи) не обладает подобным решением, т.е. не предоставляет клиенту возможность выбора монет при оплате.

Тестовый кошелек: tbtc-bde1cfc70297e4ff7068334b25986819

Тестовый Transfer_key: hyl1aQkd5vwdzT1uExgUCOXOcekUg4Yc

Пример кода:

<?php $WalletID = "tbtc-bde1cfc70297e4ff7068334b25986819"; $json_data = '{"transfer_key": "hyl1aQkd5vwdzT1uExgUCOXOcekUg4Yc", "addresses": ["2N919xVyDyutwTX87zg1NBQWJQWcFcpVVUf"], "destinations": [{"address": "2N4obeEuEidHmuXLCLvWeA4tH9FhB8W8EyD", "amount": 40000}]}'; $api_base = "https://apirone.com/api/v2/wallets/" . $WalletID . "/transfer"; $curl = curl_init($api_base); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $json_data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $http_status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); $response = curl_exec($curl); curl_close($curl); $decoded = json_decode($response, true); echo "Transaction created: " . $decoded["created"] . "<br>"; echo "Transaction hash: " . $decoded["txs"]["0"] . "<br>"; echo "Total amount: " . $decoded["total"] . " Satoshies"; ?>

Где addresses - это массив из одного или нескольких адресов, из которых будут браться монеты для транзакции.

Получателей destinations может быть от 1 до 255, они также перечисляются в массиве.

Бизнес-логику можно построить так:

  • вам прислали платеж, и он подтвердился в сети
  • вы проверили его на чистоту, например в сервисе Crystal Blockchain
  • в случае недостаточной чистоты происхождения средств, вернули их отправителю, не затронув других клиентов

В параметре суммы можно указать значение “100%”, в таком случае комиссия сети вычитается из суммы и на указанном(-ых) адресе(-ах) на балансе будет ноль.

11
Начать дискуссию