AppBase: Następny krok na przód dla blockchainu Steem (Rozpocznijmy testowanie) [Tłumaczenie]

in #polish6 years ago (edited)

image

Cześć, jest to tłumaczenie postu umieszczonego przez steemitdev. Pomyślałem, że może warto przełożyć post na polską wersję dla osób słabiej znających angielski. Post był bardzo techniczny, więc mogą występować niezauważone głupoty w tłumaczeniu :)

Dzisiaj chcielibyśmy podzielić się z wami ekscytującymi wiadomościami: AppBase jest gotowe i chcielibyśmy, aby wszyscy pomogli je testować. Jednakże, proszę zwrócić uwagę, że deweloperzy będą musieli zrobić parę mniejszych zmian, aby dostosować się do nowej platformy.

Kandydat na wydanie AppBase jest gotowy

W sierpniu podzieliliśmy się z wami paroma ekscytującymi informacjami związanymi z blockchainem Steem. Jedną z tych informacji związana była z AppBase, który stworzy niezależne "moduły" drastycznie poprawiając możliwości Steema jeżeli chodzi o jego skalowalność.

AppBase jest pierwszym krokiem przy tworzeniu wielołańcuchowego "FABRIC". AppBase uruchamia wiele komponentów blockchainu Steem, stając się modularny poprzez tworzenie dodatkowych, niejednomyślnych blockchainów, jako dedykowane wtyczki. Te wtyczki mogę być aktualizowane o wiele szybciej, ponieważ nie wymagają odpowiedzi całego blockchainu.

Jesteśmy nareszcie gotowi do testowania AppBase na większą skalę!

Jeżeli jesteś jedynie zwykłym użytkownikiem steemit.com, to też możesz nas wspomóc. Wejdź na steemitstage.com i używaj tej strony tak jak to już to robiłeś do tej pory ze steemit.

Nasze środowisko zawiera te same zapewnione bezpieczeństwo jak dla steemit.com. Środowisko jest aktualnie przedprodukcyjne. steemitstage.com zostało zaprojektowane tak, aby być jak najbliższe 'prawdziwemu' steemit.com jak to tylko możliwe, tak aby przygotować się do wprowadzenia tego do steemit.com. Jeżeli wciąż obawiasz się o swoje klucze prywatne, możesz po prostu użyć swoich kluczy do postowania. Nawet jeśli nie zalogujesz się wcale to samo przeglądanie strony i przekazywanie nam uwag na jej temat, wciąż jest dla nas przydatne.

Dla Developerów

Jeżeli prowadzisz bądź utrzymujesz serwis Steem, to wymagane jest parę kroków, które będzie trzeba wykonać, aby mieć pewność ciągłości działania serwisu jak to jest oczekiwane. Szczegóły zawarte są w sekcji poniżej.

Zmiany węzła steemd

Jeżeli prowadzisz węzeł steemd, możesz sprawdzić tag v0.19.4rc1 na Githubie lub na Docker Hub.

Zmiany w API

Przebudowaliśmy nasze API, aby zezwolić na większą elastyczność na przyszłe ulepszanie i utrzymanie. Nowe API bierze w pojedynczym obiekcie jako argument i zwraca pojedynczy obiekt jako typ zwracany. Wszystkie istniejące API zostały zaktualizowane, aby pasowały do standardu.

Ponieważ nie musimy trzymać się już semantyki parametrów w stylu c++, możemy użyć bardziej różnorodnych domyślnych typów argumentu jak i także różną liczbę parametrów. Możemy także rozszerzyć funkcjonalności wywołania bez wpływania na obecne aplikacje poszerzając zwracany obiekt.

database_api przeszło poważne zmiany, aby móc tworzyć zapytania wyszukujące odpowiednie obiekty z dowolnym porządkiem, który steemd już wykorzystuje. To pozwoli na większą elastyczność serwisów wyszukujących potrzebne obiekty

Nowe condenser_api

Aby pomóc w przestawieniu się, stworzyliśmy condenser_api, które zawiera wszystkie metody API, które obecnie istnieją i używają obecne formatowanie parametrów. Najprostszym sposobem, aby twoja aplikacja działała z Appbase jest zmiana api nacondenser_api.

API muszą być wywoływane poprzez nazwę

Jeżeli do tej pory wywoływałeś API poprzez API id, to takie wywołanie nie jest już wspierane. Wszystkie API muszą być wywoływane poprzez nazwę.

Usunięto login_api

login_apizostało zaprojektowane jako sposób do zmapowania nazw API na id. Ponieważ API nie są już wywołane poprzez id, nie ma potrzeby na login_api, więc zostało usunięte.

Lista metod API

Jeżeli wywołasz jsonrpc.get_methods, zostanie zwrócona lista dostępnych metod API

Argument i zwracany prototyp obiektu

Jeżeli wywołasz jsonrpc.get_signature przekazując nazwę metody API to zwróci argument i zwróci prototyp obiektu.

Na przykład,

{"jsonrpc":"2.0", "method":"jsonrpc.get_signature", "params":
{"method":"database_api.get_active_witnessess"}, "id":1}

Zwraca
{"jsonrpc":"2.0","result":{"args":{},"ret":{"witnesses":[]}},"id":1}

{} jest argumentem typu void i zwraca listę w polu winessess.

Używanie condenser_api

Wszystkie wywołania w condenser_api zwrócą [] jako argument, jako tablica argumentu przekazywana jest niejawnie i zaimplementowana w wywołaniach API sama w sobie. One podążają obecnym formatowaniem argumentu. Istniejące aplikacje powinny opijać używania login_api i wysyłać wszystkie jej wywołania do condenser_api bez innych wymaganych zmian wymaganych do użycia AppBase.

Na przykład, wywołując get_dynamic_global_properties z condenser_api kontra database_api:

{"jsonrpc":"2.0", "method":"condenser_api.get_dynamic_global_properties", "params":[], "id":1}

{"jsonrpc":"2.0", "method":"database_api.get_dynamic_global_properties", "id":1}

Ponieważ metoda nie ma argumentów, pole params może zostać pominięte kiedy nie używamy condenser_api. Jednak, może zostać dodany opcjonalny jako typ void (np."params":P{}), ale nie jest on wymagany.

Usprawniony syntax

Mogłeś zauważyć, że poprzednie przykłady używały różnych formatów wywołania API. Poprzednio, były przestarzałe wywołania, które wyglądały jak te:

{"jsonrpc":"2.0", "id":0, "method":"call", "params":["api","function",[ARGS]]}.

Jednakże, wspieramy teraz usprawniony syntax wywołania:

{"jsonrpc":"2.0", "id":0, "method":"api.function", "params":[ARGS]}

Oba formaty działają, ale nowy format jest preferowany, bo jest czytelniejszy.

Rozszerzona zgodność z JSON-RPC

Niektóre inne zmiany zostały poczynione, aby steemd był bardziej zgodny z szeroko używaną specyfikacją JSON-RPC. To jest wciąż nowe. Proszę pomóc nam testować naszą implementację json-rpc w celu upewnienia się, że jest to zgodne.

Kompatybilność wsteczna

Nasz serwis odwróconego proxy,jussi, zajmuje się tłumaczeniem metod. To znaczy, że nawet po wprowadzeniu Appbase do środowiska produkcyjnego, stare wywołania API wciąż będą działać.

Wymagane przyszłe aktualizacje

Weźcie pod uwagę, że wprowadzone nowe API w tym wydaniu jest w trakcie tworzenia. Jest wiele zmian serializacyjnych, które wciąż wciąż na różnym stanie kompletności. Opublikujemy znowu w bliskiej przeszłości naturę tych zmian. Nie bójcie się bawić z tym API, ale widzicie, że będą zmiany. Kiedy już skończymy to API, zdeprecjonujemy condenser_api i rozpoczniemy migrację do nowego API

Zmiany w plikach konfiguracyjnych

Konfiguracja logująca zawsze była zmorą w pliku konfiguracyjnym z powodu ilości możliwych opcji. To było jednak zbyt skomplikowane i wymagało używania różnych parserów. Zmieniliśmy to do formatu json, który pozwala nam na używanie tylko jednego parsera. Domyślny config logowania jest następujący:

# Console appender definition json: {"appender", "stream"}
log-console-appender = {"appender":"stderr","stream":"std_error"}

# File appender definition json:  {"appender", "file"}
log-file-appender = {"appender":"p2p","file":"logs/p2p/p2p.log"}

# Logger definition json: {"name", "level", "appender"}
log-logger = {"name":"default","level":"debug","appender":"stderr"}
log-logger = {"name":"p2p","level":"debug","appender":"p2p"}

Pluginy

Wtyczki są włączone poprzez opcję plugin. Nie ma już opcji publc-api i wszystkie API są też włączone poprzez plugin.

Większość opcji konfiguracyjnych już opakowane nazwami przez plugin, do którego należą. Opcje konfiguracyjne, które nie zostały opakowane, wciąż są wspierane, ale teraz będą wyświetlały komunikat o przestarzałości, gdy są używane. contrib/config-for-docker.ini i contrib/fullnode.config.ini są przykładowymi konfiguracjami, które są używane w obrazach Dockera. Możesz użyć ich jako przykładowe pliki konfiguracyjne.Jak zwykłe, silnie zalecamy używania obrazów Dockerowych, w celu uruchomienia twojego węzła.

Wnioski

Te zmiany zostały przepracowywane przez wiele miesięcy i reprezentują większy krok w kierunku rozwoju Steema. AppBase udostępnia twarde fundamenty do przyszłych potrzeb skalowalności oraz pozwoli nam powiększać platformę jednocześnie zarządzając wymaganymi zasobami dla zewnętrznych developerów aplikacji, witnessów bez uszczerbku na wzroście.

Coin Marketplace

STEEM 0.19
TRX 0.14
JST 0.030
BTC 60268.51
ETH 3201.96
USDT 1.00
SBD 2.43