Вернуться   Биткоин Форум > - Wiki
9 мая 2017, 12:00:47 PM   # 1
 
 
Сообщений: 21
Цитировать по имени
цитировать ответ
по умолчанию Re: [Решение] Как рассчитать и хранить Bitcoin на счетах PHP и MySql?

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Около

В этой статье описывается очень простой и безопасный способ сделать простой Bitcoin расчеты баланса
и лучший подход, чтобы сохранить их безопасно внутри (SQL) базы данных MySQL, используя язык PHP скриптов.

Проблема

Всякий раз, когда вы создаете какой-либо веб-приложение Bitcoin, вы, вероятно, придется хранить некоторые остатки Bitcoin,
и сделать простые расчеты, чтобы обновить их;
и, если вы уже пытались сделать это, вы будете знать, что использование традиционных типа Integer, Биг-Integrers, и Поплавок может вызвать серьезные проблемы.

Именно поэтому большинство разработчиков используют Строки и символьные массивы.
Для реализации этого они обычно выбирают один из двух PHP библиотек BC Math или GMP.
Хотя эти библиотеки отлично подходит для выполнения сложных операций, они слишком тяжелы для выполнения простых задач,
как вычисления остатков пользователей, которые используют простую арифметику.

Решение

Чтобы решить эту проблему, я написал простой класс PHP Calculator (https://github.com/BisonSoft/BigNumber_PHP)
которые принимают два целых числа, представленные в виде строк (без десятичной точки), и делать сложение, вычитание, умножение, деление, а также операцию по модулю.

На практике

1. Для сохранения Bitcoin остатков, строки использовать и хранить их как Satoshis

5432 магазин BTC, как "154320000"
0,0599 BTC магазин в "5990000"

2. В MySql определить столбец баланса как CHAR, а не VARCHAR или TEXT, это позволит повысить производительность

CHAR (24) является достаточно большим для любых практических целей
Установите колонки опции DEFAULT «0»

Класс 3. PHP Calculator

Он принимает строки, содержащие только цифры: "12345", "0012345" и т.п.
Недействительные строки будут возвращать ошибку: "-12345", "1,2345" и т.п.
Разделив с нуля будет возвращать ошибку также: "1234" / "0" знак равно "Е"
Класс имеет два жала и возвращает номер решения в виде строки: "1234" + "66" знак равно "1300"
При делении двух чисел, класс возвращает число с десятичной точкой: "87" / "12" знак равно "7,25"

4. Безопасность

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

Пример:
Баланс: "112345500"
Sha1: 1bcd3635438e41be2b0329938f0a55c35f7b6be5
BisonPoint сейчас офлайн Пожаловаться на BisonPoint   Ответить с цитированием Мультицитирование сообщения от BisonPoint Быстрый ответ на сообщение BisonPoint


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


9 мая 2017, 8:12:34 PM   # 2
 
 
Сообщения: 560
Цитировать по имени
цитировать ответ
по умолчанию Re: [Решение] Как рассчитать и хранить Bitcoin на счетах PHP и MySql?

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





Всякий раз, когда вы создаете какой-либо веб-приложение Bitcoin, вы, вероятно, придется хранить некоторые остатки Bitcoin,
и сделать простые расчеты, чтобы обновить их;
и, если вы уже пытались сделать это, вы будете знать, что использование традиционных типа Integer, Биг-Integrers, и Поплавок может вызвать серьезные проблемы.

Именно поэтому большинство разработчиков используют Строки и символьные массивы.
Нет, просто нет.
Я использую десятичный (16,8) в течение многих лет без единого вопроса; и в отличие от вашего предложения, это позволяет мне делать стандартные арифметические операции в SQL. То же самое для BIGINT.
Уход привести примеры для них "серьезные проблемы"? Почему вы не сообщите об ошибке, чтобы эти проблемы исправить?

Давайте посмотрим, что говорит MySQL об этом:
Код:
Синтаксис объявления для столбца DECIMAL является ДЕСЯТИЧНЫМ (M, D). Диапазоны значений для аргументов заключаются в следующем:

    М представляет собой максимальное количество цифр (точность). Он имеет диапазон от 1 до 65.

    D это число цифр справа от десятичной точки (шкала). Он имеет диапазон от 0 до 30, и не должно быть больше, чем M.

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

11 мая 2017, 1:29:29 PM   # 3
 
 
Сообщений: 21
Цитировать по имени
цитировать ответ
по умолчанию Re: [Решение] Как рассчитать и хранить Bitcoin на счетах PHP и MySql?

Bitsky, я с вами абсолютно согласен,
для простых и практических целей DECIMAL и BIGINT более чем достаточно для хранения данных и операций SQL.

Однако,
PHP язык имеет некоторые серьезные ограничения при выполнении математических операций с большими числами, и именно поэтому я построил этот класс.
Есть два PHP библиотеки для этой цели (BC Math и GMP), но я хотел простой легкий класс, ничего сложного.

Второе, что я хотел, чтобы иметь возможность хранить номера любой длины (в практическом смысле), без необходимости внесения изменений
Тип данных конкретной строки, поэтому я выбираю CHAR и VARCHAR над DECIMAL и BIGINT.

котировка
Уход привести примеры для них "серьезные проблемы"? Почему вы не сообщите об ошибке, чтобы эти проблемы исправить?

Проблема, которую я имел связано с неспособностью языка PHP, чтобы иметь дело с большими числами с плавающей точкой; после того, как некоторое количество десятичных знаков это просто округляет их
(PHP руководство лучше описывает проблему, которую я мог бы сделать в этом ответе http://php.net/manual/en/language.types.float.php).

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

11 мая 2017, 6:41:56 PM   # 4
 
 
Сообщения: 560
Цитировать по имени
цитировать ответ
по умолчанию Re: [Решение] Как рассчитать и хранить Bitcoin на счетах PHP и MySql?

Вы можете по-прежнему хранить значения, как DECIMAL или BIGINT и выгоду от операций SQL, как и SUM (). В худшем случае, вы можете CAST () селекты СИМВОЛА при использовании запроса в PHP.
PHP всегда был больше похож на язык бинтом (например, это ($ стог, $ иглы) или ($ иглы, $ стог) для любой функции)?

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW