Почему Биткойн отправляет «сдачу» на другой адрес?

Например, у меня есть адрес (A) с 20 BTC, и я отправляю 9 BTC на адрес (B). Биткойн создаст часть транзакции «сдачи», в которой оставшиеся 11 BTC отправятся по адресу (C).

Почему бы не отправить сдачу обратно А?

Вместо:

Initial balance: 
A: 20 BTC 
B: 0 BTC 
C: 0 BTC

Transaction Pair: 
A -> B 9 BTC 
A -> C 11 BTC

End result 
A: 0 BTC 
B: 9 BTC 
C: 11 BTC

Почему бы и нет?

Initial balance:
A: 20 BTC
B: 0 BTC

Transaction Pair:
A -> B 9 BTC
A -> A 11 BTC

End result
A: 11 BTC
B: 9 BTC
и есть ли в клиенте возможность отключить это (т.е. отправить обратно на исходный адрес)?
У меня есть ветвь «noprivacy» на github.com/gavinandresen/bitcoin-git , которая отправляет сдачу обратно на адрес финансирования, но это чертовски запутывает код «учетных записей» и создает запутанные списки транзакций.
Есть ли какое-нибудь решение, чем? Я также предпочел бы, когда изменение вернется к исходному адресу.

Ответы (3)

Две причины:

  1. Таким образом, тот, кто отправил на ваш адрес «А», не может утверждать, что отправил вам 31 биткойн («Смотрите! Посмотрите в обозревателе блоков, есть две транзакции, отправленные на «А», одна на 20 биткойнов и одна на 11 — пришлите мне верните дополнительные 11!")

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

Он также скрывает , какой результат является «расходом», а какой «сдачей».
Предотвращение ложных утверждений имело бы сомнительную ценность. Транзакции в любом случае необратимы, и транзакция будет четко указывать, что монеты перешли от А к А. Вторая часть вашего ответа плюс разъяснение Дэвида, скорее всего, кажутся рациональными.
Отправка сдачи куда-то еще создает впечатление, что вы тратите весь свой баланс, что не так. Это может быть очень запутанным для начинающих пользователей. Я думаю, что это должна быть дополнительная опция для клиента по умолчанию.
Я также думаю, что отдельные адреса смены - очень плохая "фича". Отправка обратно на тот же адрес предотвратит устаревание бумажных кошельков, когда часть их будет потрачена. Запутывание потока платежей также не должно быть частью «официального» биткойн-клиента. Если бухгалтерская книга будет простой, это придаст Биткойну больше легитимности.
@DeathAndTaxes, так что в основном первая точка зрения Гэвина неверна / недействительна?
Я согласен с @Steven Roose. Look this address: blockchain.info/address/175fTMj3sNZANncHTGEGw4SAims14ZDxNX I sent 5 mBTC from 175fTMj3sNZANncHTGEGw4SAims14ZDxNX to 1JGZbBj5iuxzskxAxRmoQgKZXoDehGEA6r and then my client creates an address 15taCtq1Mj76wuweVjnvrmKxSt3gKMVXqJ to receive the left 0.8 mBTC. Но мой клиент показывает только два адреса: 1GzeYtD8KGVw7LmWCtsQ7wMX3Me7KUBwna и 175fTMj3sNZANncHTGEGw4SAims14ZDxNX. Оба с нулевым балансом. Но мой биткойн-qt показывает, что у меня есть баланс 0,8 mBTC. Это очень странно и запутанно.
Посмотрите и это: bitzuma.com/posts/… Это сложно для конечного пользователя. Я предпочитаю, как прежде.
@DeathAndTaxes, вы имеете в виду, что если мы изобретаем новую монету, которая не нуждается в «сокрытом преимуществе», было бы выгоднее иметь только одну цель?
@Pacerier, я очень на это надеюсь! :) Этот аргумент о безопасности через неизвестность выглядит невероятно глупо. Но все еще кажется несколько нетривиальным доказать, что вы являетесь отправителем tx. (особенно с несколькими входами); см., например , bitcoin.stackexchange.com/questions/18502/…

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

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

Больше информации на https://bitcoin.stackexchange.com/a/7134/11666.

Также: https://bitcointalk.org/index.php?topic=153302.0

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

Почему вы считаете, что взломать пару ключей проще, чем взломать криптохэш?
@Basic, потому что открытый ключ генерируется из закрытого ключа с помощью алгоритма SHA256, который уязвим для атаки квантового компьютера. Хотя биткойн-адрес генерируется из публичного ключа с использованием алгоритмов SHA256 и RIPEMD160, потенциальным хакерам потребуется атаковать 2 разных шифрования.
@Sulevus Если вы шифруете / хешируете что-то несколько раз, это не обязательно делает его более безопасным ... Это полностью зависит от того, как две системы сохраняют энтропию в нескольких операциях.

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

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

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

Это не обязательно плохо, поскольку из-за отслеживаемости транзакций правительствам будет сложнее оправдать борьбу с внедрением биткойнов.

Хотя вы можете получить немного конфиденциальности на короткий период времени, используя адреса смены, есть ОГРОМНЫЙ недостаток: это делает резервное копирование ваших денег неразрешимым. Если вы хотите создать резервную копию адреса, вы можете сделать это легко. Просто зашифруйте свой кошелек и скопируйте его на различные устройства (ваш телефон, внешний жесткий диск, USB-накопитель, бумажный кошелек и т. д.). Если используются адреса смены, вы должны копировать их во все свои резервные копии (это так же болезненно, как распечатывать новый бумажный кошелек) каждый раз, когда вы совершаете транзакцию. Это неразрешимо.

Эта неподатливость, я думаю, является ОГРОМНОЙ проблемой для биткойнов. Людям нужен безопасный способ быть «своим собственным банком», а смена адреса делает биткойны неработоспособными для большинства людей.

ОБНОВЛЕНИЕ: Детерминированные кошельки частично решают эту проблему, позволяя вам определить все потенциальные адреса кошелька из одного начального значения. Это позволяет вам делать резервную копию один раз и восстанавливать ее в любое время, используя начальное число для генерации и проверки адресов, пока вы не будете уверены, что не использовали ничего, кроме тех, которые вы проверили. Armory, Electrum и CarbonWallet используют детерминированные кошельки.

Мне очень нравится этот ответ, но, похоже, его лучше было бы предоставить по другому вопросу. Ответ Гэвина на 100% верен, и этот ответ был бы лучше на вопрос об анонимности смены адреса.
@BT, так как же тогда работает Dark Wallet?
@Pacerier Я мало что знаю о Dark Wallet, но, безусловно, могут быть гораздо более сложные схемы, которые сохраняют адреса более анонимными. Это будет включать в себя такие вещи, как поэтапные транзакции и сложное смешивание транзакций. Это не ваши средние транзакции. Это сложные методы, и они столь же полезны без использования адресов изменения.
@ColinDean, опечатка «затруднительная» в вашем профиле преднамеренная?
@BT, Однако добавление использования адресов смены увеличивает стоимость анонимизации, верно?
@Pacerier Да, но хотя я не совсем уверен, насколько возросла стоимость, я думаю, что теоретический предел удваивает стоимость. Хотя в обычных сценариях, когда этот адрес в конечном итоге используется вместе с другим адресом изменения, стоимость определения этого в основном незначительна.
Первоначальная идея AIUI заключалась в том, что каждый адрес будет использоваться ровно один раз, при этом адреса изменения не будут отличаться в этом отношении от любого другого адреса. К сожалению, многие люди используют один и тот же адрес множество раз и даже публикуют его публично. Это дает места для захвата трейсеров.