Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
6 сентября 2014, 10:30:52 AM   # 1
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Привет, народ,

Мой вопрос о "bitcoind listtransactions" метод.
Я хочу иметь масштабируемый способ получить все новые "Получать" сделки.
Это означает, что единственный доступный метод будет "bitcoind listtransactions",
Потому что только этот метод позволяет мне определит "подсчитывать" а также "из" параметр.

> bitcoind помощь listtransactions
listtransactions [счет] [число = 10] [с = 0]

Таким образом, даже если у меня есть 100,000 сделок, я мог бы цикл через 100 в то время.
Но я не хочу, чтобы петля над всеми 100.000 каждый раз, когда мне нужно, чтобы проверить наличие новых сделок.
Только новые транзакции актуальны.
Это моя главная проблема.

Ofc, я мог бы остановить цикл, если я обнаружу какие-либо старые транзакции.
Но это будет возможно только тогда, когда все новые транзакции всегда будут добавлены в верхней части списка.
Это не работал бы, если транзакции могут быть добавлены в де середине списка.
OSNAP сейчас офлайн Пожаловаться на OSNAP   Ответить с цитированием Мультицитирование сообщения от OSNAP Быстрый ответ на сообщение OSNAP


Как заработать Биткоины?
Без вложений. Не майнинг.


6 сентября 2014, 1:13:52 PM   # 2
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Получил 1806 Биткоинов
Реальная история.





Не кто-нибудь знает, если новые транзакции будут добавлены в список в случайных местах.
Или они всегда добавляются сверху.
OSNAP сейчас офлайн Пожаловаться на OSNAP   Ответить с цитированием Мультицитирование сообщения от OSNAP Быстрый ответ на сообщение OSNAP

6 сентября 2014, 3:34:59 PM   # 3
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

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

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

котировка
Я хочу иметь масштабируемый способ получить все новые "Получать" сделки.

listtransactions перебирает каждую сделку в вашем бумажнике, так что это не очень быстро или масштабируемым. Это лучше использовать один из них:
- getreceivedbyaccount или getreceivedbyaddress
- -walletnotify + gettransaction
- listsinceblock

Имейте в виду, что цепь может Reorg, что может привести к подтвержденного транзакции, чтобы иметь различное количество подтверждений или даже становятся недействительными. Вы должны справиться с этим, особенно если вы используете walletnotify или listsinceblock. Я знаю, что они ограничены и немного сбивает с толку, но я обычно рекомендую bitcoind счета для малых участков средних размеров, потому что это очень легко правильно делать вещи с ними.
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

6 сентября 2014, 4:03:17 PM   # 4
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

listtransactions перебирает каждую сделку в вашем бумажнике, так что это не очень быстро или масштабируемым.

Я мог бы сделать "listtransactions" цикл масштабируемый, используя "[Число = 10] [с = 0]" параметры.
Сейчас I цикл 50 входов одновременно.
И если я вижу транзакционную Thats уже в моей базе данных я остановить цикл.

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

Потому что, если любая новая транзакция добавляется до известной сделки, мой подход будет пропустить эту сделку.
OSNAP сейчас офлайн Пожаловаться на OSNAP   Ответить с цитированием Мультицитирование сообщения от OSNAP Быстрый ответ на сообщение OSNAP

6 сентября 2014, 4:21:19 PM   # 5
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Я мог бы сделать "listtransactions" цикл масштабируемый, используя "[Число = 10] [с = 0]" параметры.

listtransactions не перебирает все Транзакции (внутренне, в реализации) независимо от того, какие аргументы вы даете ему.
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

6 сентября 2014, 4:54:59 PM   # 6
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Ха, хорошо,
Так позволяет сказать, что я буду использовать listsinceblock.
Будут ли новые транзакции всегда будут добавлены в более высоких блоках.
Или может быть там блоки добавлены до старшего блока.

В основном мой вопрос, буду ли я Потеря операций с использованием "listsinceblock",
OSNAP сейчас офлайн Пожаловаться на OSNAP   Ответить с цитированием Мультицитирование сообщения от OSNAP Быстрый ответ на сообщение OSNAP

6 сентября 2014, 5:06:55 PM   # 7
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Новые транзакции будут либо в новых блоках или будут REORG и блок хэш вы даете listsinceblock будет находиться вне основной цепи, в результате чего listsinceblock сбросить все ваши транзакции.
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

6 сентября 2014, 5:24:41 PM   # 8
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Новые транзакции будут либо в новых блоках или будут REORG и блок хэш вы даете listsinceblock будет находиться вне основной цепи, в результате чего listsinceblock сбросить все ваши транзакции.

Но демпинг всех сделок проблема не так ли?
Как и память.
Есть ли способ партии сделки?
Мы будем иметь много сделок.
OSNAP сейчас офлайн Пожаловаться на OSNAP   Ответить с цитированием Мультицитирование сообщения от OSNAP Быстрый ответ на сообщение OSNAP

7 сентября 2014, 1:51:22 AM   # 9
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Вы можете проверить, что блок находится в основной цепи с помощью getblock и обеспечение того, чтобы число подтверждений не равно нулю. Вы должны сделать что нибудь обрабатывать реорганизацию;, хотя; вероятно, что-то вроде CBlockLocator bitcoind в.

walletnotify тоже хорошо.
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

8 сентября 2014, 11:24:44 PM   # 10
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Таким образом, если блок имеет 0 подтверждений его меченый блок-сироту.
И listsinceblock вернет все свои транзакции.

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


Код:
мин = 1
макс = 7

lastBlockHash = database.lastBlockHash
blockData = bitcoind.getblock (lastBlockHash)

если (blockData.confirmations < мин)
{
    lastBlockHash = bitcoind.getblockhash (макс)
}

ответ = bitcoind.listsinceblock (lastBlockHash)

Еогеасп (response.transactions)
{
    ...
}

OSNAP сейчас офлайн Пожаловаться на OSNAP   Ответить с цитированием Мультицитирование сообщения от OSNAP Быстрый ответ на сообщение OSNAP

9 сентября 2014, 4:28:37 AM   # 11
 
 
Сообщения: 742
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Интересно, если этот фрагмент может помочь:

Код:
#! / USR / бен / окр PHP

/* зависит от: * /
/ * Php5-ротор * /
/ * Https://github.com/aceat64/EasyBitcoin-PHP * /

require_once 'Включают / easybitcoin.php';

$ min_confirm знак равно 6;
$ bitcoinrpc_user знак равно 'Bitcoinrpc';
$ bitcoinrpc_pass знак равно 'Bitcoinrpc_pass';
$ bitcoinrpc_host знак равно «Локальный»;
$ bitcoinrpc_port знак равно '8332'

если (
$ ARGC !знак равно || StrLen($ ARGV[1знак равно 64)
  {
    эхо 
"Применение:$ ARGV[0] ТХ \ п»;
    умереть();
  }

$ ТХ знак равно $ ARGV[1];
$ файл знак равно "/ TMP /".md5($ ТХ);
$ замок знак равно Еореп($ файл«Ш +»);

если (
стадо($ замокLOCK_EX LOCK_NB))
  {
    
FWRITE($ замок$ ТХ);
  }
еще
  {
    эхо 
«Процесс уже запущен на тот же ОМ, выходе \ п»;
    умереть();
  }

$ Bitcoin = новый Bitcoin($ bitcoinrpc_user$ bitcoinrpc_pass$ bitcoinrpc_host$ bitcoinrpc_port);
$ Bitcoin->gettransaction($ ТХ);

если (
$ Bitcoin->положение дел !знак равно 200)
  {
    эхо 
"Ошибка: $ Bitcoin->ошибка\ П»;
    умереть();
  }

если (
$ Bitcoin->ответ[«Результат»] ['Детали'] [0] [«Категория»] === "Получать")
  {
    в то время как (
1)
      {
        
$ Bitcoin->gettransaction($ ТХ);
        
$ адрес знак равно$ Bitcoin->ответ[«Результат»] ['Детали'] [0] ['адрес'];
        
$ сумма  знак равно$ Bitcoin->ответ[«Результат»] ['количество'];
        
$ подтверждения знак равно$ Bitcoin->ответ[«Результат»] [«Подтверждение»];

        эхо 
"$ адрес -> $ сумма подтверждения:$ подтверждения\ П»;

        если (
$ подтверждения >знак равно $ min_confirm)
          {
            эхо 
"$ min_confirm или больше подтверждений для $ ТХ\ П»;
            
$ оплаты = Массив ("адрес" знак равно> $ адрес«ТХ» знак равно> $ ТХ"количество" знак равно> $ сумма);

            
/ ****************************************** Процесс ТХ хранится в $ оплаты здесь ****************************************** /
            
умереть();
          }

        
спать(30); // Проверяем количество подтверждений каждый 30сек.
      
}
  }

?>

Бесконечный цикл должен быть модифицирован таким образом, он не будет цикл до бесконечности при получении ОГО от еще не сиротский блока.

Тогда вам нужно только добавить эту строку в bitcoin.conf, чтобы вызвать этот сценарий для каждого нового ОГО, которое влияет на кошельке:
Код:
walletnotify = / path_to / script.php% s

01BTC10 сейчас офлайн Пожаловаться на 01BTC10   Ответить с цитированием Мультицитирование сообщения от 01BTC10 Быстрый ответ на сообщение 01BTC10

9 сентября 2014, 6:00:26 AM   # 12
 
 
Сообщений: 46
Цитировать по имени
цитировать ответ
по умолчанию Re: PHP - Bidcoind проверка новых сделок.

Привет 01BTC10,

Srry, но это еще не очень полезно.
Я бы не рекомендовал использовать walletnotify.
Потому что я не могу позволить себе потерю или пропустить какую-либо сделку.

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

Я предпочел бы, используя listsinceblock.
Потому что вы получите все транзакции с вашим последним синхронизируются.
OSNAP сейчас офлайн Пожаловаться на OSNAP   Ответить с цитированием Мультицитирование сообщения от OSNAP Быстрый ответ на сообщение OSNAP



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW