Как изменения работают в биткойн-транзакции?

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

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

Нужно ли это работать, или это конкретная деталь реализации клиентского программного обеспечения?

Кроме того, вам нужно ждать подтверждения изменений, прежде чем вы сможете снова потратить его?

45 голосов | спросил Thilo 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2011 05:55:16 +0400 2011, 05:55:16

3 ответа


31

Сначала давайте уточним разницу между учетными записями и адресами.

«Учетные записи» используются для удобства людей отслеживать свои средства. Это прежде всего используется для отслеживания источника средств. Поскольку это только для вашего отслеживания, вы можете перемещать биткойны из одной учетной записи в другую, просто перемещая номер из одного столбца в другой. Никаких транзакций не требуется. (Это похоже на то, когда вы знаете, что вы обязаны своему сыну 25 долларов США за пособие, а у вас есть 200 долларов США, предназначенные для бакалейных товаров.)

«Адреса» используются для приема биткойнов в транзакциях. Монеты отправляются по адресу. Клиент связывает каждый адрес с учетной записью и добавляет полученные средства на этот счет. Это просто делается для удобства, чтобы люди могли отслеживать косвенные адреса, на которые направлялись средства. Но вы можете иметь любое количество адресов, связанных с одной и той же учетной записью.

Изменение происходит от того, как расходуются биткойны. Чтобы потратить определенное количество биткойнов, вы должны вытащить биткойны из транзакционных выходов на контролируемые вами счета. Обратите внимание, что в части расходов не имеет значения, какой именно адрес или с какой учетной записью связан этот адрес. Когда вы тратите биткойны с определенной учетной записи, это означает, что вы дебетете эту учетную запись на сумму, которую вы отправляете. Это не означает, что средства поступают из адресов, связанных с этой учетной записью. Помните, что связь между адресами и учетными записями предназначена только для приема , а не для отправки. (Например, когда вы тратите деньги на бакалейные товары, это не похоже на то, что у вас есть конкретные счета за бакалейные товары. У вас просто есть бюджетная сумма.)

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

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

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

ответил David Schwartz 8 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 08 Sep 2011 07:06:47 +0400 2011, 07:06:47
15

Информация в ответе Дэвида верна, но может не отвечать на реальный вопрос - неясно, является ли вопрос об изменении вообще или, в частности, посылка изменения на новый адрес.

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

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

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

Что такое для клиента: как обрабатывать это изменение: клиент Satoshi отправляет его на новый адрес, а другие клиенты могут просто отправить изменение обратно на один из выходных адресов. р>

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

ответил Micha 26 Maypm13 2013, 12:43:13
0
  

Нужно ли это работать, или это конкретная деталь реализации клиентского программного обеспечения?

Да, это реализовано самим протоколом биткойнов , но лучше всего использовать повторные адреса. Поскольку мы имеем дело с псевдо-анонимной криптовалютой, имеет смысл увеличить «анонимность», чем больше мы сможем сделать.
Однако вы можете заставить свой кошелек отправить «изменение» на статический и постоянный адрес без создания нового адреса изменения каждый раз, когда вы совершаете транзакцию. Это приведет к существенному сокращению вашей конфиденциальности и истории транзакций не будет «запутанным», поскольку оно предназначено для .

  

Кроме того, вам нужно ждать подтверждения изменений, прежде чем вы сможете снова потратить его?

Нет, вы также можете провести изменение монет с 0 подтверждением.

Кроме монет монеты (например, свежие минные монеты, для которых требуется 100 блоков), вы можете провести монету с 0 подтверждениями из кошельков командной строки и многих других. Это разрешено самим протоколом, но многие клиенты могут не разрешать пользователям транслировать txs до тех пор, пока входы не будут иметь хотя бы 1 подтверждение или даже больше.

ПОМНИТЕ, что расходы 0 подтверждений монеты из ненадежного источника могут привести к обрыву транзакции из сетевого mempool из-за возможной атаки «псевдо-двойного расхода». Если вы тратите свое собственное изменение с помощью 0 подтверждений, вы доверяете себе в качестве исходного отправителя, так что это не проблема (если также оригинальная транзакция, которая сгенерировала «монеты с изменением», была с 0 подтверждением от ненадежного отправителя.)

ответил Cluster2k 30 MarpmFri, 30 Mar 2018 16:32:40 +03002018-03-30T16:32:40+03:0004 2018, 16:32:40

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

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

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