Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 1 addition & 20 deletions src/ShellToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,6 @@ contract ShellToken is ERC20, Ownable {
uint256 amount;
}

struct Multiplier {
address activity;
uint256 multiplier;
}

mapping(address => bool) public isAdmin;

// address of activity -> multiplier
Expand All @@ -24,7 +19,7 @@ contract ShellToken is ERC20, Ownable {

mapping(address => bool) public allowedToTransfer;

constructor() ERC20("ShellToken", "SHELL") Ownable(msg.sender) {}
constructor() ERC20("Nerite Shell Points", "SHELL") Ownable(msg.sender) {}

function mintShells(address to, uint256 amount) public {
require(isAdmin[msg.sender], "Not an admin");
Expand Down Expand Up @@ -58,16 +53,6 @@ contract ShellToken is ERC20, Ownable {
return super.transferFrom(from, to, amount);
}


function getMultipliers(address[] calldata contracts) external view returns (Multiplier[] memory) {
Multiplier[] memory multipliers = new Multiplier[](contracts.length);
for (uint i; i < contracts.length; ) {
multipliers[i] = Multiplier(contracts[i], multiplier[contracts[i]]);
unchecked { ++i; }
}
return multipliers;
}

//////////////////////////
// ONLY OWNER FUNCTIONS //
//////////////////////////
Expand All @@ -79,9 +64,5 @@ contract ShellToken is ERC20, Ownable {
function updateIsAdmin(address user, bool _isAdmin) public onlyOwner {
isAdmin[user] = _isAdmin;
}

function setMultiplier(address activity, uint perc) public onlyOwner {
multiplier[activity] = perc;
}
}

45 changes: 0 additions & 45 deletions test/ShellToken.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -195,49 +195,4 @@ contract ShellTokenTest is Test {
assertEq(shellToken.balanceOf(user), 0);
assertEq(shellToken.balanceOf(to), 100);
}

function test_setMultiplier() public {
address activity = makeAddr("activity");

vm.startPrank(owner);
shellToken.setMultiplier(activity, 100);
vm.stopPrank();
}

function test_revert_setMultiplier_notOwner() public {
address activity = makeAddr("activity");
address notOwner = makeAddr("notOwner");

vm.startPrank(notOwner);
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, notOwner));
shellToken.setMultiplier(activity, 100);
vm.stopPrank();

vm.startPrank(admin);
vm.expectRevert(abi.encodeWithSelector(Ownable.OwnableUnauthorizedAccount.selector, admin));
shellToken.setMultiplier(activity, 100);
vm.stopPrank();
}

function test_getMultipliers() public {
address[] memory contracts = new address[](3);
contracts[0] = makeAddr("activity1");
contracts[1] = makeAddr("activity2");
contracts[2] = makeAddr("activity3");

vm.startPrank(owner);
for (uint i; i < contracts.length; ) {
shellToken.setMultiplier(contracts[i], 100 + i);
unchecked { ++i; }
}
vm.stopPrank();

ShellToken.Multiplier[] memory multipliers = shellToken.getMultipliers(contracts);
assertEq(multipliers.length, contracts.length);
for (uint i; i < multipliers.length; ) {
assertEq(multipliers[i].activity, contracts[i]);
assertEq(multipliers[i].multiplier, 100 + i);
unchecked { ++i; }
}
}
}
Loading