Author

Topic: Браузерный интерфейс для Bitcoin Core (Read 321 times)

full member
Activity: 1589
Merit: 214
Вопрос был в том, что вы именно хотели бы сделать в браузере?
Какие именно фичи из Bitcoin Core?

Вы же не собираетесь 200 гигов блокчейна хранить, в браузере, и раздавать блоки и синхронизировать их верно?

Моя идея в том, чтобы в браузере сделать только интерфейсную часть. Все остальное не трогать. 200 гигов блокчейна хранятся не в браузере, а в отдельной базе данных. Все как обычно.
В Bitcoin Core есть встроенное АПИ, через которое можно получать и отдавать практически любую информацию, которая может понадобиться в интерфейсе.

А вот чтоб такого не было, особенно в децентрализванных сетях, надо вшить это API в сами ноды...

Внезапно

Вот так-то намного понятнее, что ты на самом деле хочешь.
Внезапно глянь это.
Но это, как ты отметил ранее - централизованный сервис...

И вот тут что-то не рабочее нашёл, возможно надыбаешь сам исходник.
Похоже, что это API на скриптах, и как я понял, раньше оно работало, когда было подключено к ноде (кошельку с блокчейном и открытым API).

Вот такое HTTP-API - можно было бы внутрь ВСЕХ нод встроить, как у тех же WAVES, что я и показал выше.
Именно HTTP/HTTPS. Чтобы не надо было код писать всякий, и чтобы любая домохозяйка могла разобраться с этим.
То есть, чтобы вот... Заходишь, например, куда-нибудь сюда: https://bitnodes.earn.com/ и видишь там 10000 нод биткоина...
IP:PORT, IP:PORT, и т.д...
Или например просто в консоли Bitcoin Core вводишь команду getpeerinfo,
копируешь любой пир оттуда, и если пир этот - это не клиент подключённый к ноде,
а сервер, то есть нода, к которому подключен этот кошелёк как клиент,
и если порт там, на ноде - открыт во вне,
то просто заходишь туда, на ноду, по адресу: http(s)://IP:PORT/
и внезапно открывается сайт, наподобие этого,
а там команды можно вводить GET-POST-запросами,
смотреть баланс по адресу, можно блоки в JSON смотреть,
можно искать по адресу транзакции,
можно отправлять на ноду RAW-транзакции,
и броадкастить их через неё в децентрализованную сеть...
Ну ты понял...

Мог бы также открываться block-explorer, наподобие этого: https://miner-control.de/explorer/ARC
Но всё это - надо встроить внутрь самой ноды, то есть - внутрь каждого пира.

Вот если такое сделать, то можно будет туда и веб-кошельки цеплять, чтобы они работали с нодами через это API.
Просто в веб-кошельке список нод прописал, и коннектишься к ним.
Стали неактуальны? Другие адреса нод просто ввёл, и работаешь себе дальше, но уже через них.

Так, кстати, работает тот же waves-lite-client (тут исходник), а тут - онлайн версия.
Там, в исходнике, если заметишь, коннект идёт на доменное имя, wavesplatform.com, где размещено API,
но можно и на свою ноду, waves full node всё это дело подключить, прописав http://localhost:PORT/ и без проблем работать через эту ноду.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Вопрос был в том, что вы именно хотели бы сделать в браузере?
Какие именно фичи из Bitcoin Core?

Вы же не собираетесь 200 гигов блокчейна хранить, в браузере, и раздавать блоки и синхронизировать их верно?

Моя идея в том, чтобы в браузере сделать только интерфейсную часть. Все остальное не трогать. 200 гигов блокчейна хранятся не в браузере, а в отдельной базе данных. Все как обычно.
В Bitcoin Core есть встроенное АПИ, через которое можно получать и отдавать практически любую информацию, которая может понадобиться в интерфейсе.

А вот чтоб такого не было, особенно в децентрализванных сетях, надо вшить это API в сами ноды...

Внезапно
full member
Activity: 1589
Merit: 214
Я немного подразвил весь этот брайнваллет - вот здесь: https://username1565.github.io/brainwallet.github.io/
Можешь как программист - просмотреть коммиты.
Я добавил поддержку альткоинов и всякие там функции.  
Исходник - открыт, и ты можешь найти тут: https://github.com/username1565/brainwallet.github.io
Обязательно посмотри всё, как программист, и проверь.
Если будут ошибки - жду pull-requests на github c исправлениями.

Это хорошо, что Вы форкнули этот проект, так как "brainwalletx" уже давно не обновлялся.
Но, по-моему, аналогичный проект "coinb.in", написанный также на JavaScript, выглядит более продвинутым,
поскольку полностью поддерживает SegWit и мультисигнатурные адреса Bitcoin.
У него тоже открытый исходник и тоже можно слить его в zip и форкнуть.

Судя по описанию, Вы добавили поддержку ZCash, Emercoin и ещё нескольких, вроде бы, нетоповых альтернативных криптовалют.
Там для альтов, просто префиксы и параметры задаются в html-коде index.html и всё.
Я увязал это на все другие функции, в частности на генерацию Chains для альтов, и подпись, чтобы всё это работало.
Достаточно выбрать монету в выпадающем списка.
Также, доступна работа с Ethereum.
Отдельный скрипт - для этого прилагается.
Доступна локально цифровая подпись и проверка её не только для альтов, но и для эфира,
ибо то что удалось найти мне ранее - так это некий "онлайн-сервис", вроде этого: https://etherscan.io/verifySig
А тут, всё это - локально из zip, и без Интернета, можно работать с подписями.

Для выполнения таких важных действий как подписание транзакций должен быть проведён полный аудит кода для его проверки на отсутствие багов.
Работоспособность подписей я проверял через сами кошельки. Там подписывал, в скрипте проверял.
В скрипте подписывал, в кошельке - проверял.

Кстати, советую добавить во вкладку "SIGN" возможность вручную задавать "RANDOM SEED" при подписывании Bitcoin-сообщений или транзакций, так как число "SIGN NONCE" в схеме ECDSA должно быть сгенерировано криптографически стойким RANDOM-алгоритмом.
Ну... Я уже давненько не обновлял это, и позабыл в каком скрипте и в какой строке лежат нужные фрагменты кода.
Насколько помню, цифровая подпись где-то тут, в отдельном файле bitcoinsig.js
и если это библиотека стандартная, определённой версии, то вносить изменения в неё не очень хотелось бы.
Поэтому, лучше где-то отдельно написать нужную функцию, и с неё уже подключиться на библиотеку.

Вот что бы вы хотели видеть конкретно? Отдельное поле для ввода рандома или что?
Но там рандом никакой и не передаётся... А где он генерируется - найти не могу.
Вот так запускается формирование подписи, а где эта функция я - чё-то понять не могу.
Я думаю, вы сами сможете прикрутить эту фичу и открыть pull request, так будет проще и вам, и мне.

Если в гугле забанили, можно же прямо тут на форуме узнать что это такое.
Над всеми топиками форума висит ссылка: "News: Latest Bitcoin Core release: 0.18.0 [Torrent] (New!)".
Наводите стрелку, кликаете и начнется загрузка файла. Чтобы скачать торрент, надо сначала скачать клиент битторрента например здесь.
Да я знаю, и качал его, там блокчейн уже больше 200 гигабайт весит.
Вопрос был в том, что вы именно хотели бы сделать в браузере?
Какие именно фичи из Bitcoin Core?
Вы же не собираетесь 200 гигов блокчейна хранить, в браузере, и раздавать блоки и синхронизировать их верно?
Хотя... WEBRTC есть же!
И видео-трансляции, видеочаты всякие тоже можно p2p сделать через браузер,
надо только STUN-сервера для связи пиров.

Чтобы сделать веб-кошелек, для начала, нужно знать как работает биткоин. Самые основы.
Если не знаешь - читни PDF-ку от Сатоши Накамото, она здесь, на форуме прикреплена.

Самое главное - это алгоритм ECDSA и эллиптическая кривая secp256k1.
Эта тема не про веб кошелек, но за ссылку на статью спасибо. Там что-то много букаф, мне все не осилить, можешь сказать страницу в статье Сатоши Накомото, где он пишет про "самое главное - это алгоритм ECDSA и эллиптическая кривая secp256k1."?
Я почитаю сначала про главное, а остальное как-нибудь потом...
В своей PDF-ке, Сатоши Накамото - описывает сам блокчейн, и только касается ECDSA, причём косвенно во фразе из нескольких слов:
Что можно там делать? Генерировать приватные ключи и адреса.
Проверять баланс, через http://blocкchain.com/

Как один из тех классических дураков на чьих ошибках умным следует учиться,
позволю дать тебе совет: когда захочешь начать работу над сложным проектом,
то не использую сервисы от третьих сторон (типа блокчейн ком и ему подобных).
Сегодня они тебе дали ключи апи, ты сделаешь проект,
завтра они отзовут свои ключи и в ту же секунду все твои труды пойдут в унитаз.
А вот чтоб такого не было, особенно в децентрализванных сетях, надо вшить это API в сами ноды...
Ну, чтобы на ноду заходишь, как на сайт, а там стандартное и полноценное - API.

И мне кажется, всё это уже есть.
По-крайней мере у тех же WAVES, прямо на нодах есть встроенное API.
И вот одна из таких нод: https://waves.guarda.co/
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange

Не знаю как насчёт Bitcoin Core,
Если в гугле забанили, можно же прямо тут на форуме узнать что это такое. Над всеми топиками форума висит ссылка: "News: Latest Bitcoin Core release: 0.18.0 [Torrent] (New!)". Наводите стрелку, кликаете и начнется загрузка файла. Чтобы скачать торрент, надо сначала скачать клиент битторрента например здесь.

Чтобы сделать веб-кошелек, для начала, нужно знать как работает биткоин. Самые основы.
Если не знаешь - читни PDF-ку от Сатоши Накамото, она здесь, на форуме прикреплена.

Самое главное - это алгоритм ECDSA и эллиптическая кривая secp256k1.
Эта тема не про веб кошелек, но за ссылку на статью спасибо. Там что-то много букаф, мне все не осилить, можешь сказать страницу в статье Сатоши Накомото, где он пишет про "самое главное - это алгоритм ECDSA и эллиптическая кривая secp256k1."? Я почитаю сначала про главное, а остальное как-нибудь потом...

Что можно там делать? Генерировать приватные ключи и адреса.
Проверять баланс, через http://blocкchain.com/

Как один из тех классических дураков на чьих ошибках умным следует учиться, позволю дать тебе совет: когда захочешь начать работу над сложным проектом, то не использую сервисы от третьих сторон (типа блокчейн ком и ему подобных). Сегодня они тебе дали ключи апи, ты сделаешь проект, завтра они отзовут свои ключи и в ту же секунду все твои труды пойдут в унитаз.

legendary
Activity: 2618
Merit: 2304
Я немного подразвил весь этот брайнваллет - вот здесь: https://username1565.github.io/brainwallet.github.io/
Можешь как программист - просмотреть коммиты.
Я добавил поддержку альткоинов и всякие там функции.  
Исходник - открыт, и ты можешь найти тут: https://github.com/username1565/brainwallet.github.io
Обязательно посмотри всё, как программист, и проверь.
Если будут ошибки - жду pull-requests на github c исправлениями.

Это хорошо, что Вы форкнули этот проект, так как "brainwalletx" уже давно не обновлялся. Но, по-моему, аналогичный проект "coinb.in", написанный также на JavaScript, выглядит более продвинутым, поскольку полностью поддерживает SegWit и мультисигнатурные адреса Bitcoin.

Судя по описанию, Вы добавили поддержку ZCash, Emercoin и ещё нескольких, вроде бы, нетоповых альтернативных криптовалют. Для выполнения таких важных действий как подписание транзакций должен быть проведён полный аудит кода для его проверки на отсутствие багов.

Кстати, советую добавить во вкладку "SIGN" возможность вручную задавать "RANDOM SEED" при подписывании Bitcoin-сообщений или транзакций, так как число "SIGN NONCE" в схеме ECDSA должно быть сгенерировано криптографически стойким RANDOM-алгоритмом.
full member
Activity: 1589
Merit: 214
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange

блокчейн.ком уже может в стильный интерфейс

МТгокс.ком тоже может... Ой, то есть мог  Grin
newbie
Activity: 28
Merit: 4
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Ну я вот не понял про безопасность. Объясните может: почему пейпал через
браузер это норма, а биткоин это ай-яй-яй как небезопасно?

Потому что у сервера пейпала есть https-сертификат (привет, централизация).
А у вашего "кадавра" (связки браузера с демоном) такого сертификата не будет и
любая троянская программа может запросто стать MitM

А что сейчас помешает троянской программе подменить экзешник?
По моему, если на компе с корой окажется троян нацеленный на битки, то тут уже ничего не спасет.
sr. member
Activity: 770
Merit: 305
Ну я вот не понял про безопасность. Объясните может: почему пейпал через
браузер это норма, а биткоин это ай-яй-яй как небезопасно?

Потому что у сервера пейпала есть https-сертификат (привет, централизация).
А у вашего "кадавра" (связки браузера с демоном) такого сертификата не будет и
любая троянская программа может запросто стать MitM
legendary
Activity: 2744
Merit: 1588

Браузерный интерфейс это не сайт, а статичная html страница. Разница в запуске браузерного интефейса в том, что вы делаете двойной клик не по вайлу с расширением .exe, а по файлу с расширением .html
Да, если на компе будет вирус, то он сможет легко подменить правильный html на свой собственный, но абсолютно то же самое можно проделать с экзешником.
А по поводу кода браузера - смотрите, они все открыты, как и коды компилятора с++ который собирает экзешники.

Вот только недавно вроде у браузера Mozilla вскрылась какая-то серьезная проблема. Я Вам вот о чем говорю, да страница автономна, но открываете Вы её браузером. Этих браузеров минимум 4-5 основных. Поэтому получается связка автономная страница (код разработчиков) + 5 чужих открытых кодов, либо один свой код в гитхабе, неужели не видна разница, что свой код намного надежней и они полностью все контролируют, а не ищут закладки и баги в 5 чужих кодов.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange

Ваш сайт ломанут или туда трояна какого вставят. Как это происходит с популярными сайтами. Плюс скорее всего браузеры шпионят за пользователями.

Поэтому ну его в баню, в программе оно как-то надежней. Ведь разработчики здесь уверены в коде, а там еще и код браузера надо смотреть.

Браузерный интерфейс это не сайт, а статичная html страница. Разница в запуске браузерного интефейса в том, что вы делаете двойной клик не по вайлу с расширением .exe, а по файлу с расширением .html
Да, если на компе будет вирус, то он сможет легко подменить правильный html на свой собственный, но абсолютно то же самое можно проделать с экзешником.
А по поводу кода браузера - смотрите, они все открыты, как и коды компилятора с++ который собирает экзешники.
legendary
Activity: 2744
Merit: 1588

Я вижу это как статичную html страницу которая будет открываться любым браузером и тянуть данные через RPC демона. Чтобы демон отдавал странице данные, достаточно пару строчек в исходник добавить, но почему разрабы возбудились якобы небезопасностью такого подхода - я не могу понять (

Ваш сайт ломанут или туда трояна какого вставят. Как это происходит с популярными сайтами. Плюс скорее всего браузеры шпионят за пользователями.

Поэтому ну его в баню, в программе оно как-то надежней. Ведь разработчики здесь уверены в коде, а там еще и код браузера надо смотреть.
member
Activity: 162
Merit: 10
Давай, давай запили этот проект. Если он действительно будет удобный и понятный людям, то в любом случае найдет свое признание.  Shocked
full member
Activity: 1246
Merit: 138
Hodl DeepOnion
Bitcoin-qt в архитектурном плане - это анахронизм из 90-х, когда считалось нормальным, что front-end (интерфейс) и back-end слиты воедино в одной программе.

Если браузер - это опасно, можно в качестве морды использовать Electron. Вам, как программисту, ничто не мешает запилить свою вебморду к bitcoind, спрашивать для этого разрешение у Bitcoin Core не требуется.

Я понимаю, что можно форкнуть и запилить свой интерфейс. Но приложение на электроне это жопа весом от 150 метров вроде - по нынешним временам не много, но вопрос зачем, если браузер уже есть на 100% компов?
Я вижу это как статичную html страницу которая будет открываться любым браузером и тянуть данные через RPC демона. Чтобы демон отдавал странице данные, достаточно пару строчек в исходник добавить, но почему разрабы возбудились якобы небезопасностью такого подхода - я не могу понять (
Может попробуете QML (https://ru.wikipedia.org/wiki/QML) от того же QT использовать, Вы же знаток JavaScript, а он на него похож ?
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Bitcoin-qt в архитектурном плане - это анахронизм из 90-х, когда считалось нормальным, что front-end (интерфейс) и back-end слиты воедино в одной программе.

Если браузер - это опасно, можно в качестве морды использовать Electron. Вам, как программисту, ничто не мешает запилить свою вебморду к bitcoind, спрашивать для этого разрешение у Bitcoin Core не требуется.

Я понимаю, что можно форкнуть и запилить свой интерфейс. Но приложение на электроне это жопа весом от 150 метров вроде - по нынешним временам не много, но вопрос зачем, если браузер уже есть на 100% компов?
Я вижу это как статичную html страницу которая будет открываться любым браузером и тянуть данные через RPC демона. Чтобы демон отдавал странице данные, достаточно пару строчек в исходник добавить, но почему разрабы возбудились якобы небезопасностью такого подхода - я не могу понять (
legendary
Activity: 2317
Merit: 2318
Bitcoin-qt в архитектурном плане - это анахронизм из 90-х, когда считалось нормальным, что front-end (интерфейс) и back-end слиты воедино в одной программе.

Если браузер - это опасно, можно в качестве морды использовать Electron. Вам, как программисту, ничто не мешает запилить свою вебморду к bitcoind, спрашивать для этого разрешение у Bitcoin Core не требуется.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
По поводу безопасности и браузера вам ответили вполне обоснованно

Ну я вот не понял про безопасность. Объясните может: почему пейпал через браузер это норма, а биткоин это ай-яй-яй как небезопасно?
legendary
Activity: 2478
Merit: 1951
Leading Crypto Sports Betting & Casino Platform
Чтобы биткоин стал похож на обычный интернет-банк и чтобы биткоин начал массово восприниматься как обычный банк, а не как пирамида и/или как игрушка для трейдеров.

Чтобы биткоин перестал восприниматься как пирамида, необходимо чтобы он перестал ей быть, что как бы нереально.

По поводу безопасности и браузера вам ответили вполне обоснованно, наверно остается только изменить дизайн самого Bitcoin Core, сделать его более современным и юзерфрендли.
kzv
legendary
Activity: 1722
Merit: 1285
OpenTrade - Open Source Cryptocurrency Exchange
Помню, когда первый раз увидел вебмани, это было десктопное приложение с прикольным интерфейсом в виде круглых виндовых окон... Мне, и как программисту и как пользователю, понравилось сильно! Было это в начале века примерно...
Потом технологии шагнули вперед и вебмани, как и все прочие пейпалы полностью перешли на веб-версии.

Лет через 10 после первого знакомства с вебманями, я первый раз увидел биткоин кошелек... Первое впечатление: "что за школоло делало такой интерфейс"Huh По сравнению с круглыми окошками вебмани, через 10 лет биткоин выглядел мягко говоря не серьезно!
Самое интересное, что за все последующие годы и до сегодняшнего дня, интерфес Bitcoin Core практически и не поменялся. Ну да, появились новые вкладки, но все равно современный человек, привыкший к современным интернет-банкам, смотрит на десктопный интерфейс кошелька как первые европейцы смотрели наверное на индейцев Майя ((

Короче говоря, у меня давно бродит идея: сделать для биткоина нормальный, современный веб-интерфейс. Чтобы любая домохозяйка, которая научилась пользоваться пейпалом и/или сберонлайном, могла бы научиться и биткоину. Чтобы биткоин стал похож на обычный интернет-банк и чтобы биткоин начал массово восприниматься как обычный банк, а не как пирамида и/или как игрушка для трейдеров.

Сразу скажу, что я обращался на гитхабе к разрабам коры с таким предложением и мгновенно получил резкий отказ двигаться в эту сторону с формулировкой типа: "браузер это дыра в безопасности, лучше пусть биткоин останется без домохозяек"... Не знаю, может они и правы. У меня нет достаточных познаний в английском, чтобы дискутировать с ними, может тут обсудим идею?
Jump to: