Ответы пользователя по тегу Bitcoin
  • Какой вариант просмотра баланса BTC кошелька лучше?

    @rPman
    Можно использовать публичные сервера electrum, но если нужна массовый анализ то собирай данные сам, используя официальный кошелек и скрипта анализа.

    Самое простое, однократно запросить дамп utxo, а затем на каждый блок собирать информацию по транзакциям и обновлять балансы у себя в базе
    Ответ написан
    1 комментарий
  • Есть ли оболочка для PHP для работы с биткоин кошельком?

    @rPman
    да, это библиотека облачной платформы

    для работы с bitcoin достаточно официального кошелька (причем если задачи - мерчант, т.е. кошельки, чей баланс нужно смотреть новосозданные) то можно использовать ключ -prune=512, тогда блокчейн на диске будет занимать считанные гигабайты (сейчас 5 кажется), ровно размер базы UTXO.

    используй официальный https://developer.bitcoin.org/reference/rpc/
    для оперативного получения уведомлений о новых блоках и транзакциях notify ключи демона bitcoin или zeromq (скорее всего это нужно только если весь блокчейн анализируешь)
    библиотеки для этого совершенно не требуется, максимум одна функция отправки curl типа такой:
    spoiler
    function wallet($method,$params=array(),$json=true)
    {
    	if(!is_array($params)) $params=array($params);
    	$ch = curl_init();
    	curl_setopt($ch, CURLOPT_URL, 'http://'.BITCOIN_USER.':'.BITCOIN_PASS.'@'.BITCOIN_IP.':BITCOIN_PORT');
    	curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(array('jsonrpc'=>'1.0','id'=>'1','method'=>$method,'params'=>$params)));
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
    	$txs_str=curl_exec($ch);
    	curl_close($ch);
    	$result=$json?json_decode($txs_str):$txs_str;
    	if(is_null($result))
    	{
    		die('FATAL: Invalid ip, login or password of bitcoin wallet?'.nl);
    	}
    	return $result;
    }

    подправь обработку ошибок и тебе больше ничего не понадобится
    Ответ написан
  • Снизится ли уровень риска выходного кошелька(aml)?

    @rPman
    Мое мнение - миксеры, в текущих реалиях борьбы регуляторов с bitcoin (а именно это и происходит когда вам с пафосом рассказывают о 'не запрете' криптовалют и генерации неадекватных законов о цифровых активах) - бесполезны.

    Чем больше переводов пользователями совершаются в/из регулируемых площадок, где пользователя верифицируют всеми доступными способами (от местоположения по ip, fingerprint браузера, синхронным встречным сделкам одного объема и конечно номера телефона) до KYC верификации по паспорту и другим документам, тем больше переводов, которые нельзя идентифицировать, помечаются как опасные.

    Все дерево переводов между неидентифицированными пользователями воспринимается как один блок, и что бы вы там не намешали - помечается как опасные, требующие повышенного внимания.
    Ответ написан
    Комментировать
  • Стоит ли покупать новичку флешку для покупки биткоина?

    @rPman
    Для доступа к монетам необходимо хранить информацию - приватный ключ (а точнее список всех приватных ключей, на которые будут получения монет в т.ч. сдачи при тратах меньше полной суммы)

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

    Один из самых удобных с точки зрения использования механизмов brain wallet (не путать с одноименным сервисом) - автогенерация приватных ключей и адресов на основе сид ключа (в виде сид фразы из 12 английских слов), который достаточно сохранить/записать или даже запомнить наизусть или даже придумать самому (осторожно, все комбинации придуманных фраз или частей текстов проверяются и монеты воруются в тот же миг как они появляются на счете - т.е. безопасно можно использовать только случайно сгенерированые сид фразы). Достоинство и недостаток подхода - одна сид фраза позволит получить доступ к монетам на всех адресах в будущем, сгенгерированных на ее основе, т.е. бакап не нужно будет обновлять при использовании кошелька (когда как при использовании bitcoin core это делать нужно). Старейший, самый удобный и функциональный bitcoin кошелек с этой функцией это - electrum (opensource, python), в 4 версии добавили lightning network. Для использования достаточно брать надежное оборудование (без жучков), загружаться с livecd какой-нибудь ubuntu и из нее запускать кошелек, указав сид фразу.

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

    Данные можно сохранить, записав их на бумаге или даже выгравировав на металлической/стеклянной пластинке, при наличии прямых рук и оборудования qr-код можно нацарапать вручную (сид - это 128битное число) или самым дешевым 3d принтером/гравером (надеюсь не нужно объяснять что доверять печать третьему лицу означает доверие ему этой сид фразы?). Да эту информацию можно предварительно зашифровать паролем, а сам пароль запоминать, но это будет то же самое что запомнить сам сид.

    Самое надежное это не пассивное хранение информации с паролем на нескольких носителях и сервисах онлайн хранения с постоянным контролем (например раз в месяц), таким образом и пароль легко запомнить и защититься от потери/поломки
    Ответ написан
    Комментировать
  • Как проверить биткоин адрес на реальность?

    @rPman
    тот на котором были любые транзакции
    очень сложное условие, для этого нужно сканировать блокчейн

    Можно это делать самому (bitcoin core так делать не умеет, можно сделать индекс на транзакции или контролировать указанный список, при добавлении адресов потребуется пересканировать блокчейн, иногда мне кажется это такое тонкое издевательство разработчиков) либо взять готовый клиент, например btcd там есть опция создания индекса --addrindex и будет соответствующий rpc запрос

    p.s. если бы было требование положительного баланса, для bitcoin core есть утилита дампа списка UTXO (не потраченные выходы) но это разовая операция, занимает некоторое время и готовит (на текущий момент) 5-гб csv файл.
    Ответ написан
    5 комментариев
  • Актуален ли майнинг и как это реализовать с наименьшим бюджетом?

    @rPman
    Нет, сейчас нет!

    Майнить на asic-ах - не выгодно, скорее всего основные покупатели и майнеры bitcoin - желающие отмыть деньги (между тратами на майнинг и продажей намайненного невозможно выявить связь), а еще майнинг монеты не имеют истории (это тоже ценится, особенно сейчас в эпоху введения тотального запрета криптоэкономики). Те глупые что купили их в надежде заработать - отбивают затраты перепродажей их другим идиотам.

    Майнить на видеокартах альты в принципе выгодно, но доходы мизерные, расходы в основном на амортизацию видеокарт (а они сейчас неадекватно дорогие) и электроэнергия. Есть риски того что такой майниг станет сильно убыточен (например эфир перестанет майниться а другие альты никому не нужны окажутся). На коротком промежутке времени в несколько месяцев, если у вас уже есть видеокарты, это оправдано, если воспользоваться инструментами маржинальной торговли или фьючерсами (открыть шорт позу по эфир-бакс, осторожно куча рисков) и защититься от падения курсов эфира (каждый раз как продаешь намайненный эфир, уменьшаешь размер маржинальной позиции на тот же объем) - т.е. позволить себе продавать эфир по сегодняшним ценам еще какое то время, даже если курс упадет.

    Так как после стоимости оборудования, основные затраты у майнеров - электроэнергия (и помещение), этим можно пользоваться если у вас она очень дешевая или бесплатная (воруете)... как инструмент продажи энергии по цене чаще даже выше среднерыночных без юридических заморочек (не нужно поставлять энергию кому то, просто поставь майнеры и сжигай ее в них). Самый простой способ - поставить гидро/ветро/солнечную электростанцию и майнить без буферного накопления энергии (тогда себестоимость станет реально копеечная и в основном будет состоять из затрат на охрану и амортизацию оборудования)
    Ответ написан
    6 комментариев
  • Холодный кошелек на андроид?

    @rPman
    Кошелек Electrum имеет готовые инструменты по работе оффлайн и трансляции подписанной транзакции например с помощью звука. Не уверен правда что все эти прелести работают именно на android версии, но на desktop да.
    Ответ написан
    Комментировать
  • Как узнать сколько сейчас занимает вся копия биткоина?

    @rPman
    bitcoin core позволяет не хранить всю базу на диске, используй ключ --prune 'размер в мб' чтобы хранить только последние блоки не больше указанного размера (512 минимум), на диске место будет занимать еще chainstate - список всех не потраченных выходов, сейчас это примерно 5 гигабайт.

    Недостаток, вы не сможете корректно импортировать свой адрес, на котором уже лежат монеты, возможно даже и сможете но либо оно заново будет прогружать блоки либо будет некорректная история или даже баланс.
    Ответ написан
    Комментировать
  • Как офлайн проверять баланс биткоин кошельков?

    @rPman
    Балансы кошельков - это база UTXO, ее размер сейчас примерно 4 гигабайта
    прогружаете базу bitcoin-core, можно не хранить ее всю, ведь нужен только chainstate (ключ --prune 512 займет примерно 5гб)
    Затем утилитой получаете весь список и ищете там свой адрес.
    Ответ написан
    1 комментарий
  • Как я могу создать "фейковую" биткоин транзакцию?

    @rPman
    В транзакции нет такого - зачислить энную сумму такому то, некуда вписывать любую сумму.
    Там следующее - возьми вот эти монеты и переведи туда то, подписанную приватником адресов, с которых эти монеты взяты.

    Ни один кошелек даже не отобразит транзакцию, если в ней не будут к примеру не будут совпадать суммы или будет отсутствовать подпись, потому что вы к примеру указали источник 100500 монет сатоши из первых блоков, но не знаете их приватников.

    p.s. единственная форма мошенничества с биткоин переводами - это двойная трата, когда вы создаете две транзакции с одними и теми же вашими исходными монетами (у вас есть приватник) но с разными целевыми адресами, в одной - адрес вашей жертвы, в другой - ваш же. Первый адрес отправляете сразу, ждете получения товара/услуг от жертвы и после отправляете в сеть вашу вторую транзакцию.

    Весь сыр бор в том чтобы сделать так чтобы ваша вторая транзакция по каким то причинам заменила первую.

    Это легко сделать, если получатель не ждет хотя бы 1 подтверждения (например ваша вторая транзакция будет с большей комиссией), но чтобы отменить уже подтвержденную транзакцию - вы должны уже быть мочь заставить пулы майнинга совершить эту атаку сообща (достаточно нескольких, чтобы их суммарная мощность была больше половины мощности сети, и стоить для пулов это будет примерно в 2 раза дороже доходов с намайненных за это время блоков).

    p.s. поэтому никогда не отсылайте товар/услугу если транзакция их оплаты не набрала хотя бы 1 подтверждение (лучше больше, существуют случаи когда при особых услугах и 1 подтверждения требования к совершению двойной атаки становятся ниже необходимости обладания половины мощности сети)
    Ответ написан
    Комментировать
  • Как отследить транзакцию на биткоин-кошелек с уведомлением на e-mail?

    @rPman
    Пользуетесь децентрализованной криптовалютой а самое главное - проверку поступления средств, хотите доверить третьему лицу? Вы определенно чего то не понимаете.

    Самое простое, ставите на своем сервере любой bitcoin кошелек, хоть официальный bitcoin core (в режиме -prune он сейчас на диске занимает порядка 5гб, а после 'прогрузки' блоков оно прекрасно работает даже на первой малинке, т.е. не требует ни памяти ни процессора, но нужен относительно быстрый диск, штатного usb не хватит, советуют использовать сетевой nas), в нем есть возможность повесить колбек (вызов вашего приложения) на появление транзакции в ваш кошелек. Так же в core есть функционал watch only кошельков, когда на чтение вам будет доступна вся информация даже без приватных ключей.

    p.s. в prune режиме по умолчанию вы можете отслеживать только транзакции в адресах, которые добавили в кошелек после прогрузки блоков, иначе вам нужно заново прогружать блоки, добавив адреса, пока сканируются самые первые.
    Ответ написан
  • Как хранить BTC кошельки пользователей?

    @rPman
    https://github.com/bitcoinjs/bitcoinjs-lib и можете реализовывать полноценный кошелек на клиенте, даже без хранения приватных ключей на сервере.

    либо реализуйте все на сервере а на клиенте тупо интерфейс
    Ответ написан
    Комментировать
  • У каких криптовалютных бирж стабильное API?

    @rPman
    Само собой той, через которую проводите конвертацию в фиат в момент оплаты.
    Если вы этого не делаете, т.е. храните криптовалюту до посинения, то выбирайте биржу, где курс наименьший, т.е. собирайте курс со всех популярных.
    data.bitcoinity.org/markets/arbitrage/USD

    На сколько я понимаю, все торговые площадки берут курс не с бирж а со своих торговых ботов, обеспечивающих обмен поступающих криптовалют в фиат или другой обмен, если этого требовали те же инвесторы/партнеры, использующие эту площадку для получения ликвидности.

    Если вам нужно не только обмен в одну сторону (криптовалюта -> фиат) то в этом случае вам потребуется построение своего индекса. Напоминаю, не существует единого курса, он разный не только для разных направлений купи продай но и для соответствующих объемов, даже сделка на простую тысячу баксов может изменить курс по сравнению с одним баксом на десятые процента, если рынок в этот момент решил резко дернуться.

    p.s. настоящие курсы на localbitcoins, ибо там идет обмен на самые ликвидные деньги (счет в банке или даже наличные), а на обычных биржах курс помножен на абстракцию, на которую влияет алгоритм ее маркетмейкера (который симулирует торги, так как это нерегулируемые рынки, там чего только не вытворяют централки) комиссия ввода вывода биржи и риски задержек этого. Но на локале вы столкнетесь с тем что даже рубли бывают разные, и разница в процентах.. например киви дешевле сбера, а тинькоф дороже.
    Ответ написан
    Комментировать
  • Как принимать bitcoin платежи на сайте?

    @rPman
    итак, 2 главных правила:
    1. приватные ключи адресов, выдаваемых пользователям НЕ ДОЛЖНЫ храниться на веб-сервере, мало того, так как вы не выдаете монеты, храните их лично на своем (владельца сервиса) аппаратном кошельке
    2. bitcoind с ключом -prune 512 после прогрузки блокчейна будет занимать на диске примерно 6 гигабайт и через api будет полноценно работать с wallet.dat и адресами в нем в режиме просмотра и проверки прихода депозитов, запускать так же на сервере рядом с веб, на текущий момент этот демон может работать даже на малинке (файловую систему лучше использовать по сети на быстром файловом сервере, ибо у малинки только ОЧЕНЬ медленный usb), правда первичную загрузку лучше проводить на быстрой машине.

    Вам достаточно генерировать на своей локальной машине и импортировать на веб сервер большими пакетами адреса для приема платежей (по уму это не так обязательно делать постоянно, но настоятельно рекомендуется один платеж - новый адрес) и все, больше ваш кошелек не потребуется. Чтобы защититься от ddos опустошения адресов приема, подсовывайте клиентам старые адреса без входящих переводов.

    Существуют иные библиотеки, занимающие меньше ресурсов (подключаются напрямую к сети и не проводят никаких проверок кроме наличия подтверждения от майнеров, этого более чем достаточно), но формально они 'не официальные' (хотя это философский вопрос что есть официальное в децентрализованной криптовалюте, но если что то реализует, ломающее совместимость, то в первую очередь в bitcoind).

    Это самый правильный и простой способ организации приема платежей.

    p.s. ждите релиза lightning network, скоро это станет стандартом де факто для приема платежей

    p.p.s. Если у вас есть задача переводов от вас, то реализуйте ее на отдельном сервере, коммуникация между веб-сервером и этим платежным сервером должна проводиться через специальный модуль безопасности (и разработанный для этого api), перепроверяющий все что только можно, в идеале разработанный разработчиками, отличными от тех кто делал веб-сервер.
    Ответ написан
    3 комментария
  • Как сделать формулу курса криптовалюты?

    @rPman
    Понятие цены - очень абстрактное, точная цена зависит от объема сделки и ее типа (покупка или продажа) и меняется постоянно, собственно биржи и занимаются тем что предоставляют интерфейс для проведения сделок в этом эфимерном пространстве.

    Чтобы понять сколько вы получите биткоинов на нужную сумму, необходимо у биржи запросить текущий список лимитных ордеров (он называется стакан, еще называют depth и состоит из двух списков ордеров asks - запросы на продажу и bids - на покупку, соответственно цены asks выше bids), отсортировать по цене нужную вам половину (если вы покупаете, вам нужно смотреть bids, списки уже отсортированы, там не только цена о и порядок размещения), и по очереди начинаете складывать объемы этих ордеров до тех пор, пока не наберете нужную вам сумму, паралельно вы должны считать, сколько монет вы получаете с каждого лимитного ордера, который пересекаете (последний ордер скорее всего будет разделен на две части, остаток и ваша часть), в итоге вы получите количество монет.

    Чтобы получить цену сделки, нужно поделить затраты в долларах на количество полученных монет.


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

    Разница в процентах между ценами покупки и продажи в стакане называется - спред, он увеличивается, если ваши объемы сделки выше.

    Очевидно, доход/убыток вы получите, только когда совершите две встречные сделки покупка и последующая продажа (некоторые биржи позволяют торговать в долг, т.е. сначала например продавать а потом покупать, там заведено понятие 'открытая позиция', когда вы совершили только одно действие и не завершили по объемам второе), просто посчитав количество долларов (или в чем вы собираетесь считать доходы) до и после сделки (вы можете вычислить это простой формулой подставив ваши прогнозируемые цены) и не забывайте про комиссию брокера.
    Ответ написан
    Комментировать
  • Сайт с API предоставляющий график криптовалюты?

    @rPman
    https://github.com/tradingview дает библиотеку для своего красивого графика
    Ответ написан
    Комментировать
  • Какой (желательно оффлайн) кошелек использовать для альткоинов?

    @rPman
    taxi - тэто не криптовалюта а токен на базе ethereum, подойдет любой ее кошелек, например популярный тонкий MyEtherWallet (сохраняете html локально и открываете в браузере).

    ВСЕ криптовалюты имеют блокчейн и соответственно софт, если это не так то это не криптовалюта а очередной мусор от биржи (фьючерсы недавних форков bitcoin например), надежнее всего брать для каждой криптовалюты официальный софт с github и для пущей надежности, собирать из исходников (на linux машинах это обычно не сложно) но придется загружать весь ее блокчейн.
    Ответ написан
    2 комментария
  • В каком формате чисел работать с Bitcoin в PostgreSQL?

    @rPman
    Все зависит от того, где вы будете работать с базой, т.е. на каком языке и какими библиотеками будете пользоваться.
    Универсальный случай - не доверяйте нецелым числам, в какой то момент вы можете получить очень неприятные округления!
    Пользуйтесть целыми числами int64 (и самостоятельно делите на 10^8 при выводе и учитывайте если будете проводить умножения на такие же целочисленные значения , например при умножении на стоимость в другой валюте, которая будет храниться так же)

    Если будете пользоваться php, пользуйтесь строковым представлением числа и методами BCMath - bcadd, bcdiv, bcdiv,..) таким образом даже на 32-битных системах (вам могут попасться такие виртуалки) вы не получите преобразование числа в float
    Ответ написан
    Комментировать