NFT deployed to: 0xC09Ff9115C1CE86a3F1Bd501a625772fd299cd42 PwnNFT contract deployed to:
Hit the deposit function of the NFT contract with one wallet. You can then use the frontend to steal those funds from another wallet by exploiting via re-entrancy
Easiest way to trigger a deposit on the original contract is by uploading the ABI to https://eth95.dev/
You have to be on the AVAX Fuji network, though this works on any EVM chain. Further improvements include suggesting a chain switch to metamask if the wrong chain is detected.
Before running any command, you need to create a .env
file and set a BIP-39 compatible mnemonic as an environment
variable. Follow the example in .env.example
. If you don't already have a mnemonic, use this website to generate one.
Then, proceed with installing dependencies:
$ yarn install
Compile the smart contracts with Hardhat:
$ yarn compile
Compile the smart contracts and generate TypeChain artifacts:
$ yarn typechain
Lint the Solidity code:
$ yarn lint:sol
Lint the TypeScript code:
$ yarn lint:ts
Run the Mocha tests:
$ yarn test
Generate the code coverage report:
$ yarn coverage
See the gas usage per unit test and average gas per method call:
$ REPORT_GAS=true yarn test
Delete the smart contract artifacts, the coverage reports and the Hardhat cache:
$ yarn clean
Deploy the contracts to Hardhat Network:
$ yarn deploy --greeting "Bonjour, le monde!"
If you use VSCode, you can enjoy syntax highlighting for your Solidity code via the hardhat-vscode extension.
If you can't get the Waffle matchers to work, try to
make your ethers
package version match the version used by the @ethereum-waffle/chai
package. Seem
#111 for more details.