Ethereum(以太坊)
文章平均质量分 80
Ethereum(以太坊)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。
灬倪先森_
区块链相关开发经验2年多的程序猿,区块链技术是一样信仰,我坚信终有一天它会变大,变强.
展开
-
基于Hardhat编写合约测试用例
为智能合约编写自动化测试至关重要,毕竟写智能合约多多少少都会跟用户资金挂钩。这里假设自己正在开发一个NFT交易平台,这个平台可以让用户售卖自己的NFT,包括ERC721和ERC1155,并且用户可以指定购买者需要支付指定的购买。我们先确定自己的测试功能和目标,为了文章篇幅不要太长,我们就以卖家用户调用,创建售卖订单功能为目标做测试。我们需要4个合约文件:前三种合约最简单的,我们不需要自己再去实现,直接引用Openzeppelin的合约代码即可。在目录下创建一个新的文件,并且把下面的代码粘贴进去这样需要原创 2022-07-01 17:14:02 · 4270 阅读 · 1 评论 -
基于 Openzeppelin 的可升级合约解决方案的注意事项
在编写可升级合约时请不要使用构造函数,我们知道可升级合约运行时逻辑与数据分离的,合约数据保存在中,我们编写的合约是,当合约部署时,调用初始化的数据是的,中的数据并没有被初始化,所以是无效的。包括声明时赋值初始值,因为这种做法相当于在构造函数中设置这些值。如果MyContract继承自合约 BaseContract, 那么BaseContract合约的初始化函数 initialize() 的modifier(修饰器) 必须使用 onlyInitializing,比如:声明状态变量声明状态变量时,不能对原创 2022-07-01 10:52:48 · 999 阅读 · 0 评论 -
可升级合约的原理-DelegateCall
在介绍时,我们需要带上方法一起介绍,并做对比。先说概念吧!DelegateCall:有一种特殊类型的消息调用,被称为 。它和一般的消息调用()的区别在于,目标地址的代码将在发起调用的合约的上下文中执行,并且 和 不变。 这意味着一个合约可以在运行时从另外一个地址动态加载代码。我不喜欢一上来就讲概念,毕竟太难理解。还是上代码演示吧Remix IDE:Remix是基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件,支持网页在线编写、部署和测试智能合约。本章主要是让大家快原创 2022-06-30 15:32:52 · 1088 阅读 · 0 评论 -
基于Hardhat和Openzeppelin开发可升级合约(二)
在本章我将开始介绍和演示 基于 Openzeppelin 的基础可升级合约解决方案根据设计,智能合约是不可变的。但随着新的客户需求和产品设计的升级迭代,合约也需要升级。Openzeppelin 的基础可升级合约解决方案是将合约数据与逻辑分离。编码修改合约文件基于上一章中的项目进行修改, 所以这里还是修改 合约文件这里我们需要引用Openzeppelin的可升级合约库@openzeppelin/contracts-upgradeable这里我们做了两件事:需要重点说明了的是,在可升级合约中,不能使原创 2022-06-29 15:41:25 · 4481 阅读 · 6 评论 -
基于Hardhat和Openzeppelin开发可升级合约(一)
本章主要演示通过使用Hardhat框架快速开发普通合约(不可升级),在本地节点部署,并通过控制台与合约进行交互。希望通过这篇文章能让读者快速上手Hardhat框架可升级版合约将在下一章节开始等待 npm 拉取依赖完成即可不可升级合约我希望通过开发不可合约来让读者熟悉基于Hardhat的开发流程, 并可以在编写可升级合约时做对比添加如下合约代码我们假设这是我们开发的一个错误的合约, 因为我们在设置新的 storageValue 数值时, 多了 +1(这是为了演示的可以为之).我们先通过使用Har原创 2022-06-29 10:32:07 · 809 阅读 · 0 评论 -
简介智能合约开发框架-Hardhat
智能合约开发框架-Hardhat简介Hardhat是一个编译、部署、测试和调试以太坊应用的开发环境。Hardhat内置了Hardhat网络,这是一个专为开发设计的本地以太坊网络。主要功能有Solidity调试,跟踪调用堆栈、 console.log() 和交易失败时的明确错误信息提示等。环境node.jspython安装npm install --global --production windows-build-toolsnpm install -g hardhat生成项目原创 2022-04-26 15:39:42 · 6511 阅读 · 0 评论 -
Ubuntu部署 Blockscout 区块链浏览器流程
Ubuntu部署 Blockscout 区块链浏览器流程原创 2022-04-15 18:41:50 · 6724 阅读 · 7 评论 -
Ethereum/Quorum笔记本
Quorum实战笔记设置Quorum日志输出级别在startnode.sh文件中修改verbosity值--verbosity value Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail原创 2020-10-16 17:48:36 · 221 阅读 · 0 评论 -
以太坊数据同步常见问题集锦
常见问题列表区块差几十块始终同步不完,怎么办?这是大家同步数据遇到的第一个难题。当大家兴致匆匆的启动程序,看着区块离最新的区块越来越近,难免兴奋起来。但当差十几块或几十块的时候,却是漫长的等待,于是忍不住要问,出什么问题了吗?针对此问题怎么解决,方案有两个:一,等。程序是在正常运行,需要的就是耐心等待;二、升级硬件配置,重新再来一次。问题原因:显示同步剩下几十块,那只是同步了区块的头部信息,剩下漫长的等待才是在同步真正的区块结构体。此时如果查看区块的数据情况,并没有发生明显的增加。在此过转载 2021-01-06 14:50:31 · 2971 阅读 · 11 评论 -
搭建Solidity本地编辑环境,Remix-IDE + Remixd黄金组合,加载本地合约代码
问题描述:相信做过solidity智能合约开发的小伙伴们应该都用过在线Remix编辑器。不可否认它是目前来看最方便快捷且功能强大的在线编辑器。但是Remix也不是完美的,在使用中我们也遇到了很多问题:1.本地文件的import不灵活,虽然可以批量导入,但是却不能将多个文件夹下的问题同时导入(无法导入文件夹)。2.文件目录管理难,大型的dapp项目合约也是要有合理的结构的。虽然最新版本支持Create Folder,但是当我们想要移动文件到另一个目录时却办不到。3.编辑器加载慢,因为Rem原创 2020-11-13 18:35:51 · 4201 阅读 · 1 评论 -
以太坊智能合约(solidity)开发可能遇到的问题和解决方案,(持续更新)
我会在这篇博客里持续更新我在开发过程中所遇到的报错,和解决方案。1。调用以太坊钱包metamask出现错误,Uncaught Error: Invalid number of arguments to Solidity function答:合约函数调用时应该与声明参数列表一致,检查调用合约时输入的实参是否都对上了。2.合约编译报错,TypeError: Type address ...原创 2019-08-26 03:53:13 · 4018 阅读 · 0 评论 -
使用C# 和基于.Net的以太坊库Nethereum以太坊及智能合约交互实战篇(一)
官网:Nethereum官网Github地址:Github上的Nethereum库简介:Nethereum是用于Ethereum的.Net集成库,可简化智能合约管理以及与以太坊节点的交互,无论这些节点是公共的(如Geth,Parity还是私有的,如Quorum和Besu)。Nethereum是针对netstandard 1.1,net451以及便携式库而开发的,因此它与所有主要操作系统(Windows,Linux,MacOS,Android和OSX)兼容,并且已经在云,移动,台式机...原创 2020-07-24 01:52:15 · 3270 阅读 · 10 评论