Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/solidstate-network/hardhat-bytecode-exporter
🧰 Export Ethereum contract bytecode on compilation ⚙️
https://github.com/solidstate-network/hardhat-bytecode-exporter
buidler bytecode dapps eth ether ethereum hardhat smart-contracts solc solidity version-control wow
Last synced: 2 months ago
JSON representation
🧰 Export Ethereum contract bytecode on compilation ⚙️
- Host: GitHub
- URL: https://github.com/solidstate-network/hardhat-bytecode-exporter
- Owner: solidstate-network
- License: mit
- Created: 2022-02-28T18:33:01.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-07-30T20:35:06.000Z (6 months ago)
- Last Synced: 2024-11-11T21:51:30.707Z (2 months ago)
- Topics: buidler, bytecode, dapps, eth, ether, ethereum, hardhat, smart-contracts, solc, solidity, version-control, wow
- Language: TypeScript
- Homepage:
- Size: 155 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Hardhat Bytecode Exporter
Export Ethereum smart contract bytecode on compilation via Hardhat.
## Installation
```bash
npm install --save-dev @solidstate/hardhat-bytecode-exporter
# or
yarn add --dev @solidstate/hardhat-bytecode-exporter
```## Usage
Load plugin in Hardhat config:
```javascript
require('@solidstate/hardhat-bytecode-exporter');
```Add configuration under the `bytecodeExporter` key:
| option | description | default |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
| `path` | path to bytecode export directory (relative to Hardhat root) | `'./bytecode'` |
| `runOnCompile` | whether to automatically export bytecode during compilation | `false` |
| `clear` | whether to delete old bytecode files in `path` on compilation | `false` |
| `flat` | whether to flatten output directory (may cause name collisions) | `false` |
| `only` | `Array` of `String` matchers used to select included contracts, defaults to all contracts if `length` is 0 | `[]` |
| `except` | `Array` of `String` matchers used to exclude contracts | `[]` |
| `rename` | `Function` with signature `(sourceName: string, contractName: string) => string` used to rename an exported bytecode (incompatible with `flat` option) | `undefined` |Note that the configuration formatted as either a single `Object`, or an `Array` of objects. An `Array` may be used to specify multiple outputs.
```javascript
bytecodeExporter: {
path: './data',
runOnCompile: true,
clear: true,
flat: true,
only: [':ERC20$'],
}// or
bytecodeExporter: [
{
path: './only',
runOnCompile: true,
only: [':ERC20$'],
},
{
path: './except',
except: [':ERC20$'],
},
]
```The included Hardhat tasks may be run manually:
```bash
npx hardhat export-bytecode
npx hardhat clear-bytecode
# or
yarn run hardhat export-bytecode
yarn run hardhat clear-bytecode
```By default, the hardhat `compile` task is run before exporting bytecode. This behavior can be disabled with the `--no-compile` flag:
```bash
npx hardhat export-bytecode --no-compile
# or
yarn run hardhat export-bytecode --no-compile
```The `path` directory will be created if it does not exist.
The `clear` option is set to `false` by default because it represents a destructive action, but should be set to `true` in most cases.
Bytecode files are saved as a flat bin file in the format `[CONTRACT_NAME].bin`.
## Development
Install dependencies via Yarn:
```bash
yarn install
```Setup Husky to format code on commit:
```bash
yarn prepare
```