diff --git a/.gitignore b/.gitignore
index 4dd04b7..301d753 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,3 +26,4 @@ artifacts
.pnp.cjs
.pnp.loader.mjs
*.dbg.json
+solmate
diff --git a/README.md b/README.md
index 4e419bc..4611320 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,11 @@
+
# SKYBIT Keyless Deployment of Smart Contracts
## Introduction
-This tool is for anyone who wants to **deploy smart contracts to the same address** on multiple Ethereum-Virtual-Machine (EVM)-based blockchains. There are many ways to achieve this, but there can be pitfalls (see the section [Problems that this tool solves](#problems-that-this-tool-solves) for details)depending on which path you take. It's important to consider your options before you start any deployments to a live blockchain, as it'd be **difficult to switch later** after realizing that you made a bad decision, especially if many users are already using the contracts that you had deployed.
+This tool is for anyone who wants to **deploy smart contracts to the same address** on multiple Ethereum-Virtual-Machine (EVM)-based blockchains. There are many ways to achieve this, but there can be pitfalls depending on which path you take (see the section [Problems that this tool solves](#problems-that-this-tool-solves) for details). It's important to consider your options before you start any deployments to a live blockchain, as it'd be **difficult to switch later** after realizing that you had made a bad decision, especially if many users are already using the contracts that you had deployed.
-This repository offers scripts to perform *keyless* smart contract deployment, in which a contract is deployed from an account that nobody owns and whose **private keys are unknown and not needed**. Regardless of who does the deployment, as long as the transaction data remains the same, the contract will always get the same address on any EVM blockchain.
+This repository offers scripts to perform *keyless* smart contract deployment, in which a contract is deployed from a **single-use account** that nobody owns and whose **private keys are unknown and not needed**. Regardless of who does the deployment, as long as the transaction data remains the same, the contract will always get the same address on any EVM blockchain.
-The 2 main options of using keyless deployment are:
+The two main options of using keyless deployment are:
- Use a factory contract that had been deployed keylessly to deploy your contracts;
- If the factory contract doesn't yet exist on any blockchains that you want to use, then deploy it yourself keylessly. The factory contract will have the same address as on the other blockchains because of keyless deployment.
- You must use the same factory having same addresses on each blockchain in order to achieve the same addresses for your contracts across all EVM-based blockchains.
@@ -51,9 +52,9 @@ It also makes it possible to:
### CREATE3 factory choices
-This tool offers signed raw deployment transactions of unmodified CREATE3 factories from:
+This repository offers signed raw deployment transactions of unmodified CREATE3 factories from:
- Axelar
-- ZeframLou
+- ZeframLou & transmissions11/solmate
More choices may be offered in future.
@@ -67,22 +68,24 @@ Axelar's factory contract `Create3Deployer.sol` has an additional function:
```solidity
deployAndInit(bytes memory bytecode, bytes32 salt, bytes calldata init)
```
-which calls a function called `init` in your contract just after it's deployed. This can be used in addition to a constructor, or in place of a constructor (particularly if you are deploying an upgradeable contract, as
-upgradeable contracts may not use constructors). If you intend to use `deployAndInit` then make sure that your contract does have a function called `init` (and e.g. not `initialize` as is shown in OpenZeppelin's examples).
+which calls a function called `init` in your contract just after it's deployed. This can be used in addition to a constructor, or in place of one (particularly if you are deploying an upgradeable contract, as
+upgradeable contracts may not use constructors). If you intend to use `deployAndInit` then make sure that your contract does have a function called `init`.
The exact GitHub commited files used are:
- https://github.com/axelarnetwork/axelar-gmp-sdk-solidity/blob/fec8f32aafe34352f315e6852b6c7d95098cef59/contracts/deploy/Create3.sol
- https://github.com/axelarnetwork/axelar-gmp-sdk-solidity/blob/fec8f32aafe34352f315e6852b6c7d95098cef59/contracts/deploy/Create3Deployer.sol
- https://github.com/axelarnetwork/axelar-gmp-sdk-solidity/blob/9cb3477d634c66c0fbf074e550bc721572e1cbd9/contracts/utils/ContractAddress.sol
+The original solidity files were obtained by firstly adding the npm package `@axelar-network/axelar-gmp-sdk-solidity` and importing `@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol` in `contracts/Imports.sol`. Hardhat then compiles it and places the artifacts in `artifacts` directory. `Create3Deployer.json` was then copied to `artifacts-saved/@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol/` directory for preservation.
+
Gas used for the deployment is 651,262 (or a little more for some blockchains), so gas limit in this deployment transaction has been set to 900,000, giving some room in case some opcode costs increase in future, hence there should be at least 0.09 of native currency at the signer's address before factory deployment.
Axelar's factory contract will be deployed to this address (if the transaction data is unchanged):
```
-0xDd9F606e518A955Cd3800f18126DC14E54e4E995
+0xd63cd4CA70b137399cF4d3ec034117fCb9D7365b
```
-#### ZeframLou
+#### ZeframLou & transmissions11/solmate
ZeframLou's factory was included because it's well-known, as is the solmate CREATE3 library that it imports.
The exact GitHub commited files used are:
@@ -91,13 +94,17 @@ The exact GitHub commited files used are:
- https://github.com/transmissions11/solmate/blob/f2833c7cc951c50e0b5fd7e505571fddc10c8f77/src/utils/CREATE3.sol
- https://github.com/transmissions11/solmate/blob/34d20fc027fe8d50da71428687024a29dc01748b/src/utils/Bytes32AddressLib.sol
-Gas used for the deployment is 394,439 (or a little more for some blockchains), so gas limit in this deployment transaction has been set to 500,000, giving some room in case some opcode costs increase in future, hence there should be at least 0.05 of native currency at the signer's address before factory deployment.
+The original solidity files were obtained by firstly adding the specific github repository commits:
+- https://github.com/ZeframLou/create3-factory#18cfad8d118b25a5092cdfed6bea9c932ca5b6eb
+- https://github.com/transmissions11/solmate#f2833c7cc951c50e0b5fd7e505571fddc10c8f77
-The `solmate` directory has been placed in the repository root instead of under `contracts` so that `contracts\ZeframLou\create3-factory\CREATE3Factory.sol` can compile successfully without needing to change the line `import {CREATE3} from "solmate/utils/CREATE3.sol";`.
+`@ZeframLou/create3-factory/src/CREATE3Factory.sol` is imported in `contracts/Imports.sol`. The `solmate/utils` directory is copied from `node_modules` to the repository root so that compilation would run without needing to change the line `import {CREATE3} from "solmate/utils/CREATE3.sol";` in the original factory contract. Hardhat then compiles it and places the artifacts in `artifacts` directory. `CREATE3Factory.json` was then copied to `artifacts-saved/@ZeframLou/create3-factory/src/CREATE3Factory.sol/CREATE3Factory.json/` directory for preservation.
+
+Gas used for the deployment is 394,439 (or a little more for some blockchains), so gas limit in this deployment transaction has been set to 500,000, giving some room in case some opcode costs increase in future, hence there should be at least 0.05 of native currency at the signer's address before factory deployment.
ZeframLou's factory contract will be deployed to this address (if the transaction data is unchanged):
```
-0xFAD1A5cA55b731b512FeF5FEb19c60Ab35f3657f
+0xb3cBfCf8ad9eeccE068D8704C9316f38F6cC54b3
```
@@ -237,9 +244,10 @@ yarn hardhat run --network polygonZkEvmTestnet scripts/deployViaCREATE3-[contrac
The final step in the script is an attempt to verify the contract on the blockchain explorer.
-## Deploying without using any factory
+## Deploying keylessly without using any factory
If you don't have many contracts to deploy then skipping the use of a factory is an alternative.
-In the same way that a factory was deployed keylessly above, your contracts can be deployed keylessly.
+In the same way that a factory was deployed keylessly above, your contracts themselves can be deployed keylessly.
+
Just copy, rename and customize `deployKeylessly-TESTERC20.js`, then run:
```
yarn hardhat run --network [blockchain name] scripts/deployKeylessly-[contract name].js
@@ -300,7 +308,7 @@ The factory then effectively becomes a **shared public good** that nobody owns o
If you deploy your contracts keylessly without using a factory, the added advantage is that you won't need to safeguard the private key of the account that was used to do the deployment - even if you use a different account (or someone else performs the deployment), the contract will still be deployed to the same address. Disadvantages include:
- higher cost, because the gas price has been intentionally set high. If you have many contracts to deploy you'd have to spend highly for each. You'd also have to fund a different address for each contract, so there would be some funds left over in each after deployment. Such remaining funds will be wasted because there is no way to recover them.
-- the contract bytecode affects the address because CREATE2 or CREATE3 aren't being used. Even slight changes to the source code or constructor argument values will change the bytecode, resulting in a different deployment address.
+- the contract bytecode affects the address because CREATE2 or CREATE3 aren't being used. Even slight changes to the source code or constructor arguments will change the bytecode, resulting in a different deployment address.
## Future-proofing to ensure same deployment address in future
@@ -308,7 +316,7 @@ Innovation will never stop and new blockchains with useful features are likely t
Factors that can generally influence the deployment address of a contract include:
- Contract code, including spaces and comments;
-- Constructor argument values;
+- Constructor arguments;
- Compiler settings including:
- Solidity version;
- evmVersion;
@@ -326,11 +334,13 @@ But you still need to be careful not to change other factors. Once you start doi
In our scripts, compilation artifacts of contracts are retrieved from `artifacts-saved` directory which was created to preserve the exact versions of the factories that were used for deployment. Before you start doing any contract deployments for production, you can make changes to your environment but after each change remember to copy the factorys' compilation artifact files under `artifacts` directory (which Hardhat automatically creates) to `artifacts-saved`.
-The factory contract code from third parties have not been modified at all, and should always be left as-is. Though if new versions of any of the files are released, then we may replace the old copies with new ones in this repository, in which case a new release of this repository would be published on GitHub with updated version number. **Newer releases may not produce the same addresses** as prior releases due to different code, so if you ever do need to re-download the repository then instead of downloading the latest version, download the exact version that you had used before for production deployments via the releases page at https://github.com/SKYBITDev3/SKYBIT-Keyless-Deployment/releases.
+ have not been modified at all, and should always be left as-is. Though if new versions of any of the files are released, then we may replace the old copies with new ones in this repository, in which case
+
+If newer versions of factory contract code from third parties become available, a new release of this repository would be published on GitHub with updated version number. **Newer releases may not produce the same addresses** as prior releases due to different code, so if you ever do need to re-download the repository then instead of downloading the latest version, download the exact version that you had used before for production deployments via the releases page at https://github.com/SKYBITDev3/SKYBIT-Keyless-Deployment/releases.
-For your contracts that you want to deploy using a CREATE3 factory, there's no need to use `artifacts-saved` because bytecode isn't used for address calculation in CREATE3, so even after changes in the code the deployment address will remain the same. But you should still keep the many other factors (e.g. compiler version and settings) unchanged.
+For your contracts that you want to deploy using a CREATE3 factory, there's no need to use `artifacts-saved` because bytecode isn't used for address calculation in CREATE3, so even after changes in the code or contructor arguments the deployment address will remain the same. But you should still keep the many other factors (e.g. compiler version and settings) unchanged.
-For your contracts that you deploy keylessly without a factory, you need to ensure that the code, constructor argument values, and environment are unchanged.
+For your contracts that you deploy keylessly *without* a factory, you need to ensure that the code, constructor arguments, and environment are unchanged.
## Issues to be aware of
diff --git a/artifacts-saved/contracts/ZeframLou/create3-factory/CREATE3Factory.sol/CREATE3Factory.json b/artifacts-saved/@ZeframLou/create3-factory/src/CREATE3Factory.sol/CREATE3Factory.json
similarity index 95%
rename from artifacts-saved/contracts/ZeframLou/create3-factory/CREATE3Factory.sol/CREATE3Factory.json
rename to artifacts-saved/@ZeframLou/create3-factory/src/CREATE3Factory.sol/CREATE3Factory.json
index 8af85c3..84f2780 100644
--- a/artifacts-saved/contracts/ZeframLou/create3-factory/CREATE3Factory.sol/CREATE3Factory.json
+++ b/artifacts-saved/@ZeframLou/create3-factory/src/CREATE3Factory.sol/CREATE3Factory.json
@@ -1,7 +1,7 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "CREATE3Factory",
- "sourceName": "contracts/ZeframLou/create3-factory/CREATE3Factory.sol",
+ "sourceName": "@ZeframLou/create3-factory/src/CREATE3Factory.sol",
"abi": [
{
"inputs": [
@@ -52,8 +52,8 @@
"type": "function"
}
],
- "bytecode": "0x608060405234801561001057600080fd5b5061063b806100206000396000f3fe6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e610049366004610489565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046104fd565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e78383346102b2565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018290527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610228906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201529091506100e79060370161020f565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff811661037d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6103868661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff1685876040516103b091906105d6565b60006040518083038185875af1925050503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50509050808015610419575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610374565b5050509392505050565b6000806040838503121561049c57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c057600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561051057600080fd5b82359150602083013567ffffffffffffffff8082111561052f57600080fd5b818501915085601f83011261054357600080fd5b813581811115610555576105556104ce565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561059b5761059b6104ce565b816040528281528860208487010111156105b457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156105f757602081860181015185830152016105dd565b50600092019182525091905056fea2646970667358221220b939e20be6cb152a1a424475f0dca7bb19bd17f2d00c29e453f81db5b995bcc364736f6c63430008150033",
- "deployedBytecode": "0x6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e610049366004610489565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046104fd565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e78383346102b2565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018290527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610228906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201529091506100e79060370161020f565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff811661037d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6103868661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff1685876040516103b091906105d6565b60006040518083038185875af1925050503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50509050808015610419575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610374565b5050509392505050565b6000806040838503121561049c57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c057600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561051057600080fd5b82359150602083013567ffffffffffffffff8082111561052f57600080fd5b818501915085601f83011261054357600080fd5b813581811115610555576105556104ce565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561059b5761059b6104ce565b816040528281528860208487010111156105b457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156105f757602081860181015185830152016105dd565b50600092019182525091905056fea2646970667358221220b939e20be6cb152a1a424475f0dca7bb19bd17f2d00c29e453f81db5b995bcc364736f6c63430008150033",
+ "bytecode": "0x608060405234801561001057600080fd5b5061063b806100206000396000f3fe6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e610049366004610489565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046104fd565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e78383346102b2565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018290527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610228906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201529091506100e79060370161020f565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff811661037d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6103868661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff1685876040516103b091906105d6565b60006040518083038185875af1925050503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50509050808015610419575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610374565b5050509392505050565b6000806040838503121561049c57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c057600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561051057600080fd5b82359150602083013567ffffffffffffffff8082111561052f57600080fd5b818501915085601f83011261054357600080fd5b813581811115610555576105556104ce565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561059b5761059b6104ce565b816040528281528860208487010111156105b457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156105f757602081860181015185830152016105dd565b50600092019182525091905056fea2646970667358221220364e5cafb76ecb9cb26b0c235d3fd69db1ad16e0af10239ab313e1445539411564736f6c63430008150033",
+ "deployedBytecode": "0x6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e610049366004610489565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e6100853660046104fd565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e78383346102b2565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b166021820152603581018290527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610228906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201529091506100e79060370161020f565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff811661037d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6103868661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff1685876040516103b091906105d6565b60006040518083038185875af1925050503d80600081146103ed576040519150601f19603f3d011682016040523d82523d6000602084013e6103f2565b606091505b50509050808015610419575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610374565b5050509392505050565b6000806040838503121561049c57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104c057600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561051057600080fd5b82359150602083013567ffffffffffffffff8082111561052f57600080fd5b818501915085601f83011261054357600080fd5b813581811115610555576105556104ce565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561059b5761059b6104ce565b816040528281528860208487010111156105b457600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b818110156105f757602081860181015185830152016105dd565b50600092019182525091905056fea2646970667358221220364e5cafb76ecb9cb26b0c235d3fd69db1ad16e0af10239ab313e1445539411564736f6c63430008150033",
"linkReferences": {},
"deployedLinkReferences": {}
}
diff --git a/artifacts-saved/contracts/ZeframLou/create3-factory/ICREATE3Factory.sol/ICREATE3Factory.json b/artifacts-saved/@ZeframLou/create3-factory/src/ICREATE3Factory.sol/ICREATE3Factory.json
similarity index 94%
rename from artifacts-saved/contracts/ZeframLou/create3-factory/ICREATE3Factory.sol/ICREATE3Factory.json
rename to artifacts-saved/@ZeframLou/create3-factory/src/ICREATE3Factory.sol/ICREATE3Factory.json
index ab39a68..e0d4c55 100644
--- a/artifacts-saved/contracts/ZeframLou/create3-factory/ICREATE3Factory.sol/ICREATE3Factory.json
+++ b/artifacts-saved/@ZeframLou/create3-factory/src/ICREATE3Factory.sol/ICREATE3Factory.json
@@ -1,7 +1,7 @@
{
"_format": "hh-sol-artifact-1",
"contractName": "ICREATE3Factory",
- "sourceName": "contracts/ZeframLou/create3-factory/ICREATE3Factory.sol",
+ "sourceName": "@ZeframLou/create3-factory/src/ICREATE3Factory.sol",
"abi": [
{
"inputs": [
diff --git a/artifacts-saved/@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol/Create3Deployer.json b/artifacts-saved/@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol/Create3Deployer.json
new file mode 100644
index 0000000..fd9ff4f
--- /dev/null
+++ b/artifacts-saved/@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol/Create3Deployer.json
@@ -0,0 +1,149 @@
+{
+ "_format": "hh-sol-artifact-1",
+ "contractName": "Create3Deployer",
+ "sourceName": "@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol",
+ "abi": [
+ {
+ "inputs": [],
+ "name": "AlreadyDeployed",
+ "type": "error"
+ },
+ {
+ "inputs": [],
+ "name": "DeployFailed",
+ "type": "error"
+ },
+ {
+ "inputs": [],
+ "name": "DeployInitFailed",
+ "type": "error"
+ },
+ {
+ "inputs": [],
+ "name": "EmptyBytecode",
+ "type": "error"
+ },
+ {
+ "inputs": [],
+ "name": "NativeTransferFailed",
+ "type": "error"
+ },
+ {
+ "anonymous": false,
+ "inputs": [
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "deployedAddress",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "indexed": true,
+ "internalType": "bytes32",
+ "name": "salt",
+ "type": "bytes32"
+ },
+ {
+ "indexed": false,
+ "internalType": "bytes32",
+ "name": "bytecodeHash",
+ "type": "bytes32"
+ }
+ ],
+ "name": "Deployed",
+ "type": "event"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "bytecode",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "salt",
+ "type": "bytes32"
+ }
+ ],
+ "name": "deploy",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "deployedAddress_",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "bytecode",
+ "type": "bytes"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "salt",
+ "type": "bytes32"
+ },
+ {
+ "internalType": "bytes",
+ "name": "init",
+ "type": "bytes"
+ }
+ ],
+ "name": "deployAndInit",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "deployedAddress_",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "payable",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "bytecode",
+ "type": "bytes"
+ },
+ {
+ "internalType": "address",
+ "name": "sender",
+ "type": "address"
+ },
+ {
+ "internalType": "bytes32",
+ "name": "salt",
+ "type": "bytes32"
+ }
+ ],
+ "name": "deployedAddress",
+ "outputs": [
+ {
+ "internalType": "address",
+ "name": "",
+ "type": "address"
+ }
+ ],
+ "stateMutability": "view",
+ "type": "function"
+ }
+ ],
+ "bytecode": "0x60a060405234801561001057600080fd5b5060405161002060208201610044565b601f1982820381018352601f90910116604052805160209190910120608052610051565b6101a080610c9a83390190565b608051610c2761007360003960008181610386015261049c0152610c276000f3fe6080604052600436106100345760003560e01c80634af63f0214610039578063c2b1041c14610075578063cf4d643214610095575b600080fd5b61004c610047366004610882565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561008157600080fd5b5061004c6100903660046108c7565b61015a565b61004c6100a336600461093a565b6101b3565b6040805133602082015290810182905260009081906060016040516020818303038152906040528051906020012090506100e2848261030e565b9150823373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd579261046780ec80c4dae1bc57abdb62c58df8af1531e63b4e8bcc08bcf46ec878051906020012060405161014b91815260200190565b60405180910390a45092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015290810182905260009081906060016040516020818303038152906040528051906020012090506101aa8582610321565b95945050505050565b6040805133602082015290810184905260009081906060016040516020818303038152906040528051906020012090506101ed868261030e565b9150843373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd579261046780ec80c4dae1bc57abdb62c58df8af1531e63b4e8bcc08bcf46ec898051906020012060405161025691815260200190565b60405180910390a460008273ffffffffffffffffffffffffffffffffffffffff1685856040516102879291906109d5565b6000604051808303816000865af19150503d80600081146102c4576040519150601f19603f3d011682016040523d82523d6000602084013e6102c9565b606091505b5050905080610304576040517f139c636700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050949350505050565b600061031a8383610437565b9392505050565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000030606090811b82166021850152603584018690527f0000000000000000000000000000000000000000000000000000000000000000605580860191909152855180860390910181526075850186528051908401207fd6940000000000000000000000000000000000000000000000000000000000006095860152901b1660978301527f010000000000000000000000000000000000000000000000000000000000000060ab8301528251808303608c01815260ac909201909252805191012060009061031a565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000030606090811b82166021850152603584018690527f0000000000000000000000000000000000000000000000000000000000000000605580860191909152855180860390910181526075850186528051908401207fd6940000000000000000000000000000000000000000000000000000000000006095860152901b1660978301527f010000000000000000000000000000000000000000000000000000000000000060ab8301528251808303608c01815260ac90920190925280519101208251600003610580576040517f21744a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059f8173ffffffffffffffffffffffffffffffffffffffff16610704565b156105d6576040517fa6ef0ba100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34156105fc576105fc73ffffffffffffffffffffffffffffffffffffffff821634610751565b60008260405161060b9061079b565b8190604051809103906000f590508015801561062b573d6000803e3d6000fd5b50905073ffffffffffffffffffffffffffffffffffffffff811661067b576040517fb4f5411100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517e77436000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169062774360906106cb9087906004016109e5565b600060405180830381600087803b1580156106e557600080fd5b505af11580156106f9573d6000803e3d6000fd5b505050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82163f801580159061031a57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b600080600080600085875af1905080610796576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6101a080610a5283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126107e857600080fd5b813567ffffffffffffffff80821115610803576108036107a8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610849576108496107a8565b8160405283815286602085880101111561086257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561089557600080fd5b823567ffffffffffffffff8111156108ac57600080fd5b6108b8858286016107d7565b95602094909401359450505050565b6000806000606084860312156108dc57600080fd5b833567ffffffffffffffff8111156108f357600080fd5b6108ff868287016107d7565b935050602084013573ffffffffffffffffffffffffffffffffffffffff8116811461092957600080fd5b929592945050506040919091013590565b6000806000806060858703121561095057600080fd5b843567ffffffffffffffff8082111561096857600080fd5b610974888389016107d7565b955060208701359450604087013591508082111561099157600080fd5b818701915087601f8301126109a557600080fd5b8135818111156109b457600080fd5b8860208285010111156109c657600080fd5b95989497505060200194505050565b8183823760009101908152919050565b600060208083528351808285015260005b81811015610a12578581018301518582016040015282016109f6565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fe608060405234801561001057600080fd5b50610180806100206000396000f3fe60806040526004361061001d5760003560e01c806277436014610022575b600080fd5b61003561003036600461007b565b610037565b005b8051602082016000f061004957600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561008d57600080fd5b813567ffffffffffffffff808211156100a557600080fd5b818401915084601f8301126100b957600080fd5b8135818111156100cb576100cb61004c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101115761011161004c565b8160405282815287602084870101111561012a57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea26469706673582212204efb49bab1f37b87314452d541351c2dfc4006b521e21c65c5bd081030d2389f64736f6c63430008150033a2646970667358221220e2a8a4a8b8d753b28891e8bfe5a28c945986c18f182c0b9e77b8c8ff0431911564736f6c63430008150033608060405234801561001057600080fd5b50610180806100206000396000f3fe60806040526004361061001d5760003560e01c806277436014610022575b600080fd5b61003561003036600461007b565b610037565b005b8051602082016000f061004957600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561008d57600080fd5b813567ffffffffffffffff808211156100a557600080fd5b818401915084601f8301126100b957600080fd5b8135818111156100cb576100cb61004c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101115761011161004c565b8160405282815287602084870101111561012a57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea26469706673582212204efb49bab1f37b87314452d541351c2dfc4006b521e21c65c5bd081030d2389f64736f6c63430008150033",
+ "deployedBytecode": "0x6080604052600436106100345760003560e01c80634af63f0214610039578063c2b1041c14610075578063cf4d643214610095575b600080fd5b61004c610047366004610882565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b34801561008157600080fd5b5061004c6100903660046108c7565b61015a565b61004c6100a336600461093a565b6101b3565b6040805133602082015290810182905260009081906060016040516020818303038152906040528051906020012090506100e2848261030e565b9150823373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd579261046780ec80c4dae1bc57abdb62c58df8af1531e63b4e8bcc08bcf46ec878051906020012060405161014b91815260200190565b60405180910390a45092915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015290810182905260009081906060016040516020818303038152906040528051906020012090506101aa8582610321565b95945050505050565b6040805133602082015290810184905260009081906060016040516020818303038152906040528051906020012090506101ed868261030e565b9150843373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd579261046780ec80c4dae1bc57abdb62c58df8af1531e63b4e8bcc08bcf46ec898051906020012060405161025691815260200190565b60405180910390a460008273ffffffffffffffffffffffffffffffffffffffff1685856040516102879291906109d5565b6000604051808303816000865af19150503d80600081146102c4576040519150601f19603f3d011682016040523d82523d6000602084013e6102c9565b606091505b5050905080610304576040517f139c636700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050949350505050565b600061031a8383610437565b9392505050565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000030606090811b82166021850152603584018690527f0000000000000000000000000000000000000000000000000000000000000000605580860191909152855180860390910181526075850186528051908401207fd6940000000000000000000000000000000000000000000000000000000000006095860152901b1660978301527f010000000000000000000000000000000000000000000000000000000000000060ab8301528251808303608c01815260ac909201909252805191012060009061031a565b604080517fff000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000030606090811b82166021850152603584018690527f0000000000000000000000000000000000000000000000000000000000000000605580860191909152855180860390910181526075850186528051908401207fd6940000000000000000000000000000000000000000000000000000000000006095860152901b1660978301527f010000000000000000000000000000000000000000000000000000000000000060ab8301528251808303608c01815260ac90920190925280519101208251600003610580576040517f21744a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61059f8173ffffffffffffffffffffffffffffffffffffffff16610704565b156105d6576040517fa6ef0ba100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34156105fc576105fc73ffffffffffffffffffffffffffffffffffffffff821634610751565b60008260405161060b9061079b565b8190604051809103906000f590508015801561062b573d6000803e3d6000fd5b50905073ffffffffffffffffffffffffffffffffffffffff811661067b576040517fb4f5411100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517e77436000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169062774360906106cb9087906004016109e5565b600060405180830381600087803b1580156106e557600080fd5b505af11580156106f9573d6000803e3d6000fd5b505050505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82163f801580159061031a57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b600080600080600085875af1905080610796576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6101a080610a5283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126107e857600080fd5b813567ffffffffffffffff80821115610803576108036107a8565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610849576108496107a8565b8160405283815286602085880101111561086257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561089557600080fd5b823567ffffffffffffffff8111156108ac57600080fd5b6108b8858286016107d7565b95602094909401359450505050565b6000806000606084860312156108dc57600080fd5b833567ffffffffffffffff8111156108f357600080fd5b6108ff868287016107d7565b935050602084013573ffffffffffffffffffffffffffffffffffffffff8116811461092957600080fd5b929592945050506040919091013590565b6000806000806060858703121561095057600080fd5b843567ffffffffffffffff8082111561096857600080fd5b610974888389016107d7565b955060208701359450604087013591508082111561099157600080fd5b818701915087601f8301126109a557600080fd5b8135818111156109b457600080fd5b8860208285010111156109c657600080fd5b95989497505060200194505050565b8183823760009101908152919050565b600060208083528351808285015260005b81811015610a12578581018301518582016040015282016109f6565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fe608060405234801561001057600080fd5b50610180806100206000396000f3fe60806040526004361061001d5760003560e01c806277436014610022575b600080fd5b61003561003036600461007b565b610037565b005b8051602082016000f061004957600080fd5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60006020828403121561008d57600080fd5b813567ffffffffffffffff808211156100a557600080fd5b818401915084601f8301126100b957600080fd5b8135818111156100cb576100cb61004c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101115761011161004c565b8160405282815287602084870101111561012a57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea26469706673582212204efb49bab1f37b87314452d541351c2dfc4006b521e21c65c5bd081030d2389f64736f6c63430008150033a2646970667358221220e2a8a4a8b8d753b28891e8bfe5a28c945986c18f182c0b9e77b8c8ff0431911564736f6c63430008150033",
+ "linkReferences": {},
+ "deployedLinkReferences": {}
+}
diff --git a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol/Create3.json b/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol/Create3.json
deleted file mode 100644
index ebf239d..0000000
--- a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol/Create3.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "_format": "hh-sol-artifact-1",
- "contractName": "Create3",
- "sourceName": "contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol",
- "abi": [],
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071e14a4db1bc81b65ad92e768ac1ce58d313fd6f32c77eeb910618f5d589e18b64736f6c63430008150033",
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071e14a4db1bc81b65ad92e768ac1ce58d313fd6f32c77eeb910618f5d589e18b64736f6c63430008150033",
- "linkReferences": {},
- "deployedLinkReferences": {}
-}
diff --git a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol/CreateDeployer.json b/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol/CreateDeployer.json
deleted file mode 100644
index 4812145..0000000
--- a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol/CreateDeployer.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "_format": "hh-sol-artifact-1",
- "contractName": "CreateDeployer",
- "sourceName": "contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol",
- "abi": [
- {
- "inputs": [
- {
- "internalType": "bytes",
- "name": "bytecode",
- "type": "bytes"
- }
- ],
- "name": "deploy",
- "outputs": [],
- "stateMutability": "nonpayable",
- "type": "function"
- }
- ],
- "bytecode": "0x608060405234801561001057600080fd5b50610193806100206000396000f3fe608060405234801561001057600080fd5b506004361061002a5760003560e01c80627743601461002f575b600080fd5b61004261003d36600461008e565b610044565b005b60008151602083016000f090508061005b57600080fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156100a057600080fd5b813567ffffffffffffffff808211156100b857600080fd5b818401915084601f8301126100cc57600080fd5b8135818111156100de576100de61005f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101245761012461005f565b8160405282815287602084870101111561013d57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea2646970667358221220ecc24032bc744eda4ba2e0daa3966b0d4340695f92c197d5884cd2796a52f5b264736f6c63430008150033",
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002a5760003560e01c80627743601461002f575b600080fd5b61004261003d36600461008e565b610044565b005b60008151602083016000f090508061005b57600080fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156100a057600080fd5b813567ffffffffffffffff808211156100b857600080fd5b818401915084601f8301126100cc57600080fd5b8135818111156100de576100de61005f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101245761012461005f565b8160405282815287602084870101111561013d57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea2646970667358221220ecc24032bc744eda4ba2e0daa3966b0d4340695f92c197d5884cd2796a52f5b264736f6c63430008150033",
- "linkReferences": {},
- "deployedLinkReferences": {}
-}
diff --git a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol/Create3Deployer.json b/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol/Create3Deployer.json
deleted file mode 100644
index 867dc57..0000000
--- a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol/Create3Deployer.json
+++ /dev/null
@@ -1,133 +0,0 @@
-{
- "_format": "hh-sol-artifact-1",
- "contractName": "Create3Deployer",
- "sourceName": "contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol",
- "abi": [
- {
- "inputs": [],
- "name": "AlreadyDeployed",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "DeployFailed",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "EmptyBytecode",
- "type": "error"
- },
- {
- "inputs": [],
- "name": "FailedInit",
- "type": "error"
- },
- {
- "anonymous": false,
- "inputs": [
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "bytecodeHash",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "bytes32",
- "name": "salt",
- "type": "bytes32"
- },
- {
- "indexed": true,
- "internalType": "address",
- "name": "deployedAddress",
- "type": "address"
- }
- ],
- "name": "Deployed",
- "type": "event"
- },
- {
- "inputs": [
- {
- "internalType": "bytes",
- "name": "bytecode",
- "type": "bytes"
- },
- {
- "internalType": "bytes32",
- "name": "salt",
- "type": "bytes32"
- }
- ],
- "name": "deploy",
- "outputs": [
- {
- "internalType": "address",
- "name": "deployedAddress_",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "bytes",
- "name": "bytecode",
- "type": "bytes"
- },
- {
- "internalType": "bytes32",
- "name": "salt",
- "type": "bytes32"
- },
- {
- "internalType": "bytes",
- "name": "init",
- "type": "bytes"
- }
- ],
- "name": "deployAndInit",
- "outputs": [
- {
- "internalType": "address",
- "name": "deployedAddress_",
- "type": "address"
- }
- ],
- "stateMutability": "nonpayable",
- "type": "function"
- },
- {
- "inputs": [
- {
- "internalType": "address",
- "name": "sender",
- "type": "address"
- },
- {
- "internalType": "bytes32",
- "name": "salt",
- "type": "bytes32"
- }
- ],
- "name": "deployedAddress",
- "outputs": [
- {
- "internalType": "address",
- "name": "",
- "type": "address"
- }
- ],
- "stateMutability": "view",
- "type": "function"
- }
- ],
- "bytecode": "0x608060405234801561001057600080fd5b50610ae4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634af63f0214610046578063687d052b14610082578063cf4d643214610095575b600080fd5b6100596100543660046106bf565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61005961009036600461070b565b61017a565b6100596100a336600461077f565b6101d2565b6040805133602082015290810182905260009081906060016040516020818303038152906040528051906020012090506101188186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061030892505050565b91508173ffffffffffffffffffffffffffffffffffffffff1683868660405161014292919061087f565b604051908190038120907f27b8e3132afa95254770e1c1d214eafde52bc47d1b6e1f5dfcbb380c3ca3f53290600090a4509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015290810182905260009081906060016040516020818303038152906040528051906020012090506101ca30826104af565b949350505050565b60408051336020820152908101849052600090819060600160405160208183030381529060405280519060200120905061020c8187610308565b915060008273ffffffffffffffffffffffffffffffffffffffff16858560405161023792919061087f565b6000604051808303816000865af19150503d8060008114610274576040519150601f19603f3d011682016040523d82523d6000602084013e610279565b606091505b50509050806102b4576040517f4f77232300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8651602088012060405173ffffffffffffffffffffffffffffffffffffffff85169188917f27b8e3132afa95254770e1c1d214eafde52bc47d1b6e1f5dfcbb380c3ca3f53290600090a45050949350505050565b600061031430846104af565b90506103358173ffffffffffffffffffffffffffffffffffffffff16610619565b1561036c576040517fa6ef0ba100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036103a7576040517f21744a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836040516103b690610669565b8190604051809103906000f59050801580156103d6573d6000803e3d6000fd5b50905073ffffffffffffffffffffffffffffffffffffffff8116610426576040517fb4f5411100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517e77436000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690627743609061047690869060040161088f565b600060405180830381600087803b15801561049057600080fd5b505af11580156104a4573d6000803e3d6000fd5b505050505092915050565b6000808383604051806020016104c490610669565b6020820181038252601f19601f820116604052508051906020012060405160200161054f939291907fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207fd6940000000000000000000000000000000000000000000000000000000000008285015260601b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660228401527f010000000000000000000000000000000000000000000000000000000000000060368401528151601781850301815260379093019091528151910120949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82163f801580159061066257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b6101b3806108fc83390190565b60008083601f84011261068857600080fd5b50813567ffffffffffffffff8111156106a057600080fd5b6020830191508360208285010111156106b857600080fd5b9250929050565b6000806000604084860312156106d457600080fd5b833567ffffffffffffffff8111156106eb57600080fd5b6106f786828701610676565b909790965060209590950135949350505050565b6000806040838503121561071e57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461074257600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806060858703121561079557600080fd5b843567ffffffffffffffff808211156107ad57600080fd5b818701915087601f8301126107c157600080fd5b8135818111156107d3576107d3610750565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561081957610819610750565b816040528281528a602084870101111561083257600080fd5b8260208601602083013760006020848301015280985050505060208701359450604087013591508082111561086657600080fd5b5061087387828801610676565b95989497509550505050565b8183823760009101908152919050565b600060208083528351808285015260005b818110156108bc578581018301518582016040015282016108a0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fe608060405234801561001057600080fd5b50610193806100206000396000f3fe608060405234801561001057600080fd5b506004361061002a5760003560e01c80627743601461002f575b600080fd5b61004261003d36600461008e565b610044565b005b60008151602083016000f090508061005b57600080fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156100a057600080fd5b813567ffffffffffffffff808211156100b857600080fd5b818401915084601f8301126100cc57600080fd5b8135818111156100de576100de61005f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101245761012461005f565b8160405282815287602084870101111561013d57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea2646970667358221220ecc24032bc744eda4ba2e0daa3966b0d4340695f92c197d5884cd2796a52f5b264736f6c63430008150033a264697066735822122023c3a4c4197dc10a727952f2567a93f2b5282644fea241ff9323f2827bf8ccdf64736f6c63430008150033",
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80634af63f0214610046578063687d052b14610082578063cf4d643214610095575b600080fd5b6100596100543660046106bf565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61005961009036600461070b565b61017a565b6100596100a336600461077f565b6101d2565b6040805133602082015290810182905260009081906060016040516020818303038152906040528051906020012090506101188186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061030892505050565b91508173ffffffffffffffffffffffffffffffffffffffff1683868660405161014292919061087f565b604051908190038120907f27b8e3132afa95254770e1c1d214eafde52bc47d1b6e1f5dfcbb380c3ca3f53290600090a4509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602082015290810182905260009081906060016040516020818303038152906040528051906020012090506101ca30826104af565b949350505050565b60408051336020820152908101849052600090819060600160405160208183030381529060405280519060200120905061020c8187610308565b915060008273ffffffffffffffffffffffffffffffffffffffff16858560405161023792919061087f565b6000604051808303816000865af19150503d8060008114610274576040519150601f19603f3d011682016040523d82523d6000602084013e610279565b606091505b50509050806102b4576040517f4f77232300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8651602088012060405173ffffffffffffffffffffffffffffffffffffffff85169188917f27b8e3132afa95254770e1c1d214eafde52bc47d1b6e1f5dfcbb380c3ca3f53290600090a45050949350505050565b600061031430846104af565b90506103358173ffffffffffffffffffffffffffffffffffffffff16610619565b1561036c576040517fa6ef0ba100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81516000036103a7576040517f21744a5900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836040516103b690610669565b8190604051809103906000f59050801580156103d6573d6000803e3d6000fd5b50905073ffffffffffffffffffffffffffffffffffffffff8116610426576040517fb4f5411100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517e77436000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690627743609061047690869060040161088f565b600060405180830381600087803b15801561049057600080fd5b505af11580156104a4573d6000803e3d6000fd5b505050505092915050565b6000808383604051806020016104c490610669565b6020820181038252601f19601f820116604052508051906020012060405160200161054f939291907fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201207fd6940000000000000000000000000000000000000000000000000000000000008285015260601b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660228401527f010000000000000000000000000000000000000000000000000000000000000060368401528151601781850301815260379093019091528151910120949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82163f801580159061066257507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b6101b3806108fc83390190565b60008083601f84011261068857600080fd5b50813567ffffffffffffffff8111156106a057600080fd5b6020830191508360208285010111156106b857600080fd5b9250929050565b6000806000604084860312156106d457600080fd5b833567ffffffffffffffff8111156106eb57600080fd5b6106f786828701610676565b909790965060209590950135949350505050565b6000806040838503121561071e57600080fd5b823573ffffffffffffffffffffffffffffffffffffffff8116811461074257600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806060858703121561079557600080fd5b843567ffffffffffffffff808211156107ad57600080fd5b818701915087601f8301126107c157600080fd5b8135818111156107d3576107d3610750565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561081957610819610750565b816040528281528a602084870101111561083257600080fd5b8260208601602083013760006020848301015280985050505060208701359450604087013591508082111561086657600080fd5b5061087387828801610676565b95989497509550505050565b8183823760009101908152919050565b600060208083528351808285015260005b818110156108bc578581018301518582016040015282016108a0565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509291505056fe608060405234801561001057600080fd5b50610193806100206000396000f3fe608060405234801561001057600080fd5b506004361061002a5760003560e01c80627743601461002f575b600080fd5b61004261003d36600461008e565b610044565b005b60008151602083016000f090508061005b57600080fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156100a057600080fd5b813567ffffffffffffffff808211156100b857600080fd5b818401915084601f8301126100cc57600080fd5b8135818111156100de576100de61005f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156101245761012461005f565b8160405282815287602084870101111561013d57600080fd5b82602086016020830137600092810160200192909252509594505050505056fea2646970667358221220ecc24032bc744eda4ba2e0daa3966b0d4340695f92c197d5884cd2796a52f5b264736f6c63430008150033a264697066735822122023c3a4c4197dc10a727952f2567a93f2b5282644fea241ff9323f2827bf8ccdf64736f6c63430008150033",
- "linkReferences": {},
- "deployedLinkReferences": {}
-}
diff --git a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/utils/ContractAddress.sol/ContractAddress.json b/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/utils/ContractAddress.sol/ContractAddress.json
deleted file mode 100644
index e3b5437..0000000
--- a/artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/utils/ContractAddress.sol/ContractAddress.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "_format": "hh-sol-artifact-1",
- "contractName": "ContractAddress",
- "sourceName": "contracts/axelarnetwork/axelar-gmp-sdk-solidity/utils/ContractAddress.sol",
- "abi": [],
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220741a5017c43a57e75f14913bce6aa51c8e989813cf1ac003daedccb3cc49b4fe64736f6c63430008150033",
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220741a5017c43a57e75f14913bce6aa51c8e989813cf1ac003daedccb3cc49b4fe64736f6c63430008150033",
- "linkReferences": {},
- "deployedLinkReferences": {}
-}
diff --git a/contracts/Imports.sol b/contracts/Imports.sol
index e0c5a94..0f000ce 100644
--- a/contracts/Imports.sol
+++ b/contracts/Imports.sol
@@ -1,4 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;
+// To force hardhat to compile the files into artifacts directory
+import "@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol";
+import "@ZeframLou/create3-factory/src/CREATE3Factory.sol";
import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
diff --git a/contracts/ZeframLou/create3-factory/CREATE3Factory.sol b/contracts/ZeframLou/create3-factory/CREATE3Factory.sol
deleted file mode 100644
index 17133d2..0000000
--- a/contracts/ZeframLou/create3-factory/CREATE3Factory.sol
+++ /dev/null
@@ -1,36 +0,0 @@
-// SPDX-License-Identifier: AGPL-3.0
-pragma solidity ^0.8.13;
-
-import {CREATE3} from "solmate/utils/CREATE3.sol";
-
-import {ICREATE3Factory} from "./ICREATE3Factory.sol";
-
-/// @title Factory for deploying contracts to deterministic addresses via CREATE3
-/// @author zefram.eth
-/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has
-/// its own namespace for deployed addresses.
-contract CREATE3Factory is ICREATE3Factory {
- /// @inheritdoc ICREATE3Factory
- function deploy(bytes32 salt, bytes memory creationCode)
- external
- payable
- override
- returns (address deployed)
- {
- // hash salt with the deployer address to give each deployer its own namespace
- salt = keccak256(abi.encodePacked(msg.sender, salt));
- return CREATE3.deploy(salt, creationCode, msg.value);
- }
-
- /// @inheritdoc ICREATE3Factory
- function getDeployed(address deployer, bytes32 salt)
- external
- view
- override
- returns (address deployed)
- {
- // hash salt with the deployer address to give each deployer its own namespace
- salt = keccak256(abi.encodePacked(deployer, salt));
- return CREATE3.getDeployed(salt);
- }
-}
diff --git a/contracts/ZeframLou/create3-factory/ICREATE3Factory.sol b/contracts/ZeframLou/create3-factory/ICREATE3Factory.sol
deleted file mode 100644
index 59abc8d..0000000
--- a/contracts/ZeframLou/create3-factory/ICREATE3Factory.sol
+++ /dev/null
@@ -1,28 +0,0 @@
-// SPDX-License-Identifier: AGPL-3.0
-pragma solidity >=0.6.0;
-
-/// @title Factory for deploying contracts to deterministic addresses via CREATE3
-/// @author zefram.eth
-/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has
-/// its own namespace for deployed addresses.
-interface ICREATE3Factory {
- /// @notice Deploys a contract using CREATE3
- /// @dev The provided salt is hashed together with msg.sender to generate the final salt
- /// @param salt The deployer-specific salt for determining the deployed contract's address
- /// @param creationCode The creation code of the contract to deploy
- /// @return deployed The address of the deployed contract
- function deploy(bytes32 salt, bytes memory creationCode)
- external
- payable
- returns (address deployed);
-
- /// @notice Predicts the address of a deployed contract
- /// @dev The provided salt is hashed together with the deployer address to generate the final salt
- /// @param deployer The deployer account that will call deploy()
- /// @param salt The deployer-specific salt for determining the deployed contract's address
- /// @return deployed The address of the contract that will be deployed
- function getDeployed(address deployer, bytes32 salt)
- external
- view
- returns (address deployed);
-}
diff --git a/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol b/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol
deleted file mode 100644
index db663a7..0000000
--- a/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3.sol
+++ /dev/null
@@ -1,78 +0,0 @@
-// SPDX-License-Identifier: MIT
-
-pragma solidity ^0.8.0;
-
-import { ContractAddress } from '../utils/ContractAddress.sol';
-
-error AlreadyDeployed();
-error EmptyBytecode();
-error DeployFailed();
-
-/**
- * @title CreateDeployer Contract
- * @notice This contract deploys new contracts using the `CREATE` opcode and is used as part of
- * the `Create3` deployment method.
- */
-contract CreateDeployer {
- /**
- * @dev Deploys a new contract with the specified bytecode using the CREATE opcode.
- * @param bytecode The bytecode of the contract to be deployed
- */
- function deploy(bytes memory bytecode) external {
- address deployed;
-
- assembly {
- deployed := create(0, add(bytecode, 32), mload(bytecode))
- if iszero(deployed) {
- revert(0, 0)
- }
- }
- }
-}
-
-/**
- * @title Create3 Library
- * @notice This library can be used to deploy a contract with a deterministic address that only
- * depends on the sender and salt, not the contract bytecode.
- */
-library Create3 {
- using ContractAddress for address;
-
- bytes32 internal constant DEPLOYER_BYTECODE_HASH = keccak256(type(CreateDeployer).creationCode);
-
- /**
- * @dev Deploys a new contract using the CREATE3 method. This function first deploys the
- * CreateDeployer contract using the CREATE2 opcode and then utilizes the CreateDeployer
- * to deploy the new contract with the CREATE opcode.
- * @param salt A salt to further randomize the contract address
- * @param bytecode The bytecode of the contract to be deployed
- * @return deployed The address of the deployed contract
- */
- function deploy(bytes32 salt, bytes memory bytecode) internal returns (address deployed) {
- deployed = deployedAddress(address(this), salt);
-
- if (deployed.isContract()) revert AlreadyDeployed();
- if (bytecode.length == 0) revert EmptyBytecode();
-
- // Deploy using create2
- CreateDeployer deployer = new CreateDeployer{ salt: salt }();
-
- if (address(deployer) == address(0)) revert DeployFailed();
-
- deployer.deploy(bytecode);
- }
-
- /**
- * @dev Compute the deployed address that will result from the CREATE3 method.
- * @param salt A salt to further randomize the contract address
- * @param sender The sender address which would deploy the contract
- * @return deployed The deterministic contract address if it was deployed
- */
- function deployedAddress(address sender, bytes32 salt) internal pure returns (address deployed) {
- address deployer = address(
- uint160(uint256(keccak256(abi.encodePacked(hex'ff', sender, salt, DEPLOYER_BYTECODE_HASH))))
- );
-
- deployed = address(uint160(uint256(keccak256(abi.encodePacked(hex'd6_94', deployer, hex'01')))));
- }
-}
diff --git a/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol b/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol
deleted file mode 100644
index 0bf1f31..0000000
--- a/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol
+++ /dev/null
@@ -1,71 +0,0 @@
-// SPDX-License-Identifier: MIT
-
-pragma solidity ^0.8.0;
-
-import { Create3 } from './Create3.sol';
-
-/**
- * @title Create3Deployer Contract
- * @notice This contract is responsible for deploying and initializing new contracts using the CREATE3 technique
- * which ensures that only the sender address and salt influence the deployed address, not the contract bytecode.
- */
-contract Create3Deployer {
- error FailedInit();
-
- event Deployed(bytes32 indexed bytecodeHash, bytes32 indexed salt, address indexed deployedAddress);
-
- /**
- * @dev Deploys a contract using `CREATE3`. The address where the contract
- * will be deployed can be known in advance via {deployedAddress}.
- *
- * The bytecode for a contract can be obtained from Solidity with
- * `type(contractName).creationCode`.
- *
- * Requirements:
- *
- * - `bytecode` must not be empty.
- * - `salt` must not have been used already by the same `msg.sender`.
- */
- function deploy(bytes calldata bytecode, bytes32 salt) external returns (address deployedAddress_) {
- bytes32 deploySalt = keccak256(abi.encode(msg.sender, salt));
- deployedAddress_ = Create3.deploy(deploySalt, bytecode);
-
- emit Deployed(keccak256(bytecode), salt, deployedAddress_);
- }
-
- /**
- * @dev Deploys a contract using `CREATE3` and initialize it. The address where the contract
- * will be deployed can be known in advance via {deployedAddress}.
- *
- * The bytecode for a contract can be obtained from Solidity with
- * `type(contractName).creationCode`.
- *
- * Requirements:
- *
- * - `bytecode` must not be empty.
- * - `salt` must not have been used already by the same `msg.sender`.
- * - `init` is used to initialize the deployed contract
- */
- function deployAndInit(
- bytes memory bytecode,
- bytes32 salt,
- bytes calldata init
- ) external returns (address deployedAddress_) {
- bytes32 deploySalt = keccak256(abi.encode(msg.sender, salt));
- deployedAddress_ = Create3.deploy(deploySalt, bytecode);
-
- (bool success, ) = deployedAddress_.call(init);
- if (!success) revert FailedInit();
-
- emit Deployed(keccak256(bytecode), salt, deployedAddress_);
- }
-
- /**
- * @dev Returns the address where a contract will be stored if deployed via {deploy} or {deployAndInit} by `sender`.
- * Any change in `sender` or `salt` will result in a new destination address.
- */
- function deployedAddress(address sender, bytes32 salt) external view returns (address) {
- bytes32 deploySalt = keccak256(abi.encode(sender, salt));
- return Create3.deployedAddress(address(this), deploySalt);
- }
-}
diff --git a/contracts/axelarnetwork/axelar-gmp-sdk-solidity/utils/ContractAddress.sol b/contracts/axelarnetwork/axelar-gmp-sdk-solidity/utils/ContractAddress.sol
deleted file mode 100644
index 3c906f3..0000000
--- a/contracts/axelarnetwork/axelar-gmp-sdk-solidity/utils/ContractAddress.sol
+++ /dev/null
@@ -1,15 +0,0 @@
-// SPDX-License-Identifier: MIT
-
-pragma solidity ^0.8.0;
-
-library ContractAddress {
- function isContract(address _address) internal view returns (bool) {
- bytes32 existingCodeHash = _address.codehash;
-
- // https://eips.ethereum.org/EIPS/eip-1052
- // keccak256('') == 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470
- return
- existingCodeHash != bytes32(0) &&
- existingCodeHash != 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
- }
-}
diff --git a/hardhat.config.js b/hardhat.config.js
index 9e8f3ed..6c62a21 100644
--- a/hardhat.config.js
+++ b/hardhat.config.js
@@ -2,6 +2,8 @@ require("@nomicfoundation/hardhat-toolbox")
require("@openzeppelin/hardhat-upgrades")
require("dotenv").config()
+BigInt.prototype["toJSON"] = () => this.toString() // To prevent TypeError: Do not know how to serialize a BigInt
+
// SET YOUR ACCOUNT HERE
const accounts = { mnemonic: process.env.MNEMONIC || "test test test test test test test test test test test junk" }
// const accounts = [process.env.PRIVATE_KEY0]
@@ -161,3 +163,29 @@ module.exports = {
timeout: 60000 // 1min (default is 20s)
}
}
+
+// override hardhat compilation subtask
+subtask("compile:solidity:get-dependency-graph")
+ .setAction(
+ async (args, hre, runSuper) => {
+ let filePath = "node_modules/@ZeframLou/create3-factory/package.json" // to create package.json required to import solidity file for compilation
+ const fileContent = "{ \"name\": \"create3-factory\", \"version\": \"18cfad8d118b25a5092cdfed6bea9c932ca5b6eb\" }"
+
+ const fs = require("fs")
+ const path = require("path")
+ fs.writeFileSync(path.join(__dirname, filePath), fileContent)
+ // console.log(`Created ${filePath}`)
+
+ filePath = "node_modules/@transmissions11/solmate/src/utils/Bytes32AddressLib.sol" // to handle "import {CREATE3} from "solmate/utils/CREATE3.sol";"
+ fileDest = "solmate/utils/Bytes32AddressLib.sol"
+ fs.cpSync(filePath, fileDest, { recursive: true })
+ // console.log(`Copied ${filePath} to ${fileDest}`)
+
+ filePath = "node_modules/@transmissions11/solmate/src/utils/CREATE3.sol"
+ fileDest = "solmate/utils/CREATE3.sol"
+ fs.cpSync(filePath, fileDest, { recursive: true })
+ // console.log(`Copied ${filePath} to ${fileDest}`)
+
+ return await runSuper(args) // run the original subtask
+ }
+ )
diff --git a/package.json b/package.json
index 453a733..d9920cc 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,10 @@
{
"name": "SKYBIT-Keyless-Deployment",
+ "version": "2.1.0",
"packageManager": "yarn@3.6.1",
"devDependencies": {
+ "@ZeframLou/create3-factory": "https://github.com/ZeframLou/create3-factory#18cfad8d118b25a5092cdfed6bea9c932ca5b6eb",
+ "@axelar-network/axelar-gmp-sdk-solidity": "^5.2.0",
"@nomicfoundation/ethereumjs-trie": "^6.0.2",
"@nomicfoundation/ethereumjs-util": "^9.0.2",
"@nomicfoundation/hardhat-chai-matchers": "2.0.2",
@@ -12,9 +15,10 @@
"@openzeppelin/contracts": "^4.9.3",
"@openzeppelin/contracts-upgradeable": "^4.9.3",
"@openzeppelin/hardhat-upgrades": "^2.2.1",
+ "@transmissions11/solmate": "https://github.com/transmissions11/solmate#f2833c7cc951c50e0b5fd7e505571fddc10c8f77",
"@typechain/ethers-v6": "^0.5.0",
"@typechain/hardhat": "^9.0.0",
- "@wagmi/chains": "^1.7.0",
+ "@wagmi/chains": "^1.8.0",
"axios": "^1.5.0",
"chai": "^4.3.8",
"dotenv": "^16.3.1",
diff --git a/scripts/CREATE3-deploy-functions.js b/scripts/CREATE3-deploy-functions.js
index e059a34..03ade7e 100644
--- a/scripts/CREATE3-deploy-functions.js
+++ b/scripts/CREATE3-deploy-functions.js
@@ -13,7 +13,7 @@ const CREATE3Deploy = async (factoryToUse, addressOfFactory, contractFactory, co
console.log(`salt: ${salt}`)
- const expectedAddress = await getDeployedAddress(factoryToUse, instanceOfFactory, wallet.address, salt)
+ const expectedAddress = await getDeployedAddress(factoryToUse, instanceOfFactory, bytecodeWithArgs, wallet.address, salt)
console.log(`Expected address of ${contractToDeployName} using deployer at ${addressOfFactory}: ${expectedAddress}`)
@@ -41,24 +41,24 @@ const getArtifactOfFactory = (factoryToUse) => {
let pathToArtifact
switch (factoryToUse) {
case "ZeframLou":
- pathToArtifact = `artifacts-saved/contracts/ZeframLou/create3-factory/CREATE3Factory.sol/CREATE3Factory.json`
+ pathToArtifact = `artifacts-saved/@ZeframLou/create3-factory/src/CREATE3Factory.sol/CREATE3Factory.json`
break
case "axelarnetwork":
default:
- pathToArtifact = `artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol/Create3Deployer.json`
+ pathToArtifact = `artifacts-saved/@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol/Create3Deployer.json`
}
const { rootRequire } = require("./utils") // using saved artifact instead of the automatically created one}
return rootRequire(pathToArtifact)
}
-const getDeployedAddress = async (factoryToUse, instanceOfFactory, walletAddress, salt) => {
+const getDeployedAddress = async (factoryToUse, instanceOfFactory, bytecode, walletAddress, salt) => {
switch (factoryToUse) {
case "ZeframLou":
return await instanceOfFactory.getDeployed(walletAddress, salt)
break
case "axelarnetwork":
default:
- return await instanceOfFactory.deployedAddress(walletAddress, salt)
+ return await instanceOfFactory.deployedAddress(bytecode, walletAddress, salt)
}
}
diff --git a/scripts/deployKeylessly-Create3Factory.js b/scripts/deployKeylessly-Create3Factory.js
index e579a12..fdcd678 100644
--- a/scripts/deployKeylessly-Create3Factory.js
+++ b/scripts/deployKeylessly-Create3Factory.js
@@ -14,7 +14,8 @@ async function main() {
const create3FactoryArtifact = getCreate3FactoryArtifact(factoryToDeploy)
const gasLimit = getGasLimit(factoryToDeploy)
- const address = await deployKeylessly(create3FactoryArtifact.contractName, create3FactoryArtifact.bytecode, gasLimit, wallet)
+ const { deployKeylessly } = require("./keyless-deploy-functions")
+ const address = await deployKeylessly(create3FactoryArtifact.contractName, create3FactoryArtifact.bytecode, gasLimit, wallet, isDeployEnabled)
// VERIFY ON BLOCKCHAIN EXPLORER
@@ -40,7 +41,7 @@ const getCreate3FactoryArtifact = (factoryToDeploy) => {
// https://github.com/ZeframLou/create3-factory/blob/18cfad8d118b25a5092cdfed6bea9c932ca5b6eb/src/ICREATE3Factory.sol
// https://github.com/transmissions11/solmate/blob/f2833c7cc951c50e0b5fd7e505571fddc10c8f77/src/utils/CREATE3.sol
// https://github.com/transmissions11/solmate/blob/34d20fc027fe8d50da71428687024a29dc01748b/src/utils/Bytes32AddressLib.sol
- pathToArtifact = `artifacts-saved/contracts/ZeframLou/create3-factory/CREATE3Factory.sol/CREATE3Factory.json`
+ pathToArtifact = `artifacts-saved/@ZeframLou/create3-factory/src/CREATE3Factory.sol/CREATE3Factory.json`
break
case "axelarnetwork":
default:
@@ -48,7 +49,7 @@ const getCreate3FactoryArtifact = (factoryToDeploy) => {
// https://github.com/axelarnetwork/axelar-gmp-sdk-solidity/blob/fec8f32aafe34352f315e6852b6c7d95098cef59/contracts/deploy/Create3.sol
// https://github.com/axelarnetwork/axelar-gmp-sdk-solidity/blob/fec8f32aafe34352f315e6852b6c7d95098cef59/contracts/deploy/Create3Deployer.sol
// https://github.com/axelarnetwork/axelar-gmp-sdk-solidity/blob/9cb3477d634c66c0fbf074e550bc721572e1cbd9/contracts/utils/ContractAddress.sol
- pathToArtifact = `artifacts-saved/contracts/axelarnetwork/axelar-gmp-sdk-solidity/deploy/Create3Deployer.sol/Create3Deployer.json`
+ pathToArtifact = `artifacts-saved/@axelar-network/axelar-gmp-sdk-solidity/contracts/deploy/Create3Deployer.sol/Create3Deployer.json`
}
const { rootRequire } = require("./utils")
return rootRequire(pathToArtifact) // not getting from hardhat artifacts directory because contents will automatically change if there are any changes in many variables
diff --git a/scripts/deployKeylessly-TESTERC20.js b/scripts/deployKeylessly-TESTERC20.js
index ef566d4..60f5934 100644
--- a/scripts/deployKeylessly-TESTERC20.js
+++ b/scripts/deployKeylessly-TESTERC20.js
@@ -29,7 +29,7 @@ async function main() {
const cfToken = await ethers.getContractFactory(artifactOfContractToDeploy.abi, artifactOfContractToDeploy.bytecode)
const bytecodeWithArgs = (await cfToken.getDeployTransaction(...constructorArgs)).data
- const address = await deployKeylessly(contractName, bytecodeWithArgs, gasLimitForImpl, wallet)
+ const address = await deployKeylessly(contractName, bytecodeWithArgs, gasLimit, wallet, isDeployEnabled)
// VERIFY ON BLOCKCHAIN EXPLORER
diff --git a/scripts/deployKeylessly-TESTERC20UG.js b/scripts/deployKeylessly-TESTERC20UG.js
index 2d35260..0af0b8f 100644
--- a/scripts/deployKeylessly-TESTERC20UG.js
+++ b/scripts/deployKeylessly-TESTERC20UG.js
@@ -1,4 +1,4 @@
-// Both implementation and proxy deployed keylessly
+// Both implementation and proxy deployed keylessly. If you've already deployed the proxy contract and then change your contract source code or constructor arguments then don't run this script again, otherwise a new proxy contract will be deployed. Instead you should run upgrade.
let isDeployEnabled = true // set to false initially to get gas cost or if you've already deployed and need to do verification on explorer.
@@ -29,7 +29,7 @@ async function main() {
const cfToken = await ethers.getContractFactory(artifactOfContractToDeploy.abi, artifactOfContractToDeploy.bytecode)
const bytecodeWithArgs = (await cfToken.getDeployTransaction()).data // no contructor args
- const implAddress = await deployKeylessly(contractName, bytecodeWithArgs, gasLimitForImpl, wallet)
+ const implAddress = await deployKeylessly(contractName, bytecodeWithArgs, gasLimitForImpl, wallet, isDeployEnabled)
if (implAddress === undefined) return
const proxyContractName = "ERC1967Proxy"
@@ -40,7 +40,7 @@ async function main() {
const proxyBytecodeWithArgs = (await cfProxy.getDeployTransaction(...proxyConstructorArgs)).data
- const proxyAddress = await deployKeylessly(proxyContractName, proxyBytecodeWithArgs, gasLimitForProxy, wallet)
+ const proxyAddress = await deployKeylessly(proxyContractName, proxyBytecodeWithArgs, gasLimitForProxy, wallet, isDeployEnabled)
if (isDeployEnabled) proxy = await upgrades.forceImport(proxyAddress, cfToken)
diff --git a/scripts/deployViaCREATE3-TESTERC20.js b/scripts/deployViaCREATE3-TESTERC20.js
index 1a961ac..6274264 100644
--- a/scripts/deployViaCREATE3-TESTERC20.js
+++ b/scripts/deployViaCREATE3-TESTERC20.js
@@ -3,7 +3,8 @@ const factoryToUse = "axelarnetwork"
// const factoryToUse = "ZeframLou"
// WRITE THE ADDRESS OF THE FACTORY CONTRACT HERE
-const addressOfFactory = "0xDd9F606e518A955Cd3800f18126DC14E54e4E995"
+const addressOfFactory = "0xd63cd4CA70b137399cF4d3ec034117fCb9D7365b" // axelarnetwork
+// const addressOfFactory = "0xb3cBfCf8ad9eeccE068D8704C9316f38F6cC54b3" // ZeframLou
// PASS YOUR OWN STRING HERE TO GENERATE A UNIQUE SALT. After doing your first production deployment, don't change it in order to have same address on other blockchains.
const salt = ethers.encodeBytes32String("SKYBIT.ASIA TESTERC20..........")
@@ -17,7 +18,7 @@ async function main() {
// WRITE YOUR CONTRACT NAME AND CONSTRUCTOR ARGUMENTS HERE
const tokenContractName = "TESTERC20"
const wallet2Address = "0xEB2e452fC167b5bb948c6FC2c9215ce7F4064692"
- const constructorArgsOfToken = [
+ const constructorArgs = [
"Token 4628",
"TOKEN4628",
1000,
@@ -32,7 +33,7 @@ async function main() {
const cfToken = await ethers.getContractFactory(tokenContractName) // No need to use artifacts-saved for your contract because with CREATE3 deployment address isn't dependent on bytecode
const { CREATE3Deploy } = rootRequire("scripts/CREATE3-deploy-functions.js")
- const deployedContract = await CREATE3Deploy(factoryToUse, addressOfFactory, cfToken, tokenContractName, constructorArgsOfToken, salt, wallet)
+ const deployedContract = await CREATE3Deploy(factoryToUse, addressOfFactory, cfToken, tokenContractName, constructorArgs, salt, wallet)
// Testing the deployed ERC20 contract. If your contract isn't ERC20 then you can call a function other than balanceOf.
@@ -50,7 +51,7 @@ async function main() {
const { setTimeout } = require("timers/promises")
await setTimeout(20000)
- await verifyContract(deployedContract.target, constructorArgsOfToken)
+ await verifyContract(deployedContract.target, constructorArgs)
}
}
diff --git a/scripts/deployViaCREATE3-TESTERC20UG.js b/scripts/deployViaCREATE3-TESTERC20UG.js
index 8aac9b5..1174924 100644
--- a/scripts/deployViaCREATE3-TESTERC20UG.js
+++ b/scripts/deployViaCREATE3-TESTERC20UG.js
@@ -11,9 +11,8 @@ const isVerifyEnabled = true
const useDeployProxy = false // openzeppelin's deployment script for upgradeable contracts
const useCREATE3 = true
-
-const addressOfFactory = "0xDd9F606e518A955Cd3800f18126DC14E54e4E995"
-// const addressOfFactory = "0xFAD1A5cA55b731b512FeF5FEb19c60Ab35f3657f"
+const addressOfFactory = "0xd63cd4CA70b137399cF4d3ec034117fCb9D7365b" // axelarnetwork
+// const addressOfFactory = "0xb3cBfCf8ad9eeccE068D8704C9316f38F6cC54b3" // ZeframLou
const salt = ethers.encodeBytes32String("SKYBIT.ASIA TESTERC20UGV1......") // 31 characters that you choose
@@ -68,7 +67,8 @@ async function main() {
} else {
const artifactOfFactory = getArtifactOfFactory(factoryToUse)
const instanceOfFactory = await ethers.getContractAt(artifactOfFactory.abi, addressOfFactory)
- proxyAddress = await getDeployedAddress(factoryToUse, instanceOfFactory, wallet.address, salt)
+ const proxyBytecodeWithArgs = (await cfProxy.getDeployTransaction(...proxyConstructorArgs)).data
+ proxyAddress = await getDeployedAddress(factoryToUse, instanceOfFactory, proxyBytecodeWithArgs, wallet.address, salt)
}
} else { // not using CREATE3
proxy = await cfProxy.deploy(implAddress, initializerData)
diff --git a/scripts/keyless-deploy-functions.js b/scripts/keyless-deploy-functions.js
index 1f05c1c..15cdd97 100644
--- a/scripts/keyless-deploy-functions.js
+++ b/scripts/keyless-deploy-functions.js
@@ -54,7 +54,7 @@ const getArtifactOfContract = contractName => {
}
-const deployKeylessly = async (contractName, bytecodeWithArgs, gasLimit, wallet) => {
+const deployKeylessly = async (contractName, bytecodeWithArgs, gasLimit, wallet, isDeployEnabled = true) => {
console.log(`Deploying ${contractName} keylessly...`)
const gasPrice = 100000000000n // = 100 Gwei. Made high for future-proofing. DON'T CHANGE IT AFTER DEPLOYING YOUR FIRST CONTRACT TO LIVE BLOCKCHAIN.
diff --git a/solmate/utils/Bytes32AddressLib.sol b/solmate/utils/Bytes32AddressLib.sol
deleted file mode 100644
index 448fb75..0000000
--- a/solmate/utils/Bytes32AddressLib.sol
+++ /dev/null
@@ -1,14 +0,0 @@
-// SPDX-License-Identifier: AGPL-3.0-only
-pragma solidity >=0.8.0;
-
-/// @notice Library for converting between addresses and bytes32 values.
-/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Bytes32AddressLib.sol)
-library Bytes32AddressLib {
- function fromLast20Bytes(bytes32 bytesValue) internal pure returns (address) {
- return address(uint160(uint256(bytesValue)));
- }
-
- function fillLast12Bytes(address addressValue) internal pure returns (bytes32) {
- return bytes32(bytes20(addressValue));
- }
-}
diff --git a/solmate/utils/CREATE3.sol b/solmate/utils/CREATE3.sol
deleted file mode 100644
index 0d5b341..0000000
--- a/solmate/utils/CREATE3.sol
+++ /dev/null
@@ -1,83 +0,0 @@
-// SPDX-License-Identifier: AGPL-3.0-only
-pragma solidity >=0.8.0;
-
-import {Bytes32AddressLib} from "./Bytes32AddressLib.sol";
-
-/// @notice Deploy to deterministic addresses without an initcode factor.
-/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)
-/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)
-library CREATE3 {
- using Bytes32AddressLib for bytes32;
-
- //--------------------------------------------------------------------------------//
- // Opcode | Opcode + Arguments | Description | Stack View //
- //--------------------------------------------------------------------------------//
- // 0x36 | 0x36 | CALLDATASIZE | size //
- // 0x3d | 0x3d | RETURNDATASIZE | 0 size //
- // 0x3d | 0x3d | RETURNDATASIZE | 0 0 size //
- // 0x37 | 0x37 | CALLDATACOPY | //
- // 0x36 | 0x36 | CALLDATASIZE | size //
- // 0x3d | 0x3d | RETURNDATASIZE | 0 size //
- // 0x34 | 0x34 | CALLVALUE | value 0 size //
- // 0xf0 | 0xf0 | CREATE | newContract //
- //--------------------------------------------------------------------------------//
- // Opcode | Opcode + Arguments | Description | Stack View //
- //--------------------------------------------------------------------------------//
- // 0x67 | 0x67XXXXXXXXXXXXXXXX | PUSH8 bytecode | bytecode //
- // 0x3d | 0x3d | RETURNDATASIZE | 0 bytecode //
- // 0x52 | 0x52 | MSTORE | //
- // 0x60 | 0x6008 | PUSH1 08 | 8 //
- // 0x60 | 0x6018 | PUSH1 18 | 24 8 //
- // 0xf3 | 0xf3 | RETURN | //
- //--------------------------------------------------------------------------------//
- bytes internal constant PROXY_BYTECODE = hex"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3";
-
- bytes32 internal constant PROXY_BYTECODE_HASH = keccak256(PROXY_BYTECODE);
-
- function deploy(
- bytes32 salt,
- bytes memory creationCode,
- uint256 value
- ) internal returns (address deployed) {
- bytes memory proxyChildBytecode = PROXY_BYTECODE;
-
- address proxy;
- /// @solidity memory-safe-assembly
- assembly {
- // Deploy a new contract with our pre-made bytecode via CREATE2.
- // We start 32 bytes into the code to avoid copying the byte length.
- proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), salt)
- }
- require(proxy != address(0), "DEPLOYMENT_FAILED");
-
- deployed = getDeployed(salt);
- (bool success, ) = proxy.call{value: value}(creationCode);
- require(success && deployed.code.length != 0, "INITIALIZATION_FAILED");
- }
-
- function getDeployed(bytes32 salt) internal view returns (address) {
- address proxy = keccak256(
- abi.encodePacked(
- // Prefix:
- bytes1(0xFF),
- // Creator:
- address(this),
- // Salt:
- salt,
- // Bytecode hash:
- PROXY_BYTECODE_HASH
- )
- ).fromLast20Bytes();
-
- return
- keccak256(
- abi.encodePacked(
- // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01)
- // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex)
- hex"d6_94",
- proxy,
- hex"01" // Nonce of the proxy contract (1)
- )
- ).fromLast20Bytes();
- }
-}
diff --git a/yarn.lock b/yarn.lock
index 054f000..7597272 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,10 @@
# yarn lockfile v1
+"@ZeframLou/create3-factory@https://github.com/ZeframLou/create3-factory#18cfad8d118b25a5092cdfed6bea9c932ca5b6eb":
+ version "0.0.0"
+ resolved "https://github.com/ZeframLou/create3-factory#18cfad8d118b25a5092cdfed6bea9c932ca5b6eb"
+
"@adraffy/ens-normalize@1.9.2":
version "1.9.2"
resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz#60111a5d9db45b2e5cbb6231b0bb8d97e8659316"
@@ -40,6 +44,11 @@
dependencies:
tslib "^2.3.1"
+"@axelar-network/axelar-gmp-sdk-solidity@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.2.0.tgz#0d588a596eb50f624952bc24bc3dcb53994623d1"
+ integrity sha512-x7i5BiucCDjZY38J2f9YH54Et7JmcOlhpxCYlIWsDyp+1XcwlPa+DcmIWs6P1TE29xCwVLhbwT/eCuDoo2S8Qg==
+
"@chainsafe/as-sha256@^0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz#3639df0e1435cab03f4d9870cc3ac079e57a6fc9"
@@ -936,6 +945,10 @@
dependencies:
antlr4ts "^0.5.0-alpha.4"
+"@transmissions11/solmate@https://github.com/transmissions11/solmate#f2833c7cc951c50e0b5fd7e505571fddc10c8f77":
+ version "6.6.2"
+ resolved "https://github.com/transmissions11/solmate#f2833c7cc951c50e0b5fd7e505571fddc10c8f77"
+
"@typechain/ethers-v6@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@typechain/ethers-v6/-/ethers-v6-0.5.0.tgz#841a63a61272448b72dfc8f53d32d7813709ef62"
@@ -1061,10 +1074,10 @@
dependencies:
"@types/node" "*"
-"@wagmi/chains@^1.7.0":
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-1.7.0.tgz#8f6ad81cf867e1788417f7c978ca92bc083ecaf6"
- integrity sha512-TKVeHv0GqP5sV1yQ8BDGYToAFezPnCexbbBpeH14x7ywi5a1dDStPffpt9x+ytE6LJWkZ6pAMs/HNWXBQ5Nqmw==
+"@wagmi/chains@^1.8.0":
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/@wagmi/chains/-/chains-1.8.0.tgz#70e5fd0d50c8f9b8e63585eaf8544481e71707d3"
+ integrity sha512-UXo0GF0Cl0+neKC2KAmVAahv8L/5rACbFRRqkDvHMefzY6Fh7yzJd8F4GaGNNG3w4hj8eUB/E3+dEpaTYDN62w==
abbrev@1:
version "1.1.1"