mirror of https://github.com/voidlizard/hbs2
pep-03
This commit is contained in:
parent
4bc442ac6c
commit
79960751ca
|
@ -182,4 +182,5 @@ fixme-set "workflow" "backlog" "HwCVP8sL7m"
|
||||||
fixme-set "workflow" "test" "FHMMGPm8Kh"
|
fixme-set "workflow" "test" "FHMMGPm8Kh"
|
||||||
fixme-set "workflow" "test" "Ac1F6f2pni"
|
fixme-set "workflow" "test" "Ac1F6f2pni"
|
||||||
fixme-set "assigned" "voidlizard" "Ac1F6f2pni"
|
fixme-set "assigned" "voidlizard" "Ac1F6f2pni"
|
||||||
fixme-set "workflow" "wip" "4ZMqvoTMY3"
|
fixme-set "workflow" "wip" "4ZMqvoTMY3"
|
||||||
|
fixme-merged "146adg8Dyy" "HycuVXNhiZ"
|
|
@ -48,8 +48,7 @@ Ref:
|
||||||
;; из текущего состояния.
|
;; из текущего состояния.
|
||||||
;; как оно вычисляется / в принципе может вычисляться пока не вполне
|
;; как оно вычисляется / в принципе может вычисляться пока не вполне
|
||||||
;; понятно, поэтому на текущий момент это проверка ACL:
|
;; понятно, поэтому на текущий момент это проверка ACL:
|
||||||
;; хэш коммита >- принадлежит -> owners.
|
;; ключ публикатора коммита принадлежит owners.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -101,21 +100,94 @@ acl: owner
|
||||||
|
|
||||||
удалить reader
|
удалить reader
|
||||||
|
|
||||||
RefUpdateState : (STATE, OP, ARGS*)
|
RefUpdateState : (STATE, OP, ARGS:[ARG-TYPE])
|
||||||
-----------------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
acl: writer
|
acl: writer
|
||||||
|
|
||||||
|
OP: Опкод операции, определяется Reference
|
||||||
|
|
||||||
|
ARGS: список аргументов, возможно, пустой
|
||||||
|
|
||||||
|
ARG-TYPE: BLOB INT HASH
|
||||||
|
|
||||||
|
INT: целое число переменной размерности
|
||||||
|
|
||||||
|
BLOB: произвольная строка фиксированной длины
|
||||||
|
|
||||||
|
HASH: хэш блока
|
||||||
|
|
||||||
|
|
||||||
RefCommit : (STATE, NEW-STATE, PROOF:PROOF-TYPE)
|
RefCommit : (STATE, NEW-STATE, PROOF:PROOF-TYPE)
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
acl: зависит от PROOF-TYPE
|
acl: зависит от PROOF-TYPE
|
||||||
|
|
||||||
|
RefGetJournal
|
||||||
|
|
||||||
|
acl: readers (?)
|
||||||
|
|
||||||
|
|
||||||
Обработка команд протокола
|
Обработка команд протокола
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
|
RefCommit
|
||||||
|
---------
|
||||||
|
|
||||||
|
1. Проверить PROOF
|
||||||
|
3. Построить MERKLE TREE журнала, однозначно упорядочив операции
|
||||||
|
2. Текущий STATE = JOURNAL-MERKLE-TREE
|
||||||
|
3. Удалить JOURNAL
|
||||||
|
4. Создать новый пустой JOURNAL
|
||||||
|
|
||||||
|
RefGetJournal
|
||||||
|
-------------
|
||||||
|
|
||||||
|
acl: reader (?)
|
||||||
|
|
||||||
|
1. Построить MERKLE TREE журнала, однозначно упорядочив операции
|
||||||
|
2. Вернуть HASH(MERKLE-TREE) журнала
|
||||||
|
|
||||||
|
|
||||||
|
Любая другая команда
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
1. Распарсить
|
||||||
|
2. Проверить типы операндов
|
||||||
|
3. Проверить ACL
|
||||||
|
4. Записать в журнал
|
||||||
|
|
||||||
|
|
||||||
|
Журнал должен позволять добавлять записи в конец без
|
||||||
|
чтения всего журнала.
|
||||||
|
|
||||||
|
Команды в журнал добавляются последовательно по мере
|
||||||
|
их поступления.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Резюме
|
||||||
|
======
|
||||||
|
|
||||||
|
1. Состояние (state) однозначно задаётся потоком команд
|
||||||
|
2. Каждая команда может иметь своим аргументом ссылку на HASH
|
||||||
|
|
||||||
|
|
||||||
|
Утверждается, что имея подобный набор примитивов, мы можем построить
|
||||||
|
определенный (определить) класс распределенных систем.
|
||||||
|
|
||||||
|
Так как ссылки на другие объекты задаются явно при помощи типа HASH,
|
||||||
|
мы знаем, на какие объекты ссылается ссылка.
|
||||||
|
|
||||||
|
Таким образом, можно реализовать сборку мусора, когда объекты,
|
||||||
|
на которых не ссылается ни одна ссылка, могут удаляться.
|
||||||
|
|
||||||
|
|
||||||
TODO: journal-types-implementation
|
TODO: journal-types-implementation
|
||||||
|
- Добавление в конец без чтения всего журнала
|
||||||
|
- Записи переменного размера
|
||||||
|
- Задавать размер страницы
|
||||||
|
- Запись может быть произвольного размера
|
||||||
|
- Для записи выделяется целое число страниц
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue