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.
5. Aktualizacja manuala
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:
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):
SendVoteorder zmieni nazwę na WiseAction i będzie miało następującą strukturę:
Ruleset uzyska następującą strukturę:
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ę:
set_rules będzie miało następującą strukturę:
Testy nowego protokołu
Zmiany w protokole v2 i v1:
Zmiany w Validatorze:
Zmiany w regułach
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
operation_types: ["vote"]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
4. Zmiany w wise-hub
Wise hub tylko będzie wyświetlał nowe rodzaje operacji, ale nie będzie ich narazie przetwarzał
5. Zmiany w steem-wise-voter-page
Tylko zaaktualizowanie kodu do innych nazw funkcji/obiektów w bibliotece steem-wise-core.
5. Aktualizacja manuala