![](https://img-blog.csdnimg.cn/20210226154600137.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
区块链开发
文章平均质量分 76
区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。
灬倪先森_
区块链相关开发经验2年多的程序猿,区块链技术是一样信仰,我坚信终有一天它会变大,变强.
展开
-
基于Hardhat编写合约测试用例
为智能合约编写自动化测试至关重要,毕竟写智能合约多多少少都会跟用户资金挂钩。这里假设自己正在开发一个NFT交易平台,这个平台可以让用户售卖自己的NFT,包括ERC721和ERC1155,并且用户可以指定购买者需要支付指定的购买。我们先确定自己的测试功能和目标,为了文章篇幅不要太长,我们就以卖家用户调用,创建售卖订单功能为目标做测试。我们需要4个合约文件:前三种合约最简单的,我们不需要自己再去实现,直接引用Openzeppelin的合约代码即可。在目录下创建一个新的文件,并且把下面的代码粘贴进去这样需要原创 2022-07-01 17:14:02 · 4240 阅读 · 1 评论 -
基于 Openzeppelin 的可升级合约解决方案的注意事项
在编写可升级合约时请不要使用构造函数,我们知道可升级合约运行时逻辑与数据分离的,合约数据保存在中,我们编写的合约是,当合约部署时,调用初始化的数据是的,中的数据并没有被初始化,所以是无效的。包括声明时赋值初始值,因为这种做法相当于在构造函数中设置这些值。如果MyContract继承自合约 BaseContract, 那么BaseContract合约的初始化函数 initialize() 的modifier(修饰器) 必须使用 onlyInitializing,比如:声明状态变量声明状态变量时,不能对原创 2022-07-01 10:52:48 · 981 阅读 · 0 评论 -
可升级合约的原理-DelegateCall
在介绍时,我们需要带上方法一起介绍,并做对比。先说概念吧!DelegateCall:有一种特殊类型的消息调用,被称为 。它和一般的消息调用()的区别在于,目标地址的代码将在发起调用的合约的上下文中执行,并且 和 不变。 这意味着一个合约可以在运行时从另外一个地址动态加载代码。我不喜欢一上来就讲概念,毕竟太难理解。还是上代码演示吧Remix IDE:Remix是基于浏览器的 IDE,集成了编译器和 Solidity 运行时环境,不需要服务端组件,支持网页在线编写、部署和测试智能合约。本章主要是让大家快原创 2022-06-30 15:32:52 · 1079 阅读 · 0 评论 -
基于Hardhat和Openzeppelin开发可升级合约(二)
在本章我将开始介绍和演示 基于 Openzeppelin 的基础可升级合约解决方案根据设计,智能合约是不可变的。但随着新的客户需求和产品设计的升级迭代,合约也需要升级。Openzeppelin 的基础可升级合约解决方案是将合约数据与逻辑分离。编码修改合约文件基于上一章中的项目进行修改, 所以这里还是修改 合约文件这里我们需要引用Openzeppelin的可升级合约库@openzeppelin/contracts-upgradeable这里我们做了两件事:需要重点说明了的是,在可升级合约中,不能使原创 2022-06-29 15:41:25 · 4449 阅读 · 6 评论 -
基于Hardhat和Openzeppelin开发可升级合约(一)
本章主要演示通过使用Hardhat框架快速开发普通合约(不可升级),在本地节点部署,并通过控制台与合约进行交互。希望通过这篇文章能让读者快速上手Hardhat框架可升级版合约将在下一章节开始等待 npm 拉取依赖完成即可不可升级合约我希望通过开发不可合约来让读者熟悉基于Hardhat的开发流程, 并可以在编写可升级合约时做对比添加如下合约代码我们假设这是我们开发的一个错误的合约, 因为我们在设置新的 storageValue 数值时, 多了 +1(这是为了演示的可以为之).我们先通过使用Har原创 2022-06-29 10:32:07 · 797 阅读 · 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 · 6501 阅读 · 0 评论 -
Ubuntu部署 Blockscout 区块链浏览器流程
Ubuntu部署 Blockscout 区块链浏览器流程原创 2022-04-15 18:41:50 · 6684 阅读 · 7 评论 -
联盟链HyperledgerFabric2.2生产环境部署流程(一)- Fabric CA
特别说明一下,本系列博文(多篇)是以Hyperledger Fabric官方文档为基础,模拟搭建一个由4个组织(R1,R2,R3,R4)组件的联盟链系统。全文会以这篇文章的描述顺序一步一步来,因为我觉得这样会给大家一个更直观的感受。Hyperledger Fabric示例网络原文当前页文章主要学习CA的服务部署,原文地址:https://hyperledger-fabric-ca.readthedocs.io/en/latest/users-guide.html证书颁发机构(Cert..原创 2020-11-20 20:57:07 · 3037 阅读 · 12 评论 -
搭建Solidity本地编辑环境,Remix-IDE + Remixd黄金组合,加载本地合约代码
问题描述:相信做过solidity智能合约开发的小伙伴们应该都用过在线Remix编辑器。不可否认它是目前来看最方便快捷且功能强大的在线编辑器。但是Remix也不是完美的,在使用中我们也遇到了很多问题:1.本地文件的import不灵活,虽然可以批量导入,但是却不能将多个文件夹下的问题同时导入(无法导入文件夹)。2.文件目录管理难,大型的dapp项目合约也是要有合理的结构的。虽然最新版本支持Create Folder,但是当我们想要移动文件到另一个目录时却办不到。3.编辑器加载慢,因为Rem原创 2020-11-13 18:35:51 · 4178 阅读 · 1 评论 -
简单的跨链实现,6个核心接口就够了!
作为跨链交互的基础,接口(API)是跨链平台中重要一环。目前各大区块链平台提供了丰富的接口,这些接口是否都要在跨链平台中重新实现?为了实现普适通用的跨链平台,如何确定接口设计基调?为了满足复杂多变的跨链需求,哪些接口是必须的?WeCross的接口实现是怎样的?本文将带你一探究竟。区块链接口众多,跨链是否“我都要”随着区块链技术的发展,区块链被广泛地运用到各行各业中,为了支撑越来越多样的应用场景与复杂的业务需求,区块链接口也在不断增长、完善。目前,主流区块链平台动辄提供几十个接口。丰富的接口...转载 2020-09-14 14:40:01 · 820 阅读 · 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 · 3255 阅读 · 10 评论 -
联盟链Quorum(基于raft共识)部署流程(三)- 部署基于Quorum链的区块链浏览器
这篇文章算得上是继联盟链Quorum(基于raft共识)部署流程(二)的续篇我的演示系统环境时 Ubuntu 18.04 LTS。环境要求:docker 我的安装方法:# 安装依赖包sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-com...原创 2020-04-03 16:38:11 · 1215 阅读 · 1 评论 -
联盟链Quorum(基于raft共识)部署流程(二)- 部署隐私模块Tessera
这篇文章是继联盟链Quorum(基于raft共识)部署流程(一)的续篇,上一篇文章只是把基础的Quorum节点运行起来,但是隐私模块还没有部署上去,所以本篇主要内容是 Tessera。我的演示系统环境时 Ubuntu 18.04 LTS。环境要求:jdk11 (ubuntu推荐安装方法:sudo apt install openjdk-11-jre-headless)获取Tess...原创 2020-04-03 15:19:07 · 1223 阅读 · 11 评论 -
联盟链Quorum(基于raft共识)部署流程(一)
首先说明,本次的Quorum部署是在一台Ubuntu服务器上的,实际生产环境建议一个节点一台服务器。一台服务器上部署多个节点的流程跟多个服务器部署多个节点的流程其实是一样的。并且,经过我的亲身测试,Quorum链4个节点就能够正常运行起来。我的演示系统环境时 Ubuntu 18.04 LTS环境要求:golang (ubuntu建议安装方法:sudo apt install go...原创 2020-04-02 15:37:51 · 2575 阅读 · 7 评论 -
以太坊合约调用关系,谁才是msg.sender
今天在技术群里跟大家做技术交流,发现还是有很多人还是对以太坊的智能合约调用关系不是很清楚。所以我打算专门写一篇博文来说一下这个问题。直接上代码:contract Wallet{ ERC20Token public token; constructor(address _token) public{ token = ERC20Token(_token);...原创 2019-12-12 01:25:41 · 3330 阅读 · 11 评论 -
(二)区块链的认识,理解“区块”和“链”
区块链的基本三个概念:① 交易(transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录; 这是我在以太坊浏览器(https://etherscan.io)随机截取一条以太坊交易信息,结合前面的的标签我相信大家应该不难看懂这张截图内容。这是一张比银行转账单都还要更详细的交易信息。从这里面我们可以获取到所有我们想要的信息,包括交易发起人,接...原创 2018-11-01 16:35:09 · 1045 阅读 · 0 评论 -
(三)区块链的认识,理解“区块链”
区块链通常被定义为去中心化的分布式记账系统,该系统中的节点无需互相信任,通过统一的共识机制共同维护一份账本。 区块链是一种分布式、去中心化的计算与存储架构。 既然是分布式的数据存储,那么在各个节点之间就存在一个数据同步的问题,以谁的数据的为准,谁的数据是可信赖?既然各自保留对彼此的不信任,那就“无需信任”。“无需信任”技术上的解决方法就是假设互相...原创 2018-11-02 15:47:44 · 1756 阅读 · 2 评论 -
(四)区块链的认识,区块链2.0代表-以太坊
1.以太坊的诞生 2013年年末,以太坊创始人Vitalik Buterin(人称“V神”)针对比特币系统非图灵完备性、效率低等特点,首次提出以太坊(Ethereum)概念,发布了以太坊初版白皮书,启动了项目。2014年,以太坊基金会成立,Vitalik Buterin、Gavin Wood和Jeffrey Wilcke创建了以太坊项目,作为下一代区块链系统。2016年年初,以太...原创 2018-12-23 13:22:22 · 2581 阅读 · 0 评论 -
(五)区块链的认识,理解“共识机制”
区块链是一个支持容错的分布式系统,要保障系统的健康运行,需要满足4大要素,分别为P2P网络、连续交易、足够多的存储节点和共识机制。考虑到网络故障及人为因素,系统中难免会存在故障节点和恶意节点,如何才能保证整个系统数据的一致性,是一个分布式共识问题。正如《区块链启示录:中本聪文集》一书中所说,比特币的正常运行很大程度上依赖于共识。 共识机制,就是所有记账节点之间如何...原创 2018-12-23 14:06:37 · 919 阅读 · 0 评论 -
区块链开发的坑,使用白鹭egretia SDK与智能合约交互
好啦, 该上新了. 之前因为工作原因, 最近又在忙着做其他项目忘了更博了, 现在把欠的补上.相信大家来看这篇博文的都是熟悉egret白鹭引擎的大佬了. 所以引擎的使用,语言就不多说了. 就重点说说egretia的使用为主吧.egretia SDK是白鹭把 以太坊 web3.js 变成 TypeScript 的一种实现, 这样我们就能用白鹭引擎 很好的调用 api 来实现我们的功能,...原创 2018-12-25 16:44:16 · 1849 阅读 · 0 评论 -
初探ERC-721
ERC-721协议是以太坊开发中最常使用的第二大协议,第一大协议当然是我们的ERC-20。ERC-721官方简要解释是Non-Fungible Tokens,简写为NFTs,多翻译为非同质代币。ERC-721最早进入大家的视野都是因为 《CryptoKitties》 加密猫的功劳。所以我下面会结合加密猫游戏的案例来说说我们的ERC-721。ERC-721特点:1.无法分割,ERC-...原创 2019-06-05 20:20:05 · 1232 阅读 · 1 评论 -
以太坊开发入门,Remix IDE使用及简单的合约部署
Remix IDE是一个在线的智能合约编译,测试和部署工具。使用它可以很方便的和智能合约交互,最适合刚入手的以太坊开发者了。因为是在线的IDE,所以对开发者的操作系统没有要求。我自己现在用的Ubuntu,之前用的Windows开发。准备:1.Google Chrome // Firefox也是可以的2.MetaMask //MetaMa...原创 2019-06-06 17:30:07 · 3944 阅读 · 1 评论 -
(一)区块链的认识,一个故事了解区块链核心思想
“区块链”作为2018年互联网最火热的名词,没有之一,承载了今年所有的IT热点和头条。随着区块链技术的火热,陆陆续续有着大批量的开发人员涌入进来,其中不乏有着多年软件开发经验的技术大牛,也有着不少刚从校园踏进社会就被“区块链”吸引而来的应届毕业生。但大家的目标都是一致的——基于区块链技术“搞事情”。 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技...原创 2018-11-01 15:22:41 · 1936 阅读 · 0 评论