Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
25 апреля 2014, 4:47:07 AM   # 1
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Очень немногие программы, которые там, которые используют интерфейс RPC Bitcoin, чтобы отправить огромные суммы денег. Насколько я могу судить, это включает размещение объекта JSON над HTTP для Bitcoind и получение JSON в ответ. Проблема, которую я заметил, это связано с тем, что мы используем двойной точности формат с плавающей запятой в формате JSON (и также плавает в клиенте) вместо кодирующего числа в виде строки или в 64-битное целое, как Bitcoin делает.

Например, предположим, что я хочу, чтобы отправить 0.00002 в "адрес",
Использование Джеффа Garzik в Python библиотеки я код что-то вроде этого:
котировка
x.sendtoaddress ("адрес", 0.00002)

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

Приведенный выше код производит это:
котировка
Послать -> {"метод": "sendtoaddress", "Титулы": ["адрес", 2е-05], "Я бы": 1, "версия": "1,1"}

Теперь обратите внимание на Python поплавок был преобразован в эквивалентную экспоненциальную E нотацию, которая действует в формате JSON. Но она по-прежнему не меняет тот факт, что мы не говорим точности здесь, или мы? Может кто-нибудь объяснить, почему это безопасно? Например, есть ли какие-либо ситуации, когда Bitcoin или клиент JSON-RPC Python не получает фактическое количество монет из-за округления / плавающей ошибки преобразования точки? Это точная, почему обращаться с деньгами?

Кажется, стыдно даже имея это обсуждение, учитывая, что сам Satoshi было известно об этой проблеме, которая как раз (каламбур несколько предназначен), почему он использовал целые числа. Я понятия не имею, почему мы говорим о плавающей точкой, округление и усечение, когда эталонная реализация является внутренне совершенной. Это только мне кажется, что интерфейсы, чтобы поговорить с Bitcoin нет, если кто-то может мне объяснить, почему это безопасно. Wiki для правильных денег также упоминает, что требуется округление. Делается это правильное округление с помощью питона-bitcoinrpc? Эти вопросы не обсуждаются в любом месте. Wiki также продолжает говорить, что "Вы, или библиотека JSON вы используете, должны конвертировать суммы либо с фиксированной точкой десятичного представления (8 цифрами после десятичной точки) или в идеале 64-разрядное целое представление." Да, не шучу. Теперь любой образец кода на самом деле сделать это, или это в настоящее время невозможно с JSON типов с двойной точностью?

котировка
Защиту JSONtoAmount (значение):
    вернуться длинным (круглое (значение * 1E8))
Защиту AmountToJSON (количество):
    возвращение поплавок (количество / 1E8)
Контекст?


Если какие-либо из этих вопросов, кажется глупым, то я прошу прощения. Но люди всегда жалуются некомпетентными разработчиками и плохо защищенного программного обеспечения и Bitcoin даже не имеет надлежащую документацию для чего-то, как важно, как точное обращения денег. Который, достаточно справедливо, это все еще новый проект. Но я начинаю думать, что только основные разработчики имеют никакого понятия, как все это работает, и это очень трудно узнать, когда только надлежащая документация буквально проект 10000 линии + C ++.

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


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


25 апреля 2014, 9:00:25 AM   # 2
 
 
Сообщений: 28
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

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





Какой язык вы развиваетесь?

Дайте это посмотреть:
http://deron.meranda.us/python/comparing_json_modules/numbers
DocJeff сейчас офлайн Пожаловаться на DocJeff   Ответить с цитированием Мультицитирование сообщения от DocJeff Быстрый ответ на сообщение DocJeff

25 апреля 2014, 9:05:28 AM   # 3
 
 
Сообщений: 28
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

Примечание стороны, 2е-05 расширяется до 2 * 10 ^ (- 5), который выходит на .00002
Что вам действительно нужно сделать, это обеспечить неравномерные десятичные (например 0,0010335) выходит должным образом.
DocJeff сейчас офлайн Пожаловаться на DocJeff   Ответить с цитированием Мультицитирование сообщения от DocJeff Быстрый ответ на сообщение DocJeff

28 апреля 2014, 3:21:31 AM   # 4
 
 
Сообщений: 12
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

Спасибо за ответ Док. Я unpolitely натыкаясь эту тему еще раз для получения дополнительной информации. Я считаю, что это очень важная тема, и хотел бы подтверждение от кого-то в курсе, что не существует каких-либо сокращений, округляя, потеря точности, или другие странные ошибки / неточности при использовании Python + питон-bitcoinrpc + bitcoind.
сейчас офлайн 21-го века Пожаловаться на 21-го века   Ответить с цитированием Мультицитирование сообщения от 21-го века Быстрый ответ на сообщение 21-го века

28 апреля 2014, 4:18:45 AM   # 5
 
 
Сообщения: 1260
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

JSON использует е как часть форматирования чисел, и, вероятно, код питона не делает ничего особенного. Почему вы подозреваете проблему? 

Следуйте предложение docjeff'S: использовать не округлую сумму, посмотреть, что происходит.
jonald_fyookball сейчас офлайн Пожаловаться на jonald_fyookball   Ответить с цитированием Мультицитирование сообщения от jonald_fyookball Быстрый ответ на сообщение jonald_fyookball

28 апреля 2014, 4:50:53 AM   # 6
 
 
Сообщения: 905
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

Double имеет 53 бит положения, которое более чем достаточно, чтобы закодировать все денежные значения в Bitcoin.
maaku сейчас офлайн Пожаловаться на maaku   Ответить с цитированием Мультицитирование сообщения от maaku Быстрый ответ на сообщение maaku

28 апреля 2014, 5:55:29 AM   # 7
 
 
Сообщения: 2044
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

Почему мы используем поплавки для деликатных финансовых операций?
Почему нет? Двойная точность гарантируется представлять все от 0,00000001 до 67,108,863.99999999 без потери точности. Попробуйте и посмотрите.
Foxpup сейчас офлайн Пожаловаться на Foxpup   Ответить с цитированием Мультицитирование сообщения от Foxpup Быстрый ответ на сообщение Foxpup

28 апреля 2014, 5:43:19 PM   # 8
 
 
Сообщения: 905
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

Интересный факт: JavaScript имеет MAX_INT равную 2 ^ 53 - 1, именно по этой причине. В эти дни все это JIT компилируется, но еще в первые дни интерпретаторов JavaScript, двойной точности с плавающей точкой используется для * все *. И это сработало, точно и точно. По крайней мере, до тех пор пока вы не превышаете этот диапазон или разделить на процессоре Intel
maaku сейчас офлайн Пожаловаться на maaku   Ответить с цитированием Мультицитирование сообщения от maaku Быстрый ответ на сообщение maaku

28 апреля 2014, 9:05:09 PM   # 9
 
 
Сообщения: 653
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

Почему мы используем поплавки для деликатных финансовых операций?
Почему нет? Двойная точность гарантируется представлять все от 0,00000001 до 67,108,863.99999999 без потери точности. Попробуйте и посмотрите.
Ну, а потом это:
Код:
+0,100000000000000010000
+0,200000000000000010000
+0,299999999999999990000
+0,400000000000000020000
Это выход из этого маленького примера C ++:
Код:
станд :: cout.precision (40);
станд :: соиЬ << 0,1 << '\ П';
станд :: соиЬ << 0.2 << '\ П';
станд :: соиЬ << 0,3 << '\ П';
станд :: соиЬ << 0,4 << '\ П';
Шлейхер сейчас офлайн Пожаловаться на Шлейхер   Ответить с цитированием Мультицитирование сообщения от Шлейхер Быстрый ответ на сообщение Шлейхер

29 апреля 2014, 6:31:14 AM   # 10
 
 
Сообщения: 905
Цитировать по имени
цитировать ответ
по умолчанию Re: безопасно ли интерфейс JSON-RPC Bitcoin в? Или надлежащее обращение денег.

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW