コンテンツにスキップ

Ethereumゲートウェイを使用する

Ethereumゲートウェイを入手したら(つまり、新しいゲートウェイを作成し、targetEthereumに設定したら)、クエリに適切な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コマンドを使用できます:

Terminal window
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コマンドでトランザクションをネットワークに送信できます:

Terminal window
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();
});

(上記の実際のコマンドは機能しません - 自分で署名したトランザクションを提供する必要があります。)