Как получить баланс адреса с клиентом биткойна?

Я хочу видеть баланс какого-то адреса, используя биткойн.

Я установил txindex=1 и сделал -reindex, чтобы индексировать все транзакции.

Но все же, похоже, нет способа получить балансы адреса. getreceivedbyaddress не работает с адресами из вашего собственного кошелька (я надеялся, что это будет после -txindex=1 -reindex, но это не так).

Мне интересно, почему blockexplorer.com getreceivedbyaddress может сделать это для любого адреса, но клиент по умолчанию не может. Если вы загружаете и синхронизируете целую цепочку, вы можете запросить ее для любой информации, правильно?

21 голос | спросил Steven Roose 22 PMpMon, 22 Apr 2013 17:01:17 +040001Monday 2013, 17:01:17

5 ответов


20

По умолчанию, то, что поддерживается движком с блочной цепью 0.8:

  • Все блоки
  • База данных со всеми заголовками блоков и положениями на диске для каждого блока
  • База данных, которая представляет все неизрасходованные выходы транзакций (UTXOs), индексированные txid, на текущем кончике цепочки блоков
  • Отменить файлы, которые позволяют перематывать эффекты блоков на этом наборе UTXO.

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

Опция -txindex, которую вы указываете, добавляет еще одну вещь, которая поддерживается механизмом проверки:

  • База данных с позициями на диске для каждой транзакции , проиндексированной txid.

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

Там, где такие вещи принадлежат, находится в кошельке. Кошелек, представленный ссылочным клиентом, не использует «баланс адреса» - он скорее рассматривает адреса как точки входа в кошелек, но управляет монетами во всем кошельке вместе, независимо от того, к какому адресу они были отправлены последним. Это также смущает людей, которые привыкли смотреть на сайты, похожие на blockexplorer, когда они понимают, что, например, изменение всегда отправляется на новый адрес.

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

ответил Pieter Wuille 23 AMpTue, 23 Apr 2013 02:25:28 +040025Tuesday 2013, 02:25:28
4

Концепция «адресного баланса» основана на путанице.

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

Адреса - это просто точки входа в кошелек; они не имеют балансов и должны использоваться только один раз. Адреса связаны с учетной записью: когда монеты получены по адресу, он кредитует эту учетную запись - обратите внимание, что это односторонняя связь: учетная запись not , связанная с адресом, или полученная монета ; его баланс просто увеличивается на полученную сумму. Когда вы проводите биткойны, ваш кошелек выбирает монеты, чтобы тратить (более или менее) случайные, не заботясь о том, как они были получены, и обычно будет использовать совершенно новый невидимый адрес внутри себя, что вы не увидите в качестве конечного пользователя, пользователь. В целом, это некоторые из причин, почему нет смысла говорить об «балансе адреса».

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

ответил Luke-Jr 12 J0000006Europe/Moscow 2013, 04:27:29
4
  

«Мы, надеюсь, скоро получим поддержку (...) кошельков только для просмотра, где вы можете просто добавлять адреса, которые вы хотите отслеживать, без их ключей».                                                                   â «Pieter Wuille»

Из того, что я видел, Pieter Wuille и другие включили эту функцию в Bitcoin Core release 0.10.0 , так что теперь можно использовать биткойн-сердечник, чтобы получить баланс любого адреса, выполнив следующие шаги:

1) Создайте новый кошелек (остановите программу, переименуйте старый файл wallet.dat, перезапустите программу и создайте новый пустой wallet.dat).

2) Запустите биткойн Core и перейдите в Help> Окно отладки> Консоль.

3) В командной строке консоли выполните следующую команду :

importaddress the_address_you_are_interested_in

Обратите внимание, что это вызовет повторную сканирование всей цепочки блоков, которая может занять несколько минут.

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

Как только вы закончите, вы можете остановить программу, удалить или переименовать кошелек или переместить его где-нибудь в esle и переименовать старый кошелек обратно в «wallet.dat».

Обратите внимание, что клиент Bitcoin должен иметь обновленную копию всей цепочки блоков, поскольку по умолчанию rescan = true опция importaddress не принимает обрезанные цепочки блоков, а rescan = false не отображает текущий баланс.

Я не пробовал это, и я не специалист по биткойну, поэтому принимайте этот ответ с осторожностью.

ответил Daniel F 7 J0000006Europe/Moscow 2017, 04:23:00
3

Это происходит из исходного списка вызовов клиента /API биткойнов в отношении команды getreceivedbyaddress.

  

Возвращает общую сумму, полученную в транзакциях, с подтверждением не менее [minconf]. Хотя некоторые могут считать это очевидным, значение, сообщаемое этим, учитывает только получение транзакций. Он не проверяет платежи, сделанные с из этого адреса. Другими словами, это не «getaddressbalance». Работает только для адресов в локальном кошельке, внешние адреса всегда будут показывать 0. [Добавлена ​​смелость.]

Технически вы правы; блокхейн несет информацию, которую вы ищете. Однако исходный клиент не имеет функции для его вычисления.

ответил jorijnsmit 23 AMpTue, 23 Apr 2013 01:44:34 +040044Tuesday 2013, 01:44:34
3
  1. импортировать весь адрес, используя «importaddress»
  2. вы можете получить баланс, используя «listunspent», но вы должны суммировать всю неизрасходованную сумму за адрес.
ответил Egon Son 12 MaramMon, 12 Mar 2018 11:49:59 +03002018-03-12T11:49:59+03:0011 2018, 11:49:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132