Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
24 октября 2012, 6:30:09 PM   # 1
CJP
 
 
Сообщения: 210
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Мое предложение разделить клиента Сатоси на несколько небольших программных проектов. Должна быть обеспечена возможность запускать каждый компонент в виде отдельного исполняемого файла (и пусть компоненты связываются через RPC, например), но она также должна быть обеспечена возможность собрать их в статических или общих библиотек, которые могут быть объединены в единый исполняемый файл.

Я имел в виду следующие подразделения, но ядро ​​Bitcoin разработчики могли бы иметь лучшие идеи:
  • центр знаний: Это отслеживает известных операций и блоков, а также их статус
  • Обработчик протокола P2P: Обмен информацией между центром знаний и другими узлами в сети Интернет
  • Блок хранение цепи: Выполняет загрузку / хранение информации об операции в / из центра знаний
  • контрольник: Проверяет обоснованность операций и блоков, а также уведомляет центр знаний результата
  • шахтер: Создает новые блоки (получает транзакции от центра знаний и представляют блоки в него)
  • UI: Показывает информацию пользователя и позволяет пользователю выполнять действия.
  • Бумажник: магазины закрытых ключей и создает / признаки сделок по запросу UI

Это будет иметь ряд преимуществ:
  • Каждый отдельный компонент меньше, и, следовательно, его код легче понять, чем ее эквивалент в монолитном клиента. Это главным образом потому, что сам дроблении архитектура создает хороший обзор, и потому, что интерфейсы между компонентами (предполагается) хорошо документирована.
  • Производное от этого: это позволяет больше разработчиков к участию в разработке программного обеспечения. Он также может выступать в качестве ориентира для организационного подразделения, где развитие каждого компонента может иметь различное "ведущий разработчик",
  • Кроме того, полученные от того более понятного кода безопасности улучшится.
  • Безопасность также улучшится, потому что каждый модуль будет иметь только подмножество всех угроз для беспокойства. Торговцы более параноидально / крупнообъемные может улучшить безопасность за счет выполнения каждого компонента в виде отдельного процесса в специализированном контексте безопасности минимального привилегий.
  • Инновации в различных компонентах могут быть разработаны более или менее независимо друг от друга. Люди могут использовать раскрывающийся в замене одного компонента, сохраняя при этом других компонентах без изменений. Например, люди могут сделать компоненты пользовательского интерфейса с дополнительными функциями, или использовать компонент мозга бумажника вместо зашифрованного хранения на диске. Или можно заменить центр знаний с чем-то на основе услуг, таких как blockchain.info (или использовать менее радикальную идею для создания легкого клиента). Некоторые нововведения требуют изменений интерфейса между компонентами; чтобы позволить этому, я думаю, что интерфейсы должны быть расширяемым (по аналогии с OpenGL API)

Для повышения эффективности, я думаю, что может быть какой-то "общий код" между этими компонентами, например, определения классов с функциональными сериализации и код для принятия (RPC?) интерфейсов. Для того, чтобы не отменить преимущества дробя кодекс, "общий код" должно содержать как можно меньше функциональные возможности, как это возможно.
CJP сейчас офлайн Пожаловаться на CJP   Ответить с цитированием Мультицитирование сообщения от CJP Быстрый ответ на сообщение CJP


Как заработать Биткоины?
Без вложений. Не майнинг.


24 октября 2012, 8:02:58 PM   # 2
 
 
Сообщения: 1484
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Получил 1806 Биткоинов
Реальная история.





запросы Напряжения приветствовать на https://github.com/bitcoin/bitcoin/

jgarzik сейчас офлайн Пожаловаться на jgarzik   Ответить с цитированием Мультицитирование сообщения от jgarzik Быстрый ответ на сообщение jgarzik

24 октября 2012, 8:11:17 PM   # 3
 
 
Сообщения: 1246
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Как это собирается сделать клиент больше Efficience если что-то будет брать больше, вызывают каждую вещь независимо означает, что они должны говорить больше, и больше команд RPC должны быть разработаны решений, более интенсивным. Разделение это ужасно, это сделать его легче проскользнуть код там, что не следует использовать, потому что если у каждого есть там часть, то они на самом деле не будут беспокоить с другими частями.
gweedo сейчас офлайн Пожаловаться на gweedo   Ответить с цитированием Мультицитирование сообщения от gweedo Быстрый ответ на сообщение gweedo

24 октября 2012, 8:53:10 PM   # 4
 
 
Сообщения: 952
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Я определенно думаю, что это будущее для Bitcoin. Трудность, однако, не придумывает, но на самом деле это imlementing. Это огромный задача. Не поймите меня неправильно, предложения приветствуются, но дефицитный ресурс в этих форумах не идеи, это труд (кодирование).

Как отмечает gweedo, расщепляющие вещи вверх, как это, вероятно, не собирается делать ничего проще. Получение интерфейсов право является твердая часть, и в течение длительного периода интерфейсы не могут даже полагаться, потому что мы не можем остановиться на определенном интерфейсе, так как мы, возможно, потребуется добавить дополнительные функции к этому интерфейсу, или иным образом изменить его форма, как мы узнаем больше о том, как хорошо этот интерфейс работает для того, что мы будем использовать его для.

Это восходит к старому монолитное ядро ​​против микроядра аргумента, который в основном сводится к: да, отделяя каждую функцию в отдельный модуль, действительно имеет много преимуществ, но главным недостатком является увеличение объема работ, которые отвлекают сильно от преимущества. Так много, на самом деле, что вы на самом деле не видите какие-либо успешные операционные систем чистых микроядерных (разработано в качестве микроядра от земли вверх) там сегодня. OS'es медленно двигается в этом направлении, с его различными функциями постепенно становятся все более отделенными. Bitcoin, конечно, намного меньше кода, чем ОС, но те же самые принципы применимы.

Я думаю, что это изменение будет происходить естественно, как больше разработчиков начинают работать над кодом, не наоборот.
runeks сейчас офлайн Пожаловаться на runeks   Ответить с цитированием Мультицитирование сообщения от runeks Быстрый ответ на сообщение runeks

25 октября 2012, 6:44:55 AM   # 5
CJP
 
 
Сообщения: 210
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

запросы Напряжения приветствовать на https://github.com/bitcoin/bitcoin/

Я мог бы просто сделать это. Так что это в моем списке TODO:
  • Узнайте, как использовать Git и Github
  • Узнайте, как работает источник тока RPC код и как bitcoind и Bitcoin-кварты составляются из одного исходного дерева
  • Сделайте общие рамки для модулей, которые имеют расширяемые интерфейсы, а также может быть связана как библиотеки или использовать RPC (время компиляции выбора)
  • Преобразование bitcoind стать модулем в этих рамках
  • Преобразование QT GUI использовать эту структуру, и построить Bitcoin-кварты, связывая bitcoind и модули QT GUI (не используя RPC). С этим моментом, изменения не нарушают функции, и могут быть втянуты в основную ветку.
  • Сделать отдельный модуль бумажника (самый срочное дробление ИМО), и пусть модуль QT GUI использовать его (отправку сырья сделок с модулем bitcoind)
  • Делать "уровень совместимости" интерфейс RPC, который может выступать в качестве капель в замене старого bitcoind исполняемого файла, но использует отделенный модуль бумажника внутренне. Это может быть использовано, например, в веб-сервисов, которые построены на старом bitcoind RPC.
  • Удалить функцию бумажника из "bitcoind" модуль

Я думаю, что до тех пор, как вы просто использовать функции библиотеки вызовов вместо RPC, то дробление не будет существенно снизить производительность.

На данный момент, я только начал нить, чтобы получить представление о (разработчик) сообщества мнений по этому вопросу, прежде чем я кладу много работы в этом. Теперь, когда мнения кажутся умеренно позитивными, я просто начать, и посмотреть, как далеко я получаю. Я буду держать вас в курсе.

С такой новой структуры, я думаю, что нужно предложить много изменений сразу, для того, чтобы заставить его работать. Будет ли такой запрос большой тяги принимаются от новичка в группе, как я?
CJP сейчас офлайн Пожаловаться на CJP   Ответить с цитированием Мультицитирование сообщения от CJP Быстрый ответ на сообщение CJP

25 октября 2012, 8:20:20 AM   # 6
 
 
Сообщения: 1512
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Вы должны определить эту проблему в первую очередь. Тогда искать решение. Если только вирусописатели имели bitcoin.dll использовать?

Кто же это выгодно? Конечные пользователи? Веб-продавцы? Майнинг? Разработчики? Что не может bitcoind сделать прямо сейчас, что требует повторного делать четыре года программирования?

Я думаю, что было бы лучше, проект был бы вытащить некоторые из библиотек, таких как OpenSSL, LevelDB или Qt, так что они могут быть независимо построены или использование проекта распределенных бинарных файлов для отслеживания изменений версии или исправления безопасности более легко, или использовать библиотеки которые уже включены в некоторых дистрибутивах ОС вместо бок о бок разделяемый объект устанавливает.
deepceleron сейчас офлайн Пожаловаться на deepceleron   Ответить с цитированием Мультицитирование сообщения от deepceleron Быстрый ответ на сообщение deepceleron

25 октября 2012, 9:28:31 AM   # 7
 
 
Сообщения: 1568
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Я думаю, что это абсолютно бессмысленно. Клиент Satoshi достаточно хорошо, как она есть.
б! г сейчас офлайн Пожаловаться на б! Г   Ответить с цитированием Мультицитирование Сообщения от б! Г Быстрый ответ на сообщение б! Г

25 октября 2012, 2:49:27 PM   # 8
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Что не может bitcoind сделать прямо сейчас, что требует повторного делать четыре года программирования?
Bitcoin клиент Satoshi не может участвовать в операции в соответствии с требованиями любого серьезным финансовым программным обеспечением, например. CICS, Tuxedo, Microsoft Координатор распределенных транзакций и т.д. Кроме того, bitcoind требует существенной модификации для интеграции с любым GAAP совместимого бухгалтерского программным обеспечения и ACID-совместимыми базами данных.

Я бы не назвал это "повторно делать", Больше похож на обширном "рефакторинг" или "изменения архитектуры",

Но, основываясь на моем более года участия на этом форуме я очень скептически. Я не видел никого, предлагающий новую архитектуру для "бумажник" класс / модуль / клиент, который будет правильно обрабатывать асинхронный характер P2P интерфейса при отправке исходящих транзакций. При изменении blockchain под бумажником различных реализаций, которые я видел либо тупиковые, miscompute сборов или не в очень сложных способах, требующих ручное изменение впоследствии.

Худший вид отказа является отсутствие идемпотентности, которое вызывает повторяющиеся платежи делаются. И в Bitcoin платежи не являются обратимыми конструкцией.

Рискну предположить, что Нефарио является самой последней жертвой этой последней проблемы.
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

25 октября 2012, 3:23:47 PM   # 9
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Я согласен с сутью этого предложения.

Да, это было бы сделать вещи более сложными в целом. Но это также сделает все, что более мощным.

Вот немедленные очевидные преимущества я хотел бы видеть от этого:

1. Способность людей или компаний, чтобы обеспечить целые замены для подсистем bitcoind. Например, прямо сейчас база данных блока находится в плоском файл и индексируются таким образом, что делает его непрактичным для запроса. Но кто-то может прийти и обеспечить замену нового, который использует полномасштабную СУБД в качестве бэк-энда, позволяя другие услуги (например, веб-сайты или корпоративные рабочими станции) для взаимодействия с bitcoind вставив записи базы данных в рабочую очередь, и может запросить информацию о сделках с ним. Это может быть сфальсифицировано так несколько экземпляров bitcoind может работать с теми же самой базы данных, и использовать соответствующую блокировку записей, чтобы они не дублировали работу или шага друг на друг. Это добавит устойчивости, поскольку СУБД программное обеспечение является более зрелым и предлагает больше возможностей для масштабируемости и высокой доступности, и если узлы, работающие bitcoind стать неработоспособным, все еще работает до тех пор, по крайней мере, один узел по-прежнему хорошо. Это добавило бы совместимость, потому что гораздо больше платформ разработки они готовы говорить с работающей базой данных, чем запущенный экземпляр bitcoind. Это добавило бы гибкость, потому что люди могут строить свои собственные индексы на то, что им необходимо, не дожидаясь кого-то, чтобы закодировать его в bitcoind. Самое главное, это будет вариант - так тех, кто просто хочет запустить настольную версию клиента можно просто запустить регулярные базы данных плоско-файл, чтобы они не обременены огромными зависимостями.

2. Возможность повторного использования компонентов, как разработчик, не беспокоясь, что вы откусить больше, вы можете жевать. Если вы хотите построить клиент Bitcoin, но не имеют стремления заменить код P2P связи, вы можете отказаться от существующей реализации и быть сделано. Кроме того, так как этот код, мы надеюсь, монолитный блок, а не то, что вы хирургически рваными из исходного кода Bitcoin, вы будете иметь гораздо легче трудоёмкий и реализующее обновление этого код.

3. Возможность принизить "wallet.dat", История транзакций и "Счета" функция из bitcoind, а также освободить определение понятия "бумажник" файл как файл любого определенного типа. Для меня, бумажник, находясь в bitcoind как неуместны в качестве поддержки "отправка форматированный текст по электронной почте с смайликов" в демона SMTP-сервера. Она принадлежит в качестве дополнительной функции для подсистемы управления GUI / кошелек (тот, который идеально может открывать и закрывать бумажники по желанию, вроде того, как Microsoft Word может открывать и закрывать .docx файлы по желанию).

Я вижу несколько других преимуществ, но они уже были перечислены в некоторой степени.
casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

25 октября 2012, 6:07:47 PM   # 10
CJP
 
 
Сообщения: 210
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Но, основываясь на моем более года участия на этом форуме я очень скептически. Я не видел никого, предлагающий новую архитектуру для "бумажник" класс / модуль / клиент, который будет правильно обрабатывать асинхронный характер P2P интерфейса при отправке исходящих транзакций. При изменении blockchain под бумажником различных реализаций, которые я видел либо тупиковые, miscompute сборов или не в очень сложных способах, требующих ручное изменение впоследствии.

Худший вид отказа является отсутствие идемпотентности, которое вызывает повторяющиеся платежи делаются. И в Bitcoin платежи не являются обратимыми конструкцией.

Рискну предположить, что Нефарио является самой последней жертвой этой последней проблемы.

Можете ли вы указать мне на некоторые ресурсы, которые демонстрируют это (например, темы на форуме)? Так как я мог бы работать на модуле бумажника, это может иметь отношение ко мне. Обратите внимание, что, в то время как я разработал (простое, мелкосерийный) финансовое программное обеспечение в прошлом, и я в настоящее время профессиональный разработчик программного обеспечения, я никогда профессионально разработанный финансовое программное обеспечения. Хотя такие понятия, как ACID мне знакомы, я не мог понять все сразу, особенно в области бухгалтерского учета-на-официального-пути.

Как я вижу это, модуль бумажника действует только в качестве хранилища закрытых ключей, а также признаки сделок от имени своего пользователя (как правило, модуль пользовательского интерфейса). Он ТБД, является ли бумажник модуль, создает то чтобы быть подписаны сделки.

Баланс пользователя определяется путем запроса открытых ключей от модуля бумажника, а затем запрашивает информацию о транзакциях об этих ключах от центра знаний модуля. Я думаю, что пользователь имеет два баланса:
  • Основываясь только на подтвержденных сделок
  • На основе обоих подтвержденных и неподтвержденных операций (это становится сложнее, если есть как входящие, так и исходящие неподтвержденные транзакции)
Это может быть лучше, чтобы сделать этот расчет в центре знаний модуля: до сих пор мое понятие модуля бумажника еще не имеет интерфейса для извлечения данных из модуля центра знаний, и положить его в модуле пользовательского интерфейса будет означать дублирования (возможно, сложен) расчет в различные реализации модуля пользовательского интерфейса.

Я не вижу, как транзакция может быть случайно выполнена дважды. Единственная потенциальная проблема, которую я вижу, что между публикацией сделки и с его подтвердили, фиксация состояния сделки "неизвестный"И в связи с децентрализованным характером Bitcoin, нет никакой власти, который отвечает за принятие решений окончательного обязательства государства. Теоретически транзакция может остаться "неизвестный" на неопределенный срок, и если шахтеры начинают требовать высоких гонораров в будущем, это на самом деле вероятный сценарий для низких платных операций. Вы можете увеличить вероятность фиксации пути повторной сделку с более высокой платой (убедившись, что они проводят одни и те же выходные, поэтому они никогда не будут и приверженны); Вы даже можете попробовать раскатать неподтвержденную транзакцию, что путь, по повторному его к себе.
CJP сейчас офлайн Пожаловаться на CJP   Ответить с цитированием Мультицитирование сообщения от CJP Быстрый ответ на сообщение CJP

25 октября 2012, 6:44:44 PM   # 11
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Но, основываясь на моем более года участия на этом форуме я очень скептически. Я не видел никого, предлагающий новую архитектуру для "бумажник" класс / модуль / клиент, который будет правильно обрабатывать асинхронный характер P2P интерфейса при отправке исходящих транзакций. При изменении blockchain под бумажником различных реализаций, которые я видел либо тупиковые, miscompute сборов или не в очень сложных способах, требующих ручное изменение впоследствии.

Худший вид отказа является отсутствие идемпотентности, которое вызывает повторяющиеся платежи делаются. И в Bitcoin платежи не являются обратимыми конструкцией.

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

Он должен быть в состоянии получить, просто потребляя поток, содержащее уведомление о следующем:

* Новая транзакция (кошелек), может быть заинтересована в прибыли. Вот.
* Сделка вы заинтересованы в оказало изменение статуса подтверждения (где подтверждение статусы включают "неподтвержденный", "X подтверждение", а также "аннулированных") И / или провести статус ("подтвердил, потраченный", "неподтвержденные излете", "Считается, неизрасходованные").

Кошелек не нужно слушать уведомлений, если он может просто запросить обновление по всей этой информации, когда это необходимо.

casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

25 октября 2012, 9:13:58 PM   # 12
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

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

Он должен быть в состоянии получить, просто потребляя поток, содержащее уведомление о следующем:

* Новая транзакция (кошелек), может быть заинтересована в прибыли. Вот.
* Сделка вы заинтересованы в оказало изменение статуса подтверждения (где подтверждение статусы включают "неподтвержденный", "X подтверждение", а также "аннулированных") И / или провести статус ("подтвердил, потраченный", "неподтвержденные излете", "Считается, неизрасходованные").

Кошелек не нужно слушать уведомлений, если он может просто запросить обновление по всей этой информации, когда это необходимо.


Правильная обработка асинхронности является необходимым требованием для транзакционна правильной и эффективной реализации Bitcoin. Это было подогреты подробно в Slush'es "слой" нить. Пласт, по существу, попытка реализовать RPC-подобный протокол разделения Валета клиента от сети p2p + blockchain сервера хранения.



Вы можете попытаться подделать асинхронности частого опроса (вы назвали его "запрос на обновление") Или хаки, как длительный опрос. Но это не является масштабируемым решением, и в конечном счете, это также не будет, просто по-другому, чем типичные проклято-The-ACID писак.
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

25 октября 2012, 9:45:03 PM   # 13
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Можете ли вы указать мне на некоторые ресурсы, которые демонстрируют это (например, темы на форуме)?
Для одного примера трудной для решения задачи поиска совета по фразе "инверсия контроля", Вы также можете увидеть для себя опытным путем сравнения "Bitcoin-кварта -server" а также "bitcoind" вести себя при отправке монет через RPC с платой требуется.

Я не вижу, как транзакция может быть случайно выполнена дважды.
Рассмотрим следующее (неправильное) попытка реализовать http://en.wikipedia.org/wiki/Two-phase_commit_protocol
между сервером SQL и bitcoind демона:

1) начать транзакцию
2) Выберите количество и адрес назначения
3) вызов "sendtoaddress" bitcoind с помощью RPC
4) если в порядке, то ОБНОВЛЕНИЕ сальдо счетов и COMMIT TRANSACTION
5) если не в порядке, то ROLLBACK TRANSACTION

Теперь рассмотрим, что bitcoind был действительно сложный кошелек, содержащий Mutiple тысячи неизрасходованных монет, а также резервного копирования был запущен на диске cointaining каталог .bitcoin. Вызов RPC тайм-аут. Чем вы сейчас занимаетесь? Как исправить эту проблему?

Хотя такие понятия, как ACID мне знакомы, я не мог понять все сразу, особенно в области бухгалтерского учета-на-официального-пути.
Если у вас нет аллергии на Windows, самый простой способ узнать, как правильно выполнять распределенные транзакции есть с Microsoft Office. Просто создать макрос Excel, который вызывает обновление в отдельной базе данных под управлением доступом, в то время как Access работают некоторые повторяющиеся обновления на своем собственном. Это может быть сделано, чтобы работать правильно, насколько Windows 95 OSR2 и Office 97 с помощью MS DTC. Очевидно, что новая версия продукта Microsoft тоже будет работать.
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

25 октября 2012, 10:03:23 PM   # 14
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Вы можете попытаться подделать асинхронности частого опроса (вы назвали его "запрос на обновление") Или хаки, как длительный опрос. Но это не является масштабируемым решением, и в конечном счете, это также не будет, просто по-другому, чем типичные проклято-The-ACID писак.

Что Прецедент вы представляете себе это быть проблема? Я на самом деле предложил два способа потребляющих данные (назовем их А и В), и вы в основном сказали (или я понял), "Нет, B не будет работать, вы на самом деле нужно использовать", Это может быть правдой, если приложение представляет собой графический интерфейс, который пользователь может смотреть на для входящего платежа. Но B является другим инструментом для другой задачи, не ленивый способом "делать вид" сделать A.

Если я модуль бумажник, который обрабатывает заказы от имени веб-магазина, расположение оплаты сразу не полезно, пока я не готов к отправке их заказ. Если бы я сделать запрос на мой "центр знаний" чтобы увидеть, если платеж 3 часа назад продолжает получать подтверждения 5 минут, прежде чем я собирался напечатать этикетку и отправить продукт, это асинхронное уведомление действительно необходимо?

Во-первых, прежде чем заключить, что решение неприступный, проблема должна быть определена. Вы и я, и другие могут законно иметь другое представление о том, что проблема в том, что является частью того, почему решение, части которого можно заменить бы столь ценным.
casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

25 октября 2012, 10:08:00 PM   # 15
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi


1) начать транзакцию
2) Выберите количество и адрес назначения
3) вызов "sendtoaddress" bitcoind с помощью RPC
4) если в порядке, то ОБНОВЛЕНИЕ сальдо счетов и COMMIT TRANSACTION
5) если не в порядке, то ROLLBACK TRANSACTION

Теперь рассмотрим, что bitcoind был действительно сложный кошелек, содержащий Mutiple тысячи неизрасходованных монет, а также резервного копирования был запущен на диске cointaining каталог .bitcoin. Вызов RPC тайм-аут. Чем вы сейчас занимаетесь? Как исправить эту проблему?

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

1) начала транзакции
2) выберите неизрасходованный txids для некоторых или всех ключей я, помириться с моей локальной памятью, чтобы убедиться, что я не потратил их
3) произвести транзакцию, затрачиваемое txids (я модуль бумажника), и обновить локальное хранилище, чтобы отразить, что эти txids делаются попытки, провести
4) сохранить сделку где-то в случае, если я потом определяют мне не удалось получить его в сети
5) попытка послать транзакцию к сети (если я говорю с СУБД, возможно, принимает форму вставки моей транзакции в очередь работ, которые будут пересылаться на bitcoind где-то еще)
6) при отказе, сохраненная запись доступна для меня, чтобы попробовать еще раз на моем следующем запуске
casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

25 октября 2012, 10:50:56 PM   # 16
 
 
Сообщения: 283
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Я от всей души согласен с духом этого предложения, и может начать выяснять, процесс сборки, чтобы нырнуть в существующий исходный код, чтобы понять вещи лучше.

-КУП
BoardGameCoin сейчас офлайн Пожаловаться на BoardGameCoin   Ответить с цитированием Мультицитирование сообщения от BoardGameCoin Быстрый ответ на сообщение BoardGameCoin

25 октября 2012, 11:20:19 PM   # 17
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Если я модуль бумажник, который обрабатывает заказы от имени веб-магазина, расположение оплаты сразу не полезно, пока я не готов к отправке их заказ. Если бы я сделать запрос на мой "центр знаний" чтобы увидеть, если платеж 3 часа назад продолжает получать подтверждения 5 минут, прежде чем я собирался напечатать этикетку и отправить продукт, это асинхронное уведомление действительно необходимо?

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

Я родом из академического фона и как студент моей школа замучила нас на ближайшие устаревших мэйнфреймы с CISC, ACP& PL / I пропитать нас знанием о том, как избежать изобретать колеса.

"проблема" Вы пишете о хорошо определена, так как около 1970-1980 и называется http://en.wikipedia.org/wiki/Online_transaction_processing или http://en.wikipedia.org/wiki/Transaction_processing .

У меня нет евангельского согнуты. Любой может свободно торговать вразнос свои товары здесь. Я просто назвать его так, как я это вижу: золотые фольги завернутого какашка. Мы могли бы идти вперед и назад, как он пошел в Stratum нити. Но теперь я понимаю, что люди здесь должны потерять свои деньги, чтобы научиться чему-то.
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

25 октября 2012, 11:25:56 PM   # 18
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Да, и кстати: вот очень хороший пост от DeathAndTaxes в том же ключе, как исходное сообщение в этой теме:



Он идет от большого фона предприятия, он видел транзакционной обработки делается на программное обеспечение Microsoft. Он просто не архитектор программного обеспечения, но больше менеджер центра обработки данных операций.
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

27 октября 2012, 2:57:00 PM   # 19
CJP
 
 
Сообщения: 210
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

Рассмотрим следующее (неправильное) попытка реализовать http://en.wikipedia.org/wiki/Two-phase_commit_protocol
между сервером SQL и bitcoind демона:

1) начать транзакцию
2) Выберите количество и адрес назначения
3) вызов "sendtoaddress" bitcoind с помощью RPC
4) если в порядке, то ОБНОВЛЕНИЕ сальдо счетов и COMMIT TRANSACTION
5) если не в порядке, то ROLLBACK TRANSACTION

Теперь рассмотрим, что bitcoind был действительно сложный кошелек, содержащий Mutiple тысячи неизрасходованных монет, а также резервного копирования был запущен на диске cointaining каталог .bitcoin. Вызов RPC тайм-аут. Чем вы сейчас занимаетесь? Как исправить эту проблему?

Я прочитал страницу 2PC Википедии вы упомянули, вы хотите "сервер SQL" и "bitcoind демон" выступать в качестве "когорты" в протоколе. В этом случае, "bitcoind демон" должен действовать следующим образом:
  • Когда "запрос на совершение" получено, выбрать достаточное количество разблокирована подтвердил, неизрасходованные выходы транзакций для транзакции, и зафиксировать их (так что они не используются другими транзакциями). Если это не удается (недостаточно разблокированные подтвержденных неизрасходованные ТХ выходов), ответить "NOK", Иначе ответ "ОК",
  • Когда "совершить" получен, проводят заблокированные ТЕ выходы.
  • Когда "отмена" получен, разблокировать заблокированные ТЕ выходы.

Теперь, как всегда, дьявол кроется в деталях. Вот некоторые я подумал:
  • Двухфазная фиксация протокол не имеет тайм-аута. Когда один компонент не удается отправить "ОК" или "NOK" на первом этапе, все ресурсы будут заблокированы до тех пор, пока проблема не будет решена, например, перезапуск разбившихся служб.
  • После устранения неисправности, все операции в незавершенном должны быть закончены. Это может потребоваться для повторной передачи информации, но это Resending не должен приводить к транзакции дважды происходит. Этого можно избежать, например, давая каждой транзакции уникальный идентификатор.
  • Если выясняется, на втором этапе, что плата за сделку (выбирается в первой фазе) является слишком низкой, то потребуются дополнительный Bitcoins увеличить плату, но это не гарантированно доступны. Это проблема, потому что во второй фазе, сделка уже должна быть совершена. Чтобы избежать этого, достаточное количество должно быть заблокировано в первой фазе, учитывать максимально возможную плату необходимо. Если требуемая плата ниже, чем максимум, остальные всегда могут быть отправлены обратно к себе.

Я думаю, что это может быть построено на вершине любого bitcoind (включая существующую, не меняя ничего bitcoind себя), пока реализация этого протокола является единственным процессом, который использует этот bitcoind. Хотя это звучит как полезные пока еще не реализованы функциональные возможности, я не думаю, что это необходимо задействовать эту функцию в определениях модулей в данный момент.
CJP сейчас офлайн Пожаловаться на CJP   Ответить с цитированием Мультицитирование сообщения от CJP Быстрый ответ на сообщение CJP

28 октября 2012, 11:20:29 AM   # 20
 
 
Сообщения: 1470
Цитировать по имени
цитировать ответ
по умолчанию Re: Нам нужно разделить клиент Satoshi

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

Столлман пытался что-то подобное, что называется "микроядро архитектура" с GNU Hurd, и посмотреть, как это закончилось. Линус Торвальдс пошел другой путь, и разработаны монолитное ядро ​​с подключаемыми модулями вместо. И посмотрите, как он работал: Linux является самой популярной, самой передовой и самой scallable операционной системы на планете, и используется в настоящее время почти повсеместно, за исключением того, на рабочем столе.

В теории, микроядро архитектура с отдельными независимыми слоями / модулями для каждой функции системы очень аккуратная концепция, но на практике она производит невероятное количество связи, задержка и совместимость проблем.

Существует урок истории, который следует извлечь из этого: "Держать его просто глупо!"
ShadowOfHarbringer сейчас офлайн Пожаловаться на ShadowOfHarbringer   Ответить с цитированием Мультицитирование сообщения от ShadowOfHarbringer Быстрый ответ на сообщение ShadowOfHarbringer



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW