hbs2/docs/drafts/pep-04.txt

122 lines
3.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

PEP: pep-03-reference-update
```
$$$ (set lang ru)
```
Reference представляет собой адресуемую мутабельную
ссылку на контент.
Предпосылки
===========
1. Ссылка (Reference) представляет собой единицу адресации "потока"
блоков (топики, чаты, блокчейны, статический файл с обновлениями
и так далее)
2. Со ссылкой ассоциируются владельцы/информация о списке тех,
кто может читать данные по ссылке / писать данные по ссылке
3. Пир должен знать, как обрабатывать операции над ссылкой, а именно
Парсить, проверять полномочия
4. Пир должен уметь обрабатывать команды изменения полномочий
Тезисы
======
1. При создании ссылки устанавливается первоначальный ACB
2. При создании ссылки устанавливается список доступных для неё операций
3. Операции над ACB являются предопределенными
4. Остальные операции определяется типом ссылки
Структуры данных
================
```
Ref:
ACB ;; ссылка на ACB
Journal ;; ссылка на merkle tree текущего журнала операций
Head ;; ссылка на текущее (commited) состояние ссылки
Proof ;; потенциально -- тип proof. Как его сделать расширяемым
;; пока что неизвестно, вероятно, это нечто, вычисляемое
;; из текущего состояния.
;; как оно вычисляется / в принципе может вычисляться пока не вполне
;; понятно, поэтому на текущий момент это проверка ACL:
;; хэш коммита >- принадлежит -> owners.
```
Команды протокола
=================
RefAddOwner : (STATE,BLOB)
----------------------------
acl: root
добавить owner
RefDelOwner : (STATE, BLOB)
----------------------------
acl: root
удалить owner
RefAddWriter : (STATE, BLOB)
----------------------------
acl: owner
добавить writer
RefDelWriter : (STATE, BLOB)
----------------------------
acl: owner
удалить writer
RefAddReader : (STATE, BLOB)
----------------------------
acl: owner
добавить reader
RefDelReader : (STATE, BLOB)
----------------------------
acl: owner
удалить reader
RefUpdateState : (STATE, OP, ARGS*)
-----------------------------------
acl: writer
RefCommit : (STATE, NEW-STATE, PROOF:PROOF-TYPE)
------------------------------------------------
acl: зависит от PROOF-TYPE
Обработка команд протокола
==========================
TODO: journal-types-implementation