Ethereumゲートウェイを使用する
Ethereumゲートウェイを入手したら(つまり、新しいゲートウェイを作成し、targetをEthereumに設定したら)、クエリに適切なJSONブロブを指定することでさまざまなEthereumネットワークと対話できます。
Cloudflare Ethereumゲートウェイでは、リクエストのボディを行いたいリクエストのJSONボディに設定したHTTPリクエストを許可します。例えば、番号0x2244のブロックを読み取りたい場合、JSONブロブは以下の形式になります:
{ "jsonrpc": "2.0", "method": "eth_getBlockByNumber", "params": ["0x2244", true], "id": 1}各ブロブは有効なmethodパラメータを使用します。ここでのparams配列には、特定したいブロック番号と、ブロック内の各トランザクションを完全に表示する(true)か、スタブとして表示する(false)かを示すブール値が含まれています。
このクエリをカスタムEthereumゲートウェイに送信するには、cURLコマンドを使用できます:
curl https://web3-trial.cloudflare-eth.com/v1/mainnet -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x2244", true],"id":1}'JS Fetch APIを使用して同じクエリを書くこともできます:
await fetch( new Request("https://web3-trial.cloudflare-eth.com/v1/mainnet", { method: "POST", body: JSON.stringify({ jsonrpc: "2.0", method: "eth_getBlockByNumber", params: ["0x2244", true], id: 1, }), headers: { "Content-Type": "application/json", }, }),).then((resp) => { return resp.json();});どちらの場合も、レスポンスは以下の形式のJSONブロブになります:
{ "jsonrpc": "2.0", "id": 1, "result": { "difficulty": "0x746ef15b66", "extraData": "0x476574682f76312e302e302f6c696e75782f676f312e342e32", "gasLimit": "0x1388", "gasUsed": "0x0", "hash": "0xd6bb42034740c5d728e774e43a01f26222e0fcc279c504ca5963dc34fe70f392", "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "miner": "0xf927a40c8b7f6e07c5af7fa2155b4864a4112b13", "mixHash": "0x975da446e302e6da6cedb3fbaa763c3c203ae88d6fab4924e2a3d34a568c4361", "nonce": "0x88a7f12f49151c83", "number": "0x2244", "parentHash": "0x067fd84ecdbc7491bf5ec7d5d4ead361b1f590eec74797a7f90b4a7d7004a48d", "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", "size": "0x21b", "stateRoot": "0x828dade2067283e370993ec6a1bda0e65c1310e404a6d5bbb030b596eb80017c", "timestamp": "0x55bb040f", "totalDifficulty": "0x5c328da43525d", "transactions": [], "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", "uncles": [] }}現在、Ethereumゲートウェイではeth_sendRawTransaction RPCメソッドを使用してネットワークに書き込むことができます。これにより、署名されたトランザクションの新しいメッセージコールトランザクションまたはコントラクト作成が行われます。トランザクションは、あなた自身のEthereumウォレット ↗に対応する秘密鍵を使用して署名されます。
ウォレットをセットアップし、自分のトランザクションに署名する方法を用意したら、Cloudflare Ethereumゲートウェイを介してそのトランザクションをEthereumネットワークに書き込むことができます。署名されたトランザクションは以下の形式の16進数文字列を使用します:
"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"その後、カスタムゲートウェイを使用してcURLコマンドでトランザクションをネットワークに送信できます:
curl https://web3-trial.cloudflare-eth.com/v1/mainnet -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"eth_sendRawTransaction","params":["0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"],"id":1}'JS Fetch APIリクエストを使用することもできます:
await fetch( new Request("https://web3-trial.cloudflare-eth.com/v1/mainnet", { method: "POST", body: JSON.stringify({ jsonrpc: "2.0", method: "eth_sendRawTransaction", params: [ "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675", ], id: 1, }), headers: { "Content-Type": "application/json", }, }),).then((resp) => { return resp.json();});(上記の実際のコマンドは機能しません - 自分で署名したトランザクションを提供する必要があります。)