Биткоин-кошельки дают только ощущение анонимности. При регистрации кошелька, генерируются новые адреса, без каких либо контактных данных, местоположении и информации о пользователе. Но Биткоин это псевдо-анонимная криптовалюта, в которой можно просмотреть всю историю транзакций и взаимодействие адресов через блокчейн-эксплорер.
Существуют несколько коммерческих сервисов деанонимизации кошельков. Они круглосуточно парсят информацию об участниках форумов, изучают горячие кошельки крупных бирж и обменников, мониторят движения инвестиций и теневой рынок. Таким образом собирается огромная база соответствий адрес - владелец, как узловые элементы в цепочке денег. По ним то и можно определить движение средств.
Принцип работы Биткоин миксера
Не все пользователи хотели бы показывать свои транзакции, например при оплате услуг индустрии для взрослых, крипто-голосований или покупки цифрового контента. Да и вообще, неприкосновенность частной личной жизни, персональных данных и финансов, в Европейских странах защищена законом.
Для того чтобы прервать или запутать цепочку транзакций созданы биткоин миксер (или тумблер). Главная цель процесса- полностью разорвать связь входящей оплаты и анонимной транзакции, поступившей на кошелек получателя платежа.
В данном процессе могут участвовать:[*]предварительно смешанные монеты из различных источников[*]промежуточное объединение монет[*]рандомное разделение монет в разных пропорциях[*]выплата одной или несколькими суммами[*]разное время выплаты растянутое в несколько часов[*]плавающая комиссия миксера и блокчейн сети
Самым примитивным способом смешивания монет, могут быть монеты от других участников миксера. Но их сомнительное происхождение, только усугубит анонимность клиентов. Поэтому правильнее, покупать чистые Биткоины от крупных бирж, таких как Binance, Huobi, Poloniex и другие, брать из кросс-валютных обменников ETH-LTC-BTC, а также получать новые намайненые монеты в ходе эмиссии.
Подготовка к разработке
В этой статье мы не даем готового решения, которое можно скачать и поставить. Потому что логика смешивания и отдачи монет имеет огромное количество вариантов. Также можно распоряжаться не только своими биткоинами, а привлекать инвестиционные под процент или вообще обходиться только входящими монетами. В этой статье, мы лишь расскажем о ключевых возможностях реализации, методах приема платежей и распределения транзакций.
В целях безопасности, проект можно разделить на две части: главная страница и сервер выплаты (backend). В случае компрометации веб сервера, злоумышленник не будет иметь возможности получить доступ к денежным ресурсам миксера. Серверная часть будет принимать колбэк от платежного сервера, выполнять выплаты по таймеру и управлять капиталом сервиса.
Поднимать собственную Битоин ноду, держать отдельный мощный сервер и обслуживать его, довольно дорого и трудозатратно. Ведь ноде нужно минимум 200Гб жесткого диска, 2Гб ОЗУ и более менее приличный процессор. Гораздо удобнее использовать готовые API (Application Programming Interface).
Найдено несколько таких вариантов:
https://btcpayjungle.com/
https://www.blockchain.com/ru/api
https://bitpay.com/api
https://apirone.com/ru/docs/wallet
Возьмем готовое решение от Apirone. Здесь все входящие транзакции можно принимать абсолютно бесплатно. А в одной транзакции можно указать до 255 получателей и заплатить фиксированную комиссию, всего 0.0002 BTC ($0.7). Такой сервис идеально подходит для нашего Миксера. Его легко масштабировать и быстро разворачивать на любом сервере. К тому же не требуется отправлять документы и деанонимизировать себя.
Кошельки полностью анонимные, а создавать их можно сколько угодно, без ограничений.
Для хранения чистых Биткоинов нам потребуется Saving (накопительный) кошелек. Создаем его простым POST запросом в JSON формате: {"type": "saving"} на эндпоинт
https://apirone.com/api/v2/btc/wallet
В ответ получаем результат в JSON формате:
PHP код:
Код:
Код:
{
**"wallet":*"8e9c53a62755bcc66e4d2aaae3a2af6d",
**"type":*"saving",
**"transfer_key":*"7j0ap91o99cxj8k97j0ap91o99cxj8k9",
**"currency":*"btc"
}*
wallet - идентификатор созданного кошелька.
transfer_key - ключ для создания выплат и управления кошельком.
Главная страница
На главной странице мы поместим возможность оплатить одному или сразу нескольким получателям в разных процентных пропорциях, а также дадим возможность выбрать сервисный сбор самостоятельно.
По нажатию на кнопку Продолжить, адреса и соответветствующие проценты сохраняются как заказ, в базе данных.
Для нашего уже имеющегося кошелька, создаем новый биткоин-адрес для оплаты. Отправляем POST запрос в JSON формате.
Пример кода на PHP:
PHP код:
Код:
Код:
<?php
**$json_data*=*array*(
****"callback"*=>*array(
********'url'=>*'https://example.com/callback',
********'data'*=>*array*(
************'invoice_id'*=>*"1234",
************'secret'*=>*"7j0ap91o99cxj8k9"
********)
****)
**);
**
**$wallet*=*"8e9c53a62755bcc66e4d2aaae3a2af6d";
**$api_base*=*"https://apirone.com/api/v2/btc/wallet/".*$wallet*."/address";
*
**$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_encode($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*"Please*send*the*payment*to*the*following*bitcoin*address:*"*.
**$decoded["address"];
?>
В 'url'=> 'https://example.com/callback' меняем ссылку на адрес страницы для колбэка на своем сайта. Эта страница будет получать всю информацию о поступающих платежах.
'invoice_id' - сохраненный в БД номер заказа.
'secret' - придуманный вами секретный код, для доп. безопасности при получении данных от платежного сервиса.
$wallet - идентификатор кошелька с которым мы работаем
Для удобной оплаты с мобильного телефона, показываем QR код с биткоин-адресом,
PHP код:
Код:
Код:
echo*'<img*src="https://apirone.com/api/v1/qr?message='.*$decoded["address"]*.'">'*;*
Сумма оплаты может быть любая, так как платеж будет разделяться по процентам.
Обработка Callback
Страница колбэка нужна для приема данных о транзакции и выполнения бизнес логики при оплате. На эту страницу Биткоин-процессинг передает: адрес, сумму, хэш транзакции,
количество подтверждений и данные которые мы указали: invoice_id и secret. Данные передаются POST запросом в формате JSON, так удобнее и безопаснее.
Для обработки нам нужен не сложный скрипт:
PHP код:
Код:
Код:
<?php
$secret*=*"7j0ap91o99cxj8k9";
//receive*JSON*data
$data*=*file_get_contents('php://input');
if*($data)*{
****$params*=*json_decode($data,*true);
****//*Проверяем*секретный*код
****if*($params["data"]["secret"]*!==*$secret)*die();
****$url*=*$params["data"]["url"];
****$logo*=*$params["data"]["logo"];
****$input_address*=*$params["input_address"];
****$value_in_satoshi*=*$params["value"];
****//*Если*количество*подтверждений*ноль,*то*записываем*данные*в*базу,*но*не*выплачиваем
****if*($params["confirmations"]*==*0)*{
****
********//*пишем*данные*о*транзакции*и*
********отмечаем*статус*инвойса*-*ожидание*подтверждения*оплаты
********
****}
****
****if*($params["confirmations"]*>=*3)*{
********
********//*транзакция*три*раза*подтверждена*в*сети,*отвечаем*платежному*серверу**ok**и*ставим*статус*заказа*-*на*выплату
********
********echo*"*ok*";
****}
}
?>
Мы настоятельно рекомендуем делать выплату минимум после одного подтверждения в сети!
Выплата в Биткоинах. Backend сервер.
После подтверждения оплаты клиентом, нам нужно снова получить список получателей платежа и процентах. Затем создаем JSON запрос на выплату:
PHP код:
Код:
Код:
<?php
$secret*=*"7j0ap91o99cxj8k9";
//receive*JSON*data
$data*=*file_get_contents('php://input');
if*($data)*{
****$params*=*json_decode($data,*true);
****//*Проверяем*секретный*код
****if*($params["data"]["secret"]*!==*$secret)*die();
****$url*=*$params["data"]["url"];
****$logo*=*$params["data"]["logo"];
****$input_address*=*$params["input_address"];
****$value_in_satoshi*=*$params["value"];
****//*Если*количество*подтверждений*ноль,*то*записываем*данные*в*базу,*но*не*выплачиваем
****if*($params["confirmations"]*==*0)*{
****
********//*пишем*данные*о*транзакции*и*
********отмечаем*статус*инвойса*-*ожидание*подтверждения*оплаты
********
****}
****
****if*($params["confirmations"]*>=*3)*{
********
********//*транзакция*три*раза*подтверждена*в*сети,*отвечаем*платежному*серверу**ok**и*ставим*статус*заказа*-*на*выплату
********
********echo*"*ok*";
****}
}
?>
Мы настоятельно рекомендуем делать выплату минимум после одного подтверждения в сети!
Выплата в Биткоинах. Backend сервер.
После подтверждения оплаты клиентом, нам нужно снова получить список получателей платежа и процентах. Затем создаем JSON запрос на выплату:
PHP код:
Код:
Код:
<?php
**$WalletID*=*"8e9c53a62755bcc66e4d2aaae3a2af6d";
**
**$json_data*=*'{"transfer_key":*"3847fud983d30d303ie093uj97"}'*.
**array*(*
****'destinations'*=>*array*(********
********array('address'*=>*"1apiKcJM95jENZeom2dQo8ShK7dUQkRaS",*'amount'*=>*"52.57%"),
********array('address'*=>*"1ApiwpetcWnBbkpU7cb7biPfc6Tiucasf8",*'amount'*=>*"47.43%")
****)
**);
**
**$api_base*=*file_get_contents("https://apirone.com/api/v2/btc/wallet/"*.
**************$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_encode($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*hash:*"*.*$decoded["txid"];
?>
Здесь мы формируем выплату на два биткоин-адреса в соответствующих пропорциях, без учета комиссии миксера, её вам следует добавить в список.
При этом комиссия платежного шлюза будет фиксированной и составляет всего 0.0002 BTC, независимо от суммы. Комиссия биткоин сети вычитается пропорционально от всей транзакции.
Привлечение Биткоин-инвесторов и реклама.
“Миксеру” необходимы оборотные средства, которые вы можете привлекать за счет инвесторов, делясь с ними частью прибыли. А для большего вовлечения аудитории в проект, вы можете добавить реферальную программу привлечения клиентов, скажем за каждого привлеченного клиента, мгновенная выплата.
Создайте систему бонусов для блогеров и активных участников соц. сетей, раздавая поощрения за активную рекламу. Скажем по несколько тысяч сатоши за каждое действие:
Вы можете быть хорошим организатором, продвинутым менеджером проекта или стартапером, чтобы запустить Биткоин-миксер. Ведь каждая идея достойна реализации!