Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
The Gnosis Safe as multi-signature wallet requires all transactions to be signed by a predefined (sub)set of owners. In some use cases, it is desirable that only a single owner or a smaller subset allowed to make transfers up to a certain limit. These will be realized via modules within the [Gnosis Safe smart contracts](https://github.com/gnosis/safe-contracts/). A simple implementation of a daily limit module can be found [here](https://github.com/gnosis/safe-contracts/blob/development/contracts/modules/DailyLimitModule.sol).
Please write a general transfer limit module (or several thereof) for the Gnosis Safe.
- The solution is implemented as Gnosis Safe smart contract module in Solidity.
- A user can specify the time frame of the transfer limit, i.e. the point in time when it gets reset to 0
- The limit can reset daily or weekly on the beginning of the time frame or be “rolling”, i.e. always consider the exact last 24h or last 7 days.
- A user can specify how many owners need to confirm the transfer first. (Minimum: 1, maximum: global confirmation threshold of the Safe - 1)
- It is possible to set a transfer limit for ETH and each token separately
- It is possible to set a global transfer limit in ETH that considers also token transfers (ETH token is converted via a ticker.)
- Please use the [DutchX](https://dutchx.readthedocs.io/en/latest/) as price oracle
- The Safe has the feature to pay for transaction fees with funds from within the contract. The submitter of the transaction gets refunded as part of the transaction (cf. [smart contract](https://github.com/gnosis/safe-contracts/blob/development/contracts/GnosisSafe.sol#L66) and [docs](https://gnosis-safe.readthedocs.io/en/latest/contracts/meta_tx.html)) The transfer limit module needs to have the same feature.
- The user can specify an optional non-owner address that is also authorized to perform transactions up to the transfer limit.
- It is possible to set a global transfer limit in fiat currency.
- Please use the [DutchX](https://dutchx.readthedocs.io/en/latest/) as price oracle (1USD = 1DAI)
- All smart contracts have 100% test coverage with solidity-coverage
- All public methods have netspecs
- Linters are applied (Solium or Solhint)
- Readme with setup instructions and explanations for implementation details
- All code (Variables, function names, comments) is in English
Additional GNO can be tipped according to the level of technical implementation
Read our [documentation](https://gnosis-safe.readthedocs.io/en/latest/index.html) to get started.
Contact us via [Gitter](https://gitter.im/gnosis/Safe) in case you need support or have questions.