No funded issue found.
Check out the Issue Explorer
Be the OSS Funding you wish to see in the world.
Looking to fund some work? You can submit a new Funded Issue here .
Time left
Opened
Issue Type
Workers Auto Approve
Project Type
Time Commitment
Experience Level
Permissions
Accepted
Reserved For
Module Development Task: Automated Blacklisting
polymathnetwork
JavaScript, Solidity, Shell
# Module Development Task
# Automated Blacklisting
Module Type | Bounty | Completion deadline
-- | -- | --
Transfer Manager | Approx. 5, 000 POLY | 21 days to complete once task is confirmed by external developer(s).
# Short Summary
This module will allow approved staff to create and establish an automated blacklist to prevent Insiders from selling thus de-risking price swings during time sensitive cases like earning calls.
# Bounty Requirements
1. Module specs are fulfilled
2. Module is implemented using appropriate module interface
3. Module is tested with >95% branch coverage
4. Module is delivered before deadline
5. Module does not present any bugs.
6. 21 days to complete once task work has begun.
**IMPORTANT:** Please work from the development-1.5.0 branch instead of master.
# Suggested Implementation
```
Struct BlacklistDetails {
uint256 startDate;
uint256 endDate;
uint256 repeatPeriodInDays;
}
/// use to hold the different blacklist corresponds to name of blacklist type
mapping(bytes32 => BlacklistDetails) blacklists;
/// use to hold the blackListed address corresponds to the blacklist type
mapping(address => bytes32) inverstorToBlacklist;
/// use to get list of the addresses for a particular blacklist
mapping(bytes32 => address[]) blacklistToAddress;
// If Address is blackListed and its blacklist details lie within the current time then the transfer doesnβt happen should return INVALID
function verifyTransfer(address _from, address _to, uint256 /* _amount*/, bool /* _isTransfer */) public returns(Result) {
if (investorToBlackList[_from] != bytes32(0)) {
/// Add the logic for repeat periods
if (blacklists[investorToBlackList[_from]].endDate >= now && blacklists[investorToBlackList[_from]].startDate <= now) {
return Result.INVALID;
}
}
return Result.NA;
}
function addBlackListType(uint256 _startDate, uint256 _endDate, bytes32 _name, uint256 _repeatPeriodInDays);
function addInvestorToBlackList(address _investor, bytes32 _blackListName);
```
# Module Details Spec (Wireframe)
**Wireframe Link:** https://www.lucidchart.com/invitations/accept/c544a325-e74d-4e54-a360-71805a9f10ce
Setup your profile
Tell us a little about you:
Skills
No results found for [[search]] .
Type to search skills..
Bio Required
[[totalcharacter]] / 240
Are you currently looking for work?
[[ option.string ]]
Next
Setup your profile
Our tools are based on the principles of earn (π°), learn (π), and meet (π¬).
Select the ones you are interested in. You can change it later in your settings.
I'm also an organization manager looking for a great community.
Back
Next
Save
Enable your organization profile
Gitcoin products can help grow community around your brand. Create your tribe, events, and incentivize your community with bounties. Announce new and upcoming events using townsquare. Find top-quality hackers and fund them to work with you on a grant.
These are the organizations you own. If you don't see your organization here please be sure that information is public on your GitHub profile. Gitcoin will sync this information for you.
Select the products you are interested in:
Out of the box you will receive Tribes Lite for your organization. Please provide us with a contact email:
Email
Back
Save