{"_id":"@avalabs/subnet-evm-contracts","_rev":"24-a0a492275cf923d6beca3e195b162872","name":"@avalabs/subnet-evm-contracts","dist-tags":{"latest":"1.2.2"},"versions":{"1.0.0":{"name":"@avalabs/subnet-evm-contracts","version":"1.0.0","license":"BSD-3-Clause","_id":"@avalabs/subnet-evm-contracts@1.0.0","maintainers":[{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},{"name":"niteshanandan_ava","email":"nitesh.anandan@avalabs.org"},{"name":"omarijpowell","email":"ojp3@cornell.edu"},{"name":"yulindong","email":"yulin.dong@avalabs.org"},{"name":"seanpm","email":"sean@arrowburn.co.nz"},{"name":"truemiller","email":"mlxndrj@gmail.com"},{"name":"sgavalab","email":"samuel.golland@avalabs.org"},{"name":"pafagans","email":"peter.fagans@avalabs.org"},{"name":"mark.milner","email":"mark.milner@avalabs.org"},{"name":"larryli-dev","email":"larry.li@avalabs.org"},{"name":"iknowhtml","email":"aki.gao@avalabs.org"},{"name":"iamrajranjan","email":"raj.ranjan@avalabs.org"},{"name":"dov_brand","email":"dov.brand@avalabs.org"},{"name":"dasconnor","email":"connor.daly@avalabs.org"},{"name":"mwang194","email":"michaelzwang102@gmail.com"},{"name":"artem.bespalov","email":"artem.bespalov@avalabs.org"},{"name":"adeamos83","email":"ade@adeamos.com"},{"name":"gbartolome-avax","email":"Gerard.bartolome@avalabs.org"},{"name":"jasonatran","email":"jasonatran@gmail.com"},{"name":"tonyatavalabs","email":"tony.zhang@avalabs.org"},{"name":"meeh0w","email":"michasko37@gmail.com"},{"name":"rkefi","email":"rafik.kefi@avalabs.org"},{"name":"shelby_leblanc","email":"shelby.leblanc@avalabs.org"},{"name":"ferencbenda","email":"ferenc.benda@avalabs.org"},{"name":"any2suited66","email":"tyler.hackett@avalabs.org"},{"name":"jsafy1","email":"john.safy@avalabs.org"},{"name":"alexariciunpm","email":"alex.npm@avalabs.org"},{"name":"ryanwood","email":"ryan.wood@avalabs.org"},{"name":"cgcardona","email":"cgcardona@gmail.com"},{"name":"mikias","email":"itsmikias@gmail.com"},{"name":"ibirbas","email":"ibrahim.birbas@avalabs.org"},{"name":"anguyen0815","email":"anguyen0815@gmail.com"},{"name":"frichards","email":"fumikom@gmail.com"},{"name":"cchevli","email":"connorchev@gmail.com"},{"name":"vvava","email":"viktor.vasas@avalabs.org"},{"name":"nahoc","email":"cohan.carpentier@gmail.com"},{"name":"abolos","email":"andybolos@gmail.com"},{"name":"neven.s","email":"piaf1986@gmail.com"},{"name":"ava_wings","email":"emre@avalabs.org"},{"name":"dfenstermaker","email":"dannyfenstermaker@gmail.com"},{"name":"glovas","email":"gergely.lovas@avalabs.org"}],"homepage":"https://github.com/ava-labs/subnet-evm#readme","bugs":{"url":"https://github.com/ava-labs/subnet-evm/issues"},"dist":{"shasum":"2659d0fface26ebed2564c28f04f77144221e118","tarball":"https://registry.npmjs.org/@avalabs/subnet-evm-contracts/-/subnet-evm-contracts-1.0.0.tgz","fileCount":47,"integrity":"sha512-Ryxfof5Un9fZDdql1i0MZpD7dFWJRFAk9ml/TTqijhtYZgqOkuMFOYQV8xgyjPIMUwttAy0G4VrSEfzVLavxDA==","signatures":[{"sig":"MEQCIGXAgDgwBkreqGuFv8q02jYLq7sWHxVg4O9nY4wxnc/mAiA86yPHwKsrELrz/cSXYAm4GjLQ3I4PKKX7yts4ZV6/BA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111299},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"npm":">6.0.0","node":">=18.16.0"},"gitHead":"14fc525f9fed50c34340855c5942be912f0927cd","scripts":{"lint":"prettier --list-different 'contracts/**/*.sol'","test":"npx hardhat test","build":"rm -rf dist/ && tsc -b","compile":"npx hardhat compile","console":"npx hardhat console","prepublish":"npm run build","release:prepare":"rm -rf ./dist ./node_modules && npm install && npm run build"},"_npmUser":{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/ava-labs/subnet-evm.git","type":"git","directory":"contracts"},"_npmVersion":"8.19.2","description":"CONTRACTS HERE ARE [ALPHA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) AND ARE NOT AUDITED. USE AT YOUR OWN RISK!","directories":{},"_nodeVersion":"19.0.0","dependencies":{"ds-test":"git+https://github.com/dapphub/ds-test.git"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.4","ethers":"^5.4.5","hardhat":"2.6.1","ts-node":"^10.9.1","prettier":"^2.5.1","avalanche":"^3.8.5","typescript":"^5.1.3","@types/chai":"^4.2.21","@types/node":"^16.7.1","@types/mocha":"^9.0.0","ethereumjs-tx":"^2.1.2","ethereum-waffle":"^3.4.0","@openzeppelin/contracts":"^4.7.1","prettier-plugin-solidity":"^1.0.0-beta.19","@nomiclabs/hardhat-ethers":"^2.0.2","@nomiclabs/hardhat-waffle":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/subnet-evm-contracts_1.0.0_1686919842572_0.6591147851570005","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@avalabs/subnet-evm-contracts","version":"1.1.0","license":"BSD-3-Clause","_id":"@avalabs/subnet-evm-contracts@1.1.0","maintainers":[{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"}],"homepage":"https://github.com/ava-labs/subnet-evm#readme","bugs":{"url":"https://github.com/ava-labs/subnet-evm/issues"},"dist":{"shasum":"5718faba242620aab16fb2a1f9ad51ad8bf92cfa","tarball":"https://registry.npmjs.org/@avalabs/subnet-evm-contracts/-/subnet-evm-contracts-1.1.0.tgz","fileCount":49,"integrity":"sha512-2uUSaNi2EkC1a9okIEPHqWz5b9xtHdQyo3yhcKUJ6X5iYFJDnAbHeEak/Ei4TZwfQrspY2udj97Xrh7So7wwAQ==","signatures":[{"sig":"MEQCIGLTYJxklqcGyYqjo6x6U4bkFDhzAy1Rv/U5vGsF0nlaAiAnXcqMWtoKBxHnxv/OtWzb9QWDPm5w23lQQ2UMSPL8KA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123514},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"npm":">6.0.0","node":">=18.15.0"},"gitHead":"a05fc0b629272e604441c73e870a751a415327b2","scripts":{"lint":"prettier --list-different 'contracts/**/*.sol'","test":"npx hardhat test","build":"rm -rf dist/ && tsc -b && npx hardhat compile","compile":"npx hardhat compile","console":"npx hardhat console","prepublish":"npm run build","release:prepare":"rm -rf ./dist ./node_modules && npm install && npm run build"},"_npmUser":{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/ava-labs/subnet-evm.git","type":"git","directory":"contracts"},"_npmVersion":"9.6.7","description":"CONTRACTS HERE ARE [ALPHA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) AND ARE NOT AUDITED. USE AT YOUR OWN RISK!","directories":{},"_nodeVersion":"18.17.0","dependencies":{"ethers":"^5.4.5","ds-test":"git+https://github.com/dapphub/ds-test.git","hardhat":"2.17.1","ts-node":"^10.9.1","typescript":"^5.1.6","@types/node":"^16.7.1","@avalabs/avalanchejs":"^3.17.0","@openzeppelin/contracts":"^4.9.3","@nomiclabs/hardhat-ethers":"^2.2.3","@nomiclabs/hardhat-waffle":"^2.0.6"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.3.7","prettier":"^2.5.1","@types/chai":"^4.3.5","@types/mocha":"^9.0.0","prettier-plugin-solidity":"^1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/subnet-evm-contracts_1.1.0_1695407472388_0.9296484265489431","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"@avalabs/subnet-evm-contracts","version":"1.2.0","license":"BSD-3-Clause","_id":"@avalabs/subnet-evm-contracts@1.2.0","maintainers":[{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},{"name":"avaservice","email":"avaservice@avalabs.org"}],"homepage":"https://github.com/ava-labs/subnet-evm#readme","bugs":{"url":"https://github.com/ava-labs/subnet-evm/issues"},"dist":{"shasum":"4d0ee712f8f41081b10529695f52f678a4e6e89d","tarball":"https://registry.npmjs.org/@avalabs/subnet-evm-contracts/-/subnet-evm-contracts-1.2.0.tgz","fileCount":51,"integrity":"sha512-8KODwG/6gLFE7jYrES9TJxsWugJVlg/v+EDzXX7GkD2lBa2WZ5XZnN86PPL+QMYGoIHOnx0NMIW4PUUS90LX/g==","signatures":[{"sig":"MEUCIFS3SCdqTo4sWz/iI5Cmd/68yzv+sN6Ygdqd192wQRmSAiEAvvVIKorp7R5fF05YB/DZhue4YmAz6OAytC0/bgLZ2zk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141713},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"npm":">6.0.0","node":">=18.15.0"},"scripts":{"lint":"prettier --list-different 'contracts/**/*.sol'","test":"npx hardhat test","build":"rm -rf dist/ && tsc -b && npx hardhat compile","compile":"npx hardhat compile","console":"npx hardhat console","prepublish":"npm run build","release:prepare":"rm -rf ./dist ./node_modules && npm install && npm run build"},"_npmUser":{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/ava-labs/subnet-evm.git","type":"git","directory":"contracts"},"_npmVersion":"9.6.7","description":"CONTRACTS HERE ARE [ALPHA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) AND ARE NOT AUDITED. USE AT YOUR OWN RISK!","directories":{},"_nodeVersion":"18.17.0","dependencies":{"ethers":"^5.7.2","ds-test":"git+https://github.com/dapphub/ds-test.git","hardhat":"2.19.4","ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^16.11.7","@avalabs/avalanchejs":"^3.17.0","@openzeppelin/contracts":"^4.9.5","@nomiclabs/hardhat-ethers":"^2.2.3","@nomiclabs/hardhat-waffle":"^2.0.6"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","prettier":"^3.2.4","@types/chai":"^4.3.11","@types/mocha":"^9.1.1","prettier-plugin-solidity":"^1.3.1"},"_npmOperationalInternal":{"tmp":"tmp/subnet-evm-contracts_1.2.0_1706515834252_0.8115291042247974","host":"s3://npm-registry-packages"}},"1.2.1":{"name":"@avalabs/subnet-evm-contracts","version":"1.2.1","license":"BSD-3-Clause","_id":"@avalabs/subnet-evm-contracts@1.2.1","maintainers":[{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},{"name":"tony-snow","email":"tony.moulton@avalabs.org"},{"name":"vantablk","email":"jean.vargas@avalabs.org"},{"name":"halfhp","email":"omar.pouerie@avalabs.org"},{"name":"avaservice","email":"avaservice@avalabs.org"}],"homepage":"https://github.com/ava-labs/subnet-evm#readme","bugs":{"url":"https://github.com/ava-labs/subnet-evm/issues"},"dist":{"shasum":"408f05565a3b28422ef7e70a0cb2442682aaf729","tarball":"https://registry.npmjs.org/@avalabs/subnet-evm-contracts/-/subnet-evm-contracts-1.2.1.tgz","fileCount":51,"integrity":"sha512-xKhFfreDIRi2U/PEDQXQCgQwJ0p4RvPxKzRI5H+pxeXtOboqYMBvv8SOgVKvtCxLB2xGrDXkyZJHo3muJJYGWA==","signatures":[{"sig":"MEUCIQDHADLfnxEGi2vijd37JloCDp17gdzwkhRjSXaszAZUggIgRDeBPFGMWSGRTxBbbvtqwwAURUWk6c8B+Px6TkVlQ1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140973},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"npm":">7.0.0","node":">=20.13.0"},"gitHead":"1dc192452cc94f5a249e5c5a433d278478b4fda1","scripts":{"lint":"prettier --list-different 'contracts/**/*.sol'","test":"npx hardhat test","build":"rm -rf dist/ && npx hardhat compile && tsc -b ","compile":"npx hardhat compile","console":"npx hardhat console","prepublish":"npm run build","release:prepare":"rm -rf ./dist ./node_modules && npm install && npm run build"},"_npmUser":{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/ava-labs/subnet-evm.git","type":"git","directory":"contracts"},"_npmVersion":"9.5.0","description":"CONTRACTS HERE ARE [ALPHA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) AND ARE NOT AUDITED. USE AT YOUR OWN RISK!","directories":{},"_nodeVersion":"18.15.0","dependencies":{"@avalabs/avalanchejs":"^4.0.5","@openzeppelin/contracts":"^4.9.6"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","ds-test":"git+https://github.com/dapphub/ds-test.git","hardhat":"^2.22.4","ts-node":"^10.9.2","prettier":"^3.2.4","typescript":"^5.4.5","@types/chai":"^4.3.16","@types/node":"^20.12.12","@types/mocha":"^9.1.1","prettier-plugin-solidity":"^1.3.1","@nomicfoundation/hardhat-toolbox":"^5.0.0","@nomicfoundation/hardhat-chai-matchers":"^2.0.6"},"_npmOperationalInternal":{"tmp":"tmp/subnet-evm-contracts_1.2.1_1717087178914_0.7308865575785239","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"@avalabs/subnet-evm-contracts","version":"1.2.2","license":"BSD-3-Clause","_id":"@avalabs/subnet-evm-contracts@1.2.2","maintainers":[{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},{"name":"tony-snow","email":"tony.moulton@avalabs.org"},{"name":"vantablk","email":"jean.vargas@avalabs.org"},{"name":"halfhp","email":"omar.pouerie@avalabs.org"},{"name":"avaservice","email":"avaservice@avalabs.org"}],"homepage":"https://github.com/ava-labs/subnet-evm#readme","bugs":{"url":"https://github.com/ava-labs/subnet-evm/issues"},"dist":{"shasum":"542a0a39a704ab64da8fa636a3625b1640645f6d","tarball":"https://registry.npmjs.org/@avalabs/subnet-evm-contracts/-/subnet-evm-contracts-1.2.2.tgz","fileCount":128,"integrity":"sha512-OX2KchgjccxHbHAdjdFMTvOz9uQvzrTiWATLMq4NIFWjMaxMWO4SsrmB+Lv44u/rTuQaBnsykupg9gXO4AHNRw==","signatures":[{"sig":"MEYCIQC4dvxZsRpvBbRGyjdk+fROfPEzF+MvwtpRD7WhEMZFyQIhAN0VYdvCiPWC/bVPBYu0v+47n9lCrrQd1hI3y+zbFteU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":574039},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","engines":{"npm":">7.0.0","node":">=20.13.0"},"gitHead":"51f48bc1650e86877a3245b682522f7131aeabc5","scripts":{"lint":"prettier --list-different 'contracts/**/*.sol'","test":"npx hardhat test","build":"rm -rf dist/ && npx hardhat compile && npx tsc -b ","compile":"npx hardhat compile","console":"npx hardhat console","prepublish":"npm run build","release:prepare":"rm -rf ./node_modules && npm install && npm run build"},"_npmUser":{"name":"ceyonur","email":"ceyhun.onur@avalabs.org"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/ava-labs/subnet-evm.git","type":"git","directory":"contracts"},"_npmVersion":"10.5.2","description":"CONTRACTS HERE ARE [ALPHA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) AND ARE NOT AUDITED. USE AT YOUR OWN RISK!","directories":{},"_nodeVersion":"20.13.1","dependencies":{"@avalabs/avalanchejs":"^4.0.5","@openzeppelin/contracts":"^4.9.6"},"_hasShrinkwrap":false,"devDependencies":{"chai":"^4.4.1","ds-test":"git+https://github.com/dapphub/ds-test.git","hardhat":"^2.22.4","ts-node":"^10.9.2","prettier":"^3.2.4","typescript":"^5.4.5","@types/chai":"^4.3.16","@types/node":"^20.12.12","@types/mocha":"^9.1.1","prettier-plugin-solidity":"^1.3.1","@nomicfoundation/hardhat-toolbox":"^5.0.0","@nomicfoundation/hardhat-chai-matchers":"^2.0.6"},"_npmOperationalInternal":{"tmp":"tmp/subnet-evm-contracts_1.2.2_1718136110693_0.1466502821833391","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-06-16T12:50:42.477Z","modified":"2026-06-29T14:29:25.026Z","1.0.0":"2023-06-16T12:50:42.740Z","1.1.0":"2023-09-22T18:31:12.604Z","1.2.0":"2024-01-29T08:10:34.396Z","1.2.1":"2024-05-30T16:39:39.101Z","1.2.2":"2024-06-11T20:01:50.882Z"},"bugs":{"url":"https://github.com/ava-labs/subnet-evm/issues"},"license":"BSD-3-Clause","homepage":"https://github.com/ava-labs/subnet-evm#readme","repository":{"url":"git+https://github.com/ava-labs/subnet-evm.git","type":"git","directory":"contracts"},"description":"CONTRACTS HERE ARE [ALPHA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) AND ARE NOT AUDITED. USE AT YOUR OWN RISK!","maintainers":[{"email":"martin.prado@avalabs.org","name":"martin.prado"},{"email":"chris.elbring@avalabs.org","name":"chriselbring-avalabs"},{"email":"desmond.henderson@avalabs.org","name":"des-ava"}],"readme":"# Subnet EVM Contracts\n\nCONTRACTS HERE ARE [ALPHA SOFTWARE](https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha) AND ARE NOT AUDITED. USE AT YOUR OWN RISK!\n\n## Introduction\n\nAvalanche is an open-source platform for launching decentralized applications and enterprise blockchain deployments in one interoperable, highly scalable ecosystem. Avalanche gives you complete control on both the network and application layers&mdash;helping you build anything you can imagine.\n\nThe Avalanche Network is composed of many subnets and chains. Chains in subnets run with customizable virtual machines. One of these virtual machines is Subnet EVM. The Subnet EVM's API is almost identical to an Ethereum node's API. Subnet EVM brings its own features like minting native tokens via contracts, restrincting contract deployer etc. These features are presented with `Stateful Precompile Contracts`. These contracts are precompiled and deployed when they're activated.\n\nThe goal of this guide is to lay out best practices regarding writing, testing and deployment of smart contracts to Avalanche's Subnet EVM. We'll be building smart contracts with development environment [Hardhat](https://hardhat.org).\n\n## Prerequisites\n\n### NodeJS and NPM\n\nFirst, install the LTS (long-term support) version of [nodejs](https://nodejs.org/en). This is `18.16.0` at the time of writing. NodeJS bundles `npm`.\n\n### Solidity and Avalanche\n\nIt is also helpful to have a basic understanding of [Solidity](https://docs.soliditylang.org) and [Avalanche](https://docs.avax.network).\n\n## Dependencies\n\nClone the repo and install the necessary packages via `yarn`.\n\n```bash\ngit clone https://github.com/ava-labs/subnet-evm.git\ncd contracts\nnpm install\n```\n\n## Write Contracts\n\n`AllowList.sol` is the base contract which provided AllowList precompile capabilities to inheriting contracts.\n\n`ERC20NativeMinter.sol` is based on [Open Zeppelin](https://openzeppelin.com) [ERC20](https://eips.ethereum.org/EIPS/eip-20) contract powered by native minting capabilities of Subnet EVM. ERC20 is a popular smart contract interface. It uses `INativeMinter` interface to interact with `NativeMinter` precompile.\n\n`ExampleDeployerList` shows how `ContractDeployerAllowList` precompile can be used in a smart contract. It uses `IAllowList` to interact with `ContractDeployerAllowList` precompile. When the precompile is activated only those allowed can deploy contracts.\n\n`ExampleFeeManager` shows how a contract can change fee configuration with the `FeeManager` precompile.\n\nAll of these `NativeMinter`, `FeeManager` and `AllowList` contracts should be enabled by a chain config in genesis or as an upgrade. See the example genesis under [Tests](#tests) section.\n\nFor more information about precompiles see [subnet-evm precompiles](https://github.com/ava-labs/subnet-evm#precompiles).\n\n## Hardhat Config\n\nHardhat uses `hardhat.config.js` as the configuration file. You can define tasks, networks, compilers and more in that file. For more information see [here](https://hardhat.org/config/).\n\nIn Subnet-EVM, we provide a pre-configured file [hardhat.config.ts](https://github.com/ava-labs/subnet-evm/blob/master/contracts/hardhat.config.ts).\n\nThe HardHat config file includes a single network configuration: `local`. `local` defaults to using the following values for the RPC URL and the Chain ID:\n\n```js\nvar local_rpc_uri = process.env.RPC_URI || \"http://127.0.0.1:9650/ext/bc/C/rpc\";\nvar local_chain_id = process.env.CHAIN_ID || 99999;\n```\n\nYou can use this network configuration by providing the environment variables and specifying the `--network` flag, as Subnet-EVM does in its testing suite:\n\n```bash\nRPC_URI=http://127.0.0.1:9650/ext/bc/28N1Tv5CZziQ3FKCaXmo8xtxoFtuoVA6NvZykAT5MtGjF4JkGs/rpc CHAIN_ID=77777 npx hardhat test --network local\n```\n\nAlternatively, you can copy and paste the `local` network configuration to create a new network configuration for your own local testing. For example, you can copy and paste the `local` network configuration to create your own network and fill in the required details:\n\n```json\n{\n  \"networks\": {\n    \"mynetwork\": {\n      \"url\": \"http://127.0.0.1:9650/ext/bc/28N1Tv5CZziQ3FKCaXmo8xtxoFtuoVA6NvZykAT5MtGjF4JkGs/rpc\",\n      \"chainId\": 33333,\n      \"accounts\": [\n        \"0x56289e99c94b6912bfc12adc093c9b51124f0dc54ac7a766b2bc5ccf558d8027\",\n        \"0x7b4198529994b0dc604278c99d153cfd069d594753d471171a1d102a10438e07\",\n        \"0x15614556be13730e9e8d6eacc1603143e7b96987429df8726384c2ec4502ef6e\",\n        \"0x31b571bf6894a248831ff937bb49f7754509fe93bbd2517c9c73c4144c0e97dc\",\n        \"0x6934bef917e01692b789da754a0eae31a8536eb465e7bff752ea291dad88c675\",\n        \"0xe700bdbdbc279b808b1ec45f8c2370e4616d3a02c336e68d85d4668e08f53cff\",\n        \"0xbbc2865b76ba28016bc2255c7504d000e046ae01934b04c694592a6276988630\",\n        \"0xcdbfd34f687ced8c6968854f8a99ae47712c4f4183b78dcc4a903d1bfe8cbf60\",\n        \"0x86f78c5416151fe3546dece84fda4b4b1e36089f2dbc48496faf3a950f16157c\",\n        \"0x750839e9dbbd2a0910efe40f50b2f3b2f2f59f5580bb4b83bd8c1201cf9a010a\"\n      ],\n      \"pollingInterval\": \"1s\"\n    }\n  }\n}\n```\n\nBy creating your own network configuration in the HardHat config, you can run HardHat commands directly on your subnet:\n\n```bash\nnpx hardhat accounts --network mynetwork\n```\n\n## Hardhat Tasks\n\nYou can define custom hardhat tasks in [tasks.ts](https://github.com/ava-labs/avalanche-smart-contract-quickstart/blob/main/tasks.ts). Tasks contain helpers for precompiles `allowList` and `minter`. Precompiles have their own contract already-deployed when they're activated. So these can be called without deploying any intermediate contract. See `npx hardhat --help` for more information about available tasks.\n\n## Tests\n\nTests are written for a local network which runs a Subnet-EVM Blockchain.\n\nE.g `RPC_URI=http://127.0.0.1:9650/ext/bc/28N1Tv5CZziQ3FKCaXmo8xtxoFtuoVA6NvZykAT5MtGjF4JkGs/rpc CHAIN_ID=77777 npx hardhat test --network local`.\n\nSubnet-EVM must activate any precompiles used in the test in the genesis.\n","readmeFilename":"README.md"}