У меня есть два действительных txs и две действительные подписи для этих txs.
Прямо сейчас они выглядят так:
1) A -> B
2) C -> D
A и C — входы, B и D — выходы.
Я хочу иметь возможность объединить их в:
1) A, C -> B, D
Есть ли способ, которым я могу объединить эти два tx и их соответствующие подписи в один действительный tx, не имея доступа к ключам?
Единственная возможность в Биткойне сегодня — это та, которую описал Кайкурокава. Каждая подпись указывает, какие входы и выходы она подписывает, поэтому, если вам нужны независимо созданные подписи, всем будет очевидно, какие входы и выходы были созданы одновременно.
Общая практика объединения нескольких частей транзакций в одну называется CoinJoin. Теоретически это хорошо работает, но требует сотрудничества разных сторон (каждая подписывает ввод и вывод каждого).
Потенциальная будущая разработка, которая может изменить это, основана на односторонних агрегируемых подписях (OWAS) (см. ://bitcointalk.org/index.php?topic=290971.0 ). Этот механизм позволит любому в сети взять две транзакции и выполнить их CoinJoin, не имея возможности впоследствии определить, какие входы и выходы связаны. В качестве дополнительного преимущества он также объединяет все подписи в таких транзакциях в одну. В крайнем случае это будет означать, что блок может быть просто сведен к одной транзакции, созданной майнерами, применяющими эту операцию объединения ко всем транзакциям, которые они хотят включить.
К сожалению, OWAS использует схему подписи под названием BLS, которая намного новее и не так хорошо изучена, как ECDSA (которую сейчас использует Биткойн), поэтому ее безопасность менее надежна. Кроме того, он намного медленнее и потребует очень инвазивных изменений в биткойнах. Тем не менее, это активная область исследований.
Совсем недавно была предложена система под названием MimbleWimble, которая поддерживает агрегацию транзакций в автономном режиме, а также сквозные транзакции, опираясь только на криптографию EC.
Да. Но они требуют, чтобы транзакция была подписана определенным образом. OP_CHECKSIG имеет устанавливаемые флаги, которые определяют, какие из входов и выходов подписаны.
Если SIGHASH_SINGLE и SIGHASH_ANYONECANPAY используются для OP_CHECKSIG, каждая подпись подписывается для соответствующих входных и выходных данных, позволяя другим добавлять новые входные и выходные данные в транзакцию.
https://en.bitcoin.it/wiki/OP_CHECKSIG
Джестин
A
иC
транзакции? Подписи? Что такое «В» и «Д»? Вы имеете в виду «UTXO», когда говорите «txs»? Я не знаю, к чему ты клонишь.Джек Фрейзер
Jus12