Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 9838|Odpowiedź: 4

EOS Blockchain PHP Development Kit

[Skopiuj link]
Opublikowano 11.12.2018 08:56:36 | | |
Ten post został ostatnio edytowany przez jimi2018 w dniu 11.12.2018 09:06

1. Przegląd pakietu rozwojowego
Celem EosTool jest wyeliminowanie problemów związanych z tworzeniem aplikacji blockchain EOS przy użyciu PHP, takich jak:
  • Funkcje wywołuj przez interfejs RPC Nodeos i Keosd
  • Generowanie kluczy prywatnych i publicznych w formacie EOS offline
  • Użyj lokalnego klucza prywatnego do generowania podpisów transakcyjnych zgodnych z EOS
  • Serializuj obiekty transakcyjne do formatu packed_trx wymaganego przez Nodeos
Można uznać, że EosTool to wersja PHP eosjs, która może być używana do pełnej implementacji funkcji oficjalnego klienta EOS Cleos, a także może być łatwo dodana do wsparcia blockchaina EOS w aplikacjach PHP, co znacznie poprawia efektywność rozwoju.

Zainteresowani znajomi mogą również bezpośrednio pobrać zestaw deweloperski EOS blockchain PHP:http://t.cn/EUZAODQ

EosTool działa w środowisku Php 7.1+, aktualna wersja to 1.0.0, a lista głównych plików kodu przedstawia się następująco:

Pliki kodoweIlustrują
eostool/src/klient/NodeClient.phpKlasa pakietów interfejsu RPC dla node node oprogramowania
eostool/src/klient/WalletClient.phpKlasa enkapsulacji interfejsu RPC w oprogramowaniu portfelowym KEOSD
eostool/src/klient/RpcOutput.phpRPC zwraca powstałą klasę enkapsulacji
eostool/src/Crypto/PrivateKey.phpKlasa klucza prywatnego EOS
eostool/src/Crypto/PublicKey.phpKlasa klucza publicznego EOS
eostool/src/Crypto/Signature.phpKlasa sygnatury EOS
eostool/src/Serializer/AbiType.phpKlasa pakietów ABI w EOS
eostool/src/Serializer/AbiTypeFactory.phpKlasa fabryczna typu ABI
eostool/src/Serializer/SerialBuffer.phpKlasa implementacji bufora serializowanego
eostool/src/Serializer/Serializer.phpKlasa implementacji serializera
eostool/src/Signer/Signer.phpInterfejs signera
eostool/src/Signer/KeosdSigner.phpKeosd signer implementation class
eostool/src/Signer/LocalSigner.phpLokalna implementacja podpisującego offline
eostool/src/Contract.phpKlasa kontraktowa
eostool/src/EosTool.phpKlasa wejścia pakietu rozwojowego
Eostool/TestyKatalog przypadków testów jednostkowych
Eostool/phpunit.xmlProfile testów jednostkowych
eostool/dostawcaPakiety zależności firm trzecich
Eostool/composer.jsonPlik konfiguracyjny composera
2. Dostęp do serwera węzła
Użyj klasy NodeClient, aby uzyskać dostęp do interfejsu rpc nodeos. Na przykład poniższy kod uzyskuje dostęp do interfejsu get_info wtyczki łańcuchowej dla natywnie działającego węzła Nodeos:
2.1 Grupowanie połączeń RPC

EosTool stosuje spójną metodę nazewnictwa, a metodę wywołań NodeClient można wywnioskować zgodnie z API: grupowanie API odpowiada właściwości o tej samej nazwie co NodeClient, a API odpowiada metodzie konwertowanej przez camelCase pod tym samym atrybutem o tej samej nazwie co grupowanie Klienta No. Na przykład:



WtyczkiGrupowanie APIRPC APIMetoda NodeClient
chain_api_pluginŁańcuchget_info$nc->łańcuch->getInfo()
history_api_pluginHistoriaget_transaction$nc->history->getTransaction()
net_api_pluginnetStatus$nc->net->status()
producer_api_pluginProducentget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizePobierz$nc->dbsize->get()

Oficjalna dokumentacja API RPC:https://developers.eos.io/eosio-nodeos/reference

2.2 Parametry wywołań RPC

W przypadku Nodeos niektóre wywołania wymagają przekazania dodatkowych parametrów, takich jak interfejs get_block wtyczki łańcuchowej; przy użyciu EosTool do wykonania wywołania wystarczy zorganizować parametry w powiązaną tablicę, przykładowy kod wygląda następująco:



2.3 Wywołania RPC – wartości zwrotne

Wynik zwrotny wszystkich wywołań RPC to instancja RpcOutput, a wywołanie metody hasError() pozwala określić, czy wywołanie jest błędne, a także można dodatkowo użyć metody getError() do uzyskania informacji o błędzie.
Odpowiedź wywołania RPC można uzyskać za pomocą metody getResult(), która jest obiektem StdClass przekonwertowanym z oryginalnego wyniku JSON, dzięki czemu można łatwo wydobyć informacje o atributach, takie jak:

2.4 Dostęp do węzłów mainnet/testnet

Podczas tworzenia instancji NodeClient można przesłać dodatkowe wykonania parametrów, aby zdefiniować węzły EOS mainnet lub testnet do dostępu. Na przykład, użyj następującego kodu, aby uzyskać dostęp do węzła mainnet:

Albo odwiedź węzeł na testnetcie Jungle:


3. Dostęp do serwera portfela
Nowa wersja Keosd nie udostępnia już dokumentacji API RPC, co może oznaczać, że system zaczął przesuwać się na margines stosu oprogramowania EOS. Jednak do starej wersji dokumentacji można uzyskać dostęp pod tym adresem:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Użyj klasy WalletClient, aby uzyskać dostęp do interfejsu rpc Keosd. Na przykład poniższy kod korzysta z list_wallets interfejsu Keosd, który działa natywnie:
Ponieważ API Keosd nie jest już grupowane, odpowiadająca mu metoda RPC jest bezpośrednio zawieszona na obiekcie WalletClient, co stanowi różnicę. Podobnie jak NodeClient, wywołanie do WalletClient zwraca obiekt RpcOutput.

Wersja Keosd 1.4 używa gniazd UNIX zamiast HTTP do domyślnego udostępniania interfejsów RPC, co może być uważane za bezpieczniejsze przy użyciu IPC, biorąc pod uwagę, że w większości przypadków Keosd działa natywnie. Dlatego jest to również domyślna opcja instancji dla WalletClient, a w większości przypadków nie trzeba przekazywać dodatkowych parametrów, aby utworzyć WalletClient.

4. Klucze prywatne i publiczne

Algorytm klucza EOS jest podobny do Bitcoina, ale z pewnymi poprawkami i zdefiniowaniem własnego formatu.
Użyj statycznej metody klasy PrivateKey new() do wygenerowania losowego klucza prywatnego. Na przykład:
metoda toEos() jest używana do konwersji obiektów klucza prywatnego na niestandardowy format dla EOS.

4.1 Wyprowadzenie klucza publicznego
Klucz publiczny można wyprowadzić z klucza prywatnego, na przykład:


Podobnie użyj metody toEos() do konwersji klucza publicznego na niestandardowy format EOS.

4.2 Import kluczy prywatnych EOS
Możesz przekonwertować klucz prywatny sformatowany w EOS na obiekt Private Key w EosTool, na przykład poniższy kod importuje określony klucz prywatny EOS i wyświetla odpowiadający mu klucz publiczny EOS:

4.3 Podpis autorytatywny
Metoda sign() w PrivateKey obsługuje zarówno podpisy normalne, jak i autorytatywne wymagane przez węzły EOS. Na przykład następujący kod zwraca zwykły podpis:

Wprowadź dodatkowe parametry, aby uzyskać autorytatywną sygnaturę dla określonych danych:



5. Serializacja
EOS wymaga, aby transakcje były serializowane przed zatwierdzeniem push_transaction węzła, co jest również nieuniknioną częścią operacji EOS w PHP.
W EosTool klasa Serializer jest używana do operacji serializacji. Na przykład poniższy kod serializuje transakcję transferową EOS w formacie strumienia kodu 16-dziesiętnego, który można przesłać do węzła EOS:


Statyczna metoda fromAbi() w Serializerze służy do konstrukcji instancji serializera na podstawie określonego abi, a następnie metoda serialize() instancji służy do serializacji określonego typu danych w celu uzyskania strumienia kodów szesnastkowych.

6. Podpis
EosTool oferuje dwa sposoby podpisywania transakcji: za pomocą Keosd do podpisywania lub za pomocą lokalnego klucza prywatnego.
Użyj klasy KeosdSigner, aby zakończyć podpisywanie za pomocą serwera portfela. Na przykład:

Korzystając z klasy LocalSigner, możesz uniknąć keosd i bezpośrednio korzystać z offline podpisywania klucza prywatnego. Na przykład:
używaj EosTool\Signer\LocalSigner;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = nowy LocalSigner($prvKeys);
$signatures = $signer->znak($tx,$pubKeys,$chainId);



7. Złożenie transakcji
Dane transakcyjne muszą zostać znormalizowane, zsercjonalizowane, podpisane i zapakowane przez serię operacji, zanim będą mogły zostać przesłane do węzła Nodeos do rozgłoszenia. Klasa EosTool zapewnia metodę transact() do izolacji tych żmudnych operacji.
Na przykład poniższy kod tworzy instancję EosTool za pomocą NodeClient i LocalSigner, a następnie przesyła transakcję:
Wygodne jest zmienić signer na KeosdSigner, na przykład:


8. Odwołanie pojedynczej pozwy kontraktowej
Użyj metody pushAction() w EosTool, aby wywołać pojedynczą akcję kontraktu. Na przykład poniższy kod wywołuje metodę hi() kontraktu hostingowego konta Tommy:



9. Wdrożenie kontraktu
Wdrożenie kontraktu za pomocą metody setContract() w EosTool, na przykład:
Zainteresowani przyjaciele mogą wejść tutaj:http://t.cn/EUZAODQ




Opublikowano 11.12.2018 08:59:58 |
Dzięki. Bardzo przydatne.
 Ziemianin| Opublikowano 11.12.2018 09:06:52 |
Summer Opublikowano 2018-12-11 08:59
Dzięki. Bardzo przydatne.

Dziękuję za wsparcie.
Opublikowano 11.12.2018 09:11:46 |
Przeczytałem dużo treści na twojej stronie i mam wrażenie, że niektóre z nich to przetłumaczone artykuły zagraniczne
Opublikowano 11.12.2018 09:32:07 |
Spójrz na dziękuję szefowi za wzbogacenie się
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com