Bitcoin Forum
September 14, 2024, 04:15:08 PM *
News: Latest Bitcoin Core release: 27.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Вместо десктопного кошелька - хтмл страни  (Read 576 times)
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
September 06, 2017, 12:06:11 PM
 #1

Меня всегда поражала убогость интерфейса стандартного bitcoin-qt. Но как программист понимаю, что кросплатформенное десктопное приложение красивей вряд-ли получится сделать. И главное не я один такой... Практически каждому новому биткоин-юзеру я вынужден объяснять, что эта вот программа это то же самое, что интернет-банк, только не в браузере как вы привыкли видеть, а вот такая.

Вот и подумалось, а что если разрабы в RPC вызовах разрешат запросы GET? Тогда можно будет замутить весь интерфейс в html5+css+javascript как это все привыкли видеть в стандартных интернет-банках и забыть про QT как про страшный сон!

Подкинул идею разрабам коры на гитхабе: https://github.com/bitcoin/bitcoin/issues/11254
Как считаете, одобрят?


OpenTrade - Open Source Cryptocurrency Exchange
byteball
Member
**
Offline Offline

Activity: 266
Merit: 42

The rising tide lifts all boats


View Profile
September 06, 2017, 05:30:02 PM
 #2

Во-первых, уже есть приблуда на NodeJS - называется Bitcore.
Она взаимодействует с bitcoind через RPC и позволяет прикрутить биткойн к вебу.
Во-вторых, есть всякие кошельки на основе NodeJS вставленного в браузер (система NW.js, есть ещё аналогичная ей - Electron).
Они выглядят идентично и на десктопе, и на смартфонах.

https://github.com/bitpay/copay
а также основанный на нём:
https://github.com/byteball/byteball

В-третьих, тому кому не хочется выкачивать блокчейн Ethereum, приходится пользоваться MyEtherWallet.com
Но это малость стремновато, загружать в браузер свой приватный ключ
Легко зафишить новичков, подсунув им похожую URL
В целом по-моему именно в браузере - плохая идея, лучше на NW.js/Electron.

Ceterum censeo Civitatem Profunda esse delendam
ermaxinc
Sr. Member
****
Offline Offline

Activity: 369
Merit: 252



View Profile
September 06, 2017, 09:57:36 PM
 #3

А где сам блокчейн лежать будет?
Имею ввиду база транзакций... В кеш же вы не запихнете 120 гиг ))

Ваш кошелек кастрированный получится.


Update. Прочитал второй раз понял вас.
Ну так через rpc можно и общаться с вашим веб кошельком (get json). Биржи же так и работают.
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
September 07, 2017, 05:09:23 AM
 #4

Не поддержали разрабы. С формулировкой, что будут траблы с безопасностью в браузерах ((
Ну ладно, может лет через десять им QT надоест наконец и они вернутся к этому вопросу.

Понятно, что не составляет труда сделать прокси для работы с RPC, но зачем нужна дополнительная прокладка, если можно прямо в клиенте это реализовать?

OpenTrade - Open Source Cryptocurrency Exchange
byteball
Member
**
Offline Offline

Activity: 266
Merit: 42

The rising tide lifts all boats


View Profile
September 07, 2017, 08:50:30 AM
 #5

А где сам блокчейн лежать будет?
Имею ввиду база транзакций... В кеш же вы не запихнете 120 гиг ))

Ваш кошелек кастрированный получится.


Update. Прочитал второй раз понял вас.
Ну так через rpc можно и общаться с вашим веб кошельком (get json). Биржи же так и работают.
В случае Byteball, там есть два варианта: full and light wallet. Light доверяет полной ноде, так же как и Electrum.
Про Copay не знаю, не пользовался, вероятно тоже есть Light вариант, так как нынешний блокчейн под 100 гигов.
Если бы я делал аналог Copay для (например) лайткойна, или мультивалютный на его основе, я бы предложил два варианта, как у Byteball. Для мультивалютного не хранить блокчейны у себя особенно актуально.

Ceterum censeo Civitatem Profunda esse delendam
byteball
Member
**
Offline Offline

Activity: 266
Merit: 42

The rising tide lifts all boats


View Profile
September 07, 2017, 08:53:00 AM
 #6

Понятно, что не составляет труда сделать прокси для работы с RPC, но зачем нужна дополнительная прокладка, если можно прямо в клиенте это реализовать?
Прокладка есть насколько я понимаю, называется Bitcore.
У неё скорее всего даже UI с Bootstrap, как нынче популярно.
Не уверен, что там есть все нужные Вам функции, но она OpenSource и написана на ECMAScript под платформу Node.JS, так что можно добавить нужное.

Ceterum censeo Civitatem Profunda esse delendam
devman
Newbie
*
Offline Offline

Activity: 34
Merit: 0


View Profile
September 07, 2017, 09:02:13 AM
 #7

а чем jaxx не устраивает ?
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
September 07, 2017, 02:20:42 PM
 #8

Я предлагал пользоваться встроенным в стандартный bitcoin core веб сервером. В случае прокладок типа nodejs, пользователь должен будет устанавливать у себя на комп интерпретатор, это отдельная программа. Зачем плодить сущности?
Если бы встроили поддержку запросов GET прямо в кору, то больше ничего дополнительно устанавливать не надо было.

OpenTrade - Open Source Cryptocurrency Exchange
byteball
Member
**
Offline Offline

Activity: 266
Merit: 42

The rising tide lifts all boats


View Profile
September 07, 2017, 02:53:10 PM
Last edit: September 07, 2017, 07:37:10 PM by byteball
 #9

Я предлагал пользоваться встроенным в стандартный bitcoin core веб сервером. В случае прокладок типа nodejs, пользователь должен будет устанавливать у себя на комп интерпретатор, это отдельная программа. Зачем плодить сущности?
Не совсем так: node.js отдельно устанавливать не нужно, проекты Electron и NW.js пакуют его и WebKit вместе в один инсталлятор, скачиваемый как одно приложение.
Думаю, что CommonJS позволит запустить бинарник bitcoind под каждой ОС (Linux/OSX/Win) так что бинарник можно вложить в тот же инсталлятор. Проблема лишь в случае BTC что нужно хранить блокчейн (хотя нынче его вроде можно прунить).
Можно посмотреть, как решают проблему блокчейна в Copay, скорее всего он аналогично Electrum работает с полной нодой по некому протоколу. Если делать так, нужно будет скорее всего быть совместимыми с Electrum - тогда можно использовать те же сервера что и он.
Но надо решить, что вы предлагаете чего нет в Copay? Copay выглядит вполне "модно".

В принципе, должен появиться AppMarket - чтобы не плодить действительно по одному интерпретатору и броузер-движку на каждое такое установленное приложение.
Но если хотите AppMarket, тогда можно уже сейчас сделать Chrome App или плагин для Мозиллы.
У Ethereum есть такой, насколько я понимаю.

P.S. bitcoind уже предоставляет JSON-RPC по HTTP с SSL и т.д., можно даже заходить с другого хоста если настроить аутентикацию.
https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)

Так что остаётся добавить простейший веб-сервер который будет выдавать статические страницы на ещё одном порту, и проксить RPC запросы на порт занятый bitcoind. Это необходимо, так как если ваш UI будет реализован на локальных файлах, придётся использовать JSONP, а из коробки bitcoind вряд ли это делает.

Ceterum censeo Civitatem Profunda esse delendam
byteball
Member
**
Offline Offline

Activity: 266
Merit: 42

The rising tide lifts all boats


View Profile
September 07, 2017, 04:30:02 PM
 #10

Чтобы избежать хранения блокчейна, я бы посмотрел в сторону Electrum, у него тоже есть JSON RPC.
Можно добавить к нему веб сервер реализованный на Python, например с фреймворком Flask.
Но нужно понять, что такой веб-клиент добавит к уже существующей функциональности Electrum?
Опять же - я бы поостерегся доверить браузеру мой приватный ключ. Особенно под виндой. Если так, то получится что все операции с файлами кошельков и приватными ключами нужно будет делать через командную строку, или по-старинке через QT. А куда вводить passphrase? Если какая-нибудь зараза в броузере его перехватит и потом найдёт на диске приватные ключи, денежки перейдут хакерам.

Лучше уж запаковать WebKit + GTK + Python + модули Electrum в один binary executable, чтобы пользователям не нужно было устанавливать Python.

Ceterum censeo Civitatem Profunda esse delendam
yo-blin
Legendary
*
Offline Offline

Activity: 2296
Merit: 1057



View Profile
September 07, 2017, 07:17:09 PM
 #11

вы brainwallet видели?
https://github.com/colt05/brainwalletX.github.io
тоже на node.js

                __mmW████████mms_
            ,gW███████████████████Ws_
          gW█████████████████████████Ws.
        g███████████████████████████████s
      ,W█████████████████████████████████W.
     i████~*█████████████████████████A~████s
    i█████  '*█████████████████████A`  █████s
   ,██████    'M█████████████████A~    ██████i
   d██████      'M█████████████A~      ██████W
   ███████        'M█████████A~        ███████.
   ███████          'M█████A~          ███████[
   ███████     W_     'M█Af     ,W     ███████[
   ███████     ██W_     ~     ,W██     ███████`
   Y██████     ████W_       ,W████     ██████A
   '▀▀▀▀▀▀     ██████W.   ,m██████     ▀▀▀▀▀▀`
               ████████W_m████████
               ███████████████████.
      V███████████████████████████████████f
       '*███████████████████████████████A`
         '*███████████████████████████*`
            ~*█████████████████████*f`
               ~~*█████████████*f~
                      ~~~~~
..........

Monero (XMR)
ДОБРО ПОЖАЛОВАТЬ В РУССКОЯЗЫЧНОЕ СООБЩЕСТВО
.форум..telegram..youtube.
..........

.DON'T BUY MONERO,.
.IT'S BAD FOR BANKS...

Sign for rent, СОБИРАЮ МЕRIT! Smiley

NVC: 4YoBLincaRdAEG4v8tbZ4T26ZnKbT9SBsu
byteball
Member
**
Offline Offline

Activity: 266
Merit: 42

The rising tide lifts all boats


View Profile
September 07, 2017, 07:39:28 PM
 #12

вы brainwallet видели?
https://github.com/colt05/brainwalletX.github.io
тоже на node.js
Кстати, ещё одной темой было бы сделать user-friendly, понятный дедушке Cold Storage.
Инструкция Электрума как хранить на "холодном компьютере" всё же не для дилетантов...

Ceterum censeo Civitatem Profunda esse delendam
kzv (OP)
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
September 08, 2017, 12:46:46 AM
 #13

Я предлагал пользоваться встроенным в стандартный bitcoin core веб сервером. В случае прокладок типа nodejs, пользователь должен будет устанавливать у себя на комп интерпретатор, это отдельная программа. Зачем плодить сущности?
Не совсем так: node.js отдельно устанавливать не нужно, проекты Electron и NW.js пакуют его и WebKit вместе в один инсталлятор, скачиваемый как одно приложение.
Думаю, что CommonJS позволит запустить бинарник bitcoind под каждой ОС (Linux/OSX/Win) так что бинарник можно вложить в тот же инсталлятор. Проблема лишь в случае BTC что нужно хранить блокчейн (хотя нынче его вроде можно прунить).
Можно посмотреть, как решают проблему блокчейна в Copay, скорее всего он аналогично Electrum работает с полной нодой по некому протоколу. Если делать так, нужно будет скорее всего быть совместимыми с Electrum - тогда можно использовать те же сервера что и он.
Но надо решить, что вы предлагаете чего нет в Copay? Copay выглядит вполне "модно".

В принципе, должен появиться AppMarket - чтобы не плодить действительно по одному интерпретатору и броузер-движку на каждое такое установленное приложение.
Но если хотите AppMarket, тогда можно уже сейчас сделать Chrome App или плагин для Мозиллы.
У Ethereum есть такой, насколько я понимаю.

P.S. bitcoind уже предоставляет JSON-RPC по HTTP с SSL и т.д., можно даже заходить с другого хоста если настроить аутентикацию.
https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)

Так что остаётся добавить простейший веб-сервер который будет выдавать статические страницы на ещё одном порту, и проксить RPC запросы на порт занятый bitcoind. Это необходимо, так как если ваш UI будет реализован на локальных файлах, придётся использовать JSONP, а из коробки bitcoind вряд ли это делает.


Ну вот, хоть кто-то понял, что я хотел: реализовать UI на статичных хтмл файлах.
Из коробки кора этого не даёт и совершенно непонятно  - почему?. Отсылка к безопасности мне кажется надуманной ибо вирусня легко обойдет CORS если захочет, а вот разработчикам это жизнь усложняет ибо нужно думать, как уговорить юзера поставить дополнительный софт, чтобы запустить прокси сервер для запросов к RPC (((

OpenTrade - Open Source Cryptocurrency Exchange
byteball
Member
**
Offline Offline

Activity: 266
Merit: 42

The rising tide lifts all boats


View Profile
September 09, 2017, 10:45:47 PM
 #14

Ну вот, хоть кто-то понял, что я хотел: реализовать UI на статичных хтмл файлах.
Из коробки кора этого не даёт и совершенно непонятно  - почему?. Отсылка к безопасности мне кажется надуманной ибо вирусня легко обойдет CORS если захочет, а вот разработчикам это жизнь усложняет ибо нужно думать, как уговорить юзера поставить дополнительный софт, чтобы запустить прокси сервер для запросов к RPC (((
Я думаю, добавлять веб-сервер в bitcoind - неоправданный риск.
Хотя вам и никто не запрещает отфоркать понравившуюся вам версию, и распространять с добавлениями. Но там вроде на C++ всё...
Вам именно хочется, чтобы ваш кошелек был полной нодой, а не SPV?
Есть три библиотеки на Python с примитивами, нужными для биткойн протокола, я полагаю, что из хотя бы одной из них можно слепить приличный полный клиент (без эзотерического функционала и пожалуйста, без SegWit!), и к нему прикрутить что угодно.

Если SPV достаточно, можно просто взять Electrum и добавить туда, всё что хотите - он тоже на Python.

Ceterum censeo Civitatem Profunda esse delendam
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!