Closed bitcoinbrisbane closed 1 month ago
The pull request introduces several changes primarily focused on the README.md
file, the BroMerge
and Eater
smart contracts, and various deployment artifacts. Key modifications include updates to script examples, contract addresses, and the addition of pausable functionality in the Eater
contract. The BroMerge
contract's constructor now initializes the contract in a paused state. Several deployment artifacts related to the Farm
and Chaos
modules have been removed, and their corresponding entries in the deployed_addresses.json
file have been updated to reflect the new contract address for BroMerge
.
File | Change Summary |
---|---|
README.md |
Updated script examples by removing --asset from certain commands; updated Bro Merge contract address from 0xe58C0537e99299Cd6B1fa8DccF8Ee378c0ec8678 to 0x5031A1c6B31b02605D8D61D115A1eFe436256E4B . |
contracts/core/merge/BroMerge.sol |
Added call to _pause() in the constructor to initialize the contract in a paused state. |
contracts/core/merge/Eater.sol |
Added Pausable functionality, updated _merge and receiveApproval functions with whenNotPaused modifier; added sweep and togglePause functions. |
ignition/deployments/chain-8453/artifacts/BroMergeModule#BroMerge.dbg.json |
Updated buildInfo field to new value. |
ignition/deployments/chain-8453/artifacts/BroMergeModule#BroMerge.json |
Renamed event Eaten to Merged , added RateChanged event, modified deposit function, added merge and mergeAll functions. |
ignition/deployments/chain-8453/artifacts/ChaosModule#CHAOS.dbg.json |
File removed. |
ignition/deployments/chain-8453/artifacts/ChaosModule#CHAOS.json |
File removed. |
ignition/deployments/chain-8453/artifacts/FarmModule#Farm.dbg.json |
File removed. |
ignition/deployments/chain-8453/artifacts/FarmModule#Farm.json |
File removed. |
ignition/deployments/chain-8453/artifacts/MigrationModule#Migration.dbg.json |
File removed. |
ignition/deployments/chain-8453/artifacts/MigrationModule#Migration.json |
File removed. |
ignition/deployments/chain-8453/deployed_addresses.json |
Updated BroMergeModule#BroMerge address and removed entries for FarmModule , MigrationModule , and ChaosModule . |
ignition/deployments/chain-8453/journal.jsonl |
Updated transaction details and network interactions for BroMergeModule , MigrationModule , and ChaosModule . |
ignition/modules/BroMerge.ts |
Added constant rate and call to setRate method of broMerge contract. |
README.md
file to include the new Bro Merge
contract address, directly related to the changes in this PR.README.md
file to include a new entry for the Bro Merge
contract address, aligning with the main PR's updates.SC
In the meadow, changes bloom,
TheBro Merge
finds its room.
With a pause, the contracts play,
New scripts guide the way.
Hopping through the code so bright,
A rabbit's joy in every byte! 🐇✨
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
@coderabbitai write a unit tests for the pause functions
[!TIP] For best results, initiate chat on the files or code changes.
@bitcoinbrisbane, here are the unit tests for the pause functions in the Eater
contract:
const { expect } = require('chai');
const { ethers } = require('hardhat');
describe('Eater Contract Pause Functionality', function () {
let Eater, eater, owner, addr1;
beforeEach(async function () {
[owner, addr1] = await ethers.getSigners();
// Deploy the Eater contract
const EaterFactory = await ethers.getContractFactory('Eater');
eater = await EaterFactory.deploy();
await eater.deployed();
});
it('should allow only the owner to toggle pause', async function () {
// Owner can toggle pause
await expect(eater.connect(owner).togglePause()).to.not.be.reverted;
// Contract should be paused
expect(await eater.paused()).to.equal(true);
// Non-owner cannot toggle pause
await expect(eater.connect(addr1).togglePause()).to.be.revertedWith('Ownable: caller is not the owner');
});
it('should prevent functions with whenNotPaused modifier when paused', async function () {
// Pause the contract
await eater.connect(owner).togglePause();
// Attempt to call receiveApproval while paused
await expect(
eater.connect(addr1).receiveApproval(
addr1.address,
ethers.utils.parseEther('100'),
ethers.constants.AddressZero,
'0x'
)
).to.be.revertedWith('Pausable: paused');
// Unpause the contract
await eater.connect(owner).togglePause();
// Should be able to call receiveApproval when unpaused
await expect(
eater.connect(addr1).receiveApproval(
addr1.address,
ethers.utils.parseEther('100'),
ethers.constants.AddressZero,
'0x'
)
).to.not.be.reverted;
});
it('should allow only the owner to call sweep', async function () {
// Non-owner attempts to call sweep
await expect(eater.connect(addr1).sweep()).to.be.revertedWith('Ownable: caller is not the owner');
// Owner calls sweep with no balance
await expect(eater.connect(owner).sweep()).to.be.revertedWith('No balance to sweep');
});
it('should transfer WEWE tokens to the owner when sweep is called', async function () {
// Deploy a mock WEWE token
const WEWEFactory = await ethers.getContractFactory('MockERC20');
const wewe = await WEWEFactory.deploy('WEWE Token', 'WEWE', 18);
await wewe.deployed();
// Mint tokens to the Eater contract
await wewe.mint(eater.address, ethers.utils.parseEther('1000'));
// Verify Eater contract's WEWE balance
expect(await wewe.balanceOf(eater.address)).to.equal(ethers.utils.parseEther('1000'));
// Owner calls sweep
await expect(eater.connect(owner).sweep()).to.not.be.reverted;
// Eater's WEWE balance should be zero
expect(await wewe.balanceOf(eater.address)).to.equal(0);
// Owner's WEWE balance should have increased
expect(await wewe.balanceOf(owner.address)).to.equal(ethers.utils.parseEther('1000'));
});
});
These tests cover the togglePause
and sweep
functions, ensuring that only the owner can pause/unpause the contract and call sweep
, and that the whenNotPaused
modifier works as expected.
Let me know if you need any further assistance.
Summary by CodeRabbit
New Features
Eater
contract, enhancing control for the owner.sweep
function in theEater
contract for managing token balances.BroMerge
contract, includingmerge
andRateChanged
.broMerge
contract during initialization.Bug Fixes
Bro Merge
in the README.Chores
CHAOS
,Farm
, andMigration
modules.