Skip to content

Latest commit

 

History

History
332 lines (202 loc) · 19.5 KB

CHANGELOG.md

File metadata and controls

332 lines (202 loc) · 19.5 KB

rankify-contracts

0.10.2

Patch Changes

0.10.1

Patch Changes

0.10.0

Minor Changes

  • #82 c53987d3423287f11af3e41e5f83fe1a13fa9f48 Thanks @peersky! - # Changeset for branch 64-principal-game-cost-time-parameters

    Summary

    This branch introduces significant changes to game cost and time parameters, payment handling, and rank token mechanics, along with several code improvements and bug fixes.

    Changes

    Core Game Mechanics

    • LibRankify.sol:
      • Introduced principal game cost calculation based on game time
      • Added minimum game time validation and constraints
      • Implemented 90/10 payment split: 90% burned, 10% to DAO
      • Removed payment refunds and game cancellation payments
      • Simplified rank token rewards to only top player
      • Added validation for turn count and game time parameters

    Libraries

    • LibTBG.sol:
      • Added startedAt timestamp for minimum game time tracking
      • Renamed getGameSettings() to getSettings(uint256 gameId) for better clarity
      • Updated storage access patterns for overtime functionality
      • Simplified tie detection logic to only consider top 2 players
      • Fixed storage slot access patterns

    Tokens

    • DistributableGovernanceERC20.sol:
      • Updated Solidity version from 0.8.20 to 0.8.28
    • RankToken.sol:
      • Updated Solidity version from ^0.8.20 to =0.8.28
      • Added IERC165 import
      • Implemented burn function with ERC7746C middleware

    Vendor

    • Renamed DiamondCloneable.sol to DiamondClonable.sol:
      • Fixed typo in error name from 'fucntionDoesNotExist' to 'functionDoesNotExist'
    • DiamondLoupeFacet.sol:
      • Updated Solidity version to ^0.8.28
    • LibDiamond.sol:
      • Added DuplicateSignature error definition

    Removed Files

    • Deleted test/DNSFacet.ts
    • Removed multipass sources:
      • src/facets/DNSFacet.sol
      • src/initializers/MultipassInit.sol
      • src/libraries/LibMultipass.sol
      • src/interfaces/IMultipass.sol

    Mocks

    • RankifyInstanceEventMock.sol:
      • Fixed typo in parameter name from 'proposerIndicies' to 'proposerIndices'

    Breaking Changes

    • Storage layout changes in LibTBG require careful migration
    • Payment handling completely reworked:
      • Removed refunds functionality
      • Implemented burn mechanism for 90% of payments
      • Added DAO benefit for 10% of payments
    • Rank token rewards simplified to only top player
    • Solidity version updates may require dependency updates
    • Renamed Diamond contract file requires build script updates
    • Removed all multipass functionality

    Migration Guide

    1. Update build scripts to reference new DiamondClonable filename
    2. Verify storage layout compatibility after LibTBG changes
    3. Update dependencies to support Solidity 0.8.28
    4. Remove any references to multipass functionality
    5. Update payment handling code to work with new burn mechanism
    6. Adjust rank token distribution logic for single winner
    7. Ensure game time parameters meet new constraints
  • #57 5360ba4fbc5029dc572b78fb330a69a6df903826 Thanks @peersky! - eslint major verison change

  • #50 80e2198289cf6fafae910d5a4f1d3442afabbbfb Thanks @peersky! - Migration to v5

  • #48 d449bb2174c3959447d717bb0d0d64f617467a45 Thanks @peersky! - changed documentation generation system to be more readable and per file separated

  • #86 5a4493123798682b7cbd3eeddf277dc11cd023da Thanks @peersky! - added playbooks for adding distribution and creating subject, removed old multipass playbook

  • #61 db186f717e1babebf6c1653afb7862d2120e545e Thanks @peersky! - Updated readme

  • #53 999e9339e318723137ddc2f9d640c54f157e67b9 Thanks @peersky! - added playbook functionality to execute state emulation

  • #66 40e4f88c1b27d2d1e3c4f915337779f8cfb0ed35 Thanks @peersky! - moved eds as dependency

  • #50 80e2198289cf6fafae910d5a4f1d3442afabbbfb Thanks @peersky! - Migrated to oz contracts v5

  • #55 73ea44f3e83cd3eab3d8f9db1a605606cfcfed21 Thanks @peersky! - generic diamond factory implementation via Ethereum Distribution System

  • #62 0c4f23cca04fa78564877cbb971ade0a96603314 Thanks @peersky! - ## Addition of Ethereum Distribution System (EDS)

    • Feature: Integrated the Ethereum Distribution System (EDS) for distributing Rankify contracts.
    • Description: Rankify contracts are now distributed via the Ethereum Distribution System, enhancing the efficiency and security of the distribution process.

    Redesign of Contracts

    • Feature: Redesigned contracts to work seamlessly as part of the Ethereum Distribution System.
    • Description: The contracts have been restructured and optimized to ensure compatibility and smooth operation within the EDS framework. This redesign includes:
      • Improved contract architecture for better integration with EDS.
      • Enhanced security measures to protect against potential vulnerabilities.
      • Optimized performance to handle the distribution process more efficiently.

    Impact

    • Users:
      • Can create new subjects that are called Meritocratic Autonomous Organizations (MAOs).
      • Will benefit from a more secure and efficient distribution process.
    • Developers: Developers will need to familiarize themselves with the new contract architecture and EDS integration.
    • Operations: The distribution process will be streamlined, reducing the potential for errors and improving overall system reliability.

    Next Steps

    • Documentation: Update the documentation to include details on the new EDS integration and contract redesign.
    • Testing: Conduct thorough testing to ensure the new system operates as expected.
    • Deployment: Plan and execute the deployment of the updated contracts and distribution system.
  • #84 26bcabd15ced84405dc20009b89edd572bbf0128 Thanks @peersky! - # Changeset Summary

    Overview

    Added ability to end turns if there are inactive players without waiting for their move.

    Changes

    ArguableVotingTournament.sol

    • Increased the size of RankifyInstanceMainFacetSelectors from 27 to 28.
    • Added a new function selector RankifyInstanceMainFacet.isActive.selector.

    RankifyInstanceMainFacet.sol

    • Added a new function isActive which takes a gameId and a player address and returns a boolean indicating if the game is active for the player.

    LibQuadraticVoting.sol

    • Changed the parameter name from voterVoted to isActive in the computeScoresByVPIndex function.
    • Moved the initialization of notVotedGivesEveryone to use q.maxQuadraticPoints.
    • Updated the condition to check !isActive[vi] instead of !voterVoted[vi].

    LibTurnBasedGame.sol

    • Added a new isActive mapping to track active players.
    • Introduced numActivePlayers to count the number of active players.
    • Updated the resetGame function to initialize isActive to false for all players and reset numActivePlayers.
    • Modified addPlayer to initialize isActive to false for new participants.
    • Enhanced canEndTurnEarly to check if all active players have made their move before allowing an early turn end.
    • Removed out the _clearCurrentMoves function
    • Updated the startGame function to set all players as active initially.
    • Modified recordMove to mark a player as active when they make a move and increment numActivePlayers.

    Summary of Changes

    • Functionality Enhancements: Added a new isActive function in RankifyInstanceMainFacet.sol to check the active status of a game for a specific player.
    • Refactoring: Renamed parameters and adjusted logic in LibQuadraticVoting.sol to align with the new active status checking mechanism.
    • Code Organization: Updated selectors in ArguableVotingTournament.sol to accommodate the new functionality.
    • Game Management Enhancements: Introduced active player tracking and management in LibTurnBasedGame.sol, enhancing game state management and turn-based logic.

    These changes introduce new functionality to check the active status of a game, which likely impacts how games are managed and interacted with in your application.

  • #81 3cfd71fc9c15c11d6a357aa7ec42607d4cde8387 Thanks @peersky! - renamed distributor contract to DAO distributor and used TokenizedDistributor instead of casual one

  • #60 55fc1a6ed9f1b7fc4520c3ec6fab5c7f7ae7a3b5 Thanks @theKosmoss! - Created new playbook scenario 'gameCreated' and some general playbooks refactors

  • #31 3da696b43f43af8b3130bf7aa2d93575b656d66f Thanks @peersky! - Introduced installer interfaces

  • #87 27e1c1af2d139479a5e4d1db26ad076ffdb237db Thanks @peersky! - fixed createGame playbook

  • #91 df675d896269218e2d5a6742eb6ed3423f8789b4 Thanks @peersky! - - added deployment artifacts for 0.10.0 release

    • added getGameState getter to rankify main facet
    • added helper functions in scripts
    • implemented named distributions from newest EDS release
    • added more documentation strings

Patch Changes

0.9.4

Patch Changes

  • e79d0bf Thanks @peersky! - code cleanup, libquadratic improvements, bug fixes

0.9.3

Patch Changes

0.9.2

Patch Changes

  • 4239be3 Thanks @peersky! - added view method for player moves and player did voted

0.9.1

Patch Changes

0.9.0

Minor Changes

0.8.0

Minor Changes

0.7.2

Patch Changes

  • 835c821 Thanks @peersky! - Use local multipass library to avoid circular deps

0.7.1

Patch Changes

0.7.0

Minor Changes

0.6.0

Minor Changes

0.5.0

Minor Changes

  • 5d85c92 Thanks @peersky! - Re-deploy contracts and update token metadata to correspond to music challenge of first game

0.4.1

Patch Changes

0.4.0

Minor Changes

0.3.2

Patch Changes

0.3.1

Patch Changes

0.3.0

Minor Changes

0.2.3

Patch Changes