Title: unlocked transactions Post by: Alda Gordaya on January 27, 2013, 05:01:24 AM Чем locked transactions отличаются от unlocked transactions ?
Можно ли сказать, что клиент отправляет locked-транзакцию, в которой указывается что она валидна в течении такого-то времени и если она не будет за это время включена в блок, то она будет отброшена? Или это что-то другое, что именно? UPD: это вот отсюда: http://bitcoin.stackexchange.com/questions/2025/what-is-txins-sequence а что будет, если будет послана замещающая транзакция, но не успеет дойти, а в блок будет принята более старая транзакция? Чем мотивируется хранение траких транзакций? Что, например, мешает провести DOS-атаку зафлудив такими транзакциями сеть? Title: Re: unlocked transactions Post by: Yurock on January 27, 2013, 06:14:01 AM Чем locked transactions отличаются от unlocked transactions ? Locked transactions should be considered final. Unlocked transactions can be changed by broadcasting a new version of the transaction.Можно ли сказать, что клиент отправляет locked-транзакцию, в которой указывается что она валидна в течении такого-то времени Неправильно.и если она не будет за это время включена в блок, то она будет отброшена? Или это что-то другое, что именно? Такая транзакция не может быть включена в блок до lock_time. At the point determined by lock_time the transaction becomes locked/final and can be included in the block chain. Также, до того, как наступит lock_time, может быть создана и передана в сеть окончательная версия транзакции с максимально возможным порядковым номером, которая может быть сразу включена в блок.Title: Re: unlocked transactions Post by: Alda Gordaya on January 27, 2013, 06:19:38 AM может быть создана и передана в сеть окончательная версия транзакции с максимально возможным порядковым номером, которая может быть сразу включена в блок. А что у такой транзакции можно поменять? Например сумму денег можно изменить? или получателя? Идея такая - резервируем сумму денег до даты завершения работ по контракту. Если контракт выполнен - подтверждаем Если не выполнен - отменяем Пример, правда неудачный. Надо сделать невозможной отмену для отправителя... Зачем ещё это может понадобиться? Title: Re: unlocked transactions Post by: Yurock on January 27, 2013, 08:00:08 AM А что у такой транзакции можно поменять? Можно. "Вход" должен быть тот же, с увеличенным серийником. Другие "входы" и "выходы" могут быть изменены.Например сумму денег можно изменить? или получателя? Зачем ещё это может понадобиться? Когда есть доверие к отправителю и заранее неизвестна общая сумма перевода. Например, я собираю бутылки на улице. Наполнил сумки и отнёс в приёмный пункт. Пункт вещает транзу на стоимость бутылок, анлокнутую до момента закрытия, например. Я приношу ещё бутылки и пункт увеличивает сумму. К концу дня транза становится окончательной и я могу потратить битки на буханку хлеба и сырок. :) Смысл в том, что только одна транзакция попадает в блок и только за неё надо платить комсу.Title: Re: unlocked transactions Post by: viv on January 27, 2013, 05:57:16 PM Возможность изменения транзакций сейчас заблокирована.
// Check for conflicts with in-memory transactions CTransaction* ptxOld = NULL; for (unsigned int i = 0; i < tx.vin.size(); i++) { COutPoint outpoint = tx.vin.prevout; if (mapNextTx.count(outpoint)) { // Disable replacement feature for now return false; // Allow replacing with a newer version of the same transaction if (i != 0) return false; ptxOld = mapNextTx[outpoint].ptx; if (ptxOld->IsFinal()) return false; if (!tx.IsNewerThan(*ptxOld)) return false; for (unsigned int i = 0; i < tx.vin.size(); i++) { COutPoint outpoint = tx.vin.prevout; if (!mapNextTx.count(outpoint) || mapNextTx[outpoint].ptx != ptxOld) return false; } break; } } |