SUI+Move快速上手
Sui Move,一切以对象为核心。 官方文档: https://docs.sui.io/build 开发文档: https://examples.sui.io/1. 安装sui cli命令行工具$ cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui sui-node 2. 初始化测试环境,创建本地测试地址$ sui client $ sui client addresses 可以看到,sui的地址长度与以太坊相同,都是20个字节,与Aptos不同。3. 安装sui浏览器插件钱包在插件钱包页面上申请测试币。 https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdilrequest devnet sui token在sui浏览器中查看钱包地址信息: https://explorer.devnet.sui.io/addresses/0xdd36d012f...
Aptos+Move->快速上手指南
1. 概述APTOS公链可视为Meta(原Facebook)Libra(后更名Diem)计划搁浅后的续篇。 今年1月底,Diem被Meta出售,一些核心成员出走,组建团队基于Diem的开源代码进行Aptos公链的开发。 其号称在理想状态下,每秒可处理16万笔交易。 链节点使用Rust语言开发。 链上智能合约的开发语言是Move,是 Diem 项目 专门为区块链开发的一种安全可靠的智能合约编程语言,其语法与Rust语言类似。2. 常用链接官网:https://aptoslabs.com/devnet浏览器:https://explorer.devnet.aptos.dev/ (浏览器搜索功能不好使,可以直接使用URL:https://explorer.devnet.aptos.dev/account/0x3e8bc3b97d4710c3cf1e89890756f7872ead687dbd4d9d4f9118b885bf81c5da )TypeScript SDK: https://www.npmjs.com/package/aptosMOVE语言教程:https://diem.g...
Web3 developer
SUI+Move快速上手
Sui Move,一切以对象为核心。 官方文档: https://docs.sui.io/build 开发文档: https://examples.sui.io/1. 安装sui cli命令行工具$ cargo install --locked --git https://github.com/MystenLabs/sui.git --branch devnet sui sui-node 2. 初始化测试环境,创建本地测试地址$ sui client $ sui client addresses 可以看到,sui的地址长度与以太坊相同,都是20个字节,与Aptos不同。3. 安装sui浏览器插件钱包在插件钱包页面上申请测试币。 https://chrome.google.com/webstore/detail/sui-wallet/opcgpfmipidbgpenhmajoajpbobppdilrequest devnet sui token在sui浏览器中查看钱包地址信息: https://explorer.devnet.sui.io/addresses/0xdd36d012f...
Aptos+Move->快速上手指南
1. 概述APTOS公链可视为Meta(原Facebook)Libra(后更名Diem)计划搁浅后的续篇。 今年1月底,Diem被Meta出售,一些核心成员出走,组建团队基于Diem的开源代码进行Aptos公链的开发。 其号称在理想状态下,每秒可处理16万笔交易。 链节点使用Rust语言开发。 链上智能合约的开发语言是Move,是 Diem 项目 专门为区块链开发的一种安全可靠的智能合约编程语言,其语法与Rust语言类似。2. 常用链接官网:https://aptoslabs.com/devnet浏览器:https://explorer.devnet.aptos.dev/ (浏览器搜索功能不好使,可以直接使用URL:https://explorer.devnet.aptos.dev/account/0x3e8bc3b97d4710c3cf1e89890756f7872ead687dbd4d9d4f9118b885bf81c5da )TypeScript SDK: https://www.npmjs.com/package/aptosMOVE语言教程:https://diem.g...
Web3 developer
Share Dialog
Share Dialog

Subscribe to lolieatapple

Subscribe to lolieatapple
<100 subscribers
<100 subscribers
新建一个新的目录,在新目录中执行:
$ yarn add -D hardhat
$ yarn hardhat init
按照提示,初始化语言选择JavaScript,并下载全部默认npm包。
将目录中的contracts目录清空,将自己的合约代码拷贝到contracts目录中。
(contracts内自带一个示例合约,可以结合它来看示例部署脚本和测试脚本)
在配置文件hardhat.config.js中,配置合约solidity版本和rpc信息,其中apiKey是用作浏览器验证时使用,如果不需要验证,可不用配置。accounts是一个数组,其中存放私钥数组。
如下所示:
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: {
version: "0.4.26",
settings: {
optimizer: {
enabled: true,
runs: 200
}
}
},
networks: {
fuji: {
url: 'https://api.avax-test.network/ext/bc/C/rpc',
accounts: [process.env.PK],
},
bscTestnet: {
url: 'https://bsctestapi.terminet.io/rpc',
accounts: [process.env.PK],
},
moonbaseAlfa: {
url: 'https://rpc.testnet.moonbeam.network',
accounts: [process.env.PK],
},
goerli: {
url: 'https://rpc.ankr.com/eth_goerli',
accounts: [process.env.PK],
},
},
etherscan: {
apiKey: {
avalancheFujiTestnet: "",
bscTestnet: "",
moonbaseAlpha: "",
goerli: "",
},
},
};
使用如下指令编译合约:
$ yarn hardhat compile
在scripts目录内编写部署脚本,这里使用默认的deploy.js修改,下方列出的示例代码分两部分,第一部分main函数前3行演示了普通合约部署的步骤,主要分3步,第一步获取Factory,第二步发送部署交易,第三步确认部署完成。第二部分示范带有library的合约部署,首先部署library,然后将library地址放入依赖的factory参数。
const hre = require("hardhat");
async function main() {
let TokenManagerDelegateV2 = await hre.ethers.getContractFactory("TokenManagerDelegateV2");
let tokenManagerDelegate = await TokenManagerDelegateV2.deploy();
await tokenManagerDelegate.deployed();
console.log("TokenManagerDelegateV2 deployed to:", tokenManagerDelegate.address);
let NFTLibV1 = await hre.ethers.getContractFactory("NFTLibV1");
let nftLib = await NFTLibV1.deploy();
await nftLib.deployed();
console.log("NFTLibV1 deployed to:", nftLib.address);
let RapidityLibV4 = await hre.ethers.getContractFactory("RapidityLibV4");
let rapidityLib = await RapidityLibV4.deploy();
await rapidityLib.deployed();
console.log("RapidityLibV4 deployed to:", rapidityLib.address);
let CrossDelegateV4 = await hre.ethers.getContractFactory("CrossDelegateV4", {
libraries: {
NFTLibV1: nftLib.address,
RapidityLibV4: rapidityLib.address,
}
});
let crossDelegate = await CrossDelegateV4.deploy();
await crossDelegate.deployed();
console.log("CrossDelegateV4 deployed to:", crossDelegate.address);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
使用如下指令在自带的evm虚拟机内部测试署:
$ yarn hardhat run scripts/deploy.js
测试部署成功后,即可到真实区块链上部署,指令如下:
$ yarn hardhat --network goerli scripts/deploy.js
首先可以查询当前hardhat 是否支持你要验证的浏览器:
$ yarn hardhat verify --list-networks
可以看到所有已经支持的浏览器,对不支持的,可以自定义API-URL和APIKEY,详情见:node_modules/@nomiclabs/hardhat-etherscan/README.md
文件内的说明。
使用如下指令完成验证:
$ yarn hardhat --network goerli verify 0x73bE9....57
对于有构造函数参数的合约,在地址后面空格,后接参数内容。
对于有library的合约,建议先完成library的验证,再进行合约验证,否则浏览器会在验证页面提示:

这个提示即使后面补上了library验证也刷新不掉。
hardhat的单元测试套件有一个亮点,就支持Fixture函数,可以在示例的代码中看到。Fixture函数的作用是在第一次执行之后,在evm模拟器上留下一个快照点,之后每次加载这个函数的时候,自动复位到此快照的位置,不用再次执行函数内容。对于初始化工作复杂的合约来说,可以大幅度提升测试效率。
示例的单元测试代码在此处:test/Lock.js
使用如下指令可进行单元测试和测试覆盖性分析:
$ yarn hardhat test
$ yarn hardhat coverage
新建一个新的目录,在新目录中执行:
$ yarn add -D hardhat
$ yarn hardhat init
按照提示,初始化语言选择JavaScript,并下载全部默认npm包。
将目录中的contracts目录清空,将自己的合约代码拷贝到contracts目录中。
(contracts内自带一个示例合约,可以结合它来看示例部署脚本和测试脚本)
在配置文件hardhat.config.js中,配置合约solidity版本和rpc信息,其中apiKey是用作浏览器验证时使用,如果不需要验证,可不用配置。accounts是一个数组,其中存放私钥数组。
如下所示:
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: {
version: "0.4.26",
settings: {
optimizer: {
enabled: true,
runs: 200
}
}
},
networks: {
fuji: {
url: 'https://api.avax-test.network/ext/bc/C/rpc',
accounts: [process.env.PK],
},
bscTestnet: {
url: 'https://bsctestapi.terminet.io/rpc',
accounts: [process.env.PK],
},
moonbaseAlfa: {
url: 'https://rpc.testnet.moonbeam.network',
accounts: [process.env.PK],
},
goerli: {
url: 'https://rpc.ankr.com/eth_goerli',
accounts: [process.env.PK],
},
},
etherscan: {
apiKey: {
avalancheFujiTestnet: "",
bscTestnet: "",
moonbaseAlpha: "",
goerli: "",
},
},
};
使用如下指令编译合约:
$ yarn hardhat compile
在scripts目录内编写部署脚本,这里使用默认的deploy.js修改,下方列出的示例代码分两部分,第一部分main函数前3行演示了普通合约部署的步骤,主要分3步,第一步获取Factory,第二步发送部署交易,第三步确认部署完成。第二部分示范带有library的合约部署,首先部署library,然后将library地址放入依赖的factory参数。
const hre = require("hardhat");
async function main() {
let TokenManagerDelegateV2 = await hre.ethers.getContractFactory("TokenManagerDelegateV2");
let tokenManagerDelegate = await TokenManagerDelegateV2.deploy();
await tokenManagerDelegate.deployed();
console.log("TokenManagerDelegateV2 deployed to:", tokenManagerDelegate.address);
let NFTLibV1 = await hre.ethers.getContractFactory("NFTLibV1");
let nftLib = await NFTLibV1.deploy();
await nftLib.deployed();
console.log("NFTLibV1 deployed to:", nftLib.address);
let RapidityLibV4 = await hre.ethers.getContractFactory("RapidityLibV4");
let rapidityLib = await RapidityLibV4.deploy();
await rapidityLib.deployed();
console.log("RapidityLibV4 deployed to:", rapidityLib.address);
let CrossDelegateV4 = await hre.ethers.getContractFactory("CrossDelegateV4", {
libraries: {
NFTLibV1: nftLib.address,
RapidityLibV4: rapidityLib.address,
}
});
let crossDelegate = await CrossDelegateV4.deploy();
await crossDelegate.deployed();
console.log("CrossDelegateV4 deployed to:", crossDelegate.address);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
使用如下指令在自带的evm虚拟机内部测试署:
$ yarn hardhat run scripts/deploy.js
测试部署成功后,即可到真实区块链上部署,指令如下:
$ yarn hardhat --network goerli scripts/deploy.js
首先可以查询当前hardhat 是否支持你要验证的浏览器:
$ yarn hardhat verify --list-networks
可以看到所有已经支持的浏览器,对不支持的,可以自定义API-URL和APIKEY,详情见:node_modules/@nomiclabs/hardhat-etherscan/README.md
文件内的说明。
使用如下指令完成验证:
$ yarn hardhat --network goerli verify 0x73bE9....57
对于有构造函数参数的合约,在地址后面空格,后接参数内容。
对于有library的合约,建议先完成library的验证,再进行合约验证,否则浏览器会在验证页面提示:

这个提示即使后面补上了library验证也刷新不掉。
hardhat的单元测试套件有一个亮点,就支持Fixture函数,可以在示例的代码中看到。Fixture函数的作用是在第一次执行之后,在evm模拟器上留下一个快照点,之后每次加载这个函数的时候,自动复位到此快照的位置,不用再次执行函数内容。对于初始化工作复杂的合约来说,可以大幅度提升测试效率。
示例的单元测试代码在此处:test/Lock.js
使用如下指令可进行单元测试和测试覆盖性分析:
$ yarn hardhat test
$ yarn hardhat coverage
No activity yet