八:通过Infura部署到rinkeby测试网
如果朋友有代码,工具,使用流程等不太清楚的,可用去专栏看看,专栏中有文章中所提及的具体使用方式。
不太明白的朋友可以自己去看看~~ 瞬移专栏
实验目的
手动部署项目,不通过truffle或者hardhat等手脚架来部署项目,能让我们更加清晰的了解整个项目过程,在后期使用hardhat等工具的时候也会更加得心应手~
实验原理
- 在我们将合约正式部署到以太坊主链之前,一般都会在测试链先进行一段时间的测试。
开始条件
- nodejs
- ether.js
- fs
- VS code
- MetaMask钱包
- infura
实验过程
- 获取infura的url
- 获取私钥
- 在我们部署合约的代码中写入响应的信息
实验步骤
-
根据第七章的步骤得到url,我们把他复制下来,一会填入后面的部署代码中
-
根据第九章文章的操作步骤(不知道怎么获取私钥的的点击:查看metamask私钥),获取到我们的私钥,复制下来,一会填入部署代码中
-
重新编写我们的deploy.js代码,大家会发现,我们部署到rinkeby的方式和部署到ganache的方式基本相同,只需要改变网络地址和重新填写自己的metaMask私钥即可(代码放在文末)
-
打开终端,运行
node deploy.js
,等待一段时间后,大家可以看到我们打印出来的合约地址
-
复制合约地址,进入这个网站:
https://rinkeby.etherscan.io/
,在搜索框填入合约地址点击搜索
-
大家就能看到我们把项目发布到了rinkeby测试网了~~。第一天消息便是我们创建合约的消息
相关官方知识库
下一章内容:
恭喜大家,我们一起完成了区块链入门的实战,相信大家对整个区块链的项目脉络都有了系统化的了解,在下面一个专栏中,我们将使用hardhat开发一个更加复杂的项目,hardhat是一个区块链的智能开发环境,能很大程度上的支持我们大型项目的开发,而不会被繁琐的配置文件阻碍我们的脚步
下一个专栏:用hardhat部署开发复杂的智能合约(未完成)
欢迎讨论学习⊙﹏⊙
对文章满意的话欢迎点赞收藏,哈哈
我不会对文章设置VIP等限制,有喜欢的朋友可以打赏,打赏也是博主勤更的动力,谢谢你~~
deploy.js更改后的代码:
const ethers = require("ethers");
const fs = require("fs-extra");
async function main() {
// 连接到以太坊提供的网络
let provider = new ethers.providers.JsonRpcProvider(
"https://eth-rinkeby.alchemyapi.io/v2/你自己的api" // infura项目中rinkeby的url
);
//用户连接到rinkeby网络
let wallet = new ethers.Wallet(
"密码", //metamask私钥,千万别泄露你的私钥
provider
);
// ethers.types.Signer
// 获取solidity的接口和字节码
const abi = fs.readFileSync("./SimpleStorage_sol_SimpleStorage.abi", "utf8");
const binary = fs.readFileSync(
"./SimpleStorage_sol_SimpleStorage.bin",
"utf8"
);
//用户创建交易
const contractFactory = new ethers.ContractFactory(abi, binary, wallet);
console.log("Deploying, please wait...");
//用户部署智能合约
const contract = await contractFactory.deploy();
console.log(`项目的合约地址为:${
contract.address}`);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});