-
Notifications
You must be signed in to change notification settings - Fork 3
Description
This is mostly internal draft, so sorry for Writing a non-english issue
Scenariusz: Wise umożliwia ustawianie reguł dla innych operacji niż vote
1. Zmiany w bibliotece steem-wise-core
-
Zmiany nazw:
- VoteOrder" -> ActionOrder
- ConfirmVote" -> ConfirmAction
- ConfirmVoteBoundWithVote -> ActionWithConfirmation
-
Zmiany w protokole generycznym:
-
ConfirmVote zmieni nazwę na ConfirmAction, będzie miało identyczną strukturę.
-
ConfirmVoteBoundWithVote zmieni nazwę na WiseActionWithConfirmation i będzie miało strukturę (zmiana nazwy pola):
interface WiseActionWithConfirmation extends ConfirmAction { operation: SteemOperation }
-
SendVoteorder zmieni nazwę na WiseAction i będzie miało następującą strukturę:
interface WiseActionOrder { rulesetName: string; operation: steem.OperationWithDescriptor; }
-
Ruleset uzyska następującą strukturę:
interface Ruleset { name: string; operation_types: SteemOperationTypesAllowedByWise []; rules: Rule []; }
-
-
Dodanie protokołu v3:
-
Stworzenie protokołu v3 (dla zachowania wstecznej kompatybilności kod protokołu v1 i v2 zostaną zachowane)
-
Zamiast send_voteorder będzie wysyłane action_order, które będzie miało następującą strukturę:
interface wise_action_order { delegator: string; ruleset: string; operation: VoteOperationWithDescriptor | CustomJsonOperationWithDescriptor | CreateAccountOperationWithDescriptor | ...AnySteemOperationWithDescriptor; }
-
set_rules będzie miało następującą strukturę:
interface wise_set_rules { voter: string; description?: string; rulesets: wise_ruleset[]; } interface wise_ruleset { name: string; operation_types: wise_allowed_operation_type []; rules: wise_rule []; } type wise_allowed_operation_type = "vote" | "custom_json" | "create_account" | ... /* other_but_the_list_should_not_be_too_permissive */;
-
Testy nowego protokołu
-
-
Zmiany w protokole v2 i v1:
- tłumaczenie operacji na nowy generyczny protokół.
- testy sprawdzające na przykładach poprawność tłumaczenia
-
Zmiany w Validatorze:
- Kod sprawdzający, czy operacja należy do listy operation_types w regule.
-
Zmiany w regułach
- Każda istniejąca regułą będzie miała dodatkowy validator rulesetu, który będzie sprawdzał, czy ta reguła potrafi przetwarzać wszystkie typy operacji zezwolone w tym rulesecie.
- Każda istniejąca reguła będzie musiała obsługiwać steem.VoteOperation zamiast SendVoteorder (bardzo podobna struktura)
- Dodanie nowych reguł dla każdego nowego typu operacji
-
Zmiany w synchronizatorze: tylko zmiany nazw
-
Zmiany w RulesUpdater: dostosowanie do nowego generycznego protokołu (głównie zmiany nazw + zmiana struktury Rulesetu z tablicy na obiekt)
-
Wydzielenie kodu odpowiedzialnego za synchronizację blockchainu do biblioteki steem-efficient-stream
Pełna wsteczna kompatybilność. Z perspektywy użytkownika działa tak samo.
2. Zmiany w bibliotece steem-wise-cli
- Nowa subkomenda "migrate-protocol-to-v3", która migruje stare pliki z regułami. Po prostu do każdego zestawu reguł dodaje:
operation_types: ["vote"] - Subkomenda "upload-rules"
- Obsługuje stary format migrując go w locie, ale sugeruje użytkownikowi wykonanie komendy "migrate-protocol-to-v3"
- Subkomenda "send-voteorder" pozostaje i działa tak jak poprzednio: zamiast obiektu SendVoteorder generuje WiseActionOrder z operacją "vote" + dodatkowo wyświetla informację o nowej komendzie "send-actionorder"
- Nowa komenda send-actionorder, która jest identyczna jak send-voteorder, tylko przyjmuje jako parametr obiekt typu "WiseActionOrder"
Pełna wsteczna kompatybilność. Z perspektywy użytkownika działa tak samo.
3. Zmiany w steem-wise-sql
Nie jest potrzebna wsteczna kompatybilność, bo narazie tylko wise-hub korzysta z sql-a
- Wykorzystanie UniversalSynchronizer z biblioteki steem-wise-core zamiast własnego synchronizatora (który duplikuje kod)
- Pusher automatycznie wygeneruje operacje o nowym typie
- Ponowna synchronizacja blockchainu jeśli to jest szybsze niż migracja, a przeciwnym przypadku prosta migracja
- Przechowywanie operacji wise w formacie "raw" w celu umożliwienia przyszłych migracji
4. Zmiany w wise-hub
Wise hub tylko będzie wyświetlał nowe rodzaje operacji, ale nie będzie ich narazie przetwarzał
- Frontend
- HistoryEntryComponent będzie wyświetlać więcej rodzajów operacji
- PersonComponent będzie wyświetlać nazwy nowych operacji
- Ustawianie reguł nadal tylko dla vote
- RulesetsView będzie wyświetlał zestawy reguł z operacjami innymi niż vote jako zwinięty custom_json
- Backend/publisher
- Publisher będzie odrzucał ActionOrder, który ma inny rodzaj operacji niż "vote"
- Backend/api
- DaemonManager i Daemon — trzeba zmienić nazwy funkcji/obiektów ze steem-wise-core
- Daemon — będzie odrzucać ActionOrdery dla innych operacji niż vote
5. Zmiany w steem-wise-voter-page
Tylko zaaktualizowanie kodu do innych nazw funkcji/obiektów w bibliotece steem-wise-core.