如果我们希望构造一个去中心化应用(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类来访问以太坊节点,注意代码中的注释:
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#开发以太坊应用,那这个课程会很有帮助,课程地址如下:
作者:编程狂魔
链接:https://www.jianshu.com/p/33ca6811d8b4