Таким образом, текущий протокол Bitcoin позволяет отправителям прикрепить (ограниченный, не Тьюринг-полный) скрипт для монет они послали - см https://en.bitcoin.it/wiki/Script. Это означает, что, учитывая поддержку клиента, я мог взять мои монеты и отправить их таким образом, что несколько ключей требовались, чтобы разблокировать их; Я мог бы держать эти ключи на разных компьютерах, для обеспечения безопасности. Или, возможно, я в организациях, которая требует большинства членов совета директоров, так что требуется минимальное количество различных подписей, или что-то сложное, как это. В настоящее время клиент Bitcoin не поддерживает эти вещи, но протокол делает, так что эти функции могут быть введены ненавязчиво. Эта система сценариев довольно прохладно, и, с немного больше работы и несколько расширений, я думаю, что это может позволить некоторые довольно удивительные функции безопасности. С помощью онлайн-сервисов бумажнике, чтобы добавить функции работал плохо до сих пор, строя функции безопасности на blockchain кажется, правильной стратегии.
Но предположим, что вы хотите опубликовать tipjar адрес, и требует два ключа, чтобы разблокировать любые биткойны посланные к этому. К сожалению, это не будет работать, потому что отправители не собираются прикрепить сценарий к монетам, которые они посылают; и если вы хотите, чтобы инструктировать отправители прикрепить сценарий, то не было бы простой способ сделать это, потому что формат Bitcoin адрес не поддерживает такого рода вещи. Я бы получить монеты в обычный одноключевой адрес, а затем направить их вместе на два ключа адрес, в результате чего окна между получением и экспедированием, во время которого кто-то украл один ключ может украсть мои монеты.
Теперь предположим, что вместо того, чтобы публиковать адреса, что это хэш моего открытого ключа, я мог бы вместо того, чтобы опубликовать адрес, что это хэш произвольного скрипта. Тогда, если я хочу провести монеты вместе, я совершить сделку, содержащую как сценарий - который оказывается функция, которая говорит мне нужна некоторая комбинация подписей - а также подпись, которые делают скрипт возвращает истину. Это похоже на правильный путь для обработки нескольких ключевых адресов.
Это также, кажется, как правильно обрабатывать время автоподстройки монеты. Вместо того чтобы использовать поле nLockTime, ввести два новых опкоды нажать номер блока и блок даты / времени, в котором появляется сделка. Тогда кто-то может создать условие расходов, как "либо эти три стороны все согласны, или обе стороны согласны, и это был месяц, или одна сторона соглашается, и это был год," - и проектирование и поддержка этих сложных условий не требуют какой-либо поддержки со стороны официального клиента Bitcoin, они могли установить его сам и он будет полностью прозрачным для всех остальных.
Последняя оставшаяся проблема с ключами расщепленных как обрабатывать связи между устройствами, которые держат ключи. Это может быть неудобно - если у вас есть одна часть ключа на вашем компьютере, и одну часть на телефоне, они могут быть подключены через различные сети и как за брандмауэрами или шлюзами NAT. Я думаю, что правильный способ справиться с этой проблемой является использование blockchain - сначала один из устройств опубликовать фиктивную сделку, которая не двигается монет вокруг, но которая содержит детали сделки и ее подпись, то есть другое устройство обнаружить фиктивная сделка в blockchain, и составить реальную транзакцию с использованием этой подписи плюс самостоятельно.
Существует еще одна особенность, которую я хотел бы, чтобы blockchain к поддержке, но который я не уверен, что лучший способ реализации. Предположим, у меня есть большой, долгосрочный сберегательный счет, и я боюсь, что кто-то собирается украсть все мои ключи, в том числе мастер-ключ в моем сейфами. Тем не менее, я все еще хочу, чтобы быть в состоянии остановить их тратить свои монеты, если это произойдет. Так что я положил монеты в специальный адрес, который устанавливается таким образом, что, когда кто-то инициирует расходы, которые проводят с задержкой 72 часов. В течение этого времени, я могу использовать свой закрытый ключ, чтобы опубликовать "Отмена" Сделка, которая заставляет монету замерзнет, пока транзакция не будет опубликована, который подписан как мой ключом и ключом стороннего арбитра. Для этого потребуется приемник скриптов, дата / время опкоды, а также новые опкоды для какого-то механизма связи кросс-сделки. Любые идеи для того, что этот механизм должен выглядеть?