Около
В этой статье описывается очень простой и безопасный способ сделать простой 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