C#工程师基于.net开发以太坊智能合约与dapp应用的教程

如果我们希望构造一个去中心化应用(DApp),除了智能合约的开发,通常还需要使用其他开发语言为用户提供操作智能合约的用户接口,例如开发一个网页、一个手机App或者一个桌面应用。这些代码都需要与以太坊进行交互。

以太坊规定了每个节点需要实现的JSON RPC API应用开发接口,该接口是传输无关的,应用程序可以通过HTTP、websocket或IPC等多种通信机制来使用该接口协议操作以太坊节点。

理论上你可以使用任何语言基于JSON RPC接口开发出以太坊之上的 去中心化应用,不过为了提高开发效率,更好的办法是 使用特定语言的JSON RPC封装库,这些库封装了JSON RPC的协议细节,有助于开发人员聚焦在业务逻辑的实现上。

Nethereum是以太坊官方推荐的.Net开发包,用于支持在.Net应用中访问以太坊。在本课程中,我们将主要基于Nethereum开发包,使用C#语言来开发支持以太坊的.Net应用。

本课程的目的是帮助.Net工程师快速掌握开发以太坊应用的技能,同时穿插 讲解以太坊的一些核心概念,例如:账户、交易和智能合约等。

1.Hi,以太坊

这一章将通过一个简单的.Net应用的开发来讲解使用 C#进行以太坊应用开发的最简流程,通过这一部分的学习,你就可以在自己 的.Net应用中引入基本的以太坊支持了。

2.账户管理

这一章将详细介绍以太坊的账户管理接口。如果你 对开发中心化钱包应用感兴趣,或者需要在自己的网站中动态创建账户(例如,你 希望为网站增加对以太坊支付的支持),那么这部分内容会有很大的帮助。

3.理解状态与交易 这一章主要讲解以太坊的交易操作接口,同时也介绍一些 重要的概念,例如状态、裸交易、gas等。这部分内容将帮助你理清.Net 应用与以太坊交互的大多数问题。

4.智能合约的开发与应用 这一章将通过一个ERC20代币合约的开发、编译、代码生成、部署与交互 的完整流程,讲解使用C#.Net操作solitiy合约的方法。如果你希望为自己的 应用增加代币支持,这一部分的内容是必须的。

5.过滤器与事件 这一章主要讲解以太坊的通知机制以及如何在.Net应用中使用过滤器来监视 块和交易的生成与合约事件的触发。

课程内容示例:使用C#获取节点版本信息

我们只要在C#代码中按照以太坊RPC接口要求发送http请求包就可以了。 你可以使用任何一个你喜欢的http库,甚至直接使用socket来调用以太坊的JSON RPC API。

例如,下面的代码使用.Net内置的HttpClient类来访问以太坊节点,注意代码中的注释:

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
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#以太坊

如果是其他语言开发以太坊应用的可以参考以下教程:

  • web3j教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。

汇智网原创,转载请标明出处。