@skalenetwork/upgrade-tools 1.0.0 → 2.0.0-develop.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +66 -11
  2. package/dist/hardhat.config.js +1 -1
  3. package/dist/src/deploy.d.ts +0 -1
  4. package/dist/src/deploy.js +4 -6
  5. package/dist/src/gnosis-safe.d.ts +1 -1
  6. package/dist/src/gnosis-safe.js +118 -42
  7. package/dist/src/index.d.ts +2 -2
  8. package/dist/src/index.js +2 -2
  9. package/dist/src/submitters/auto-submitter.d.ts +11 -0
  10. package/dist/src/submitters/auto-submitter.js +176 -0
  11. package/dist/src/submitters/eoa-submitter.d.ts +5 -0
  12. package/dist/src/submitters/eoa-submitter.js +34 -0
  13. package/dist/src/submitters/index.d.ts +6 -0
  14. package/dist/src/submitters/index.js +22 -0
  15. package/dist/src/submitters/safe-ima-legacy-marionette-submitter.d.ts +6 -0
  16. package/dist/src/submitters/safe-ima-legacy-marionette-submitter.js +71 -0
  17. package/dist/src/submitters/safe-ima-marionette-submitter.d.ts +7 -0
  18. package/dist/src/submitters/safe-ima-marionette-submitter.js +80 -0
  19. package/dist/src/submitters/safe-submitter.d.ts +8 -0
  20. package/dist/src/submitters/safe-submitter.js +44 -0
  21. package/dist/src/submitters/safe-to-ima-submitter.d.ts +9 -0
  22. package/dist/src/submitters/safe-to-ima-submitter.js +39 -0
  23. package/dist/src/submitters/submitter.d.ts +5 -0
  24. package/dist/src/submitters/submitter.js +21 -0
  25. package/dist/src/submitters/types/marionette.d.ts +13 -0
  26. package/dist/src/submitters/types/marionette.js +4 -0
  27. package/dist/src/types/SkaleABIFile.d.ts +3 -0
  28. package/dist/src/{types.js → types/SkaleABIFile.js} +0 -0
  29. package/dist/src/{types.d.ts → types/SkaleManifestData.d.ts} +0 -3
  30. package/dist/src/types/SkaleManifestData.js +2 -0
  31. package/dist/src/upgrader.d.ts +19 -0
  32. package/dist/src/upgrader.js +140 -0
  33. package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.d.ts +1 -1
  34. package/dist/typechain-types/factories/AdminUpgradeabilityProxy__factory.js +1 -1
  35. package/dist/typechain-types/factories/ProxyAdmin__factory.d.ts +1 -1
  36. package/dist/typechain-types/factories/ProxyAdmin__factory.js +1 -1
  37. package/dist/typechain-types/factories/SafeMock__factory.d.ts +1 -1
  38. package/dist/typechain-types/factories/SafeMock__factory.js +1 -1
  39. package/package.json +1 -1
  40. package/dist/src/upgrade.d.ts +0 -7
  41. package/dist/src/upgrade.js +0 -203
@@ -156,7 +156,7 @@ const _abi = [
156
156
  type: "function",
157
157
  },
158
158
  ];
159
- const _bytecode = "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610759806100616000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610515565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610554565b610292565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461058c565b61031c565b34801561013057600080fd5b506100d161013f366004610554565b6103ad565b34801561015057600080fd5b506100d161015f366004610515565b610405565b34801561017057600080fd5b506100a061017f366004610515565b6104ef565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d9190610538565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f906106c0565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102bc5760405162461bcd60e51b815260040161023f906106c0565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161023f906106c0565b60405163278f794360e11b81526001600160a01b03841690634f1ef286903490610376908690869060040161065d565b6000604051808303818588803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260040161023f906106c0565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102e6565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260040161023f906106c0565b6001600160a01b0381166104945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600060208284031215610526578081fd5b81356105318161070b565b9392505050565b600060208284031215610549578081fd5b81516105318161070b565b60008060408385031215610566578081fd5b82356105718161070b565b915060208301356105818161070b565b809150509250929050565b6000806000606084860312156105a0578081fd5b83356105ab8161070b565b925060208401356105bb8161070b565b9150604084013567ffffffffffffffff808211156105d7578283fd5b818601915086601f8301126105ea578283fd5b8135818111156105fc576105fc6106f5565b604051601f8201601f19908116603f01168101908382118183101715610624576106246106f5565b8160405282815289602084870101111561063c578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b818110156106985785810183015185820160600152820161067c565b818111156106a95783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461072057600080fd5b5056fea2646970667358221220d849f96f3086b9f82cdcf665adb8c697ace05638da1c7c16ab2d26293717af6764736f6c63430008020033";
159
+ const _bytecode = "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350610763806100616000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b36600461052d565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610551565b610292565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f3660046105a0565b61031c565b34801561013057600080fd5b506100d161013f366004610551565b6103ad565b34801561015057600080fd5b506100d161015f36600461052d565b610405565b34801561017057600080fd5b506100a061017f36600461052d565b6104ef565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d9190610676565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f90610693565b60405180910390fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146102bc5760405162461bcd60e51b815260040161023f90610693565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561030057600080fd5b505af1158015610314573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103465760405162461bcd60e51b815260040161023f90610693565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061037690869086906004016106c8565b6000604051808303818588803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103d75760405162461bcd60e51b815260040161023f90610693565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102e6565b6000546001600160a01b0316331461042f5760405162461bcd60e51b815260040161023f90610693565b6001600160a01b0381166104945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6001600160a01b038116811461052a57600080fd5b50565b60006020828403121561053f57600080fd5b813561054a81610515565b9392505050565b6000806040838503121561056457600080fd5b823561056f81610515565b9150602083013561057f81610515565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156105b557600080fd5b83356105c081610515565b925060208401356105d081610515565b9150604084013567ffffffffffffffff808211156105ed57600080fd5b818601915086601f83011261060157600080fd5b8135818111156106135761061361058a565b604051601f8201601f19908116603f0116810190838211818310171561063b5761063b61058a565b8160405282815289602084870101111561065457600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60006020828403121561068857600080fd5b815161054a81610515565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60018060a01b038316815260006020604081840152835180604085015260005b81811015610704578581018301518582016060015282016106e8565b81811115610716576000606083870101525b50601f01601f19169290920160600194935050505056fea264697066735822122036f6852a5df0655a14e69e29e9ab5e34ffa2e6d97259f414f152f3aff72edd4864736f6c63430008090033";
160
160
  const isSuperArgs = (xs) => xs.length > 1;
161
161
  class ProxyAdmin__factory extends ethers_1.ContractFactory {
162
162
  constructor(...args) {
@@ -14,7 +14,7 @@ export declare class SafeMock__factory extends ContractFactory {
14
14
  connect(signer: Signer): SafeMock__factory;
15
15
  static readonly contractName: "SafeMock";
16
16
  readonly contractName: "SafeMock";
17
- static readonly bytecode = "0x60806040523480156200001157600080fd5b506000620000206001620000b6565b9050801562000039576000805461ff0019166101001790555b6200004e620001c860201b6200039a1760201c565b604080516020810190915260008152620000689062000230565b8015620000af576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000381565b60008054610100900460ff16156200014f578160ff166001148015620000ef5750620000ed30620002bf60201b620003c91760201c565b155b620001475760405162461bcd60e51b815260206004820152602e602482015260008051602062000cb283398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001ae5760405162461bcd60e51b815260206004820152602e602482015260008051602062000cb283398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200013e565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff16620002245760405162461bcd60e51b815260206004820152602b602482015260008051602062000cd283398151915260448201526a6e697469616c697a696e6760a81b60648201526084016200013e565b6200022e620002ce565b565b805160205b81811015620002ba578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146200027e57600181146200028f576200029a565b6000808585888a5af191506200029a565b6000808585895af491505b5080620002a657600080fd5b505080605501850194505050505062000235565b505050565b6001600160a01b03163b151590565b600054610100900460ff166200032a5760405162461bcd60e51b815260206004820152602b602482015260008051602062000cd283398151915260448201526a6e697469616c697a696e6760a81b60648201526084016200013e565b6200022e33603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61092180620003916000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638d80ff0a116100665780638d80ff0a146101075780638da5cb5b1461011a578063d8d11f7814610135578063f2fde38b14610148578063f5dcb7bb1461015b57600080fd5b806312cc533f146100985780632bf613a5146100ad578063715018a6146100e757806388f8bae1146100ef575b600080fd5b6100ab6100a63660046105a9565b610182565b005b6100d47fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d881565b6040519081526020015b60405180910390f35b6100ab610214565b6100f7600181565b60405190151581526020016100de565b6100ab6101153660046105f8565b61024a565b6033546040516001600160a01b0390911681526020016100de565b6100d46101433660046106b8565b6102d2565b6100ab6101563660046107a2565b6102ff565b6100d47f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b6033546001600160a01b031633146101b55760405162461bcd60e51b81526004016101ac906107c6565b60405180910390fd5b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b1580156101f857600080fd5b505af115801561020c573d6000803e3d6000fd5b505050505050565b6033546001600160a01b0316331461023e5760405162461bcd60e51b81526004016101ac906107c6565b61024860006103d8565b565b805160205b818110156102cd578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461029457600181146102a4576102af565b6000808585888a5af191506102af565b6000808585895af491505b50806102ba57600080fd5b505080605501850194505050505061024f565b505050565b60006102e78c8c8c8c8c8c8c8c8c8c8c61042a565b8051906020012090509b9a5050505050505050505050565b6033546001600160a01b031633146103295760405162461bcd60e51b81526004016101ac906107c6565b6001600160a01b03811661038e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ac565b610397816103d8565b50565b600054610100900460ff166103c15760405162461bcd60e51b81526004016101ac906107fb565b610248610554565b6001600160a01b03163b151590565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d88d8d8d8d604051610461929190610846565b604051908190038120610487949392918e908e908e908e908e908e908e90602001610856565b60408051601f1981840301815291905280516020909101209050601960f81b600160f81b610507604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b600054610100900460ff1661057b5760405162461bcd60e51b81526004016101ac906107fb565b610248336103d8565b6001600160a01b038116811461039757600080fd5b80356105a481610584565b919050565b600080604083850312156105bc57600080fd5b82356105c781610584565b915060208301356105d781610584565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561060a57600080fd5b813567ffffffffffffffff8082111561062257600080fd5b818401915084601f83011261063657600080fd5b813581811115610648576106486105e2565b604051601f8201601f19908116603f01168101908382118183101715610670576106706105e2565b8160405282815287602084870101111561068957600080fd5b826020860160208301376000928101602001929092525095945050505050565b8035600281106105a457600080fd5b60008060008060008060008060008060006101408c8e0312156106da57600080fd5b8b356106e581610584565b9a5060208c0135995060408c013567ffffffffffffffff8082111561070957600080fd5b818e0191508e601f83011261071d57600080fd5b81358181111561072c57600080fd5b8f602082850101111561073e57600080fd5b602083019b50809a5050505061075660608d016106a9565b965060808c0135955060a08c0135945060c08c0135935061077960e08d01610599565b92506107886101008d01610599565b91506101208c013590509295989b509295989b9093969950565b6000602082840312156107b457600080fd5b81356107bf81610584565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8183823760009101908152919050565b8b81526001600160a01b038b166020820152604081018a90526060810189905261016081016002891061089957634e487b7160e01b600052602160045260246000fd5b8860808301528760a08301528660c08301528560e08301526108c76101008301866001600160a01b03169052565b6001600160a01b03939093166101208201526101400152999850505050505050505056fea264697066735822122009f92f3f8147620e576fa16549dc3b015ae4033d658fbf1ed5e761406ba193ec64736f6c634300080b0033496e697469616c697a61626c653a20636f6e747261637420697320616c726561496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069";
17
+ static readonly bytecode = "0x60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200016d60201b620003301760201c565b15801562000063575060005460ff166001145b620000cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620000f0576000805461ff0019166101001790555b620001056200017c60201b6200033f1760201c565b6040805160208101909152600081526200011f90620001e4565b801562000166576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000326565b6001600160a01b03163b151590565b600054610100900460ff16620001d85760405162461bcd60e51b815260206004820152602b602482015260008051602062000c1283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c3565b620001e262000273565b565b805160205b818110156200026e578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811462000232576001811462000243576200024e565b6000808585888a5af191506200024e565b6000808585895af491505b50806200025a57600080fd5b5050806055018501945050505050620001e9565b505050565b600054610100900460ff16620002cf5760405162461bcd60e51b815260206004820152602b602482015260008051602062000c1283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c3565b620001e233603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6108dc80620003366000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638d80ff0a116100665780638d80ff0a146101075780638da5cb5b1461011a578063d8d11f7814610135578063f2fde38b14610148578063f5dcb7bb1461015b57600080fd5b806312cc533f146100985780632bf613a5146100ad578063715018a6146100e757806388f8bae1146100ef575b600080fd5b6100ab6100a6366004610599565b610182565b005b6100d47fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d881565b6040519081526020015b60405180910390f35b6100ab6101e9565b6100f7600181565b60405190151581526020016100de565b6100ab6101153660046105e8565b6101fd565b6033546040516001600160a01b0390911681526020016100de565b6100d46101433660046106a8565b610285565b6100ab610156366004610792565b6102b2565b6100d47f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b61018a61036e565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b1580156101cd57600080fd5b505af11580156101e1573d6000803e3d6000fd5b505050505050565b6101f161036e565b6101fb60006103c8565b565b805160205b81811015610280578083015160f81c6001820184015160601c601583018501516035840186015160558501870160008560008114610247576001811461025757610262565b6000808585888a5af19150610262565b6000808585895af491505b508061026d57600080fd5b5050806055018501945050505050610202565b505050565b600061029a8c8c8c8c8c8c8c8c8c8c8c61041a565b8051906020012090509b9a5050505050505050505050565b6102ba61036e565b6001600160a01b0381166103245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61032d816103c8565b50565b6001600160a01b03163b151590565b600054610100900460ff166103665760405162461bcd60e51b815260040161031b906107b6565b6101fb610544565b6033546001600160a01b031633146101fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161031b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d88d8d8d8d604051610451929190610801565b604051908190038120610477949392918e908e908e908e908e908e908e90602001610811565b60408051601f1981840301815291905280516020909101209050601960f81b600160f81b6104f7604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b600054610100900460ff1661056b5760405162461bcd60e51b815260040161031b906107b6565b6101fb336103c8565b6001600160a01b038116811461032d57600080fd5b803561059481610574565b919050565b600080604083850312156105ac57600080fd5b82356105b781610574565b915060208301356105c781610574565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156105fa57600080fd5b813567ffffffffffffffff8082111561061257600080fd5b818401915084601f83011261062657600080fd5b813581811115610638576106386105d2565b604051601f8201601f19908116603f01168101908382118183101715610660576106606105d2565b8160405282815287602084870101111561067957600080fd5b826020860160208301376000928101602001929092525095945050505050565b80356002811061059457600080fd5b60008060008060008060008060008060006101408c8e0312156106ca57600080fd5b8b356106d581610574565b9a5060208c0135995060408c013567ffffffffffffffff808211156106f957600080fd5b818e0191508e601f83011261070d57600080fd5b81358181111561071c57600080fd5b8f602082850101111561072e57600080fd5b602083019b50809a5050505061074660608d01610699565b965060808c0135955060a08c0135945060c08c0135935061076960e08d01610589565b92506107786101008d01610589565b91506101208c013590509295989b509295989b9093969950565b6000602082840312156107a457600080fd5b81356107af81610574565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8183823760009101908152919050565b8b81526001600160a01b038b166020820152604081018a90526060810189905261016081016002891061085457634e487b7160e01b600052602160045260246000fd5b8860808301528760a08301528660c08301528560e08301526108826101008301866001600160a01b03169052565b6001600160a01b03939093166101208201526101400152999850505050505050505056fea26469706673582212202ff0141edaf3f76ff4bf691522a740076b0763d16b29f9b28057904188aeb98c64736f6c634300080b0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069";
18
18
  static readonly abi: ({
19
19
  inputs: never[];
20
20
  stateMutability: string;
@@ -211,7 +211,7 @@ const _abi = [
211
211
  type: "function",
212
212
  },
213
213
  ];
214
- const _bytecode = "0x60806040523480156200001157600080fd5b506000620000206001620000b6565b9050801562000039576000805461ff0019166101001790555b6200004e620001c860201b6200039a1760201c565b604080516020810190915260008152620000689062000230565b8015620000af576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000381565b60008054610100900460ff16156200014f578160ff166001148015620000ef5750620000ed30620002bf60201b620003c91760201c565b155b620001475760405162461bcd60e51b815260206004820152602e602482015260008051602062000cb283398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b506000919050565b60005460ff808416911610620001ae5760405162461bcd60e51b815260206004820152602e602482015260008051602062000cb283398151915260448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016200013e565b506000805460ff191660ff92909216919091179055600190565b600054610100900460ff16620002245760405162461bcd60e51b815260206004820152602b602482015260008051602062000cd283398151915260448201526a6e697469616c697a696e6760a81b60648201526084016200013e565b6200022e620002ce565b565b805160205b81811015620002ba578083015160f81c6001820184015160601c6015830185015160358401860151605585018701600085600081146200027e57600181146200028f576200029a565b6000808585888a5af191506200029a565b6000808585895af491505b5080620002a657600080fd5b505080605501850194505050505062000235565b505050565b6001600160a01b03163b151590565b600054610100900460ff166200032a5760405162461bcd60e51b815260206004820152602b602482015260008051602062000cd283398151915260448201526a6e697469616c697a696e6760a81b60648201526084016200013e565b6200022e33603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61092180620003916000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638d80ff0a116100665780638d80ff0a146101075780638da5cb5b1461011a578063d8d11f7814610135578063f2fde38b14610148578063f5dcb7bb1461015b57600080fd5b806312cc533f146100985780632bf613a5146100ad578063715018a6146100e757806388f8bae1146100ef575b600080fd5b6100ab6100a63660046105a9565b610182565b005b6100d47fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d881565b6040519081526020015b60405180910390f35b6100ab610214565b6100f7600181565b60405190151581526020016100de565b6100ab6101153660046105f8565b61024a565b6033546040516001600160a01b0390911681526020016100de565b6100d46101433660046106b8565b6102d2565b6100ab6101563660046107a2565b6102ff565b6100d47f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b6033546001600160a01b031633146101b55760405162461bcd60e51b81526004016101ac906107c6565b60405180910390fd5b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b1580156101f857600080fd5b505af115801561020c573d6000803e3d6000fd5b505050505050565b6033546001600160a01b0316331461023e5760405162461bcd60e51b81526004016101ac906107c6565b61024860006103d8565b565b805160205b818110156102cd578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811461029457600181146102a4576102af565b6000808585888a5af191506102af565b6000808585895af491505b50806102ba57600080fd5b505080605501850194505050505061024f565b505050565b60006102e78c8c8c8c8c8c8c8c8c8c8c61042a565b8051906020012090509b9a5050505050505050505050565b6033546001600160a01b031633146103295760405162461bcd60e51b81526004016101ac906107c6565b6001600160a01b03811661038e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101ac565b610397816103d8565b50565b600054610100900460ff166103c15760405162461bcd60e51b81526004016101ac906107fb565b610248610554565b6001600160a01b03163b151590565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d88d8d8d8d604051610461929190610846565b604051908190038120610487949392918e908e908e908e908e908e908e90602001610856565b60408051601f1981840301815291905280516020909101209050601960f81b600160f81b610507604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b600054610100900460ff1661057b5760405162461bcd60e51b81526004016101ac906107fb565b610248336103d8565b6001600160a01b038116811461039757600080fd5b80356105a481610584565b919050565b600080604083850312156105bc57600080fd5b82356105c781610584565b915060208301356105d781610584565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561060a57600080fd5b813567ffffffffffffffff8082111561062257600080fd5b818401915084601f83011261063657600080fd5b813581811115610648576106486105e2565b604051601f8201601f19908116603f01168101908382118183101715610670576106706105e2565b8160405282815287602084870101111561068957600080fd5b826020860160208301376000928101602001929092525095945050505050565b8035600281106105a457600080fd5b60008060008060008060008060008060006101408c8e0312156106da57600080fd5b8b356106e581610584565b9a5060208c0135995060408c013567ffffffffffffffff8082111561070957600080fd5b818e0191508e601f83011261071d57600080fd5b81358181111561072c57600080fd5b8f602082850101111561073e57600080fd5b602083019b50809a5050505061075660608d016106a9565b965060808c0135955060a08c0135945060c08c0135935061077960e08d01610599565b92506107886101008d01610599565b91506101208c013590509295989b509295989b9093969950565b6000602082840312156107b457600080fd5b81356107bf81610584565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8183823760009101908152919050565b8b81526001600160a01b038b166020820152604081018a90526060810189905261016081016002891061089957634e487b7160e01b600052602160045260246000fd5b8860808301528760a08301528660c08301528560e08301526108c76101008301866001600160a01b03169052565b6001600160a01b03939093166101208201526101400152999850505050505050505056fea264697066735822122009f92f3f8147620e576fa16549dc3b015ae4033d658fbf1ed5e761406ba193ec64736f6c634300080b0033496e697469616c697a61626c653a20636f6e747261637420697320616c726561496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069";
214
+ const _bytecode = "0x60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200016d60201b620003301760201c565b15801562000063575060005460ff166001145b620000cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620000f0576000805461ff0019166101001790555b620001056200017c60201b6200033f1760201c565b6040805160208101909152600081526200011f90620001e4565b801562000166576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5062000326565b6001600160a01b03163b151590565b600054610100900460ff16620001d85760405162461bcd60e51b815260206004820152602b602482015260008051602062000c1283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c3565b620001e262000273565b565b805160205b818110156200026e578083015160f81c6001820184015160601c60158301850151603584018601516055850187016000856000811462000232576001811462000243576200024e565b6000808585888a5af191506200024e565b6000808585895af491505b50806200025a57600080fd5b5050806055018501945050505050620001e9565b505050565b600054610100900460ff16620002cf5760405162461bcd60e51b815260206004820152602b602482015260008051602062000c1283398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000c3565b620001e233603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6108dc80620003366000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638d80ff0a116100665780638d80ff0a146101075780638da5cb5b1461011a578063d8d11f7814610135578063f2fde38b14610148578063f5dcb7bb1461015b57600080fd5b806312cc533f146100985780632bf613a5146100ad578063715018a6146100e757806388f8bae1146100ef575b600080fd5b6100ab6100a6366004610599565b610182565b005b6100d47fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d881565b6040519081526020015b60405180910390f35b6100ab6101e9565b6100f7600181565b60405190151581526020016100de565b6100ab6101153660046105e8565b6101fd565b6033546040516001600160a01b0390911681526020016100de565b6100d46101433660046106a8565b610285565b6100ab610156366004610792565b6102b2565b6100d47f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a7946921881565b61018a61036e565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b1580156101cd57600080fd5b505af11580156101e1573d6000803e3d6000fd5b505050505050565b6101f161036e565b6101fb60006103c8565b565b805160205b81811015610280578083015160f81c6001820184015160601c601583018501516035840186015160558501870160008560008114610247576001811461025757610262565b6000808585888a5af19150610262565b6000808585895af491505b508061026d57600080fd5b5050806055018501945050505050610202565b505050565b600061029a8c8c8c8c8c8c8c8c8c8c8c61041a565b8051906020012090509b9a5050505050505050505050565b6102ba61036e565b6001600160a01b0381166103245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61032d816103c8565b50565b6001600160a01b03163b151590565b600054610100900460ff166103665760405162461bcd60e51b815260040161031b906107b6565b6101fb610544565b6033546001600160a01b031633146101fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161031b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060007fbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d88d8d8d8d604051610451929190610801565b604051908190038120610477949392918e908e908e908e908e908e908e90602001610811565b60408051601f1981840301815291905280516020909101209050601960f81b600160f81b6104f7604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020820152469181019190915230606082015260009060800160405160208183030381529060405280519060200120905090565b6040516001600160f81b031993841660208201529290911660218301526022820152604281018290526062016040516020818303038152906040529150509b9a5050505050505050505050565b600054610100900460ff1661056b5760405162461bcd60e51b815260040161031b906107b6565b6101fb336103c8565b6001600160a01b038116811461032d57600080fd5b803561059481610574565b919050565b600080604083850312156105ac57600080fd5b82356105b781610574565b915060208301356105c781610574565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156105fa57600080fd5b813567ffffffffffffffff8082111561061257600080fd5b818401915084601f83011261062657600080fd5b813581811115610638576106386105d2565b604051601f8201601f19908116603f01168101908382118183101715610660576106606105d2565b8160405282815287602084870101111561067957600080fd5b826020860160208301376000928101602001929092525095945050505050565b80356002811061059457600080fd5b60008060008060008060008060008060006101408c8e0312156106ca57600080fd5b8b356106d581610574565b9a5060208c0135995060408c013567ffffffffffffffff808211156106f957600080fd5b818e0191508e601f83011261070d57600080fd5b81358181111561071c57600080fd5b8f602082850101111561072e57600080fd5b602083019b50809a5050505061074660608d01610699565b965060808c0135955060a08c0135945060c08c0135935061076960e08d01610589565b92506107786101008d01610589565b91506101208c013590509295989b509295989b9093969950565b6000602082840312156107a457600080fd5b81356107af81610574565b9392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b8183823760009101908152919050565b8b81526001600160a01b038b166020820152604081018a90526060810189905261016081016002891061085457634e487b7160e01b600052602160045260246000fd5b8860808301528760a08301528660c08301528560e08301526108826101008301866001600160a01b03169052565b6001600160a01b03939093166101208201526101400152999850505050505050505056fea26469706673582212202ff0141edaf3f76ff4bf691522a740076b0763d16b29f9b28057904188aeb98c64736f6c634300080b0033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069";
215
215
  const isSuperArgs = (xs) => xs.length > 1;
216
216
  class SafeMock__factory extends ethers_1.ContractFactory {
217
217
  constructor(...args) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skalenetwork/upgrade-tools",
3
- "version": "1.0.0",
3
+ "version": "2.0.0-develop.0",
4
4
  "description": "Scripts to support upgrades of smart contracts",
5
5
  "files": [
6
6
  "dist/**/*"
@@ -1,7 +0,0 @@
1
- import { SkaleABIFile } from "./types";
2
- import { Contract } from "ethers";
3
- import { OwnableUpgradeable } from "../typechain-types";
4
- export declare function getContractFactoryAndUpdateManifest(contract: string): Promise<import("ethers").ContractFactory>;
5
- declare type DeploymentAction<ContractManagerType extends Contract> = (safeTransactions: string[], abi: SkaleABIFile, contractManager: ContractManagerType) => Promise<void>;
6
- export declare function upgrade<ContractManagerType extends OwnableUpgradeable>(projectName: string, targetVersion: string, getDeployedVersion: (abi: SkaleABIFile) => Promise<string | undefined>, setVersion: (safeTransaction: string[], abi: SkaleABIFile, newVersion: string) => Promise<void>, safeMockAccessRequirements: string[], contractNamesToUpgrade: string[], deployNewContracts: DeploymentAction<ContractManagerType>, initialize: DeploymentAction<ContractManagerType>): Promise<void>;
7
- export {};
@@ -1,203 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.upgrade = exports.getContractFactoryAndUpdateManifest = void 0;
16
- const deploy_1 = require("./deploy");
17
- const fs_1 = require("fs");
18
- const hardhat_1 = require("hardhat");
19
- const hardhat_2 = __importDefault(require("hardhat"));
20
- const upgrades_core_1 = require("@openzeppelin/upgrades-core");
21
- const chalk_1 = __importDefault(require("chalk"));
22
- const admin_1 = require("@openzeppelin/hardhat-upgrades/dist/admin");
23
- const version_1 = require("./version");
24
- const abi_1 = require("./abi");
25
- const verification_1 = require("./verification");
26
- const multiSend_1 = require("./multiSend");
27
- const gnosis_safe_1 = require("./gnosis-safe");
28
- function getContractFactoryAndUpdateManifest(contract) {
29
- return __awaiter(this, void 0, void 0, function* () {
30
- const manifest = JSON.parse(yield fs_1.promises.readFile(yield (0, deploy_1.getManifestFile)(), "utf-8"));
31
- const { linkReferences } = yield hardhat_1.artifacts.readArtifact(contract);
32
- if (!Object.keys(linkReferences).length)
33
- return yield hardhat_1.ethers.getContractFactory(contract);
34
- const librariesToUpgrade = [];
35
- const oldLibraries = {};
36
- if (manifest.libraries === undefined) {
37
- Object.assign(manifest, { libraries: {} });
38
- }
39
- for (const key of Object.keys(linkReferences)) {
40
- const libraryName = Object.keys(linkReferences[key])[0];
41
- const { bytecode } = yield hardhat_1.artifacts.readArtifact(libraryName);
42
- if (manifest.libraries[libraryName] === undefined) {
43
- librariesToUpgrade.push(libraryName);
44
- continue;
45
- }
46
- const libraryBytecodeHash = manifest.libraries[libraryName].bytecodeHash;
47
- if ((0, upgrades_core_1.hashBytecode)(bytecode) !== libraryBytecodeHash) {
48
- librariesToUpgrade.push(libraryName);
49
- }
50
- else {
51
- oldLibraries[libraryName] = manifest.libraries[libraryName].address;
52
- }
53
- }
54
- const libraries = yield (0, deploy_1.deployLibraries)(librariesToUpgrade);
55
- for (const [libraryName, libraryAddress] of libraries.entries()) {
56
- const { bytecode } = yield hardhat_1.artifacts.readArtifact(libraryName);
57
- manifest.libraries[libraryName] = { "address": libraryAddress, "bytecodeHash": (0, upgrades_core_1.hashBytecode)(bytecode) };
58
- }
59
- Object.assign(libraries, oldLibraries);
60
- yield fs_1.promises.writeFile(yield (0, deploy_1.getManifestFile)(), JSON.stringify(manifest, null, 4));
61
- return yield (0, deploy_1.getLinkedContractFactory)(contract, libraries);
62
- });
63
- }
64
- exports.getContractFactoryAndUpdateManifest = getContractFactoryAndUpdateManifest;
65
- function upgrade(projectName, targetVersion, getDeployedVersion, setVersion, safeMockAccessRequirements, contractNamesToUpgrade, deployNewContracts, initialize) {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- if (!process.env.ABI) {
68
- console.log(chalk_1.default.red("Set path to file with ABI and addresses to ABI environment variables"));
69
- return;
70
- }
71
- const abiFilename = process.env.ABI;
72
- const abi = JSON.parse(yield fs_1.promises.readFile(abiFilename, "utf-8"));
73
- const proxyAdmin = yield (0, admin_1.getManifestAdmin)(hardhat_2.default);
74
- const contractManagerName = "ContractManager";
75
- const contractManagerFactory = yield hardhat_1.ethers.getContractFactory(contractManagerName);
76
- const contractManager = (contractManagerFactory.attach(abi[(0, deploy_1.getContractKeyInAbiFile)(contractManagerName) + "_address"]));
77
- const deployedVersion = yield getDeployedVersion(abi);
78
- const version = yield (0, version_1.getVersion)();
79
- if (deployedVersion) {
80
- if (deployedVersion !== targetVersion) {
81
- console.log(chalk_1.default.red(`This script can't upgrade version ${deployedVersion} to ${version}`));
82
- process.exit(1);
83
- }
84
- }
85
- else {
86
- console.log(chalk_1.default.yellow(`Can't check currently deployed version of ${projectName}`));
87
- }
88
- console.log(`Will mark updated version as ${version}`);
89
- const [deployer] = yield hardhat_1.ethers.getSigners();
90
- let safe = yield proxyAdmin.owner();
91
- const safeTransactions = [];
92
- let safeMock = undefined;
93
- if ((yield hardhat_1.ethers.provider.getCode(safe)) === "0x") {
94
- console.log("Owner is not a contract");
95
- if (deployer.address !== safe) {
96
- console.log(chalk_1.default.red(`Used address does not have permissions to upgrade ${projectName}`));
97
- process.exit(1);
98
- }
99
- console.log(chalk_1.default.blue("Deploy SafeMock to simulate upgrade via multisig"));
100
- const safeMockFactory = yield hardhat_1.ethers.getContractFactory("SafeMock");
101
- safeMock = yield safeMockFactory.deploy();
102
- yield safeMock.deployTransaction.wait();
103
- console.log(chalk_1.default.blue("Transfer ownership to SafeMock"));
104
- safe = safeMock.address;
105
- yield (yield proxyAdmin.transferOwnership(safe)).wait();
106
- yield (yield contractManager.transferOwnership(safe)).wait();
107
- for (const contractName of safeMockAccessRequirements) {
108
- const contractFactory = yield getContractFactoryAndUpdateManifest(contractName);
109
- const contractAddress = abi[(0, deploy_1.getContractKeyInAbiFile)(contractName) + "_address"];
110
- const contract = contractFactory.attach(contractAddress);
111
- console.log(chalk_1.default.blue(`Grant access to ${contractName}`));
112
- yield (yield contract.grantRole(yield contract.DEFAULT_ADMIN_ROLE(), safe)).wait();
113
- }
114
- }
115
- else {
116
- try {
117
- const safeMockFactory = yield hardhat_1.ethers.getContractFactory("SafeMock");
118
- const checkSafeMock = safeMockFactory.attach(safe);
119
- if (yield checkSafeMock.IS_SAFE_MOCK()) {
120
- safeMock = checkSafeMock;
121
- }
122
- }
123
- catch (e) {
124
- console.log(chalk_1.default.yellow("Owner is not SafeMock"));
125
- }
126
- }
127
- // Deploy new contracts
128
- yield deployNewContracts(safeTransactions, abi, contractManager);
129
- // deploy new implementations
130
- const contractsToUpgrade = [];
131
- for (const contract of contractNamesToUpgrade) {
132
- const contractFactory = yield getContractFactoryAndUpdateManifest(contract);
133
- let _contract = contract;
134
- if (contract === "BountyV2") {
135
- if (!abi[(0, deploy_1.getContractKeyInAbiFile)(contract) + "_address"])
136
- _contract = "Bounty";
137
- }
138
- const proxyAddress = abi[(0, deploy_1.getContractKeyInAbiFile)(_contract) + "_address"];
139
- console.log(`Prepare upgrade of ${contract}`);
140
- const newImplementationAddress = yield hardhat_1.upgrades.prepareUpgrade(proxyAddress, contractFactory, {
141
- unsafeAllowLinkedLibraries: true,
142
- unsafeAllowRenames: true
143
- });
144
- const currentImplementationAddress = yield (0, upgrades_core_1.getImplementationAddress)(hardhat_1.network.provider, proxyAddress);
145
- if (newImplementationAddress !== currentImplementationAddress) {
146
- contractsToUpgrade.push({
147
- proxyAddress,
148
- implementationAddress: newImplementationAddress,
149
- name: contract,
150
- abi: (0, abi_1.getAbi)(contractFactory.interface)
151
- });
152
- yield (0, verification_1.verify)(contract, newImplementationAddress, []);
153
- }
154
- else {
155
- console.log(chalk_1.default.gray(`Contract ${contract} is up to date`));
156
- }
157
- }
158
- // Switch proxies to new implementations
159
- for (const contract of contractsToUpgrade) {
160
- console.log(chalk_1.default.yellowBright(`Prepare transaction to upgrade ${contract.name} at ${contract.proxyAddress} to ${contract.implementationAddress}`));
161
- safeTransactions.push((0, multiSend_1.encodeTransaction)(0, proxyAdmin.address, 0, proxyAdmin.interface.encodeFunctionData("upgrade", [contract.proxyAddress, contract.implementationAddress])));
162
- abi[(0, deploy_1.getContractKeyInAbiFile)(contract.name) + "_abi"] = contract.abi;
163
- }
164
- yield initialize(safeTransactions, abi, contractManager);
165
- // write version
166
- yield setVersion(safeTransactions, abi, version);
167
- yield fs_1.promises.writeFile(`data/transactions-${version}-${hardhat_1.network.name}.json`, JSON.stringify(safeTransactions, null, 4));
168
- let privateKey = hardhat_1.network.config.accounts[0];
169
- if (hardhat_1.network.config.accounts === "remote") {
170
- // Don't have an information about private key
171
- // Use random one because we most probable run tests
172
- privateKey = hardhat_1.ethers.Wallet.createRandom().privateKey;
173
- }
174
- const safeTx = yield (0, gnosis_safe_1.createMultiSendTransaction)(hardhat_1.ethers, safe, privateKey, safeTransactions, safeMock !== undefined);
175
- if (!safeMock) {
176
- const chainId = (yield hardhat_1.ethers.provider.getNetwork()).chainId;
177
- yield (0, gnosis_safe_1.sendSafeTransaction)(safe, chainId, safeTx);
178
- }
179
- else {
180
- console.log(chalk_1.default.blue("Send upgrade transactions to safe mock"));
181
- try {
182
- yield (yield deployer.sendTransaction({
183
- to: safeMock.address,
184
- value: safeTx.value,
185
- data: safeTx.data,
186
- })).wait();
187
- console.log(chalk_1.default.blue("Transactions have been sent"));
188
- }
189
- finally {
190
- console.log(chalk_1.default.blue("Return ownership to wallet"));
191
- yield (yield safeMock.transferProxyAdminOwnership(contractManager.address, deployer.address)).wait();
192
- yield (yield safeMock.transferProxyAdminOwnership(proxyAdmin.address, deployer.address)).wait();
193
- if ((yield proxyAdmin.owner()) !== deployer.address) {
194
- console.log(chalk_1.default.blue("Something went wrong with ownership transfer"));
195
- process.exit(1);
196
- }
197
- }
198
- }
199
- yield fs_1.promises.writeFile(`data/${projectName}-${version}-${hardhat_1.network.name}-abi.json`, JSON.stringify(abi, null, 4));
200
- console.log("Done");
201
- });
202
- }
203
- exports.upgrade = upgrade;