可升级合约是很常见的一种维护合约的方式。方便生产环境中的逻辑升级,以及漏洞的修复。常见的可升级框架有openzeppelin-cli、truffle、hardhat等,但是有些情况会存在误操作或者误删等情况,导致可升级合约的配置文件丢失。本文主要详细讲解在配置文件丢失的情况下,如何重新配置并进行合
可升级合约是很常见的一种维护合约的方式。方便生产环境中的逻辑升级,以及漏洞的修复。常见的可升级框架有openzeppelin-cli、truffle、hardhat等,但是有些情况会存在误操作或者误删等情况,导致可升级合约的配置文件丢失。本文主要详细讲解在配置文件丢失的情况下,如何重新配置并进行合约的升级
上边是一个可升级合约的目录结构
是openzeppelin可升级合约的配置文件存放位置,其中project.json是合约配置信息包含哪些合约,在部署时间使用的版本,是否开启优化等配置信息:
{
"manifestVersion": "2.2",
"contracts": {
"Verify": "Verify"
},
"dependencies": {},
"name": "market",
"version": "0.0.1",
"compiler": {
"compilerSettings": {
"optimizer": {
"enabled": false,
"runs": "200"
}
},
"typechain": {
"enabled": false
},
"solcVersion": "0.6.12",
"manager": "openzeppelin",
"artifactsDir": "build/contracts",
"contractsDir": "contracts"
},
"telemetryOptIn": true
}
这个文件是在你部署合约之后才会存在,【97】是因为这个项目在bsc测试网,链id为97的节点上部署的,在不同的链上部署之后都会生成对应的json部署文件。
{
"contracts": {
"Verify": {
//这个是具体实现的合约,下边讲解如何找到具体实现的合约
"address": "0xa10930bd4Dc23a23e460B9cD3d18c7f8E8124014",
//下边这些信息,可以通过在其它链部署一次,然后复制过来
"constructorCode": "608060405234801561001057600080fd5b50610e9f806100206000396000f3fe",
"bodyBytecodeHash": "5ee1df4f30810ac49d0fbdc177c870ebf1be19166bc7c2705b437a81c2737a4a",
"localBytecodeHash": "8e807ab806c6762d7cb27bb69c2d32453e3ca1faa0c50a429922c50ab82cbd46",
"deployedBytecodeHash": "8e807ab806c6762d7cb27bb69c2d32453e3ca1faa0c50a429922c50ab82cbd46",
"types": {
"t_bool": {
"id": "t_bool",
"kind": "elementary",
"label": "bool"
},
"t_mapping<t_bool>": {
"id": "t_mapping<t_bool>",
"valueType": "t_bool",
"label": "mapping(key => bool)",
"kind": "mapping"
}
},
"storage": [
{
"contract": "Verify",
"path": "contracts/logic/Verify.sol",
"label": "isOwner",
"astId": 947,
"type": "t_mapping<t_bool>",
"src": "81:41:6"
}
],
"warn...
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!