Enzymefinance Protocol Versions Save

Enzyme Protocol Implementation

v1.1.2

4 years ago

Fixed

  • double withdraw in UniswapAdapter

v1.1.1

4 years ago

Added

  • setRegistry function on KyberPriceFeed

v1.1.0

4 years ago

Added

  • Uniswap adapter
  • 0xV3 adapter
  • interfaces to third-party contracts
  • allow anyone to continue setup of a fund

Changed

  • upgrade all contracts to solidity 0.6.1
  • rename all interfaces to IInterfaceName
  • trading function parameters (added bytes value and 2 addresses)
  • move events from interfaces to contracts themselves
  • use interfaces to third-party contracts instead of the contracts themselves
  • do not track default investment assets as owned assets
  • allow manager to add exchanges after fund setup
  • allow anyone to cancel an expired investment request on behalf of another
  • for 0xV3 fee assets, check that they are registered before trading
  • use ask-side instead of bid-side to calculate spread in KyberPriceFeed
  • move contracts only used in tests to tests directory
  • improve revert messages for policy failures
  • get pricefeed from registry dynamically and at fund runtime
  • account for revoking approval from cancelled non-custodial orders

Fixed

  • prevent manager from triggering fee rewarding when redeeming their shares
  • bug in calculating maxConcentration on makeOrder
  • bug yielding price of 0 for WETH
  • bug yielding incorrect price in cross-market condition
  • default investment assets are not tracked as owned assets unless actually owned
  • bug allowing orders unrelated to the intended order to be cancelled
  • bug returning makerAsset and makerFeeAsset to vault when still in use
  • bug allowing investor to avoid paying performance fees
  • bug preventing partially-filled orders from being cancelled
  • bug allowing fund manager to keep funds in Trading contract

Removed

  • third-party contracts
  • FundRanking.sol
  • CanonicalPriceFeed.sol
  • CanonicalRegistrar.sol
  • OperatorStaking.sol
  • SimplePriceFeed.sol
  • StakingPriceFeed.sol
  • UpdatableFeed.i.sol

v1.0.1

5 years ago

Melon Protocol v1.0 ZAHREDDINO

THE MELON UNIVERSE IS A STRANGE AND DANGEROUS PLACE.

Disclaimer

IMPORTANT NOTE: By downloading the Melon Manager Interface you acknowledge having carefully read and understood the full version of this disclaimer.

YOUR USE OF THE MELON PROTOCOL AND/OR THE SOFTWARE MAY BE SUBJECT TO THE FINANCIAL LAWS AND REGULATIONS OF VARIOUS JURISDICTIONS. PRIOR TO USING THE MELON PROTOCOL, SEEK LEGAL ASSISTANCE TO ASSURE THAT YOU MAY USE THE SOFTWARE IN COMPLIANCE WITH APPLICABLE LAW. FAILURE TO DO SO MAY SUBJECT YOU TO CRIMINAL AS WELL AS CIVIL PENALTIES IN ONE OR MORE JURISDICTIONS. BY USING THIS SOFTWARE, YOU CONFIRM THAT YOU HAVE SOUGHT THE ADVICE OF COMPETENT COUNSEL OR ARE OTHERWISE FAMILIAR WITH THE APPLICABLE LAWS AND REGULATIONS PERTAINING TO YOUR INTENDED USE OF THE MELON PROTOCOL. BY USING THIS SOFTWARE, YOU UNDERSTAND, ACKNOWLEDGE AND ACCEPT THAT THE MELON PROTOCOL AND/OR THE UNDERLYING SOFTWARE ARE PROVIDED “AS IS” AND WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND EITHER EXPRESSED OR IMPLIED. ANY USE OF THIS OPEN SOURCE SOFTWARE RELEASED UNDER THE GNU GENERAL PUBLIC LICENSE VERSION 3 (GPL 3) IS DONE AT YOUR OWN RISK TO THE FULLEST EXTENT PERMISSIBLE PURSUANT TO APPLICABLE LAW ANY AND ALL LIABILITY AS WELL AS ALL WARRANTIES, INCLUDING ANY FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE MELON PROTOCOL AND/OR THE UNDERLYING SOFTWARE AND THE USE THEREOF ARE DISCLAIMED.

THIS IS EXPERIMENTAL SOFTWARE. USE AT YOUR OWN RISK.

Melon Protocol Features

Documentation available at: https://www.docs.melonport.com/

  • Set up a technology regulated and operated fund (TROF) on the Ethereum main net
  • Define a ruleset which will govern the behavior of your fund: fee structure, risk engineering profile, authorized subscription assets, investor whitelist etc.
  • Choose the decentralized exchanges you want to be able to trade on
  • Trade against the Melon Engine
  • Invest in your own fund, or in other existing Melon funds
  • Redeem shares you own in a Melon fund
  • Track and observe your fund's metrics (NAV, GAV, share price all computed on-chain)
  • Calculate and collect on-chain management and performance fees
  • Permanently close your fund

v0.6.4

6 years ago

Added

  • utility modules for functions/cases used throughout tests and deployment
  • several new tokens to pricefeed
  • creation time tracking to FundRanking contract
  • compliance module only permitting manager to invest

Changed

  • use updateId again to prevent subscribe/redeem arbitrage
  • implement Asset as ERC223
  • use new addresses for re-deployed ERC223 token contracts
  • interface contracts are now actually solidity interface-type contracts
  • slightly modify SimpleMarket to implement ERC223ReceivingContract

Fixed

  • prevent fund receiving tokens from non-exchange address (prevent inflation attack)

Removed

  • over-permissive recoverToken function
  • factored out boilerplate code from tests and deployment

v0.7.0

6 years ago

Added

  • Contracts:
    • RestrictedShares.sol
    • SimpleAdapterWithApprove.sol
    • SimpleMarketWithApprove.sol
    • MatchingMarket.sol (from OasisDex; mirroring live deployment)
  • Tests:
    • secondaryTrading.js tests
    • simpleMarketWithApprove.js tests
  • export some js modules for use in other projects
  • concatenation script for etherscan verification

Changed

  • change max allowed assets to 4
  • removed ERC223 component from kovan and development network test assets we use
  • made tests more modular (using utils libraries)
  • introduce code size limit to our development network as well

Fixed

  • bug preventing emergencyRedeem for multiple assets
  • bug in FundRanking preventing array from growing

Updated

  • terms and conditions hash
  • test files, to be compatible with changes to contracts
  • information files (tokenInfo.js and exchangeInfo.js)

Removed

  • fund name logic in Version.sol

v0.6.2-deploy.14

6 years ago

Added

  • return inception date in ranking contract
  • keep track of updateId in pricefeed
  • check for two updates when executing a request

Removed

  • Fund.getStake()
  • un-implemented interface functions
  • duplicate ranking contract

Changed

  • use the same exchange on Kovan for each deployment, to maintain liquidity
  • simplify return syntax in boolean functions

Fixed

  • Bug preventing state storage in Fund.cancelOrder
  • Bug in GAV calculation for assets without 18 decimal places
  • Bug in sharePrice calculation after taking orders

Updated

  • README.md
  • CONTRIBUTING.md style and contribution guide

v0.6.0

6 years ago

Added

  • enforce eslint rules at build time
  • enforce solium rules at build time
  • test for module registrar
  • compatibility with multiple exchange adapters
  • account for funds held on multiple exchanges
  • retries for network requests when updating pricefeed
  • centralized exchange adapter
  • test to redeem with malicious asset in fund
  • sanity checks for cryptocompare prices
  • native currency and reference asset as two ways to invest/redeem (plus tests)
  • tokenFallback method to redeem (plus tests)
  • NativeAssetInterface contract

Changed

  • enable some ava testfiles that were ignored
  • restructure a bit to use the more modular files in utils/
  • update solium linter rules to comply with our style
  • make devchain script its own file, and run things more syncronously
  • factor out some functions in tests
  • change governance tests to unit tests
  • run tests in parallel where possible
  • deploy contracts for each testfiles to make them independent
  • default to reference asset rather than Melon asset in Fund
  • use AssetInterface and NativeAssetInterface in Fund
  • allow manager to shut down execution of subscription and redemption

Fixed

  • linter errors in all js files
  • linter errors in all solidity files
  • add test for potential bug in calculations (#274)
  • fix sometimes-failing build when db does not exist
  • fix some missing or incorrect docstrings
  • rename .abi files before publishing (#293)

Updated

  • update .eslintrc rules
  • update .soliumrc.json rules
  • travis-CI build script to make things more synchronous

v0.5.4

6 years ago

Added

  • Ava linter rules
  • Ava test script
  • cap to number of managed assets
  • raise error if request type is invalid (Fund.sol)
  • limitation on ownership of Fund namespace
  • tests/integration for integration/walk though tests
  • tests/mocks (for mocks during testing)
  • tests/fixtures (e.g. data from cryptocompare)
  • limitation of one fund per ethereum address, for simpler migration process of shutting down and creating fund
  • Shares.sol (Asset.sol with information and helper functions for shares, as well as ability to create and annihilate shares)
  • ds-tests for RMMakeOrders and moduleRegistrar
  • Shares as erc223 asset
  • zero-config premined asset

Removed

  • toggle type functions
  • dead (unused) code in cancelOrder
  • allow ownership changing (Owned.sol)
  • unnecessary functions used as pre-conditions
  • check asset is registered in pricefeed before allowing updates
  • Sphere.sol
  • EtherToken.sol
  • safeMath.sol, rewards.sol libraries
  • rewards deployment and linking

Changed

  • Use Ava as test runner instead of Jasmine
  • move list of managed assets to Fund rather than DataFeed
  • Separated utils from tests
  • Governance tests to Ava
  • integration tests moved to their own directory
  • use ds-math instead of safeMath
  • replace EtherToken with ds-weth
  • allocate sufficient storage for IPFS hash
  • use ds-math (safe math) contract in rewards
  • pay incentive after redeeming shares
  • rename DataFeed.sol to PriceFeed.sol
  • move deployment configuration, information and script to utils/
  • rewritten parts of PriceFeed.sol; adapted (bool isRecent, uint price, uint decimal) return format
  • function visibility from constant to view
  • Shares and fund precision is always 18
  • Move reward calculation into fund
  • Rewrite calcUnclaimedRewards()

Fixed

  • bug caused by not zeroing openMakeOrderId
  • stop constant methods from trying to modify storage
  • update nameExists mapping when name changed (ModuleRegistrar.sol)
  • bug leading to accounting error
  • bug allowing unlimited votes in ModuleRegistrar
  • error using dynamic key in ModuleRegistrar mapping

v0.5.0

6 years ago

Added

  • high water mark calculation inside Fund (accounting)
  • Parity dev chain for local deployment and testing
  • automatic documentation generation for Solidity contracts using Doxity
  • simple risk management implementation using market price deviation (RMMakeOrders.sol)
  • governance implementation (proposal, approval and triggering actions for Version creation and shutdown)
  • multisig functionality to Governance.sol
  • elliptic curve signing of Terms and Conditions to create a Fund
  • external bulk parsing contract to get Fund data for off-chain ranking (Ranking.sol)
  • ModuleRegistrar.sol to keep track of registered modules on-chain
  • Dappsys libraries (ds-group, ds-token, and their dependencies)
  • live deployment configuration

Changed

  • switch to Parity.js for deployment, contract interaction, and testing
  • using more permissive ParticipationOpen instead of regular Participation module
  • enforce rule that Fund names within a Version must be unique (using fund name mapping)
  • simplify AssetRegistrar

Updated

  • enforcing a newer Solidity compiler version (^0.4.17)
  • improved terminology for prices inside DataFeed.sol
  • NPM scripts

Removed

  • Staked.sol contract
  • bulk data reading functions inside AssetRegistrar.sol
  • BackupOwned.sol, Permissioned.sol, ExternalAdapter.sol, Fundhistory.sol
  • testrpc and web3 dependencies

Fixed

  • gas price checks in jasmine tests
  • bugs in jasmine tests
  • bug in risk management / simplemarket tests