13 февраля 2011, 8:44:30 AM   # 1
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Зачем:
В настоящее время это трудно для GUI обертки bitcoind с помощью RPC-сервер, чтобы определить, когда Bitcoin работает, но до сих пор инициализируется. Это стремится решить это.

Что оно делает:
- Перемещение RPC запуск сервера самого начала.
- Добавление IsInitialized метод.

Изменения, внесенные в Bitcoin / Bitcoin из GitHub

http://pastebin.com/LYtBRXgk

Код:
дифференциал --git а / init.cpp б / init.cpp
Индекс 04bdd68..52cf7a1 100644
--- а / init.cpp
+++ б / init.cpp
@@ -115,6 +115,7 @@ BOOL AppInit (интермедиат ARGC, символ * ARGV [])
     } поймать (...) {
         PrintException (NULL, "AppInit ()");
     }
+    fInitializationCompleted = TRUE;
     если (! ладу)
         Выключение (NULL);
     вернуться ладу;
@@ -122,6 +123,9 @@ BOOL AppInit (интермедиат ARGC, символ * ARGV [])
 
 BOOL AppInit2 (интермедиат ARGC, символ * ARGV [])
 {
+    если (GetBoolArg ("-server") || fDaemon)
+        CreateThread (ThreadRPCServer, NULL);
+
 #ifdef _MSC_VER
     // Отключить Microsoft дамп кучи шума
     _CrtSetReportMode (_CRT_WARN, _CRTDBG_MODE_FILE);
@@ -443,9 +447,6 @@ BOOL AppInit2 (интермедиат ARGC, символ * ARGV [])
     если (! CreateThread (StartNode, NULL))
         wxMessageBox ("Ошибка: CreateThread (StartNode) не", "Bitcoin");
 
-    если (GetBoolArg ("-server") || fDaemon)
-        CreateThread (ThreadRPCServer, NULL);
-
 #if определен (__ WXMSW__) && определен (GUI),
     если (fFirstRun)
         SetStartOnSystemStartup (истина);
дифференциал --git а / rpc.cpp б / rpc.cpp
Индекс 69b09bc..72fc9a8 100644
--- а / rpc.cpp
+++ б / rpc.cpp
@@ -28,6 +28,8 @@ ThreadRPCServer2 недействительными (недействительными * PARG);
 ЬурейеЕ значение (* rpcfn_type) (Const массива& PARAMS, BOOL fHelp);
 ехЬегп карта<Строка, rpcfn_type> mapCallTable;
 
+BOOL fInitializationCompleted = ложь;
+
 
 Объект JSONRPCError (INT код, Const строка& сообщение)
 {
@@ -146,7 +148,6 @@ Value помощь (Const массива& PARAMS, BOOL fHelp)
     вернуться strRet;
 }
 
-
 Значение остановки (Const массива& PARAMS, BOOL fHelp)
 {
     если (fHelp || params.size ()! = 0)
@@ -277,18 +278,22 @@ Value GetInfo (Const массива& PARAMS, BOOL fHelp)
 
     Объект OBJ;
     obj.push_back (пара ("версия", (INT) версия));
-    obj.push_back (пара ("баланс", (Двойной) GetBalance () / (двойной) МОНЕТА));
-    obj.push_back (пара ("блоки", (INT) nBestHeight));
-    obj.push_back (пара ("связи", (INT) vNodes.size ()));
-    obj.push_back (пара ("полномочие"(FUseProxy addrProxy.ToStringIPPort (): строка ())));
-    obj.push_back (пара ("генерировать", (BOOL) fGenerateBitcoins));
-    obj.push_back (пара ("genproclimit", (INT) (fLimitProcessors nLimitProcessors:? -1)));
-    obj.push_back (пара ("трудность", (Дважды) GetDifficulty ()));
-    obj.push_back (пара ("hashespersec", Gethashespersec (PARAMS, ложные)));
-    obj.push_back (пара ("testnet", FTestNet));
-    obj.push_back (пара ("keypoololdest"(Повышение :: int64_t) GetOldestKeyPoolTime ()));
-    obj.push_back (пара ("paytxfee", (Двойной) nTransactionFee / (двойной) МОНЕТА));
-    obj.push_back (пара ("ошибки", GetWarnings ("статус бар")));
+    obj.push_back (пара ("IsInitialized", (BOOL) fInitializationCompleted));
+    если (fInitializationCompleted)
+    {
+        obj.push_back (пара ("баланс", (Двойной) GetBalance () / (двойной) МОНЕТА));
+        obj.push_back (пара ("блоки", (INT) nBestHeight));
+        obj.push_back (пара ("связи", (INT) vNodes.size ()));
+        obj.push_back (пара ("полномочие"(FUseProxy addrProxy.ToStringIPPort (): строка ())));
+        obj.push_back (пара ("генерировать", (BOOL) fGenerateBitcoins));
+        obj.push_back (пара ("genproclimit", (INT) (fLimitProcessors nLimitProcessors:? -1)));
+        obj.push_back (пара ("трудность", (Дважды) GetDifficulty ()));
+        obj.push_back (пара ("hashespersec", Gethashespersec (PARAMS, ложные)));
+        obj.push_back (пара ("testnet", FTestNet));
+        obj.push_back (пара ("keypoololdest"(Повышение :: int64_t) GetOldestKeyPoolTime ()));
+        obj.push_back (пара ("paytxfee", (Двойной) nTransactionFee / (двойной) МОНЕТА));
+        obj.push_back (пара ("ошибки", GetWarnings ("статус бар")));
+    }
     вернуться OBJ;
 }
 
@@ -1806,6 +1811,8 @@ аннулируются ThreadRPCServer2 (недействительными * PARG)
             если (valMethod.type ()! = str_type)
                 бросить JSONRPCError (-32600, "Метод должен быть строкой");
             Строка strMethod = valMethod.get_str ();
+            если (! fInitializationCompleted && strMethod! = "Помогите" && strMethod! = "получить данные")
+                бросить JSONRPCError (-42000, "Тем не менее инициализация");
             если (strMethod! = "getwork")
                 Е ("ThreadRPCServer метод =% s \ п", StrMethod.c_str ());
 
дифференциал --git а / rpc.h б / rpc.h
Индекс 48a7b8a..85c3ef3 100644
--- а / rpc.h
+++ б / rpc.h
@@ -4,3 +4,4 @@
 
 аннулированию ThreadRPCServer (недействительный * PARG);
 INT CommandLineRPC (интермедиат ARGC, символ * ARGV []);
+ехЬегп BOOL fInitializationCompleted;

PS плз добавить .patch разрешенным вложения
PSS загрузки папка заполнена! я не могу загрузить патч-файл.
genjix сейчас офлайн Пожаловаться на genjix   Ответить с цитированием Мультицитирование сообщения от genjix Быстрый ответ на сообщение genjix


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


13 февраля 2011, 8:55:36 AM   # 2
 
 
Сообщения: 1484
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

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





Зачем:
В настоящее время это трудно для GUI обертки bitcoind с помощью RPC-сервер, чтобы определить, когда Bitcoin работает, но до сих пор инициализируется. Это стремится решить это.

Или вы могли бы просто вывести то же самое от GetInfo годов "блоки" а также "связи" вывод...

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

13 февраля 2011, 6:58:08 PM   # 3
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

Зачем:
В настоящее время это трудно для GUI обертки bitcoind с помощью RPC-сервер, чтобы определить, когда Bitcoin работает, но до сих пор инициализируется. Это стремится решить это.

Или вы могли бы просто вывести то же самое от GetInfo годов "блоки" а также "связи" вывод...



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

13 февраля 2011, 8:15:34 PM   # 4
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

Я обновил OP с новой версией патча, который добавляет сообщение об ошибке.

http://pastebin.com/W41J5K0M

в несколько секунд до того, как сервер RPC начал и Bitcoin работает, мне нужно знать, Bitcoin работает, но не инициализируется ...
Поэтому я поставил сервер RPC в самом начале и добавить isinitialised (все другие методы, кроме Rpc помощи / IsInitialized будет посылать сообщение об ошибке, когда IsInitialized ложно)
genjix сейчас офлайн Пожаловаться на genjix   Ответить с цитированием Мультицитирование сообщения от genjix Быстрый ответ на сообщение genjix

13 февраля 2011, 11:04:20 PM   # 5
 
 
Сообщения: 1484
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

Зачем:
В настоящее время это трудно для GUI обертки bitcoind с помощью RPC-сервер, чтобы определить, когда Bitcoin работает, но до сих пор инициализируется. Это стремится решить это.

Или вы могли бы просто вывести то же самое от GetInfo годов "блоки" а также "связи" вывод...



Я не имею в виду загрузки блока цепи, или найти соединение, я имею в виду завершения AppInit (...)

Завершение AppInit сигнализируется наличием сервиса RPC - поэтому JSON-RPC инициализируется последним в AppInit.
jgarzik сейчас офлайн Пожаловаться на jgarzik   Ответить с цитированием Мультицитирование сообщения от jgarzik Быстрый ответ на сообщение jgarzik

14 февраля 2011, 1:36:35 AM   # 6
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

Право, но вы не знаете, является ли bitcoind работает или нет.

Вы можете запустить его, но тогда вы не знаете, если он разбился. Проверка PID-ненадежна тоже.

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

14 февраля 2011, 3:59:25 AM   # 7
 
 
Сообщения: 1484
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

Право, но вы не знаете, является ли bitcoind работает или нет.

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

14 февраля 2011, 7:00:02 AM   # 8
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

Право, но вы не знаете, является ли bitcoind работает или нет.

Вы можете найти его в списке процессов ОС.

Как сказал ... это ненадежный / нежелательно.
genjix сейчас офлайн Пожаловаться на genjix   Ответить с цитированием Мультицитирование сообщения от genjix Быстрый ответ на сообщение genjix

15 февраля 2011, 2:42:24 AM   # 9
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: [PATCH] IsInitialized метод RPC

обновленный ОП в соответствии с предложениями Гэвин Андресен на IRC.
genjix сейчас офлайн Пожаловаться на genjix   Ответить с цитированием Мультицитирование сообщения от genjix Быстрый ответ на сообщение genjix



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW