2023年6月13日星期二

Hardhat入门

 综述

Hardhat是以太坊智能合约的开发环境。它包含不同的组件用于编辑、编译、调试和部署智能合约和dApps。
这些组件协同合作,建立了一个完整的开发环境。

Hardhat Runner是使用Hardhat时需要进行交互的一个主要的组件。它是一个灵活的、可扩展的task runner,用于管理和自动执行开发智能合约和 dApp 所固有的重复性任务。

Hardhat Runner是围绕tasks和plugins进行设计的。每次通过命令行运行Hardhat时,都是运行一个taask,比如:npx hardhat compile就是运行一个内置的compile task。tasks可以调用其他的tasks,用于定义比较复杂的工作流。tasks可以被用户或plugins重载,用于进行工作流的自定义和扩展。

安装

Hardhat在使用前需要在项目中进行本地安装,这种方式可以保证环境是可以复制的,而且不会和其他的版本发生冲突。

为了安装Hardhat,首先需要创建一个npm项目(创建一个空目录,然后在目录中运行npm init

当基础环境准备好后,运行以下命令进行Hardhat的安装:

npm install --save-dev hardhat

快速开始

创建项目

在项目目录中使用如下命令创建一个Hardhat项目:

npx hardhat

在创建项目的过程中,可以指定开发语言是javascript还是typescript。

运行tasks

为了对有哪些可用的tasks又一个直观的认识,可以首先运行npx hardhat命令:

在available tasks中的tasks,既包括内置的task也包括从已经安装的plugin带来的task。npx hardhat是查询可用task的起始点。

编译智能合约

查看contracts目录,会看到一个Lock.sol文件。

为了编译这个合约,只需要在项目目录下运行npx hardhat compile命令即可。

测试智能合约

测试项目会有使用Mocha、Chai和Ethers.js创建的测试用例。在test文件夹中会看到一个Lock.js的测试文件:

可以通过运行命令npx hardhat test来运行测试用例:

部署智能合约

可以使用hardhat脚本部署,在scripts文件夹中,可以找到一个脚本文件:

可以通过npx hardhat run命令运行这个脚本:

连接钱包或Dapp到hardhat网络上

缺省情况下,hardhat将在启动时启动一个新的 Hardhat Network 内存实例。还可
方式运行Hardhat Network,便外部客户端可以连接到它。以是Dapp本。

为了以这种方式运行hardhat,可以使用命令:npx hardhat node

这个命令会向外暴露一个hardhat网络的json-rpc接口,可以使用这个接口来连接wallet或Dapp。

如果想让一个hardhat连接到这个node,比如在这个node上进行部署,需要使用--network localhost参数:

npx hardhat run scripts/deploy.js --network localhost

2022年12月2日星期五

NFT 交易以 500 万美元空投的方式在 Uniswap 上线

 去中心化加密货币交易所--Uniswap周三表示,现在可以在Uniswap上交易NFT。

Uniswap 用户将能够使用该平台的 NFT 聚合器工具在 OpenSea、X2Y2、LooksRare、Sudoswap、Larva Labs、Foundation 和 NFT20 市场上交易数字收藏品。 此外,该平台表示,与其他 NFT 聚合器相比,其新的开源通用路由器合约可以为用户节省高达 15% 的gas fee。

该公司在一份声明中表示:“NFT 和 ERC-20 代币在很大程度上作为加密货币中两个独立的生态系统存在,但两者对于发展数字经济都是必不可少的。在 Uniswap 上启动 NFT 是我们在两者之间建立更多互操作体验的第一步。”

伴随该公告的是向 Genie 的历史用户提供 500 万美元的空投。据该公司称,Genie 用户完成一笔以上的交易将获得 300 美元空投,持有 一个Genie 将获得 1,000 美元的空投。符合条件的用户可以在接下来的 12 个月内申请 USDC 空投。

此外,Uniswap 还为首批购买 NFT 的 22,000 名新用户提供 gas 折扣,折扣上限为 0.01 以太币 (ETH)。

Uniswap 的最新产品将与 Blur 竞争,Blur 是 10 月份在风险投资公司 Paradigm 的支持下推出的 NFT 聚合器。

Blur 和 Uniswap 的 NFT 产品都针对专业的 NFT 交易员,他们是加密货币寒冬中仍在继续参与的专业人士。

Uniswap 自称是同类中第一个开源的NFT平台。这家去中心化交易所于 2019 年首次发布 NFT,推出了 Unisocks,这是一种由限量版实物袜子支持的实验性加密代币。


2022年12月1日星期四

OpenSea 增加对 BNB 链 NFT 的支持

BNB Chain 将在年底前将其NFT整合到 OpenSea Seaport 协议上。 

此举将为希望在 OpenSea 市场上列出和销售数字收藏品的 BNB Chain 创作者提供多重创作者支付、收藏管理和其他好处。

BNB Chain(每日活跃用户最大的区块链之一)的投资总监 Gwendolyn Regina 表示:“整合将使大量创作者进入更广泛的生态系统,并为 BNB Chain 生态系统内的创作者和 NFT发行赋能。”

BNB 生态系统已经支持多个类别的 1,300 多个 dapp,包括去中心化金融 (DeFi)、元宇宙、区块链游戏和 NFT。 上个月,它推出了一个 1000 万美元的基金来激励区块链的增长。

9 月,OpenSea 宣布将扩大对其他区块链和语言的支持,以保持其作为全球最大 NFT 市场的地位。 目前,该平台支持来自 Ethereum、Polygon、Klaytn、Solana、Arbitrum、Avalanche 和 Optimism 的 NFT。

2018年4月3日星期二

在windows 10上安装web3

先决条件

需要安装最新版的nodejs

安装

  • 首先使用npm install --global --production windows-build-tools安装用于编译本地模块所需要的windows编译工具;
  • 在项目根目录下,执行npm install web3进行web3js的安装;

验证

首先打开命令行接口,导航到项目根目录下,使用node命令,进入到node的交互环境中,然后使用require("web3")语句,如果没有报错,而是显示web3的描述页面,则表示web3安装成功;

问题处理

1、在web3安装过程中,会提示无法安装的信息,这时要使用如下命令进行npm自身的升级,需要升级到最新版:npm install npm@latest -g
2、在web3安装过程中,会提示无法找到window 8.1的SDK,如下图所示:

这个问题的出现主要是由于npm install --global --production windows-build-tools没有正确的安装build tools。
这个问题需要我们首先导航到%USERPROFILE%\.windows-build-tools目录下,查看是否有BuildTools_Full.exe文件,如果没有,则需要再次执行npm install --global --production windows-build-tools。
然后我们运行BuildTools_Full.exe,这个exe的显示页面就是build tools的安装页面,在这个页面中,会显示出错信息,我们可以根据出错信息,进行相应的处理。
最有可能的原因是,我们本机安装过visual studio 2015,在这种情况下需要先把visual studio 2015卸载,然后再次执行npm install --global --production windows-build-tools就可以解决问题。

2018年3月30日星期五

以太坊开发者指南中文版


编译和测试

Go环境

首先需要安装Go1.8和设置GOPATH环境变量。
注意:你应该在$GOPATHsrc/github.com/ethereum/go-ethereum目录下有一个副本。
在大多数情况下,你应该在自己的go-ethereumfork上进行工作。执行以下代码来克隆或移动你自己的fork到正确的位置:
git clone git@github.com:nirname/go-ethereum.git $GOPATH/src/github.com/ethereum/go-ethereum

管理依赖

Go-ethereum的所有的依赖都放在vendor/目录下。我们使用govendor进行依赖管理。
如果你增加了一个新的依赖需要运行govendor fetech <import-path>命令然后提交成果物。
如果你想更新所有的依赖到最新版本需要运行govendor fetch +v命令。
你也可以在go-ethereum的包上,运行govendor的某个命令。例如:重新创建所有产生的代码,运行govendor generate +l

编译可执行文件

进入到go-ethereum库的根目录。
你可以使用go工具编译全部代码,然后把结果的二进制文件放在$GOAPTH/bin目录下:
go install -v ./...
go-ethereum的各个执行文件也可以使用如下命令,来单独编译:
go install -v ./cmd/geth

GIT FLOW

为了简化操作我们也可以尝试git flow它可以建立和简化你的工作流程

测试

可以通过如下命令,来进行一个库的测试:
go test -v -cpu 4 ./eth  
推荐使用-cpu(允许使用的cpu核数)和-v(显示全部的日志)选项。
使用如下命令,可以只是测试某些方法:
go test -v -cpu 4 ./eth -run TestMethod
注意:在这种方式下,所有以TestMethod为前缀的测试都会被执行;
运行性能测试:
go test -v -cpu 4 -bench . -run BenchmarkJoin

度量和监控

Geth可以进行行为监控汇总和显示性能度量表详情请参考metrics and monitoring

获取堆栈信息

如果在启动geth时,使用—pprof选项,就会在6060端口上启动一个debug http服务。通过访问http://localhost:6060/debug/pprof可以查看堆、运行进程等信息。通过http://localhost:6060/debug/pprof/goroute?debug=2,可以产生对于除错有用的信息。
注意:如果运行多个geth实例,那么这个端口只对第一个启动的实例有效,如果要产生其他实例的堆栈信息,你可以在启动实例时,选择不同的pprof端口。而且要确保把stderr重定向到日志文件中,如:
geth -port=30300 -verbosity 5 --pprof --pprofport 6060 2>> /tmp/00.glog
geth -port=30301 -verbosity 5 --pprof --pprofport 6061 2>> /tmp/01.glog
geth -port=30302 -verbosity 5 --pprof --pprofport 6062 2>> /tmp/02.glog
如果要删除有堆栈信息的geth,要发送QUIT信号,如:
killall -QUIT geth 
这样会把堆栈信息,存储在他们对应的日志文件中;

贡献

为了向go-ethereum贡献代码,需要先fork库,然后修改、提交代码,然后发送一个pull request,以便维护者可以审查和merge到代码主干中。
如果你提交的是比较复杂的变更,你可以先在our gitter channel中与核心开发人员确认,以确保你的变更是符合以太坊基本设计思路的,或者也可以得到一些早期的反馈。Pull request要基于master分支。
以太坊鼓励Pull request早行的方式,即你可以在还没有解决问题或增加新特性的情况下,就创建Pull request。这会让核心开发人员和其他自愿者知道你要解决的问题。这些早期的Pull request暗示着“正在处理”状态。