Post
Topic
Board Альтернативные криптовалюты
Re: Ⓐ Atom - пишу свою крипту ✌✌✌
by
lapitsky
on 23/06/2018, 12:49:40 UTC
12. Принцип работы базы данных для хранения вашего счета с атомами

Способ хранения денег отличается от классических криптовалют. В моем случае каждая отдельная монета называется атомом и это не просто так.

Принцип хранения данных о вашем счете в блокчейн атом:
1) есть база формата Номер монеты:Владелец
например:
 0:4SzkNXVjE9tFhBJWYKLPFfKcqxSY
 1:U12cyWUQMYBtFnuMCjrr2FmCfnS
 2:4GBN73Uq97TaXBA1RgRJ8K2mB7Gj

то есть у нас есть три монеты, которые принадлежат трем кошелькам. Если вы передаете монету кому-то меняется не баланс счета, а меняется запись напротив монеты.
Это еще называется key:value хранилище, где key - номер монеты, value - ее владелец.

2) монета может дробиться до миллионных частей
0: 4SzkNXVjE9tFhBJWYKLPFfKcqxSY-0.47; U12cyWUQMYBtFnuMCjrr2FmCfnS-0.53
то есть часть монеты 0 принадлежит одному кошельку, часть другому.

3) способ хранения:
при создании новой монеты (майнинге), создается папка с номером монеты, где лежит
/0/!0_main.atm - файл, где хранится текущее значение по владельцам этой монеты. в данном случае, первая цифра 0, означает, что это монета с номером 0.
/0/0_0.atm - это генезис файл для каждой монеты, он создается при майнинге и и принадлежит майнеру (сейчас пока работает только алгоритм эмиссии, потом будем майнинг, новые атомы будут создаваться только так)
/0/0_1.atm - это файл создается, когда проводим новую транзакцию. то есть по сути это и есть блокчейн. такой файл будет скреплятся с предыдущим хешом (в данном случае этот файл должен создержать хеш генезис блока - 0_0.atm)

при проверке целостности этого атома (под номером 0), либо проходим всю цепочкудо генезис блока и убеждаемся, что последнее значение атома верно, либо если транзакций было очень много и процесс проверки займет уйму времени, тогда проверяем до последнего целого значения атома в файле !0_main.atm

4) как получать доступ к монете, если их миллионы, чтобы не падала скорость:
при проведении транзакции нода делает запрос в базу данных Redis, которая хранит последнее значение атома (по сути копия файла !0_main.atm), про номеру кошелька определяем какие монеты необходимы для проведения счета, после чего уже мы обращаемся к конкретным папкам и обновляем конкретные файлы и создаем новый блок в цепочке, каждого атома.

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