[{"data":1,"prerenderedAt":144},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fcore-tech\u002Fwallets-discovery-and-dialog-proposal":3,"docs-surround-\u002Fdocs\u002Fcore-tech\u002Fwallets-discovery-and-dialog-proposal":134},{"id":4,"title":5,"body":6,"description":116,"extension":126,"image":127,"meta":128,"navTitle":127,"navigation":129,"path":130,"seo":131,"stem":132,"__hash__":133},"docs\u002Fdocs\u002Fcore-tech\u002FWallets-discovery-and-dialog-proposal.md","Wallets Discovery And Dialog Proposal",{"type":7,"value":8,"toc":115},"minimark",[9,14,19,38,42,60,64,87,91,111],[10,11,13],"h2",{"id":12},"wallets-discovery-and-dialog-proposal","Wallets discovery and dialog proposal",[15,16,18],"h3",{"id":17},"общее","Общее",[20,21,22,26,29,32,35],"ol",{},[23,24,25],"li",{},"Для согласования TX между кошельками происходит диалог, согласно протоколу, но туда надо добавить возможность включать произвольную информацию в пределах разумных размеров (например, любой текст, который увидит человек или любые бинарные метаданные, если общается бот или какая-то логика более высокого уровня)",[23,27,28],{},"Для шифрования сообщений вполне пойдет принцип PGP, для чего 2м кошелькам достаточно знать публичные ключи друг друга. Рандомный ключ (+ I.V.) для AES например 256 шифруется публичным ключом собеседника (а последний может быть и RSA и EC, не важно), остальное сообщение AESом с помощью зашифрованного ключа.",[23,30,31],{},"Главное: публичные ключи, о которых пойдет далее, относятся только к шифрованию диалога, к процессу формирования UTXO и логике самого кошелька в целом они не имеют никакого отношения",[23,33,34],{},"Ситуации, когда одна сторона не знает, кто к ней обращается (например, некий бот собирает пожертвования на храм Бахуса и Венеры, или это обменник (*ниже)). Такой кошель уже по определению теряет часть своей анонимности и может опубликовать свой публичный ключ тем или иным образом. Доверять ли этой публикации решает сам инициатор диалога (ну вот, в качестве примера возьмем имеющиеся монетки с адресацией, когда сам адрес является ПубКл кошелька - слать туда или не слать решаем сами). Этот инициатор тогда посылает свой публичный ключ в первом сообщении",[23,36,37],{},"В секьюрных случаях Публ ключ может быть передан по какому-либо секьюрному каналу (телеграм и т.п.) между знакомыми и вставлен в кошелек",[15,39,41],{"id":40},"публикация-публичных-ключей-для-диалога-это-все-опции-имеет-смысл-реализовывать-все-что-возможно","Публикация публичных ключей (для диалога!). Это все опции, имеет смысл реализовывать все что возможно",[20,43,44,47,57],{},[23,45,46],{},"Есть PGP key services, которые изначально были в помощь шифрованию email, но и тут могут пригодиться. По какому либо идентификатору можно заполучить программно ПублКл",[23,48,49,50,56],{},"Децентрализованный вариант, как еще одна опция. Ключи храним на IPFS (",[51,52,53],"a",{"href":53,"rel":54},"https:\u002F\u002Fipfs.io",[55],"nofollow","), но там имя файла человеческое не задать, поэтому мэппинг имя->ключ можно организовать в виде смартконтракта на Eth (запись будет стоить публикующему немного, ибо это транзакция, чтение бесплатно)",[23,58,59],{},"Прям у себя на сайте (зеленый замочек в браузере виден? копируйте-вставляйте в кошель). Или ссылку на ipfs в виде QR кода (сам ключ длинноват для QR)",[15,61,63],{"id":62},"secure-channel-тоже-опции","Secure channel. Тоже опции",[20,65,66,69,72,75,78,81,84],{},[23,67,68],{},"Связь по TCP напрямую. Самое быстрое и простое, оба кошеля должны быть в онлайне. Но все будут знать, что эти 2 IP общались между собой",[23,70,71],{},"Через прокси (ретранслятор). Когда кто-то или оба из кошельков за файрволлом. Тоже должны быть в онлайне, и факт общения может быть установлен. Можно запустить подобные ретрансляторы, а список известных адресов могут выдавать ноды в рамках протокола.",[23,73,74],{},"Через инфраструктуру мессенджеров. Надо поизучать вопрос об интеграции с их АПИ. Но тут получается, что пациенты совсем друг друга хорошо знают и имеют в контактах мессенджера. Но зато есть возможность быть в оффлайне во время диалога.",[23,76,77],{},"Броадкастить (по крайней мере 1-е сообщение диалога) через инфраструктуру beam nodes. Сообщение распространяется по сети с некоторым убывающим TTL и с высокой вероятностью доходит до кошелька. Почему ноды могут быть заинтересованы в ретрансляции этого хлама? Ну если они майнят, то такое общение может обернуться неким txFee > 0 через какое-то время. Тут проблема как экономически бороться с флудом, поскольку сообщения шифрованные, и ноды их никак валидировать не в состоянии. Может в таких случаях обязать какой-нибудь PoW приделывать к сообщению? При этой схеме тоже все стороны должны быть в онлайне и прицепиться к нодам сети на предмет прослушки таких броадкастов (и фильтрации своих из общего потока с помощью своего приватного ключа).",[23,79,80],{},"BBS service - это ретранслятор + история. Отдельная сеть из узлов, которые реализуют \"общую шину\" для данного рода сообщений. Клиент может прицепиться к одному или нескольким таким каналам, получать по запросу некоторую историю сообщений и в реальном времени фильтровать входящие. Здесь cons и pros как что в предыдущем пункте, но есть и хорошее: 1) можно слушать из N существующих каналов M\u003CN, сообщение соответственно может быть доставлено в соответствии с какими-то битами публичного ключа в M каналов, а не все N, получатель об этом знает, но факт того, что он переварил то или иное сообщение, скрыт. 2) Оффлайн до определенной глубины времени",[23,82,83],{},"Объединение №4 и №5: сообщение гуляет по сети и попадает в BBS так или иначе. За счет рандомного TTL затирается из истории адрес отправителя, за счет BBS неизвестен получатель.",[23,85,86],{},"Случай когда слушатель каналов маломощный вроде мобильного клиента и\u002Fили ограничен в трафике: частично жертвуя анонимностью, поручает BBS сервису фильтровать для него канал. Для этого вместо одного публ. ключа нужно 2 штуки: 1) Selector public key, 2) Messaging public key\nСоответственно протокол диалога обогащается еще одним заголовком - некие позывные (не секретные) шифруются ключом селектора, остальное уже секретный канал",[15,88,90],{"id":89},"что-хотелось-бы-в-ui-и-в-целом-в-приложении","Что хотелось бы в UI и в целом в приложении",[20,92,93,96,99,102,105,108],{},[23,94,95],{},"Address book - хранилище имен контрагентов и их публичных ключей. Имена уникальные лишь для этого кошелька, никакого центрального хранилища имен не надо",[23,97,98],{},"Возможность ввести публичный ключ из clipboard и придумать для него имя",[23,100,101],{},"Отображение сообщений, которые приходят как мета с сообщениями протокола. В этом случае владелец кошелька (или его бот) подтверждение пусть дает после приема каждой подобной меты, продолжать ли диалог",[23,103,104],{},"Возможность поиска публичных ключей во внешних хранилищах: pgp key services, решения на ipfs и т.д.",[23,106,107],{},"Возможность генерации своих ключей для общения, публикации публичной части под каким-либо никнеймом, индивидуальной передачи публичного ключа собеседнику по любому каналу (через telegram secret channel как пример)",[23,109,110],{},"(??? спорный момент) Интеграция кошелька с АПИ мессенджеров",[112,113,114],"p",{},"(*)(atomic swap отдельная тема, тут надо придумать как можно лочить TX с помощью любых видов хэшей, присутствующих в других блокчейнах, опционально и в дополнение к тому что есть, за большее fee конечно,  ... ...)",{"title":116,"searchDepth":117,"depth":117,"links":118},"",2,[119],{"id":12,"depth":117,"text":13,"children":120},[121,123,124,125],{"id":17,"depth":122,"text":18},3,{"id":40,"depth":122,"text":41},{"id":62,"depth":122,"text":63},{"id":89,"depth":122,"text":90},"md",null,{},true,"\u002Fdocs\u002Fcore-tech\u002Fwallets-discovery-and-dialog-proposal",{"description":116},"docs\u002Fcore-tech\u002FWallets-discovery-and-dialog-proposal","0I_P6KpC1t5T4J4jNOEav6bCRt65WgWAAXzXE0Z63RI",[135,139],{"title":136,"path":137,"stem":138,"description":116,"children":-1},"Wallet Requirements","\u002Fdocs\u002Fcore-tech\u002Fwallet-requirements","docs\u002Fcore-tech\u002FWallet-requirements",{"title":140,"path":141,"stem":142,"description":143,"children":-1},"Desktop Wallet User Guide","\u002Fdocs\u002Fdesktop\u002Freadme","docs\u002Fdesktop\u002FREADME","The Beam Desktop Wallet is the easiest way to get started with Beam. Available on Linux, Mac, and Windows platforms.",1783006091162]