この記事は、PHP と Ethereum クライアントの間の相互作用に関する関連知識のポイントを示しており、必要な友人がフォローして学ぶことができます。
phpはイーサリアムrpcサーバーと通信します
1. Json RPC
Json RPCはjsonに基づくリモートプロシージャコールです。 この説明は比較的抽象的です。簡単に言うと、rpcサーバーにメソッドを呼び出すためにjson形式でデータを投稿することですが、このjson形式は大まかにいくつかの項目があります:
method:メソッド名。1 2 3 4 5 |
|
3. RPC を呼び出すための 2 種類のメソッド
呼び出す必要があるメソッドは 2 種類あります。1 つは RPC サーバー独自のメソッドです。 、もう 1 つはコントラクト メソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
|
コントラクト メソッドを呼び出すには、組み込みメソッドで eth_call を使用する必要があります。コントラクト メソッド名とコントラクト メソッドのパラメーター リストは、params を使用して反映されます。コントラクト内で BalanceOf メソッドを呼び出したい場合、JSON データはどのように構築されるべきでしょうか?
1 2 3 4 5 |
|
1 |
|
geth コンソールでコマンドを実行します:
1 |
|
関数ハッシュ "0x70a08231" を取得します
仮定 クエリされるアドレスは address _owner = "0x38aabef4cd283ccd5091298dedc8" です8d27c5ec5750" を選択し、先頭の "0x" を削除します。左側に 24 個のゼロを追加し (一般的なアドレスの長さは 42 ビットで、「0x」を削除すると 40 ビットになります)、64 ビットの 16 進数を形成します。 パラメーターをカスタマイズします。
最後のパラメーターは、「0x70a082310000000000000000000000038aabef4cd283ccd5091298ded」です。 c88d27c5ec5750"
コントラクト アドレスが "0xaeab4084194B2a425096 fb583Fbcd67385210ac3" であるとします。
その場合、最終的な JSON データは次のようになります:
1 |
|
上記の JSON データをポスト モードでサーバーに送信し、コントラクト メソッド "balanceOf" を呼び出してクエリを実行できます。指定されたアドレスのトークン残高。
コントラクト内の他のメソッドを呼び出す場合も、上記のメソッドに従う必要があります。印象を深めるために、転送メソッドを再度分析してみましょう:
まず、コード内の関数の実装を見てください:
1 2 3 4 5 |
|
次に、関数プロトタイプを抽出します:
1 |
|
第三に、コンソールで sha3 関数を実行します:
1 |
|
関数ハッシュ「0xa9059cbb」を取得します
最初のパラメータはアドレスを想定しています_へ= "0x38aabef4cd283ccd5091298dedc88d27c5ec5750"、次に "0x" に移動し、64 ビットにゼロを追加します。
2 番目のパラメーターは uint256 _value = 43776 を想定しており、その後 16 進数に変換されます "0xab00" の後、"0x" に移動し、 64 ビットにゼロを追加しますそれらを接続します
"0xa9059cbb000000000000000000000000038aabef4cd283ccd5091298dedc88d27c5ec5750000000000000 00000000000 00000000000000000000000000000000ab00"
json データを構築:
1 |
|
転送者アドレス
Ethereum RPCクライアントを構築します
1 2 3 4 5 |
|
コードは比較的単純ですが、注意すべき点がいくつかあります ポイント: 値の単位
伝達関数の は 10 ^ -18 と非常に小さいため、1000 回転送したい場合は、実際には 10 の 18 乗を掛ける必要があります (18 は小数です)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
|
以上がphpとイーサリアムクライアント間のやり取りの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。