{"id":25086818,"url":"https://github.com/marc-aurele-besner/deployment-tool","last_synced_at":"2026-05-05T21:36:16.425Z","repository":{"id":58824650,"uuid":"533454483","full_name":"marc-aurele-besner/deployment-tool","owner":"marc-aurele-besner","description":"Tool to deploy and upgrade contracts on Ethereum Mainnet","archived":false,"fork":false,"pushed_at":"2024-11-16T11:18:43.000Z","size":333,"stargazers_count":0,"open_issues_count":7,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-24T04:32:18.744Z","etag":null,"topics":["ethereum","hardhat","hardhat-deployment","hardhat-plugin","solidity"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marc-aurele-besner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-09-06T18:30:29.000Z","updated_at":"2024-11-16T11:18:47.000Z","dependencies_parsed_at":"2023-02-18T00:31:12.211Z","dependency_job_id":"69369184-bc64-41e5-bddb-f7eaa687d71d","html_url":"https://github.com/marc-aurele-besner/deployment-tool","commit_stats":{"total_commits":13,"total_committers":1,"mean_commits":13.0,"dds":0.0,"last_synced_commit":"bf8aac4fab830f07c1732815d7d290bccc8df154"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marc-aurele-besner/deployment-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marc-aurele-besner%2Fdeployment-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marc-aurele-besner%2Fdeployment-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marc-aurele-besner%2Fdeployment-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marc-aurele-besner%2Fdeployment-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marc-aurele-besner","download_url":"https://codeload.github.com/marc-aurele-besner/deployment-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marc-aurele-besner%2Fdeployment-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32669431,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-05T11:29:49.557Z","status":"ssl_error","status_checked_at":"2026-05-05T11:29:48.587Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ethereum","hardhat","hardhat-deployment","hardhat-plugin","solidity"],"created_at":"2025-02-07T09:19:14.994Z","updated_at":"2026-05-05T21:36:16.234Z","avatar_url":"https://github.com/marc-aurele-besner.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n[![license](https://img.shields.io/github/license/jamesisaac/react-native-background-task.svg)](https://opensource.org/licenses/MIT)\n[![npm version](https://badge.fury.io/js/deployment-tool.svg)](https://badge.fury.io/js/deployment-tool)\n\n# deployment-tool\n\n```\n\n    888                888                                             888        888                   888 \n    888                888                                             888        888                   888 \n    888                888                                             888        888                   888 \n.d88888 .d88b. 88888b. 888 .d88b. 888  88888888b.d88b.  .d88b. 88888b. 888888     888888 .d88b.  .d88b. 888 \nd88\" 888d8P  Y8b888 \"88b888d88\"\"88b888  888888 \"888 \"88bd8P  Y8b888 \"88b888        888   d88\"\"88bd88\"\"88b888 \n888  88888888888888  888888888  888888  888888  888  88888888888888  888888  888888888   888  888888  888888 \nY88b 888Y8b.    888 d88P888Y88..88PY88b 888888  888  888Y8b.    888  888Y88b.      Y88b. Y88..88PY88..88P888 \n\"Y88888 \"Y8888 88888P\" 888 \"Y88P\"  \"Y88888888  888  888 \"Y8888 888  888 \"Y888      \"Y888 \"Y88P\"  \"Y88P\" 888 \n               888                     888                                                                  \n               888                Y8b d88P                                                                  \n               888                 \"Y88P\"                                                                   \n\n```\n\nThis Hardhat plugin add 4 tasks and 3 functions to deploy and upgrade smart contracts.\n\nStep include : \n- Compile your contracts\n- Verify storage layout, deploy a proxy admin if non existent, deploy implementation contract if non existent\n- Get last commit id (8 first characters)\n- Deploy a Transparent Upgradeable Proxy OR Upgrade Proxy using implementation contract\n- Save address of the Proxy, Proxy Admin address and initialize arguments\n- Verify contract on etherscan.io (if selected)\n- Commit new storage layout file and address file with Contract Name and CommitId in commit msg\n- Git Pull \u0026 Push\n\n## How to install this package\n### 1. Install this package\nWith NPM\n```\nnpm install deployment-tool\n```\nOr with Yarn\n```\nyarn add deployment-tool\n```\n\n### 2. Import/Require this package in your hardhat.config.js/.ts\n\nInside inside hardhat.config.js\n```\nrequire(\"deployment-tool\");\n```\nor inside hardhat.config.ts (Typescript)\n```\nimport 'deployment-tool'\n```\n    \n## Directories\n - [src/](./src/)\n\n - [.eslintrc.js](./.eslintrc.js)\n - [.npmignore](./.npmignore)\n - [.prettierignore](./.prettierignore)\n - [.prettierrc](./.prettierrc)\n - [CONTRIBUTING.md](./CONTRIBUTING.md)\n - [LICENSE](./LICENSE)\n - [README.md](./README.md)\n - [README3.md](./README3.md)\n - [awesome-readme.config.js](./awesome-readme.config.js)\n - [package-lock.json](./package-lock.json)\n - [package.json](./package.json)\n - [tsconfig.json](./tsconfig.json)\n - [tsconfig.prod.json](./tsconfig.prod.json)\n - [tslint.json](./tslint.json)\n\n\n### Other option\n\u003cdetails\u003e\n\u003csummary\u003eClone this repository and create a symlink\u003c/summary\u003e\n\n```\ngit clone https://github.com/marc-aurele-besner/deployment-tool\n\ncd deployment-tool\n\nnpm install\n\nnpm run build\n\nnpm link\n```\n\nin the hardhat project, you want to use this plugin\n\n```\nnpm link deployment-tool\n```\n\u003c/details\u003e\n\n## Tasks\n\n```\nnpx hardhat deployment\nnpx hardhat deploy-contract\nnpx hardhat upgrade-contract\nnpx hardhat deploy-contract-static\nnpx hardhat test-deploy-then-upgrade-contract\n```\n\n### Task: deploy-contract\n\nUsage: hardhat [GLOBAL OPTIONS] deploy-contract [--contract-name \u003cSTRING\u003e] [--extra \u003cSTRING\u003e] [--initialize-arguments \u003cSTRING\u003e] [--initialize-signature \u003cSTRING\u003e] [--skip-git \u003cSTRING\u003e] [--tag \u003cSTRING\u003e] [--verify-contract \u003cSTRING\u003e]\n\nOPTIONS:\n\n- --contract-name               The name of the contract to deploy (default: \"\")\n- --extra                       Extra data to save with this deployment (default: \"\")\n- --initialize-arguments        The initialize() argument (default: \"\")\n- --initialize-signature        Function signature of the initialize function (default: \"\")\n- --skip-git                    Skit git commit, pull \u0026 push (default: \"false\")\n- --tag                         Add a extra tag to this version of the contract (default: \"\")\n- --verify-contract             Validate the contract on Etherscan.io (default: \"false\")\n\ndeploy-contract: Deploy a proxy contract, initialize it, save the address, commit, pull and push\n\n### Task: upgrade-contract\n\nUsage: hardhat [GLOBAL OPTIONS] upgrade-contract [--contract-name \u003cSTRING\u003e] [--extra \u003cSTRING\u003e] [--skip-git \u003cSTRING\u003e] [--tag \u003cSTRING\u003e] [--verify-contract \u003cSTRING\u003e]\n\nOPTIONS:\n\n- --contract-name       The name of the contract to deploy (default: \"\")\n- --extra               Extra data to save with this deployment (default: \"\")\n- --skip-git            Skit git commit, pull \u0026 push (default: \"false\")\n- --tag                 Add a extra tag to this version of the contract (default: \"\")\n- --verify-contract     Validate the contract on Etherscan.io (default: \"false\")\n\nupgrade-contract: Upgrade a proxy contract, save the address, commit, pull and push\n\n### Task: deploy-contract-static\n\nUsage: hardhat [GLOBAL OPTIONS] deploy-contract-static [--contract-name \u003cSTRING\u003e] [--extra \u003cSTRING\u003e] [--constructor-arguments \u003cSTRING\u003e] [--skip-git \u003cSTRING\u003e] [--tag \u003cSTRING\u003e] [--verify-contract \u003cSTRING\u003e]\n\nOPTIONS:\n\n- --contract-name               The name of the contract to deploy (default: \"\")\n- --extra                       Extra data to save with this deployment (default: \"\")\n- --constructor-arguments        The constructor() argument (default: \"\")\n- --skip-git                    Skit git commit, pull \u0026 push (default: \"false\")\n- --tag                         Add a extra tag to this version of the contract (default: \"\")\n- --verify-contract             Validate the contract on Etherscan.io (default: \"false\")\n\ndeploy-contract-static: Deploy a static contract, save the address, commit, pull and push\n\n### Task: test-deploy-then-upgrade-contract\n\nUsage: hardhat [GLOBAL OPTIONS] test-deploy-then-upgrade-contract [--contract-name \u003cSTRING\u003e] [--extra \u003cSTRING\u003e] [--initialize-arguments \u003cSTRING\u003e] [--initialize-signature \u003cSTRING\u003e] [--skip-git \u003cSTRING\u003e] [--tag \u003cSTRING\u003e] [--verify-contract \u003cSTRING\u003e]\n\nOPTIONS:\n\n- --contract-name               The name of the contract to deploy (default: \"\")\n- --extra                       Extra data to save with this deployment (default: \"\")\n- --initialize-arguments        The initialize() argument (default: \"\")\n- --initialize-signature        Function signature of the initialize function (default: \"\")\n- --skip-git                    Skit git commit, pull \u0026 push (default: \"false\")\n- --tag                         Add a extra tag to this version of the contract (default: \"\")\n- --verify-contract             Validate the contract on Etherscan.io (default: \"false\")\n\ntest-deploy-then-upgrade-contract: Upgrade a proxy contract, save the address, commit, pull and push\n\n## Functions\n\nFunction allow you to use the deployment OR upgrade script in scripts or tests files, they all return a instance of the contract that you can use.\n\n```\n    const { contractDeployment } = require('hardhat');\n\n    contractDeployment.deployContract(\n        contractName: string,\n        initializeArguments: any[] = [],\n        initializeSignature: string = 'initialize',\n        tag?: string,\n        extra?: any,\n        skipGit?: boolean,\n        verifyContract?: boolean\n    )\n    contractDeployment.upgradeContract(\n        contractName: string,\n        tag?: string,\n        extra?: any,\n        skipGit?: boolean,\n        verifyContract?: boolean\n    )\n    contractDeployment.testDeployThenUpgradeContract(\n        contractName: string,\n        initializeArguments: any[] = [],\n        initializeSignature: string = 'initialize',\n        tag?: string,\n        extra?: any,\n        skipGit?: boolean,\n        verifyContract?: boolean\n    )\n```\n    \n## Directory Tree\n```\ndeployment-tool/\n│   .eslintrc.js\n│   .npmignore\n│   .prettierignore\n│   .prettierrc\n│   CONTRIBUTING.md\n│   LICENSE\n│   README.md\n│   README3.md\n│   awesome-readme.config.js\n│   package-lock.json\n│   package.json\n│   tsconfig.json\n│   tsconfig.prod.json\n│   tslint.json\n└─── src/\n   │   ContractDeployment.ts\n   │   README.md\n   │   deploy.ts\n   │   deployProxy.ts\n   │   index.ts\n   │   serveTasks.ts\n   │   type-extensions.ts\n   │   upgradeProxy.ts\n   │   utils.ts\n```\n\n### Dependencies\n\nThis package/plugin use other hardhat plugins that you can then reuse, for example https://www.npmjs.com/package/hardhat-awesome-cli is used to save the contract address and initialization details, this can be access with a function like \n```\nconst { addressBook } = require('hardhat');\naddressBook.retrieveContractObject(contractName: string, deployedNetwork: string)\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarc-aurele-besner%2Fdeployment-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarc-aurele-besner%2Fdeployment-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarc-aurele-besner%2Fdeployment-tool/lists"}