如何让私钥不写入智能合约:dotevn
大家想一个问题,我们的智能合约上链都是公开透明,如果我们直接把部署时候的私钥写进部署代码里面,只要有人看到了我的部署代码,那岂不是谁都可以看到我的钱包了?
有一个办法可以不直接写入部署合约的js中,我们把私钥设置为项目环境变量,然后通过响应的工具对它进行引入到代码里面,dotenv
便是这样一个模块。
安装dotenv
npm install dotenv --save
创建一个.env文件
在项目根路径创建.env。(我们继续以hardhat的案例项目进行演示)
touch .env
vim .env
按照这种格式输入你想不写入部署代码中的数据
PRIVATE_KEY=020626
MY_API=123456789
在部署代码中引入dotenv
现在我们继续去修改script目录下面的sample-script.js的代码
导入dotenv
require('dotenv').config()
引用环境变量
const PRIVATE_KEY = process.env.PRIVATE_KEY;
const MY_API = process.env.MY_API;
console.log("私钥为:",PRIVATE_KEY);
console.log(`MY_API为:${MY_API}`);
运行部署的代码
项目根目录运行部署代码
npx hardhat run scripts/sample-script.js
看,我们能正确引用环境变量到js中了,不用再直接将私钥写入代码了
这样上传到区块链的就只是环境变量的名称,而具体的密钥已经在部署的时候运行了。
对文章满意的话欢迎点赞收藏,哈哈,谢谢你