C#如何在.net平臺上開發以太坊應用

若是咱們但願構造一個去中心化應用(DApp),除了智能合約的開發, 一般還須要使用其餘開發語言爲用戶提供操做智能合約的用戶接口,例如 開發一個網頁、一個手機App或者一個桌面應用。這些代碼都須要與以太坊 進行交互。web

以太坊規定了每一個節點須要實現的JSON RPC API 應用開發接口,該接口是傳輸無關的,應用程序能夠經過HTTP、websocket或IPC等多種 通訊機制來使用該接口協議操做以太坊節點:json

匯智網

理論上你可使用任何語言基於JSON RPC接口開發出以太坊之上的 去中心化應用,不過爲了提升開發效率,更好的辦法是 使用特定語言的JSON RPC封裝庫,這些庫封裝了JSON RPC的協議細節, 有助於開發人員聚焦在業務邏輯的實現上。websocket

Nethereum是以太坊官方推薦的.Net開發包,用於支持在.Net應用中訪問 以太坊。在本課程中,咱們將主要基於Nethereum開發包,使用C#語言來開發支持以太坊的.Net應用。app

本課程的目的是幫助.Net工程師快速掌握開發以太坊應用的技能,同時穿插 講解以太坊的一些核心概念,例如:帳戶、交易和智能合約等。異步

1.Hi,以太坊socket

這一章將經過一個簡單的.Net應用的開發來說解使用 C#進行以太坊應用開發的最簡流程,經過這一部分的學習,你就能夠在本身 的.Net應用中引入基本的以太坊支持了。async

2.帳戶管理學習

這一章將詳細介紹以太坊的帳戶管理接口。若是你 對開發中心化錢包應用感興趣,或者須要在本身的網站中動態建立帳戶(例如,你 但願爲網站增長對以太坊支付的支持),那麼這部份內容會有很大的幫助。網站

3.理解狀態與交易 這一章主要講解以太坊的交易操做接口,同時也介紹一些 重要的概念,例如狀態、裸交易、gas等。這部份內容將幫助你理清.Net 應用與以太坊交互的大多數問題。spa

4.智能合約的開發與應用 這一章將經過一個ERC20代幣合約的開發、編譯、代碼生成、部署與交互 的完整流程,講解使用C#.Net操做solitiy合約的方法。若是你但願爲本身的 應用增長代幣支持,這一部分的內容是必須的。

5.過濾器與事件 這一章主要講解以太坊的通知機制以及如何在.Net應用中使用過濾器來監視 塊和交易的生成與合約事件的觸發。

課程內容示例:使用C#獲取節點版本信息

咱們只要在C#代碼中按照以太坊RPC接口要求發送http請求包就能夠了。 你可使用任何一個你喜歡的http庫,甚至直接使用socket來調用以太坊的JSON RPC API。

例如,下面的代碼使用.Net內置的HttpClient類來訪問以太坊節點,注意代碼中的註釋:

using System;
using System.Threading.Tasks;
using System.Net.Http;
using System.Text;

namespace diy{
  class Program  {
    static void Main(string[] args)    {
      Task.Run(async () => { //使用Task包裝http異步請求
        HttpClient httpClient = new HttpClient();

        //請求報文:JSON格式的字符串
        string payload = "{\"jsonrpc\":\"2.0\",\"method\":\"web3_clientVersion\",\"params\":[],\"id\":7878}";

        //向節點提交請求報文  
        StringContent content = new StringContent(payload,Encoding.UTF8,"application/json");
        HttpResponseMessage rsp = await httpClient.PostAsync("http://localhost:8545",content);

        //提取並顯示響應報文:JSON格式的字符串        
        string ret = await rsp.Content.ReadAsStringAsync();
        Console.WriteLine(ret);        
      }).Wait(); //等待異步任務結束
    }
  }
}

課程爲每一個知識點都提供了相應的預置代碼,你能夠在實驗環境的~/repo 目錄下查看。

若是你但願快速的開始使用.net和C#開發以太坊應用,那這個課程會頗有幫助,課程地址以下:

C#以太坊

相關文章
相關標籤/搜索