この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 9838|答える: 4

EOSブロックチェーンPHP開発キット

[リンクをコピー]
掲載地 2018/12/11 8:56:36 | | |
この投稿はjimi2018によって2018年12月11日09:06に最終編集されました。

1. 開発パッケージの概要
EosToolの目的は、PHPを使ったEOSブロックチェーンアプリケーションの開発における煩わしさを排除することです。例えば:
  • NodeosおよびKeosdのRPCインターフェースを通じてその関数を呼び出します
  • オフラインでEOS形式のプライベート鍵および公開鍵を生成できます
  • ローカルの秘密鍵を使ってEOS準拠のトランザクション署名を生成します
  • Nodeosで求められるpacked_trx形式にトランザクションオブジェクトをシリアライズします
EosToolはEOSJSのPHP版と見なすことができ、EOS公式クライアントCleosの機能を完全に実装するために使え、PHPアプリケーションにおけるEOSブロックチェーンのサポートにも容易に追加できるため、開発効率を大幅に向上させます。

興味のある友人は、EOSブロックチェーンPHP開発キットをダウンロードするために直接こちらへアクセスすることもできます:http://t.cn/EUZAODQ

EosToolはPhp 7.1+環境で動作し、現在のバージョンは1.0.0で、主なコードファイル一覧は以下の通りです。

コードファイル説明
EOSTOOL/SRC/クライアント/NodeClient.phpノードソフトウェアnodeosのRPCインターフェースパッケージクラス
eostool/src/client/WalletClient.phpウォレットソフトウェアKEOSDのRPCインターフェースカプセル化クラス
EOSTOOL/SRC/クライアント/RpcOutput.phpRPCはその結果として得られたカプセル化クラスを返します
eostool/src/Crypto/PrivateKey.phpEOS秘密鍵クラス
eostool/src/Crypto/PublicKey.phpEOS公開鍵クラス
eostool/src/Crypto/Signature.phpEOSシグネチャクラス
eostool/src/Serializer/AbiType.phpEOSのABI型パッケージクラス
eostool/src/Serializer/AbiTypeFactory.phpABI型工場クラス
eostool/src/シリアルライザー/SerialBuffer.phpシリアライズバッファ実装クラス
eostool/src/Serializer/Serializer.phpシリアライザ実装クラス
eostool/src/Signer/Signer.phpシネーナーインターフェース
eostool/src/Signer/KeosdSigner.phpKeosd 署名者実装クラス
eostool/src/Signer/LocalSigner.phpローカルオフライン署名器実装
EOSTOOL/SRC/Contract.php契約クラス
EOSTOOL/SRC/EosTool.php開発パッケージエントリクラス
EOSTOOL/検査ユニットテストケースカタログ
エオスツール/phpunit.xmlユニットテストプロファイル
EOSTOOL/ベンダーサードパーティ依存パッケージ
エオスツール/composer.json作曲家設定ファイル
2. ノードサーバーへのアクセス
NodeClientクラスを使ってNodeOSのrpcインターフェースにアクセスしてください。 例えば、以下のコードはネイティブで動作するNodeosノードのチェーンプラグインのget_infoインターフェースにアクセスします。
2.1 RPCコールグルーピング

EosToolは一貫した命名方法を採用しており、NodeClientの呼び出しメソッドはAPIに基づいて推論できます。APIのグループ化はNodeClientと同じ名前のプロパティに対応し、APIはClient of Noのグルーピングと同じ属性でcamelCaseによって変換されたメソッドに対応します。 例えば:



プラグインAPIグルーピングRPC APINodeClientメソッド
chain_api_plugin連鎖get_info$nc->chain->getInfo()
history_api_plugin歴史get_transaction$nc->history->getTransaction()
net_api_pluginネット状況$nc->net->status()
producer_api_pluginプロデューサーget_runtime_options$nc->producer->getRunTimeOptions()
dbsize_api_plugindbsize取得$nc->dbsize->get()

RPC APIの公式ドキュメント:https://developers.eos.io/eosio-nodeos/reference

2.2 RPCコールパラメータ

Nodeosの場合、チェーンプラグインのget_blockインターフェースなど追加のパラメータを渡す必要がある場合もあります。EosToolを使って呼び出しを行う際は、パラメータを関連付けた配列に整理するだけです。サンプルコードは以下の通りです:



2.3 RPC呼び出しの返す値

すべてのRPC呼び出しの返却結果はRpcOutputインスタンスであり、そのhasError()メソッドを呼び出して呼び出しが間違っているかどうかを判断でき、さらにgetError()メソッドを使ってエラー情報を得ることもできます。
RPC呼び出しの応答はgetResult()メソッドを通じて得られます。これは元のJSON結果から変換されたStdClassオブジェクトであり、例えば以下の属性情報を簡単に抽出できます。

2.4 メインネット/テストネットノードへのアクセス

NodeClientインスタンスを作成する際には、EOSメインネットやテストネットのノードを定義するために追加のパラメータ実行を渡すことができます。 例えば、メインネットノードにアクセスするには以下のコードを使用します。

あるいはJungleテストネットのノードを訪れてみてください:


3. ウォレットサーバーへのアクセス
新バージョンのKeosdはもはやRPC APIドキュメントを提供していないため、EOSソフトウェアスタックの端に滑り落ち始めている可能性があります。 ただし、この住所から旧版のドキュメントにアクセスできます:
https://developers.eos.io/eosio-nodeos/v1.1.0/reference

WalletClientクラスを使ってKeosdのrpcインターフェースにアクセスしてください。 例えば、以下のコードはネイティブで動作するKeosdのlist_walletsインターフェースにアクセスします。
KeosdのAPIはもはやグループ化されていないため、対応するRPCメソッドはWalletClientオブジェクトに直接ハングされており、これは違いです。 NodeClientと同様に、WalletClientへの呼び出しはRpcOutputオブジェクトを返します。

Keosdバージョン1.4は、デフォルトでHTTPではなくUNIXソケットを使ってRPCインターフェースを提供しており、ほとんどの場合Keosdがネイティブで動作していることから、IPCを使う方が安全と考えられます。 したがって、これはWalletClientのデフォルトのインスタンス化オプションでもあり、ほとんどの場合、WalletClientをインスタンス化するために追加のパラメータを渡す必要はありません。

4. 秘密鍵と公開鍵

EOSの主要なアルゴリズムはビットコインに似ていますが、いくつかの調整と独自のフォーマットの定義が加えられています。
privateKeyクラスnew()の静的メソッドを使ってランダムな秘密鍵を生成します。 例えば:
toEos() メソッドは、秘密鍵オブジェクトをEOS用のカスタムフォーマットに変換するために使われます。

4.1 公開鍵の派生
公開鍵は秘密鍵から導出できます。例えば:


同様に、toEos()メソッドを使って公開鍵をEOS用のカスタムフォーマットに変換してください。

4.2 EOS秘密鍵のインポート
EOS形式の秘密鍵をEosToolのプライベートキーオブジェクトに変換できます。例えば、以下のコードは指定されたEOS秘密鍵をインポートし、対応するEOS公開鍵を表示します。

4.3 権威ある署名
PrivateKeyのsign()メソッドは、EOSノードに必要な通常の署名と権威的な署名の両方をサポートします。 例えば、以下のコードはプレーン署名を返します:

指定されたデータに対して権威ある署名を得るために追加のパラメータを入力します:



5. 連載
EOSはノードpush_transactionをコミットする前にトランザクションをシリアライズすることを必要としており、これはPHPでのEOSトランザクションの運用においても避けられない部分です。
EosToolでは、Serializerクラスがシリアライズ操作に使用されます。 例えば、以下のコードはEOS転送トランザクションを16桁の16進コードストリーム形式にシリアライズし、EOSノードに提出できます:


Serializerの静的メソッド(Serializer)のAbi()を使って指定されたabiに基づいてシリアライザーインスタンスを構築し、その後インスタンスのserialize()メソッドを使って指定された種類のデータをシリアライズし、16進コードストリームを取得します。

6. 署名
EosToolはトランザクション署名の2つの方法を提供しています:Keosdを用いて署名するか、ローカル秘密鍵を使う方法です。
KeosdSignerクラスを使ってウォレットサーバーを使って署名を完了します。 例えば:

LocalSignerクラスを使うことで、keosdを使わずにオフラインの秘密鍵署名を直接利用できます。 例えば:
Use EosTool\Signer\LocalSigner;

$prvKeys = ['5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3'];
$signer = 新しいLocalSigner($prvKeys);
$signatures = $signer->符号($tx,$pubKeys,$chainId);



7. 取引提出
トランザクションデータは、Nodeosノードにブロードキャストのために提出する前に、正規化、シリアライズ、署名、パッケージ化を経て一連の操作を経る必要があります。 EosToolクラスは、これらの面倒な操作を分離するためのtransact()メソッドを提供します。
例えば、以下のコードではNodeClientとLocalSignerを使ってEosToolインスタンスを作成し、トランザクションを送信します。
例えば、署名者をKeosdSignerに変更するのは便利です。


8. 単一の契約訴訟を発動する
EosToolのpushAction()メソッドを使って、単一のコントラクトアクションを呼び出してください。 例えば、以下のコードはTommyアカウントホスティング契約のhi()メソッドを呼び出しています:



9. 契約の展開
例えば、EosToolのsetContract()メソッドを使ってコントラクトをデプロイします:
興味のある友人はこちらへ行けます:http://t.cn/EUZAODQ




掲載地 2018/12/11 8:59:58 |
ありがとうございます。とても参考になりました
 地主| 掲載地 2018/12/11 9:06:52 |
2018年12月11日 08:59に投稿
ありがとうございます。とても参考になりました

応援ありがとうございます。
掲載地 2018/12/11 9:11:46 |
あなたのサイトで多くのコンテンツを読んできましたが、その中には翻訳された外国語の記事もあると感じています
掲載地 2018/12/11 9:32:07 |
金持ちになってくれてありがとう、ボスを見ろよ
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com