Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 9838|Yanıt: 4

EOS Blockchain PHP Geliştirme Kiti

[Bağlantıyı kopyala]
Yayınlandı 11.12.2018 08:56:36 | | |
Bu gönderi en son jimi2018 tarafından 2018-12-11 09:06 tarihinde düzenlenmiştir

1. Geliştirme paketi genel görünümü
EosTool'un amacı, PHP kullanarak EOS blok zinciri uygulamaları geliştirmenin acısını ortadan kaldırmaktır; örneğin:
  • Fonksiyonlarını Nodeos ve Keosd'nin RPC arayüzü üzerinden çağırın
  • EOS formatında çevrimdışı özel ve açık anahtarlar oluşturun
  • EOS uyumlu işlem imzaları oluşturmak için yerel özel anahtarınızı kullanın
  • İşlem nesnelerini Nodeos'un gerektirdiği packed_trx formata seri şekilde dönüştürün
EosTool'un, EOS'un resmi istemci Cleos'un işlevlerini tam olarak uygulamak için kullanılabilen bir eosjs versiyonu olduğu düşünülebilir ve ayrıca PHP uygulamalarında EOS blok zinciri desteğine kolayca eklenebilir, böylece geliştirme verimliliği büyük ölçüde artırılabilir.

İlgilenen arkadaşlar doğrudan bu adrese gidip EOS blokzincir PHP geliştirme kitini indirebilirler:http://t.cn/EUZAODQ

EosTool, Php 7.1+ ortamında çalışıyor, mevcut sürüm 1.0.0 ve ana kod dosyalarının listesi şu şekildedir:

Kod dosyalarıGöstermek
eostool/src/client/NodeClient.phpDüğüm yazılımı nodeo'larının RPC arayüz paket sınıfı
eostool/src/client/WalletClient.phpCüzdan yazılımı KEOSD'nin RPC arayüz kapsülleme sınıfı
eostool/src/client/RpcOutput.phpRPC, ortaya çıkan kapsülleme sınıfını döndürüyor
eostool/src/Crypto/PrivateKey.phpEOS özel anahtar sınıfı
eostool/src/Crypto/PublicKey.phpEOS açık anahtar sınıfı
eostool/src/Crypto/Signature.phpEOS imza sınıfı
eostool/src/Serializer/AbiType.phpEOS'un ABI tip paket sınıfı
eostool/src/Serializer/AbiTypeFactory.phpABI tipi fabrika sınıfı
eostool/src/Serializer/SerialBuffer.phpSerileştirilmiş tampon uygulama sınıfı
eostool/src/Serializer/Serializer.phpserileştirici uygulama sınıfı
eostool/src/Signer/Signer.phpİmzacı arayüzü
eostool/src/Signer/KeosdSigner.phpKeosd işaretçi uygulama sınıfı
eostool/src/Signer/LocalSigner.phpYerel çevrimdışı imzacı uygulaması
eostool/src/Contract.phpSözleşme sınıfı
eostool/src/EosTool.phpGeliştirme paketi giriş sınıfı
eostool/testlerBirim test vakası kataloğu
eostool/phpunit.xmlBirim test profilleri
eostool/satıcıÜçüncü taraf bağımlılık paketleri
eostool/composer.jsonComposer yapılandırma dosyası
2. Düğüm sunucusuna erişim
Nodeos'un rpc arayüzüne erişmek için NodeClient sınıfını kullanın. Örneğin, aşağıdaki kod, yerel olarak çalışan bir Nodeos düğümü için zincir eklentisinin get_info arayüzüne erişir:
2.1 RPC çağrı grubu

EosTool tutarlı bir adlandırma yöntemi benimser ve NodeClient çağrı yöntemi API'ye göre çıkarılabilir: API gruplama, NodeClient ile aynı isimli bir özelliğe karşılık gelir ve API, CamelCase tarafından No'nun İstemcisi grubuyla aynı ada sahip bir özniteliğe dönüştürülmüş bir yönteme karşılık gelir. Örneğin:



EklentilerAPI gruplandırmasıRPC API'siNodeClient yöntemi
chain_api_pluginzincirget_info$nc->chain->getInfo()
history_api_pluginTarihçeget_transaction$nc->history->getTransaction()
net_api_pluginDurum$nc->net->status()
producer_api_pluginYapımcıget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsizeAl$nc->dbsize->get()

RPC API için resmi dokümantasyon:https://developers.eos.io/eosio-nodeos/reference

2.2 RPC Çağrı Parametreleri

Nodeos için, bazı çağrılar zincir eklentisinin get_block arayüzü gibi ek parametrelerin aktarılmasını gerektirir; EosTool kullanılarak çağrı yapılırken, parametreleri ilişkili bir diziye düzenlesin, örnek kodu şöyledir:



2.3 RPC çağrıları değer döndürüyor

Tüm RPC çağrılarının geri dönüş sonucu bir RpcOutput örneğidir ve hasError() yöntemini çağırmak çağrının yanlış olup olmadığını belirleyebilir; ayrıca getError() yöntemini kullanarak hata bilgisi elde edebilirsiniz.
RPC çağrısının yanıtı, orijinal JSON sonucundan dönüştürülmüş bir StdClass nesnesi olan getResult() yöntemiyle elde edilebilir; böylece bu özellik bilgisi kolayca çıkarılabilir, örneğin:

2.4 Mainnet/testnet düğümlerine erişim

Bir NodeClient örneği oluşturulurken, EOS ana ağı veya test ağı düğümlerini tanımlamak için ek parametre yürütmeleri iletilebilir. Örneğin, ana ağ düğümüne erişmek için aşağıdaki kodu kullanın:

Ya da Jungle testnet'te bir düğümü ziyaret edin:


3. Cüzdan sunucusuna erişin
Keosd'un yeni sürümü artık RPC API dokümantasyonu sağlamıyor, bu da EOS yazılım yığınında sınırlara kaymaya başladığı anlamına gelebilir. Ancak, dokümantasyonun eski sürümüne şu adresten erişebilirsiniz:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

Keosd'nin rpc arayüzüne erişmek için WalletClient sınıfını kullanın. Örneğin, aşağıdaki kod, Keosd'un doğal olarak çalışan list_wallets arayüzüne erişir:
Keosd'nin API'si artık gruplanmadığı için, RPC'ye karşılık gelen yöntem doğrudan WalletClient nesnesine akıllıdır ki bu da bir farktır. NodeClient gibi, WalletClient çağrısı bir RpcOutput nesnesi döndürür.

Keosd 1.4 sürümü, varsayılan olarak RPC arayüzleri sağlamak için HTTP yerine UNIX soketleri kullanır; bu da çoğu durumda Keosd'nin doğal çalıştığı için IPC kullanmak daha güvenli sayılabilir. Bu nedenle, bu aynı zamanda WalletClient için varsayılan başlatma seçeneğidir ve çoğu durumda WalletClient'ı örneklemek için ek parametreler aktarılmasına gerek yoktur.

4. Özel ve açık anahtarlar

EOS'un ana algoritması Bitcoin'e benzer, ancak bazı ayarlamalar ve kendi formatını tanımlamaktadır.
Rastgele özel anahtar oluşturmak için PrivateKey sınıfı new()'nin statik yöntemini kullanın. Örneğin:
toEos() yöntemi, özel anahtar nesnelerini EOS için özel bir formata dönüştürmek amacıyla kullanılır.

4.1 Açık Anahtar Türetimi
Açık anahtar, özel anahtardan türetilebilir, örneğin:


Benzer şekilde, açık anahtarı EOS için özel bir formata dönüştürmek için toEos() yöntemini kullanın.

4.2 EOS Özel Anahtarlarını İçe Aktar
Örneğin, aşağıdaki kod belirtilen EOS özel anahtarını EosTool Özel Anahtarı nesnesine dönüştürebilir; aşağıdaki kod belirtilen EOS özel anahtarını içe aktarır ve ona karşılık gelen EOS açık anahtarını gösterir:

4.3 Yetkili imza
PrivateKey'in sign() yöntemi, EOS düğümlerinin gerektirdiği hem normal imzaları hem de yetkili imzaları destekler. Örneğin, aşağıdaki kod düz bir imza döndürür:

Belirtilen veriler için yetkili bir imza elde etmek amacıyla ek parametreler verin:



5. Serileştirme
EOS, işlemlerin düğüm push_transaction bağlanmadan önce seri hale getirilmesini gerektirir; bu da PHP'de EOS işlemlerinin yürütülmesinde kaçınılmaz bir parçadır.
EosTool'da, serileştirme işlemleri için Serializer sınıfı kullanılır. Örneğin, aşağıdaki kod, EOS transfer işlemini 16 ondalık bir kod akışı formatına serileştirir ve bu bir EOS düğümüne gönderilebilir:


Serializer'ın fromAbi() statik yöntemi, belirli bir abi temelinde serilikleştirici örneği oluşturmak için kullanılır ve ardından örneğin seriyele() yöntemi, belirli veri türünü serialize etmek için onaltılık kod akışı elde etmek için kullanılır.

6. İmza
EosTool, işlemleri imzalamak için iki yol sunar: imzalamak için Keosd kullanmak veya yerel özel anahtar kullanmak.
Cüzdan sunucusunu kullanarak imzayı tamamlamak için KeosdSigner sınıfını kullanın. Örneğin:

LocalSigner sınıfını kullanarak keosd kullanmaktan kaçınabilir ve doğrudan çevrimdışı özel anahtar imzalamayı kullanabilirsiniz. Örneğin:
EosTool\Signer\LocalSigner kullanın;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = yeni LocalSigner($prvKeys);
$signatures = $signer->işaret($tx,$pubKeys,$chainId);



7. İşlem Teslimi
Bir işlem verinin, Nodeos düğümüne yayınlanmadan önce bir dizi işlemle normalleştirilmeli, serileştirilmeli, imzalanmalı ve paketlenmelidir. EosTool sınıfı, bu sıkıcı işlemleri izole etmek için işlem() yöntemini sağlar.
Örneğin, aşağıdaki kod NodeClient ve LocalSigner kullanarak bir EosTool örneği oluşturur ve ardından bir işlem gönderir:
İmzacıyı KeosdSigner olarak değiştirmek pratik olabilir, örneğin:


8. Tek bir sözleşme davasını başlatmak
Tek bir sözleşme eylemini çağırmak için EosTool'un pushAction() yöntemini kullanın. Örneğin, aşağıdaki kod Tommy hesabı barındırma sözleşmesinin hi() yöntemini çağırır:



9. Sözleşmeyi dağıtın
Sözleşmeyi EosTool'un setContract() yöntemiyle dağıtın, örneğin:
İlgilenen arkadaşlar buraya ulaşabilir:http://t.cn/EUZAODQ




Yayınlandı 11.12.2018 08:59:58 |
Teşekkürler. Çok faydalı
 Ev sahibi| Yayınlandı 11.12.2018 09:06:52 |

Desteğiniz için teşekkürler.
Yayınlandı 11.12.2018 09:11:46 |
Sitenizde çok fazla içerik okudum ve bazılarının çevirilmiş yabancı makaleler olduğunu düşünüyorum
Yayınlandı 11.12.2018 09:32:07 |
Zengin olduğu için teşekkür patronuna bak
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com