架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8462|回复: 5

通过Nethereum和.NET开发以太坊智能合约

[复制链接]
发表于 2018-8-6 13:55:51 | 显示全部楼层 |阅读模式
.NET是独立开发者和企业开发者共同喜爱的古老框架。可以选择各种语言并且能部署到各种各样的平台,包括从移动端到服务器的各种能力,这使得.NET成为各种应用的一个很好的选择。虽然.NET做了很多,但也可以说它什么也没做。例如,不能在.NET中的浏览器中运行客户端代码(除非使用Silverlight……),也不存在.NET支持的语言,这使得开发人员能够编写智能合约。

智能合约的开发语言是solidity。solidity是一种特定用途的语言,它假设许多关于它运行的环境的东西,它与区块链技术结合十分紧密。正是这些假设特点排斥其他语言。

智能合约本身只是故事的一半。对于应用程序来说,智能合约需要通过RPC来调用它们。这就是Web3客户端接入的地方。Web3客户端仅仅是客户端应用程序,它使客户端应用程序能够与以太坊上运行的智能合约进行接口交互,因此只要一个给定语言存在,那么它就可以与以太坊进行接口交互。

对于.NET来说,最重要的就是一个叫做Nethereum的项目。(Nethereum是.NET和以太坊的一个门户,地址:https://nethereum.com/)。这个库试图复制Web3.js提供的相同功能,这些功能类似于运行在浏览器和NodeJS中的JavaScript应用程序。

在本教程中,我们将向Ganache部署一个智能合约,然后使用.NET core创建一个简单的.NET应用程序来与智能合约进行接口交互。

创建和发布一个智能合约

1.下载和安装Ganache,Ganache是一个非常有用的进行以太坊开发的私有区块链。

https://truffleframework.com/ganache

2.在终端、命令提示符或Powershell会话中,安装Truffle。Truffle是一个框架和一套实用工具集,有助于促进solidity开发智能合约。使用NPM完成下面的命令。



3.建一个文件夹然后在这个文件夹下运行truffle init



4.truffle将创建一些新文件夹contract,test和migration。在contract文件夹,contracts文件夹中建一个新文件Vote.sol。

5.将下面的代码粘贴到新创建的Vote.sol中并保存该文件。这个智能合约只记录了2名候选人的选票数。合约使用消息发送者(即账户地址)作为投票人。它只允许每帐户投1票。



6.在migrations文件夹中创建一个名为2_vote.js的新文件。

7.复制下面的代码到2_vote.js中,并保存。


8.在你创建的文件夹的根目录中打开truffle.js并粘贴下面的代码,然后保存文件。这配置Truffle使用Ganache。



9.在开始菜单中启动Ganache。

10.使用Truffle部署智能合约。ganache网络是在truffle.js文件中定义的。


11.注意输出。你将看到如下类似的输出。这是投票合同的地址。复制并粘贴十六进制字符串供以后使用。


创建一个.NET应用调用智能合约

1.在一个新的目录,使用dotnet命令创建一个新的控制台应用程序。


2.安装Nethereum包。


3.编辑Program.cs文件。用下面的代码代替默认代码。这将能使控制台提示帐户地址和用户投票。保存文件。


4.在program.cs,将我们刚才记录的地址粘贴到部署联系人的地址,保存文件。


5.编译应用程序。


6.运行应用程序。


7.你会看到应用程序提示你输入。输入地址并投票。你可以在Accounts选项卡下从Ganache GUI复制帐户地址。


8.再次运行应用程序,将看到投票已经增加。


对于Nethereum来说,很容易将智能合约与任何.NET应用程序连接起来。因为Nethereum是基于.NET的,它可以用于.NET核心应用程序、.NET标准、Xamarin和各种Windows应用程序。使用Nethereum,强大的以太坊和.NET的现在由你来支配!


码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2020-10-13 17:17:23 | 显示全部楼层
大佬您写的很好,我有一些问题。1.您的abi文件是如何生成的呢?我把合约代码复制后,用VSCode的F5编译生成的abi文件都是双引号的,再嵌入在代码中就会有问题,而您的是单引号。2.我的 代码复制后Web3 web3 = new Web3(url);这一行代码报错,说“Web3是命名空间,但此处被当做类型使用”,修改建议是变成IWeb3。 很急!希望大神帮忙解答。迫切希望联系qq:1206814310 (仅咨询平时不打扰) 真的很急!万分感谢!
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-1-6 12:45:19 | 显示全部楼层
学习通过Nethereum和.NET开发以太坊智能合约
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-1-17 14:01:56 | 显示全部楼层
好东西,赞一个,学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-3-19 16:37:53 | 显示全部楼层
好东西,赞一个,学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2022-7-2 11:40:47 | 显示全部楼层
赞一个,学习学习
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-20 12:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表