本文へスキップ
BecomeCoder

C#実践コース · 第10章 ブロックチェーンとC# · レッスン56

ブロックチェーンとC# ― Nethereum入門

ローカル実施

導入

ブロックチェーンは「改ざんが極めて困難な、分散管理された台帳」です。その代表格がEthereum。C#からEthereumに接続する定番ライブラリがNethereum(NuGet: Nethereum.Web3)です。まずは接続して残高を照会するところから始めます。

図解

flowchart LR
    APP["C♯アプリ<br/>Nethereum.Web3"] -->|JSON-RPC| NODE["Ethereumノード<br/>(Infura等のRPCエンドポイント)"]
    NODE --> CHAIN[("ブロックチェーン<br/>分散台帳")]
    style CHAIN fill:#fff3e0

サンプル(読み物)

using Nethereum.Web3;
using Nethereum.Util;

// RPCエンドポイント(Infura等)に接続。必ずテストネットを使う
var web3 = new Web3("https://sepolia.infura.io/v3/YOUR_PROJECT_ID");

// 最新のブロック番号を取得(接続確認)
var blockNumber = await web3.Eth.Blocks.GetBlockNumber.SendRequestAsync();
Console.WriteLine($"最新ブロック: {blockNumber.Value}");

// アドレスの残高(wei単位)を照会し、Ether単位に変換
string address = "0xあなたのテストネットアドレス";
var balanceWei = await web3.Eth.GetBalance.SendRequestAsync(address);
decimal ether = Web3.Convert.FromWei(balanceWei.Value);
Console.WriteLine($"残高: {ether} ETH");
  • Web3(RPC URL)でノードに接続する(Infura/Alchemy等がRPCを提供)
  • 残高は最小単位weiで返る(1 ETH = 10^18 wei)。Web3.Convert.FromWeiでETHに変換
  • すべて非同期(SendRequestAsyncawait
  • アカウント=アドレス(公開)+秘密鍵。秘密鍵は絶対に共有・コミットしない(漏洩=資産喪失)

詳細手順

  1. Infura等でアカウントを作り、**テストネット(Sepolia)**のRPCエンドポイントURLを取得する
InfuraのダッシュボードでSepoliaテストネットのエンドポイントURLを確認する画面
InfuraでテストネットのRPCエンドポイントを取得
  1. Visual Studioでdotnet add package Nethereum.Web3を実行し、スターター148-nethereum-intro/starter.zipを開く
  2. テストネットのウォレット(MetaMask等)を用意し、フォーセットで無料のテストETHを受け取る
  3. F5実行し、ブロック番号と残高が取得できることを確認する

まとめ

  • Nethereum(Nethereum.Web3)でC#からEthereumに接続する
  • 残高はwei単位、Web3.Convert.FromWeiでETHに変換
  • 秘密鍵は厳重管理、学習は必ずテストネットで

次回: 実際に送金する「トランザクションとガス」です。

テンプレート構成(教材制作用メモ)

148-nethereum-intro/
└── starter.zip   # Nethereum.Web3導入済み / 接続&残高照会TODO / README(Infura/フォーセット手順)