Android уже в течение длительного времени поддерживали небезопасные соединения Bluetooth, то есть соединения, которые позволяют избежать необходимости ввода номера PIN и которые, таким образом, восприимчивы к MITM атак, но "Немедленное включение", Было бы аккуратный проект, чтобы использовать эту возможность, чтобы предложить подключение к сети для близлежащих пользователей Bitcoin для:
- Отправка Bitcoin сделок с устройств без рабочего Wi-Fi или подключения к данным
- Всеобщий доступ к интернету
Проблема в том, стимулы. Для (1) стимул может быть просто получить деньги, в первую очередь, так что было бы возможно предложить ретрансляцию Bitcoin сделок бесплатно. Для получения (2) стимул должен быть денежной, так как передача данных все больше и больше квот д.
Было бы очень легко и весело проект, чтобы построить библиотеку Java для такой системы, таким образом, что любой, кто устанавливает Bitcoin Кошелек на Android или других таких приложений, как BitcoinSpinner может предложить их подключения к данным для других пользователей Bitcoin автоматически и в фоновом режиме. Первая цель будет ретранслировать только синтаксически действительные сделки Bitcoin в P2P-сети (избегать людей, злоупотребляющих вас как общий туннель), бесплатно. Было бы полезно для торговцев, которые хотели бы предложить заблокированы WiFi, но по-прежнему принимать Bitcoin с помощью Android устройства, а также на конференциях / рестораны / и т.д., где много пользователей Bitcoin приходят вместе и хотят, чтобы помочь друг другу, не подбегая огромный счет данных.
Распустившееся локальное подключение к интернету гораздо сложнее, но и более интересная проблема. Протокол, вероятно, включает в себя следующие шаги:
- Сканирование для устройств, предлагая подключение к сети, спросите у них (ставка, открытый ключ) пар.
- Выберите самое дешевое предложение, например, 0,01 BTC для 5mb передачи данных. Создание сделки тратить некоторые монеты открытого ключа провайдеров. Возьмите ключ, используемый для подписи первого входа, это будет ваш ключ подписи.
- Передайте подписанную транзакцию предоставляющему устройства. Они посылают его в узел выбрал случайным образом из сети и слушать радиопередачи обратно (прямое сообщение, чтобы задать для проверки ТХ будет лучше). Нет необходимости ждать подтверждения, как это просто микроплатежей.
- После того, как платеж был ретранслируются, они начинают принимать пакеты, подписанные с помощью ключа, используемого для первого входа TX и зашифрованного с поставщиками открытым ключом, которые вы провели в. Это необходимо, так как соединение Bluetooth является небезопасным и может быть MITMd, так что вам нужно, чтобы добавить свое собственное шифрование на верхнюю части для личной жизни, и вы должны подписать, чтобы избежать других людей, используя ваш кредит.
Существует, по крайней мере один большая нерешенная проблема здесь, а именно, вы должны доверять поставщику, чтобы фактически обеспечить возможность соединения. Есть несколько рисков: поставщик может уйти до вашего квант времени используется, они могут предоставлять (сознательно или бессознательно) некачественное подключение, они могут быть намеренно нечестно, чтобы попытаться и урожай микроплатежей. Некоторые из этих проблем могут быть решены, начиная с очень небольшой платой за короткий вкус их соединений, а затем расширение масштабов платежей, как только вы знаете, что хорошо работает.
Еще один проект, который мне приходит в голову, чтобы использовать Merkle деревья как форма гарантии оплаты. Она могла бы работать так:
- Создание дерева Меркла, который содержит N узлы листа, которые являются случайными числами, где N достаточно велико, скажу 10000. Случайные данные для каждого узла составляет 4 байта.
- Конкатенируйте п случайных чисел вместе, а затем хэш результат, давая H1. Используйте это как код разблокировки для выхода ОГО для небольших микроплатеж, например, сценарий будет OP_SHA256
OP_EQUALVERIFY, где Н2 = sha256 (sha256 (Н1)) [Bitcoin использует двойное хэширование для всего]. Теперь любой, кто знает H1 может претендовать на выход. Скажите поставщик, где найти эту сделку (может означать, генерируя его свежим и отдать его поставщику платежа). TX должен принять по меньшей мере, первый вход с использованием ключа, а не сам по себе проводить с использованием хэша. Если TX была представлена свежая, то провайдер транслирует его, чтобы зафиксировать ее. Теперь все подписано / зашифрованы с помощью ключа оплаты.
- Дайте корневой хэш Merkle дерева к провайдеру подключения.
- Теперь они выбирают семена, которые могут быть использованы для выбора случайной перестановки над листовыми узлами в дереве, т.е. перестановки 0 до 100000
- Для каждого пакета вы посылаете, вы включаете случайное число, выбранное с помощью следующей перестановки элементов и ветви Merkle необходимой, чтобы вернуться к корню.
- Поставщик подключения проверяет случайное число находится в правильном диапазоне, хэш его, проверяет ветвь Меркла (все это очень быстро, так что может быть посильнее сделано на основе каждого пакета), и перемещает его курсор по перестановке. Если случайное число из диапазона вы уронили соединение и отказываетесь принять данную txout в качестве оплаты в будущем.
Поскольку случайные числа будут использованы, поставщик платежных становится ближе к требовать его микроплатежей. Если плательщик покупает только небольшое количество пакетов больше, чем они на самом деле использовать, поставщик может потенциально грубой силой оставшиеся цифры довольно дешево и претендовать на компенсацию в любом случае, так как их диапазон, как известно, мало (гарантировано тем, что плательщик не может выбрать в каком порядке, чтобы раскрыть их). Если плательщик не получает трафик ретрансляции они ожидают, что они просто не дают случайные числа. В то время как платеж может быть в конечном итоге скотина вынуждены независимо, размеры различных переменных будут установлены, чтобы обеспечить стоимость брут будет выше, чем утверждал значение.
Все это будет работать в довольно небольших временных окон, потому что Bitcoin довольно хорошо микроплатежей уже так или иначе, но это не достаточно хорошо, чтобы сделать платеж для каждого пакета, переданного.