Releases: firm-org/firm-protocol
Releases · firm-org/firm-protocol
v1.0
v1 is the first production-ready release of Firm protocol 🥳
We conducted an audit with security firm Coinspect which you can find here. This release was mostly about addressing findings found it the audit.
What's Changed
🆕 Semaphore
Semaphore is a new optional module that allows to balance power between Safe signers and Voting.
🆕 Open source license
- #158: Firm protocol is now licensed under the open source GPL-3.0 license (except for interfaces which are MIT)
Captable
- #163: Vestings can no longer be revoked retroactively (but still allow future effective dates)
- #169: Controllers can now only be set in accounts with a positive balance
- #179: Added limits to avoid overflows on vote counts
- #186: Removed ':' for token names
Misc
- #182: Ensure all role admin roles exist in Roles
- #186: Check actual balance delta for debit amount to handle fee on transfer tokens
- #170: Use msg.sender from ERC2771Context across the protocol to allow Safe to use FirmRelayer for batching
- #180: Increase nonce even if execution fails in FirmRelayer to prevent replays
Testing and development
- #160, #187: Added Captable and Semaphore state and actions to seed state script
- #159: Added tests for VestingController
- #161: Reorganized flag helpers
Deployment
- #188: v1 deployed to Ethereum mainnet, Polygon mainnet and Ethereum Goerli
Deployment addresses
Network | FirmFactory | UpgradeableModuleProxyFactory |
---|---|---|
Ethereum mainnet | 0xFbeC16EECD4558297FB3deA9934A162Ef76b14bd |
0x8EBa12de23C24D27469a748904CA6ba16aff6803 |
Polygon mainnet | 0xaC722c66312fC581Bc57Ee4141871Fe0bf22fA08 |
0x6232B169db8e0f5A1FD1eEC3B802aa3FFC430bB4 |
Ethereum Goerli | 0x1Ce5621D386B2801f5600F1dBe29522805b8AC11 |
0x159200D27301776D5412D52Ed2605b7c5371AcFe |
Historic deployments: https://github.com/firm-org/firm-protocol/blob/master/deployments/factory.json
Full Changelog: v0.5.0...v1.0.0
v0.5
v0.5 is the feature-complete pre-audit release version of Firm protocol v1
What's Changed
🆕 Voting
- #129: 🆕 Voting module for Captable based on OpenZeppelin's Governor
- #143, #151: Docs, polish and nitpicks
Firm Factory
- #146: Rebuilt for production, now allows configuration options when creating firms (deprecated TestinprodFactory)
- #156: New state seeder using new factory
General polish and docs
Meta
Full Changelog: v0.4.0...v0.5.0
Testinprod: v0.4
⛔️ Breaking release. Non-compatible storage layout and ABI (last intended one before v0.1)
What's Changed
🆕 Captable
Budget
- #114: 🆕 Non-recurrent allowances (one-time budgets)
- #102: Disallow inheriting amount in non-inherited recurrency allowances
- #106: Optimize TimeShiftLib for most common cases
- #123, #122: Optimizations, polish and nitpicks
Roles
- #107, #109: 🆕 Safe owner dynamic role
- #95: Role admins are always considered to have a role that they can admin
- #109, #115: Optimizations, polish and nitpicks
General
- #113: RolesAuth uses unstructured storage for roles state var (storage layout breaking
⚠️ ) - #105: Drop Zodiac support and use minimal Safe interface
- #112: Dependency cleanup
- #124: Overall increase in coverage (almost 100%)
- #126: Formatting
Full Changelog: v0.3.0...v0.4.0
Testinprod: v0.3.0
⛔️ Breaking release. Non-compatible storage layout and ABI.
What's changed
Budget
🆕 Budget modules
Factory
- #80: Module registry in UpgradeableModuleProxy
Test environment
Full Changelog: v0.2.0...v0.3.0
Testinprod: v0.2.0
Testinprod: v0.1.0
Testinprod: deploy to mainnet (#58) * Testinprod: deploy to mainnet * Deployments: track deployment block number