使用Nethereum库的以太坊.NET、C#开发示例

C#使用Nthereum和Truffle开发智能合约 在上一篇文章中,以太坊区块链与Nethereum的交互中我已经在dotnet客户端内硬编码了合约代码和ABI。它看起来很一般,我不太喜欢它! 此外,我没有使用truffle测试功能,因为我遇到了ganache-cli没有传播事件的问题。 首先,我创建了一个空文件夹,并运行: truffle init 之后,我在合约文件夹中添加了合约。我不喜欢原始结构,因此我删除了构造函数参数并将事件更改为具有被... 阅读详情

这是一篇文章的早期版本,旨在帮助那些对以太坊区块链平台有基本了解的开发人员,如果想学习如何使用Nethereum .NET库对Ethereum平台进行编程。

我以后会在这篇文章中添加更多内容,但就目前而言,正在使用它发布.NET 10+的系列C#示例,介绍如何使用Nethereum库执行针对以太坊区块链平台的最常见任务。

最常见任务列表包括以下内容:

  • 1.获取协议版本
  • 2.获取最大块数
  • 3.获取帐户余额
  • 4.发送以太
  • 5.等待交易收据
  • 6.在区块链中扫描块
  • 7.列出个人账户(及其余额)
  • 8.在区块链中扫描交易
  • 9.与现有(已部署)合同互动
  • 10.用事件和现有(已部署)合约交互
  • 11.获取所有活动更改
  • 12.获取合约金额历史

这里是c#的主文件:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

using Nethereum.Hex.HexTypes;
using Nethereum.Web3;

namespace MWH.MyNethereum.QuickRef
{
 static public class TaskExamples
 {
 const int UNLOCK_TIMEOUT = 2 * 60; // 2 minutes (arbitrary)
 const int SLEEP_TIME = 5 * 1000; // 5 seconds (arbitrary)
 const int MAX_TIMEOUT = 2 * 60 * 1000; // 2 minutes (arbirtrary)

// These static public variables do not represent a recommended pattern
 static public string LastProtocolVersion = "";
 static public string LastTxHash = "";
 static public Nethereum.RPC.Eth.DTOs.TransactionReceipt LastTxReceipt = null;
 static public HexBigInteger LastMaxBlockNumber = new HexBigInteger(0);

static public async Task GetProtocolVersionExample(Web3 web3)
 {
 Console.WriteLine("GetProtocolVersionExample:");

var protocolVersion = await web3.Eth.ProtocolVersion.SendRequestAsync();
 Console.WriteLine("protocolVersion:\t" + protocolVersion.ToString());
 LastProtocolVersion = protocolVersion;
 }

static public async Task GetMaxBlockExample(Web3 web3)
 {
 Console.WriteLine("GetMaxBlockExample:");

var maxBlockNumber = await web3.Eth.Blocks.GetBlockNumber.SendRequestAsync();
 Console.WriteLine("maxBlockNumber:\t" + maxBlockNumber.Value.ToString());
 LastMaxBlockNumber = maxBlockNumber;
 }

static public async Task ScanBlocksExample(Web3 web3, ulong startBlockNumber, ulong endBlockNumber)
 {
 Console.WriteLine("ScanBlocksExample:");

long txTotalCount = 0;
 for (ulong blockNumber = startBlockNumber; blockNumber <= endBlockNumber; blockNumber++)
 {
 var blockParameter = new Nethereum.RPC.Eth.DTOs.BlockParameter(blockNumber);
 var block = await web3.Eth.Blocks.GetBlockWithTransactionsByNumber.SendRequestAsync(blockParameter);
 var trans = block.Transactions;
 int txCount = trans.Length;
 txTotalCount += txCount;
 if (blockNumber % 1000 == 0) Console.Write(".");
 if (blockNumber % 10000 == 0)
 {
 DateTime blockDateTime = Helpers.UnixTimeStampToDateTime((double)block.Timestamp.Value);
 Console.WriteLine(blockNumber.ToString() + " " + txTotalCount.ToString() + " " + blockDateTime.ToString());
 }
 }
 Console.WriteLine();
 }

static public async Task ScanTxExample(Web3 web3, ulong startBlockNumber, ulong endBlockNumber)
 {
 Console.WriteLine("ScanTxExample:");

long txTotalCount = 0;
 for (ulong blockNumber = startBlockNumber; blockNumber <= endBlockNumber; blockNumber++)
 {
 var blockParameter = new Nethereum.RPC.Eth.DTOs.BlockParameter(blockNumber);
 var block = await web3.Eth.Blocks.GetBlockWithTransactionsByNumber.SendRequestAsync(blockParameter);
 var trans = block.Transactions;
 int txCount = trans.Length;
 txTotalCount += txCount;
 foreach (var tx in trans)
 {
 try
 {
 var bn = tx.BlockNumber.Value;
 var th = tx.TransactionHash;
 var ti = tx.TransactionIndex.Value;

var rpt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(th);
 var status = rpt.Status.Value;

var nc = tx.Nonce.Value;
 var from = tx.From;

Console.WriteLine(th.ToString() + " " + ti.ToStrin
C#使用Nethereum .NET库做以太坊开发的demo示例 这是一篇文章的早期版本,旨在帮助那些对以太坊区块链平台有基本了解的开发人员,如果想学习如何使用Nethereum .NET库对Ethereum平台进行编程。 我以后会在这篇文章中添加更多内容,但就目前而言,正在使用它发布.NET 10+的系列C#示例,介绍如何使用Nethereum库执行针对以太坊区块链平台的最常见任务。 最常见任务列表包括以下内容: 1... 阅读详情

相关推荐

C#程序员如何基于.net开发以太坊智能合约与dapp应用

如果我们希望构造一个去中心化应用(DApp),除了智能合约的开发, 通常还需要使用其他开发语言为用户提供操作智能合约的用户接口,例如 开发一个网页、一个手机App或者一个桌面应用。这些代码都需要与以太坊 进行交互。 以太坊规定了每个节点需要实现的JSON RPC API 应用开发接口,该接口是传输无关的,应用程序可以通过HTTP、websocket或IPC等多种 通信机制来使用该接口协议操作以太...

mongo_node的专栏 1358

Nethereum:.NET应用和以太坊智能合约的桥梁

Nethereum基本上是目前唯一可用的.NET平台下的web3.js移植包。在这个教程中, 我们将首先编写并部署一个简单的智能合约,然后创建一个简单的.NET应用,并使用 Nethereum来访问以太坊上的智能合约。Nethereum是通过以太坊节点旳标准RPC接口 访问智能合约,因此使用Nethereum可以对接所有的以太坊节点实现,例如geth或parity。 如果你希望快速掌握Nethe...

mongo_node的专栏 3454

C#语言的区块链

区块链是一种以去中心化为核心理念的数据结构,允许多方共同维护一个无法篡改的交易记录。每个“区块”包含若干笔交易记录,并且通过密码学的方法与前一个区块相链接,形成一条链条,从而确保数据的完整性和安全性。C#是由微软开发的一种现代化的编程语言,广泛应用于Windows应用程序开发、Web开发和云计算等领域。C#拥有简洁的语法、强大的库支持和良好的集成开发环境(如Visual Studio),使其成为开发人员的热门选择。

2501_90356459的博客 878

C#语言的加密货币

C#是由微软开发的一种现代化编程语言,其特点包括简洁、类型安全和面向对象。这使得C#在企业级应用、游戏开发和移动应用等多个领域中得到了广泛应用。C#的强大功能及其出色的开发环境(如Visual Studio)使得开发者能够高效地构建复杂的程序。在加密货币的开发中,C#提供了良好的支持,特别是在处理数据结构、网络通信和多线程等方面。随着区块链技术的普及,越来越多的开发者开始使用C#来构建和管理各种加密货币项目。C#语言作为一种功能强大、易于使用的编程语言,在加密货币的开发中发挥了重要作用。

2501_91439331的博客 514

Nethereum库介绍:使用Nethereum作为独立的区块链开发包来开发Dapp

作者:禅与计算机程序设计艺术 1.简介 什么是Dapp?它是一个应用平台(Application Platform)或应用程序(Application),可以通过分布式互联网协议(如比特币或以太坊)来实现即时交易和数据交换,能够将各方间的数据进行快速、安全地交换和存储。分布式应用通常被称为去中心化应用(

AI天才研究院 884

C#与区块链:以太坊DApp开发

🔥关注墨瑾轩,带你探索编程的奥秘!🚀🔥超萌技术攻略,轻松晋级编程高手🚀🔥技术宝库已备好,就等你来挖掘🚀🔥订阅墨瑾轩,智趣学习不孤单🚀🔥即刻启航,编程之旅更有趣🚀🚀 嘿嘿,亲爱的区块链探险家们!今天我们要一起探索C#和区块链的奇妙世界,看看如何使用C#来开发以太坊去中心化应用(DApp)。准备好了吗?让我们踏上这段去中心化之旅!

java专栏 1378

C#智能合约:从部署到监控,一次搞定!——别再让合约“消失“在链上了!

C#智能合约部署与监控实战摘要 C#开发者使用Nethereum库部署智能合约时面临监控功能缺失的挑战。本文详细介绍了从环境配置到合约部署的全流程,包括关键步骤: 安装Nethereum核心库及其依赖 配置RPC节点和私钥 实现合约部署的完整代码示例(含10个关键步骤) 交易状态检查与异常处理 特别强调: 监控对不可修改的智能合约至关重要 需自行实现部署状态追踪 交易确认和异常处理是核心环节 文中的代码示例展示了如何通过C#实现安全的合约部署,为开发者提供了可直接参考的解决方案。

墨夶的博客 667

解锁C#智能合约测试的艺术:深入框架与实践

在区块链的世界里,智能合约作为去中心化应用的核心组件,其正确性和可靠性至关重要。然而,编写和部署智能合约只是第一步,确保它们在各种情况下都能正常工作同样重要。本文将带你深入了解如何使用C#语言及其相关的测试框架来验证智能合约的逻辑,提供详细的代码示例和深入的注释,帮助你构建更加健壮的应用。

墨夶的博客 269

C#上位机中的区块链应用:工业设备数据防篡改与溯源方案

C#上位机集成区块链的核心是哈希上链,而非原始数据上链(平衡效率与隐私);Nethereum是C#对接以太坊(私链/联盟链)的首选SDK,无需掌握Solidity深入知识即可快速调用合约;防篡改的本质是哈希对比,溯源的本质是链上不可篡改的记录查询。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 347

C#与区块链网络编程的深度结合:构建下一代分布式应用

// 区块的位置或索引。set;/// 区块生成的时间戳。set;/// 当前区块的数据,例如交易信息。set;/// 当前区块的哈希值。set;/// 前一个区块的哈希值。set;上述代码定义了一个简单的Block结构体,包含了区块的基本属性如索引、时间戳、数据、当前哈希值和前一个区块的哈希值。通过深入探讨C#在网络编程中的应用,特别是当它与区块链技术相结合时,我们可以看到这种组合带来的巨大潜力。无论是构建智能合约还是实现复杂的分布式系统,掌握这些技能都将为你打开通往未来科技世界的大门。

墨夶的博客 405

Nethereum:以太坊.Net跨平台集成库

网络环境 Azure DevOps CI Azure DevOps CI代码生成: CI开发包: Discord上的技术支持,聊天和协作: : 。 什么是Nethereum? Nethereum是用于Ethereum的.Net集成库,可简化与以太坊节点(如Geth, 或的访问和智能合约的交互。 Nethereum是针对netstandard 1.1,netstandard 2.0,netcore 2.1,netcore 3.1,net451以及作为便携式库开发的,因此它与所有操作系统(Windows,Linux,MacOS,Android和OSX)兼容,并已在云上进行了测试,

瑞芯微rk3568移植openbmc(一)----关于ob移植的优缺点

基于rock3a的单板,CPU为瑞芯微rk3568的环境,移植了openbmc

feixiang3839的专栏 5537

MIT Bevfusion环境安装 Docker方式,nuscenes数据处理

Bevfusion环境安装,数据生成报错解决module 'numpy' has no attribute 'long';most likely due to a circular import。bevfusion docker环境

Jack_Man_N的博客 1144

基于LUT表对鱼眼图像进行畸变校正

当然也可以进行图像的畸变校正操作,已知相机的焦距为fx/fy,光心为cx/cy,像素大小为p(单位mm/pixel)对于畸变校正结果图中像素点(u,v),其对应的原图中的像素坐标(u',v')的计算流程描述如下。1)假设无畸变相机成像模型的焦距和光心与原相机相同,计算得到无畸变相机成像模型中归一化平面坐标(X,Y,Z),其中X=(u-cx)/fx,Y=(v-cy)/fy,Z=1。这里x'/y'的单位为像素。

On my way 639

点云语义分割:使用Cylinder3D训练SemanticKITTI数据集

将该路径修改到config/semanticktti.yaml文件中的data_path节点下。下载semanticKITTI数据集的点云数据和标签,解压到一起。系统:Ubuntu18。

zhaoguanhua的博客 2597

辉芒微教程第七篇《PWM与PWM3调节LED灯的亮度》

这个其实就是PR3L = 128设置的,由于我们刚刚寄存器设置了8位模式,其设置的范围就是0-255,而128/255≈50%左右,因此PR3L就是我们的占空比调节的寄存器,我们可以通过它来调节占空比,大家可以试试它占空比设置10%,30%,60%来看看它的不同效果,灯的亮度是肯定不一样的,如果有条件的朋友,可以购买一款逻辑分析仪去看他的占空比。平平无期的这个东西有什么东东用,貌似是没什么用,只是一个概念而已,是不是不同设备可以设置1秒,3秒,10秒的周期就行?但是它占空比为什么是50%,怎么得来的?

qq_41809823的博客 827

快速入门必看!RT-DETR手把手训练自己的数据集去跑实验,基于 ultralytics 仓库源码改进,配置虚拟环境,准备数据集、训练、验证、推理测试 ,实现0到1的完整教学过程。

本文介绍了使用Ultralytics框架训练RT-DETR模型的全流程。首先需要创建Python 3.10虚拟环境,安装指定版本的PyTorch和相关依赖包。然后准备数据集,修改配置文件,并详细介绍训练、验证和推理三个核心步骤的代码实现。训练阶段使用RTDETR类加载模型配置,设置训练参数;验证阶段评估模型性能;推理阶段可对图片、视频等进行预测。文中还提供了清华大学镜像源加速下载,以及详细的参数配置说明,帮助用户快速搭建RT-DETR目标检测模型。

Ai缝合怪、助力小伙伴高效发论文 5557

ExpressLRS(ELRS)接收机技术全景:从历史演进、技术底层到产业生态全解析——上

ExpressLRS(ELRS)是一种由全球开源社区驱动的双向射频遥控链路协议栈,其接收机作为核心终端,承担信号接收解调、遥控指令解析、飞控数据交互与遥测回传等关键功能。自2018年问世以来,ELRS凭借极致性能、低成本、开放生态和强兼容性,从航模DIY方案发展为消费级无人机领域的事实标准,并逐步渗透工业级场景。 ELRS接收机采用模块化分层架构,支持2.4GHz和900MHz双频段,通过LoRa、FLRC、FSK多调制模式实现低延迟与远距离平衡。其核心技术包括自适应跳频抗干扰、TDD双向链路和极简数据包。

bother3000的博客 303

台区同期线损智能诊断与闭环治理体系及工程化实践

高损台区:同期线损率>预设阈值(通常为8%,可根据区域、台区类型调整);负损台区:同期线损率<0,即供电量小于售电量,多由档案、计量、拓扑错误导致;波动损台区:月度线损率波动幅度>预设阈值(通常为5%),且无合理原因;持续异常台区:连续2个及以上周期线损率不达标,且未完成有效整改。台区同期线损智能诊断与闭环治理体系,以电力大数据为基础、智能诊断模型为核心、标准化流程为保障,彻底解决了传统线损治理“异常发现慢、定位难、整改乱、无闭环”的痛点,实现了线损治理从“人工经验驱动”向“数据智能驱动”的根本性转型。

getusushu的博客 204

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 用php编写一个以太坊支付系统
下一篇: 用EOSIO开发区块链DApp(一、构建环境)
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值