Pages:
Author

Topic: О "тонких" клиентах - page 2. (Read 4406 times)

legendary
Activity: 1218
Merit: 1004
June 17, 2012, 09:30:32 AM
#15
legendary
Activity: 1120
Merit: 1069
June 17, 2012, 09:27:13 AM
#14
Электрум всё равно опирается на сервер. И у него свой вариант RPC зачем-то. И опять питон...

Скажем так: я всё это замутил с некоторым прицелом на будущее. На какое - пока не скажу.
Интересно мне было одно: такие решения кому-нибудь интересны или можно спокойно отправлять его в долгий ящик?
Ну и ваше решение я так понимаю тоже опирается на серверную часть, логично если оно будет основано на оригинальном клиенте (Electrum патчит bitcoin чтобы он принимал 'не свои' транзакции и использует ABE... но последний только потому что нужного функционала по анализу не своих транзакций попросту не было).

Пишите, не останавливайтесь, не бойтесь публиковать свои наработки. Любое развитие проекту bitcoin в целом - польза. Не нужно бояться эксперементировать, самое полезное останется, будет поглощено, использовано и улучшено.
sr. member
Activity: 868
Merit: 251
June 17, 2012, 07:03:11 AM
#13
Лучше развивать идеологию https://en.bitcoin.it/wiki/Thin_Client_Security например ее использует клиент https://en.bitcoin.it/wiki/Electrum питон, можно запустить под android
И если уж переделывать протокол под web-oriented то именно его.
Электрум всё равно опирается на сервер. И у него свой вариант RPC зачем-то. И опять питон...

Скажем так: я всё это замутил с некоторым прицелом на будущее. На какое - пока не скажу.
Интересно мне было одно: такие решения кому-нибудь интересны или можно спокойно отправлять его в долгий ящик?
legendary
Activity: 1120
Merit: 1069
June 17, 2012, 06:51:10 AM
#12
О монструозности.

Лучше развивать идеологию https://en.bitcoin.it/wiki/Thin_Client_Security например ее использует клиент https://en.bitcoin.it/wiki/Electrum питон, можно запустить под android
И если уж переделывать протокол под web-oriented то именно его.
sr. member
Activity: 868
Merit: 251
June 17, 2012, 06:11:41 AM
#11
Вот вебсервер на питоне и апач меня и напрягают...
а чем напрягают? В случае апача - обычный прокси. Питон не смотрел, но по смыслу тоже.
Монструозностью. В идеале всю эту конструкцию должен обслуживать маленький встроенный веб-сервер узлового ПО биткойна. Без всяких похапе, питонов и рерайтов.
Обычному человеку нужна небольшая софтинка, которая будет стоять у него дома и тихо шуршать в углу, а в магазин он пойдёт со смартфоном или планшетом. Ему не нужен апач и пляски с бубном вокруг него.
И специальную примочку для ведроида или айоса тоже ставить не надо в таком случае - сгодится стандартный браузер.
sr. member
Activity: 308
Merit: 250
June 17, 2012, 06:06:01 AM
#10
Радоваться этому https://en.bitcoin.it/wiki/Bitcoin-js-remote - A user interface for Bitcoin written in JavaScript.
Вместе с ним идет мини RPC-веб-сервер на питоне с поддержкой SSL
Так же предлагается документация по настройке RPC-прокси штатными средствами вебсервера Apache
Вот вебсервер на питоне и апач меня и напрягают...

а чем напрягают? В случае апача - обычный прокси. Питон не смотрел, но по смыслу тоже.
sr. member
Activity: 868
Merit: 251
June 17, 2012, 05:58:12 AM
#9
Что касается движков - я ничего не имею против берклеевского, когда речь идёт об одном небольшом сервере. Но этот движок весьма слабо масштабируется.
Как пример вашей неправоты - Steam использует BerkeleyDB и обрабатывает миллионы ACID-транзакций в день. Это ОЧЕНЬ быстрый движок, на самом деле, и не надо смотреть на то как он используется в bitcoin-клиенте. Это, скажем так, далеко не эталон.

Советую почитать Smiley
http://itc.ua/articles/nevidimka_berkeley_db_25938/
Я в курсе, что такое BDB, пользовался (причём как программист).
А вот в курсе ли вы, как организован этот самый steam, как реализована масштабируемость и балансировка нагрузки между серверами БД в этом проекте? На "голом" BDB этого явно не сделать, он только на обычных файлах работает. Следовательно, разработчики написали некий программный продукт поверх BDB, он-то и даёт все эти преимущества.
Фактически всё это похоже, например, на mongodb. Лёгкий nosql-движок "в фундаменте", а над ним - система распределения нагрузки и обработки транзакций. Я готов поверить, что разработчикам steam чем-то не угодил mongo, вот они и применили BDB с нахлобучкой для масштабирования. Верю, что нахлобучку эту они написали хорошо и красиво.
Но хочу обратить ваше внимание на то, что в биткойне BDB намертво впилен в код, и никакую нахлобучку для облегчения масштабирования над ним уже не напишешь. Без полной переборки кода биткойна, ессно...
Примерно с тем же успехом можно было использовать и sqlite, хотя я согласен, что BDB в этой "весовой категории" всё же быстрее.
sr. member
Activity: 868
Merit: 251
June 17, 2012, 05:47:02 AM
#8
Радоваться этому https://en.bitcoin.it/wiki/Bitcoin-js-remote - A user interface for Bitcoin written in JavaScript.
Вместе с ним идет мини RPC-веб-сервер на питоне с поддержкой SSL
Так же предлагается документация по настройке RPC-прокси штатными средствами вебсервера Apache
Вот вебсервер на питоне и апач меня и напрягают...
legendary
Activity: 1120
Merit: 1069
June 17, 2012, 05:41:23 AM
#7
p.s. Ничего не имею против утверждения о плохой работе текущего клиента...

Смотреть клиенты bitcoin тут https://en.bitcoin.it/wiki/Software

Радоваться этому https://en.bitcoin.it/wiki/Bitcoin-js-remote - A user interface for Bitcoin written in JavaScript.
Вместе с ним идет мини RPC-веб-сервер на питоне с поддержкой SSL
Так же предлагается документация по настройке RPC-прокси штатными средствами вебсервера Apache
legendary
Activity: 3108
Merit: 1359
June 17, 2012, 05:35:56 AM
#6
Что касается движков - я ничего не имею против берклеевского, когда речь идёт об одном небольшом сервере. Но этот движок весьма слабо масштабируется.
Как пример вашей неправоты - Steam использует BerkeleyDB и обрабатывает миллионы ACID-транзакций в день. Это ОЧЕНЬ быстрый движок, на самом деле, и не надо смотреть на то как он используется в bitcoin-клиенте. Это, скажем так, далеко не эталон.

Советую почитать Smiley
http://itc.ua/articles/nevidimka_berkeley_db_25938/
sr. member
Activity: 868
Merit: 251
June 17, 2012, 05:29:28 AM
#5
Я говорю о "персональных" мордах, а не общесетевых.

Что касается движков - я ничего не имею против берклеевского, когда речь идёт об одном небольшом сервере. Но этот движок весьма слабо масштабируется. Потому для крупных узлов хочется чего-нибудь sql-ного вроде mysql или даже nosql-ного вроде mongodb. Но без костылей (или полного рефакторинга кода) нынче этого не добиться.
Опять же - прямо таки напрашивается фича работы с сетью I2P. И написал бы, да встроить некуда - весь движок стандартного биткойна строго заточен под ipv4. Опять костыли, опять ручками туннели настраивать...
Почему я и говорю - проще с нуля сделать, с учётом всех найденных на данный момент граблей.
legendary
Activity: 3108
Merit: 1359
June 17, 2012, 05:18:32 AM
#4
Хорошо, назовём это RPC-мордой. В любом случае я пока не видел подобных морд.

Что касается узлового ПО биткойна - его вообще следовало бы полностью переработать. Отделить и абстрагировать всю криптографию, реализовать модульность для работы с различными движками хранения данных (не только BDB, но и sqlite, mysql, mongodb и т.п.), различными сетевыми движками (не только ipv4, но и i2p, ipv6 и т.д.), полностью отделить UI от криптографического ядра (и сделать его модульным) и т.п.
Тут, как в том старом анекдоте: всю систему менять надо.
У BlockChain есть клиент Bitcoin на JavaScript.

Насчет остального... Может оно и так, но сейчас реализован принцип разумной достаточности. Комьюнити разработчиков не очень большое, и так проще вылавливать баги. Хотя, конечно, то как TOR и прочее прикручивают костылями, это нехорошо. Ну а движки БД... Как ни странно, лучше BDB для подобных целей ничего не придумано.
sr. member
Activity: 868
Merit: 251
June 17, 2012, 05:07:54 AM
#3
Хорошо, назовём это RPC-мордой. В любом случае я пока не видел подобных морд.

Что касается узлового ПО биткойна - его вообще следовало бы полностью переработать. Отделить и абстрагировать всю криптографию, реализовать модульность для работы с различными движками хранения данных (не только BDB, но и sqlite, mysql, mongodb и т.п.), различными сетевыми движками (не только ipv4, но и i2p, ipv6 и т.д.), полностью отделить UI от криптографического ядра (и сделать его модульным) и т.п.
Тут, как в том старом анекдоте: всю систему менять надо.
legendary
Activity: 3108
Merit: 1359
June 17, 2012, 05:00:03 AM
#2
RPC-морда и клиент - это не одно и то же.  Roll Eyes

P.S. патчить RPC-сервер биткоина не некошерно, а наоборот, очень даже кошерно. Он давно застрял на уровне курсовой работы, ибо один блокируемый тред. Sad
sr. member
Activity: 868
Merit: 251
June 17, 2012, 04:42:01 AM
#1
Взрустнулось мне, решил потрясти стариной, покодить чуток.
Посмотрел на спецификацию RPC и подумал: почему бы не сделать клиент вообще на голом яваскрипте? Браузерный то есть.
В процессе исследования и набрасывания скелета примочки понял, что совсем уж голый сделать нельзя: мешает same origin policy в браузерах. Патчить bitcoin ради поддержки CORS мне показалось некошерным.
Выход нашёлся самый простой: прокси-скрипт, транслирующий HTTP в достаточном объёме на порт биткойновского RPC. Этот скриптик у меня написан на PHP, но вместо него можно использовать и другие средства (для встроенных веб-серверов и т.п. использование PHP опять же некошерно).
В результате нескольких часов исследования и кодинга у меня получилась заготовка для "тонкого" клиента на базе jquery. Пока что она может только принять логин и пароль да отобразить getinfo. Всё общение с биткойном осуществляет через стандартный RPC.
Таким образом, работоспособность концепта проверена.
Собственно, вопрос, кому-нибудь интересно превращение этой заготовки в полноценный "тонкий" клиент?
Pages:
Jump to: