C#使用Nthereum和Truffle开发智能合约

使用Nethereum库的以太坊.NET、C#开发示例 title: 使用Nethereum库的以太坊.NET开发示例 date: 2018-09-06 21:00 categories: - 以太坊 tags: - 以太坊 - 智能合约 - .net - 区块链 - c# keywords: 以太坊 智能合约 区块链 C# .net 这是一篇文章的早期版本,旨在帮助那些对以太坊区块链平台有基本了解的开发人员,如果想学习如何使... 阅读详情

在上一篇文章中,以太坊区块链与Nethereum的交互中我已经在dotnet客户端内硬编码了合约代码和ABI。它看起来很一般,我不太喜欢它!

此外,我没有使用truffle测试功能,因为我遇到了ganache-cli没有传播事件的问题。

首先,我创建了一个空文件夹,并运行:

truffle init

之后,我在合约文件夹中添加了合约。我不喜欢原始结构,因此我删除了构造函数参数并将事件更改为具有被乘数,乘数和乘积参数名称。

pragma solidity ^0.4.21;

contract Multiplier {
    event Multiplied(uint256 indexed multiplicand, uint256 indexed multiplier, address indexed sender, uint256 product);

    function multiply(uint256 a, uint256 b) public returns(uint r) {
        // looks like an overflow waiting to happen
        r = a * b;
        emit Multiplied(a, b, msg.sender, r);
        return r;
    }
}

添加测试

接下来,我在合约中添加了简单的健全性检查。合约工件首先需要:

var Multiplier = artifacts.require("./Multiplier.sol");

然后,可以通过调用deployed()方法来创建此合约的实例:

contract = await Multiplier.deployed();

之后你可以写测试了!Truffle js测试带有异步/等待支持,这意味着更短,更易于理解的代码!

it("should multiply", async function () {
    let res = await contract.multiply.call(4, 5);
    assert.equal(res, 20);
})

起初,测试将失败并出现神秘错误。

 1) Contract: Multiplier with deployment "before each" hook: deploy contract for "deploy":
     Error: Multiplier has not been deployed to detected network (network/artifact mismatch)
      at /usr/local/lib/node_modules/truffle/build/webpack:/~/truffle-contract/contract.js:454:1
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7)

事实证明我忘记在迁移文件夹中添加2_deploy_contract.js迁移文件:

var Multiplier = artifacts.require("./Multiplier.sol");

module.exports = function(deployer) {
  deployer.deploy(Multiplier);
};

以下是完整的测试代码。当然,在生产代码中可以预期需要更多的测试。这是一个我保持简洁的样本。

var Multiplier = artifacts.require("./Multiplier.sol");

ccontract('Multiplier', function () {
  let contract = null;

  beforeEach('deploy', async function() {
    contract = await Multiplier.deployed();
  })

  desc
C#以太坊Nethereum类库的Web3账户管理 每一笔交易都需要由帐户发送和签署。该帐户需要验证(签名),以便认证他们的以太帐户持有人或确认他希望与智能合约交互。 要发送一个交易,你要么管理你的帐户,并在本地签署原生交易,要么帐户将由客户端(Parity/Geth)管理,在发送交易时,在发送一个交易或手动解锁帐户之前,需要发送密码时。 在Nethereum.Web3中,为了简化过程,可以使用两种类型的帐户。Account对象或Managed... 阅读详情

相关推荐

C#遇见区块链:开启智能合约编程的新纪元

总之,通过合理规划和精心设计,我们可以充分利用C#的优势,构建出高效、自动化且易于维护的区块链应用。希望这篇文章能为你提供有价值的指导,并激发你在探索这条道路上不断前进的动力。如果你有任何疑问或想要分享自己的经验,请随时留言交流!以上内容是一次生成的内容极限,涵盖了关于C#与区块链开发——智能合约编写的详细指南,包括从基础概念到具体实现步骤,再到高级优化技巧等多个方面。如果您有更多问题或者想要深入了解某个特定部分,请随时告诉我!

墨夶的博客 1230

批量网址生成器/地址批量规律生成

批量网址生成器 地址批量规律生成 用于网址地址批量生成

液晶电视维修必看:TCON逻辑板故障排查全指南(附常见问题解决方案)

本文详细解析了液晶电视TCON逻辑板的工作原理与故障排查方法,涵盖LVDS信号处理、DC-DC电压系统等核心知识。提供从基础测量到高级维修的完整指南,帮助技术人员快速诊断黑屏、竖线等常见故障,并给出预防性维护建议,提升维修效率与成功率。

weixin_42535461的博客 616

山东大学软件工程应用与实践——GMSSL开源库(六)——SM9密钥交换协议

2021SC@SDUSC 文章目录基本概念符号及辅助算法SM9密钥交换协议 基本概念 1976年,Diffie和Hellman在其题为《密码学的新方向》的论文中首次给出了公钥密码学的定义,并提出了Diffie-Hellman密钥交换算法。该算法解决了对称密码体制中的密钥分发问题,使得通信双方可以通过公开信道安全地交换共享密钥。 使用SM9通信的双方通过对方的标识和自身的私钥,经过两次或者可选的三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥。该密钥可以作为对称密码算法的会话密钥,其中可选步骤用来实

m0_51588039的博客 1988

【Java微服务-医疗管理项目】(附源码+资料+教程)

尚医疗是专门为各大医院、门诊提供的一款医疗管理平台。 系统包含:系统管理、药品进销存管理、看病就诊、收费管理、检查管理、数据统计等核心模块。 通过尚医疗系统可以快速、方便的管理病人从挂号到门诊结束所涉及到的全套流程。也可以清晰明了的体现出药品进货、出售的所有记录。.........

m0_72882572的博客 2203

VS配置RTKLIB(卫星定位开源代码)环境

@RTKlib代码调试教程-Visual Studio 2019 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 ##RTKLIB-rtklib_2.4.3 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @RTKlib代码调试教程-Visual Studio 2019 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技

qq_42209977的博客 4486

EU 2021/646 eCall工程拆解:MSD、测试模式与型式核准

紧急呼叫系统(eCall)是车载通信中面向事故救援的安全功能,其原理是在碰撞或人工触发后,通过蜂窝网络向公共安全应答点发送最小数据集(MSD),并建立语音链路。技术价值在于缩短救援响应时间、提升事故后生存率,应用场景覆盖乘用车、轻型商用车及车载T-Box等前装通信模块。面向欧盟市场时,EU 2021/646把eCall从安装要求推进到型式核准测试,关注触发链路、备用电源、GNSS定位、MSD字段、音频质量与回拨能力。工程落地需要围绕测试模式、字段校验、配置管理和送检样件建立可交付合规方案。

weixin_31815843的博客 209

ASPICE标准快速掌握「1.1. 简介」

ASPICE是汽车软件过程改进能力模型(Automotive SPICE,Automotive - Software Process Improvement and Capability dEtermination)的缩写,是一种针对汽车软件开发过程的国际标准。该标准旨在帮助汽车制造商和供应商改进其软件开发过程,以确保其软件产品的质量和安全性。需要做什么为什么要做技术上的依赖性是什么。

雪云飞星的博客 2293

38.XDMA寄存器详解2-H2C、C2H通道寄存器组剖析

目录 1.上节回顾 2. H2C寄存器剖析 2.1 H2C通道标识寄存器(0x00) 2.2 H2C通道控制寄存器(0x04) 2.3 H2C通道状态寄存器(0x40) 2.4 H2C通道完成描述符数量寄存器(0x48) 2.5 H2C通道对齐寄存器(0x4C) 2.6 H2C通道查询模式回写地址寄存器(0x88、0x8C) 2.7 H2C通道中断掩码寄存器(0x90)​ 2.8 H2C通道性能监视控制寄存器(0xC0) 2.9 H2C通道周期计数性能寄存器(0xC4、0xC8) 2

一个早起的程序员 5205

AgentScope Java 2.0 项目实战:从零构建企业级自主Coding Agent

本文基于 AgentScope Java 框架,完整拆解两个生产级 AI Agent 项目的从零开发全过程。其一是企业级自主编码机器人(agentscope-codingagent),支持 Issue→PR 自动实现、PR Code Review、Docker 沙箱隔离执行与多通道接入;其二是个人 AI 助手管理平台(agentscope-paw),采用 Spring Boot + React 全栈架构,支持多 Agent、技能市场与多 IM 通道。

program哲学 838

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: .net开发以太坊区块链如何与Nethereum互动
下一篇: 通过7个Python函数来解释区块链
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值