Это, возможно, было описано в другом месте, но я не видел его.
Можно иметь бумажники только один ключ еще есть все операции отправки монет в этом бумажнике быть частным в том смысле, что они не были привязаны к этому кошельку (кроме отправителя, зная, что он послал монеты в этот бумажник, конечно). Это не предполагает каких-либо изменений в протокол или блок-цепи. Клиент изменится, однако.
Идея заключается в том, что отправитель признает открытый ключ в качестве ключа бумажника, а не ваниль Принимающий ключа. Когда это происходит, отправитель создает новый, уникальный, открытый ключ от главного открытого ключа бумажника данного приемника. Он посылает к этому новому открытому ключу при создании транзакции для отправки монет. Отправитель не может, однако, генерировать соответствующий закрытый ключ. Только получатель может генерировать секретный ключ (он является производным от секретного ключа бумажника мастера, как описано ниже). Таким образом, только получатель может впоследствии потратить эти монеты. Кроме того, ни один, но отправитель и получатель не знают, что сделка относится к приемнику.
С одним ключом бумажники резервное копирование становится гораздо проще, так как вы не должны убедиться, что резервное копирование всех ключей, сгенерированные клиентом с целью получения. Только главный ключ резервного копирования.
Имея тот же самый кошелек на нескольких клиентов намного проще, так как хорошо, так как ни один из клиентов не должно "генерировать новые блоки ключей" получить (для получения изменений, например), как нынешние клиенты делают, поэтому координация просто не является проблемой.
Это, как вы реализуете один ключ бумажника:
Предположим, Алиса имеет единственный ключ бумажника. Это бумажник имеет ключ, который не может быть использован в нормальном режиме других клиентов, чтобы отправить. (Скажем, этот новый ключ имеет новый тип ключа в ключевом блоке, например). Позволять "" быть закрытый ключ бумажника. Открытый ключ бумажника "" (А = ао, где Q является основой точка на кривой). А публикуется Алисой. Кроме того, пусть Боб есть бумажник и она имеет монеты под открытым ключом "Y" поэтому Bitcoin блок-цепь имеет сделку с передачей монет "Y" и Боб имеет секретный ключ, "Y", Что соответствует "Y",
Боб хочет послать несколько монет Алисе. Он смотрит вверх "" и и его клиент замечает, что не может отправить непосредственно в "" (Из-за типа ключа). В настоящее время клиент будет просто остановиться здесь. Если клиент Боба знает об отдельных ключевых кошельках, вместо этого он генерирует открытый ключ "Икс" из "", "Y", а также "м" ("м" случайность, полученная из частей сделки, который передает монету). "Икс" обладает свойством, что только Алиса может определить частный ключ "Икс" и только Боб знает, что Алиса владеет "Икс", Алиса может потратить монеты в "Икс" путем создания "Икс" и использовать его, чтобы подписать сделку тратить монеты в какой-то момент в будущем.
Боб создает "Икс" следующим образом: S = Hash (м, Ya); Х = să (обратите внимание, уА и ЗН являются криптографические размножается в ECC)
Обратите внимание, что только Алиса и Боб могут генерировать "s", Кроме того, Боб не может создать частную часть "Икс" но он может передать монеты "Икс",
Алиса генерирует "Икс", Частная часть "Икс"Следующим образом: Она получает м и Y от сделки; Тогда S = Хеш (м, AY); х = са (по модулю большого простого определяемому ECC); Она может проверить, что X = XQ.
Обратите внимание, что уА = Ау и только Алиса и Боб могут вычислить их. Также, "Икс" получают из "" но никто не может доказать, Алиса не является владельцем "Икс" так как только Алиса и Боб знают "s",
"м" выбирается так, чтобы никакие две операции не производят то же самое "s", следовательно "Икс" всегда будет уникальным для этой транзакции. "м" будет несколько байт из сделки, которые являются уникальными для сделки, но которые не зависят от "Икс", Принимающий ключ в сделке.
Клиент держит кошелек "" придется проверять каждую новую сделку по недвижимости, что S = Hash (м, AY) и X = SÁ знать, чтобы добавить монеты на баланс в кошельке. Это дорого. Мы могли бы сэкономить время, оставив несколько байт из Hash (ов) в доступной области сделки. Это было бы сохранить один из двух необходимых размножается ECC. Клиент все равно пришлось бы вычислять "s" для каждой сделки, но после того, что Hash (s) является относительно дешевым.
Наконец, детерминированных бумажники:
Бумажник "" может быть сгенерирован путем генерирования детерминировано "" из закаленного пароля и соли, как описано в другом месте для детерминированных кошельков. Имея этот бумажник на нескольких клиентов будет гораздо проще, так как клиенты не должны координировать генерации получить ключи.