Если я мошенник, и у меня есть 1 BTC на моем счете, и я хочу купить цифровой товар, который стоит 1 BTC.
Я делаю покупки, и отправить свою монету продавцу
Я сразу же отправить другую сделку по другому адресу я контролировать.
Если учетная запись тратит весь свой баланс, где вы берете монеты из?
Поскольку транзакции не являются обратимыми, обнуление счета, который только doublespent его последняя монета не имеет значения: это уже на нуле.
То, что вы предлагаете звуки, как вы бы конфисковать средства получили от продавца (если ему удалось получить их). Там было бы ок. 50% вероятность того, что вы будете принимать от законного владельца, и 50% доносчик. Не похоже, как большой шаг вперед для меня.
Мы никогда не конфискуют деньги у продавца.
Смотрите, все операции из ненадежных адресов (не зеленые) всегда должны иметь блок подтверждения, прежде чем они будут должным образом зарегистрированы продавцом. Это на самом деле все и единственная точка ожидания для этих блоков подтверждения: для предотвращения двойного затрачивает.
Если транзакция была подтверждена целым рядом блоков,
не может больше ни работать двойной тратит.
Двойной проводят, когда есть две транзакции в сети, имеющие один и тот же вход, каждый из которых в другой части сети. После того, как блок генерируется, он распространяется по сети, ко всем узлам, и в этот момент не двойной тратит может существовать, потому что блок не может быть действительным и иметь 2 сделки с тем же входом. На данный момент, если когда-либо были 2 такие сделки, тот, который был включен в блок считается действительным, а другой будет удален все узлы, потому что они будут видеть, что он использует вход, который в настоящее время ( после того, как последний блок) недействителен (уже используется).
Также обратите внимание, что это может быть немного более сложным, если два блока генерируется почти сразу, или цепь расщепляется, но эти трудности всегда исключается сетью, в конце концов.
Наказание дважды затрачивает будет означать только оштрафовать несколько сделок с тем же входом, если они не слишком долго друг от друга. Мы должны выбрать несколько блоков, после генерации которых сделка с тем же входом не будет наказываться больше, но вместо утраченной так же, как это сегодня.
Кроме того, в настоящее время не существует способ, чтобы перенаправить процент от сделки к комбайну. Предоставление кто-то, чтобы изменить получатель сделки имеет ряд возможных последствий безопасности.
нет дерьмо Что TS предлагает подразумевает изменение протокола и клиентов, конечно.
несокращенный, отличная идея в целом! Единственная проблема, как я вижу в том, что оно связано с модификацией протокола, и, как таковой, будет требовать все сети, чтобы быть на борту с ним. Не то, чтобы кто-нибудь когда-нибудь потерять что-нибудь, но изменить трудно, особенно, когда любое фактическое практическое преимущество его реализации сомнительна. (Сеть станет более безопасной, нет никаких сомнений, но, как RaggedMonk правильно заметили, двойной тратит не любая реальная проблема в данный момент тоже.)
Система такова, что если шахтер может включать в себя несколько сделок с тем же адресом, с тем же previous_output, что бы преувеличивать адрес
Просто небольшая коррекция: кажется, что вы не знаете о маленькой детали протокола: как описано в
https://en.bitcoin.it/wiki/Transactions#Output выход может быть только когда-либо использовать один раз. Если используется дважды, что уже считается двойной тратить, даже если число Bitcoins комбинированных действительно меньше или равно значению выходного источника.
весь остаток адреса устанавливается в ноль и монеты передаются обратно.
Что ты имеешь ввиду "прошел обратно"?
Мне кажется, что довольно разумно, что нужно сделать, это просто позволить шахтер иметь все это. Тем не менее, это то, где мы могли бы сделать что-то по-другому: либо просто дайте шахтера иметь результаты этой сделки, или позволить ему иметь все предыдущие операции с выходами на этот адрес, эффективно устанавливая гипотетический "баланс" адреса к нулю. (Не то, чтобы "противовесов" действительно существует в протоколе.) Я имею в виду, мы уже знаем, что владелец, если этот адрес злоумышленник, почему бы не взять все с этого адреса, а не только неисправный сделки?
Upd: Также мы должны выяснить, что делать, если транзакция имеет несколько входов, и только один из них является двойным израсходует. Конфисковать все от этого ОГО? Или просто сумма от входа двойного товар.Обращайте?
Может быть, что-то вроде 5% до шахтера, который находит его, а затем 1% до ближайших 95 блоков (сделать это менее вероятно для монет передаются обратно атакующий).
Что такое рассуждение за этим? Как бы монеты быть переданы обратно в нападавшего?
Для операции, которая уже в блок-цепи, когда транзакция овердрафта показывает вверх, если оно меньше, чем п блоков старого отменить транзакцию, нулевой адрес, передать обратно. Торговцы ждать п блоков до подтверждения. Если п был 3 это заставит злоумышленник иметь вилку, которая по меньшей мере, 3 высокой до того, как сделки обнародованы иметь прибыльные двойные расходы, и все меньше приведет к потере монет.
Конечно, именно мое мышление, с установлением лимита счета блока. за исключением "перейти обратно" снова вещь, что это такое?
Просто небольшая заметка: эта функция никогда не обидит любой честный пользователя, потому что ни в коем мыслимом обстоятельстве не делает честный пользователь отправить две сделку с одним входом. И никто не мог, потому что они будут иметь, что секретный ключ адреса, которые, если бы они, они могли просто украсть биткойны в любом случае.
Я предполагаю, что проблема гипотетически может возникнуть, если есть хоть какая-то ошибка в клиенте Bitcoin, который будет транслировать транзакции в сети, а затем крах, и после того, как начал снова не увидит сделку по какой-то причине, и пользователь будет платить снова очень быстро, но это очень маловероятно. Транзакции не транслируется в то же время, как вы нажмете на кнопку, клиент ожидает случайное время, а также, что при повторном подключении, в большинстве случаев вы получите вашу собственную транзакцию обратно из сети, либо непосредственно, либо внутри блока, даже если крах программы не будет сохранить его в базе данных напрямую. В общем, это близко к не-возможно.
Это своего рода особенность, которая должна была быть в оригинальной Satoshi клиента, то логично иметь. Однако реализовать это сейчас, пока остается под вопросом из-за вещей, о которых я говорил ранее.
несокращенный, возможно, вы должны разработать на это более формально и представить как BIP?