Use smaller numbers where appropriate

This commit is contained in:
Basti 2019-04-04 15:28:18 +02:00
parent 786f38cfb7
commit f1e2c65b9e
No known key found for this signature in database
GPG Key ID: BE4634D632D39B67
4 changed files with 35 additions and 34 deletions

View File

@ -4,14 +4,14 @@ import "@aragon/os/contracts/apps/AragonApp.sol";
import "@aragon/os/contracts/kernel/IKernel.sol"; import "@aragon/os/contracts/kernel/IKernel.sol";
interface IToken { interface IToken {
function mintFor(address contributorAccount, uint256 amount, uint256 contributionId) public; function mintFor(address contributorAccount, uint256 amount, uint32 contributionId) public;
} }
interface ContributorInterface { interface ContributorInterface {
function getContributorAddressById(uint256 contributorId) public view returns (address); function getContributorAddressById(uint32 contributorId) public view returns (address);
function getContributorIdByAddress(address contributorAccount) public view returns (uint256); function getContributorIdByAddress(address contributorAccount) public view returns (uint32);
// TODO Maybe use for validation // TODO Maybe use for validation
// function exists(uint256 contributorId) public view returns (bool); // function exists(uint32 contributorId) public view returns (bool);
} }
contract Contribution is AragonApp { contract Contribution is AragonApp {
@ -25,8 +25,8 @@ contract Contribution is AragonApp {
bytes32[4] public appIds; bytes32[4] public appIds;
struct ContributionData { struct ContributionData {
uint256 contributorId; uint32 contributorId;
uint256 amount; uint32 amount;
bool claimed; bool claimed;
bytes32 hashDigest; bytes32 hashDigest;
uint8 hashFunction; uint8 hashFunction;
@ -41,18 +41,18 @@ contract Contribution is AragonApp {
string internal symbol_; string internal symbol_;
// map contribution ID to contributor // map contribution ID to contributor
mapping(uint256 => uint256) public contributionOwner; mapping(uint32 => uint32) public contributionOwner;
// map contributor to contribution IDs // map contributor to contribution IDs
mapping(uint256 => uint256[]) public ownedContributions; mapping(uint32 => uint32[]) public ownedContributions;
mapping(uint256 => ContributionData) public contributions; mapping(uint32 => ContributionData) public contributions;
uint256 public contributionsCount; uint32 public contributionsCount;
uint256 public blocksToWait = 0; uint32 public blocksToWait = 0;
event ContributionAdded(uint256 id, uint256 indexed contributorId, uint256 amount); event ContributionAdded(uint32 id, uint32 indexed contributorId, uint32 amount);
event ContributionClaimed(uint256 id, uint256 indexed contributorId, uint256 amount); event ContributionClaimed(uint32 id, uint32 indexed contributorId, uint32 amount);
event ContributionVetoed(uint256 id, address vetoedByAccount); event ContributionVetoed(uint32 id, address vetoedByAccount);
function initialize(bytes32[4] _appIds) public onlyInit { function initialize(bytes32[4] _appIds) public onlyInit {
appIds = _appIds; appIds = _appIds;
@ -69,12 +69,12 @@ contract Contribution is AragonApp {
return k.getApp(KERNEL_APP_ADDR_NAMESPACE, appIds[uint8(Apps.Contributor)]); return k.getApp(KERNEL_APP_ADDR_NAMESPACE, appIds[uint8(Apps.Contributor)]);
} }
function getContributorIdByAddress(address contributorAccount) public view returns (uint256) { function getContributorIdByAddress(address contributorAccount) public view returns (uint32) {
address contributor = getContributorContract(); address contributor = getContributorContract();
return ContributorInterface(contributor).getContributorIdByAddress(contributorAccount); return ContributorInterface(contributor).getContributorIdByAddress(contributorAccount);
} }
function getContributorAddressById(uint256 contributorId) public view returns (uint256) { function getContributorAddressById(uint32 contributorId) public view returns (address) {
address contributor = getContributorContract(); address contributor = getContributorContract();
return ContributorInterface(contributor).getContributorAddressById(contributorId); return ContributorInterface(contributor).getContributorAddressById(contributorId);
} }
@ -94,22 +94,22 @@ contract Contribution is AragonApp {
// Balance is amount of ERC271 tokens, not amount of kredits // Balance is amount of ERC271 tokens, not amount of kredits
function balanceOf(address owner) public view returns (uint256) { function balanceOf(address owner) public view returns (uint256) {
require(owner != address(0)); require(owner != address(0));
uint256 contributorId = getContributorIdByAddress(owner); uint32 contributorId = getContributorIdByAddress(owner);
return ownedContributions[contributorId].length; return ownedContributions[contributorId].length;
} }
function ownerOf(uint256 contributionId) public view returns (address) { function ownerOf(uint32 contributionId) public view returns (address) {
require(exists(contributionId)); require(exists(contributionId));
uint256 contributorId = contributions[contributionId].contributorId; uint32 contributorId = contributions[contributionId].contributorId;
return getContributorAddressById(contributorId); return getContributorAddressById(contributorId);
} }
function tokenOfOwnerByIndex(address owner, uint256 index) public view returns (uint256) { function tokenOfOwnerByIndex(address owner, uint32 index) public view returns (uint32) {
uint256 contributorId = getContributorIdByAddress(owner); uint32 contributorId = getContributorIdByAddress(owner);
return ownedContributions[contributorId][index]; return ownedContributions[contributorId][index];
} }
function tokenMetadata(uint256 contributionId) public view returns (string) { function tokenMetadata(uint32 contributionId) public view returns (string) {
return contributions[contributionId].tokenMetadataURL; return contributions[contributionId].tokenMetadataURL;
} }
@ -117,7 +117,7 @@ contract Contribution is AragonApp {
// Custom functions // Custom functions
// //
function getContribution(uint256 contributionId) public view returns (uint256 id, uint256 contributorId, uint256 amount, bool claimed, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize, uint claimAfterBlock, bool exists, bool vetoed) { function getContribution(uint32 contributionId) public view returns (uint32 id, uint32 contributorId, uint32 amount, bool claimed, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize, uint claimAfterBlock, bool exists, bool vetoed) {
id = contributionId; id = contributionId;
ContributionData storage c = contributions[id]; ContributionData storage c = contributions[id];
return ( return (
@ -134,9 +134,9 @@ contract Contribution is AragonApp {
); );
} }
function add(uint256 amount, uint256 contributorId, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize) public isInitialized auth(ADD_CONTRIBUTION_ROLE) { function add(uint32 amount, uint32 contributorId, bytes32 hashDigest, uint8 hashFunction, uint8 hashSize) public isInitialized auth(ADD_CONTRIBUTION_ROLE) {
//require(canPerform(msg.sender, ADD_CONTRIBUTION_ROLE, new uint256[](0)), 'nope'); //require(canPerform(msg.sender, ADD_CONTRIBUTION_ROLE, new uint32[](0)), 'nope');
uint256 contributionId = contributionsCount + 1; uint32 contributionId = contributionsCount + 1;
ContributionData storage c = contributions[contributionId]; ContributionData storage c = contributions[contributionId];
c.exists = true; c.exists = true;
c.amount = amount; c.amount = amount;
@ -155,7 +155,7 @@ contract Contribution is AragonApp {
emit ContributionAdded(contributionId, contributorId, amount); emit ContributionAdded(contributionId, contributorId, amount);
} }
function veto(uint256 contributionId) public isInitialized auth(VETO_CONTRIBUTION_ROLE) { function veto(uint32 contributionId) public isInitialized auth(VETO_CONTRIBUTION_ROLE) {
ContributionData storage c = contributions[contributionId]; ContributionData storage c = contributions[contributionId];
require(c.exists, 'NOT_FOUND'); require(c.exists, 'NOT_FOUND');
require(!c.claimed, 'ALREADY_CLAIMED'); require(!c.claimed, 'ALREADY_CLAIMED');
@ -164,7 +164,7 @@ contract Contribution is AragonApp {
emit ContributionVetoed(contributionId, msg.sender); emit ContributionVetoed(contributionId, msg.sender);
} }
function claim(uint256 contributionId) public isInitialized { function claim(uint32 contributionId) public isInitialized {
ContributionData storage c = contributions[contributionId]; ContributionData storage c = contributions[contributionId];
require(c.exists, 'NOT_FOUND'); require(c.exists, 'NOT_FOUND');
require(!c.claimed, 'ALREADY_CLAIMED'); require(!c.claimed, 'ALREADY_CLAIMED');
@ -174,11 +174,12 @@ contract Contribution is AragonApp {
c.claimed = true; c.claimed = true;
address token = getTokenContract(); address token = getTokenContract();
address contributorAccount = getContributorAddressById(c.contributorId); address contributorAccount = getContributorAddressById(c.contributorId);
IToken(token).mintFor(contributorAccount, c.amount, contributionId); uint256 amount = uint256(c.amount);
IToken(token).mintFor(contributorAccount, amount, contributionId);
emit ContributionClaimed(contributionId, c.contributorId, c.amount); emit ContributionClaimed(contributionId, c.contributorId, c.amount);
} }
function exists(uint256 contributionId) view public returns (bool) { function exists(uint32 contributionId) view public returns (bool) {
return contributions[contributionId].exists; return contributions[contributionId].exists;
} }
} }

View File

@ -10,14 +10,14 @@ contract Token is ERC20Token, AragonApp {
enum Apps { Contribution, Contributor, Proposal, Token } enum Apps { Contribution, Contributor, Proposal, Token }
bytes32[4] public appIds; bytes32[4] public appIds;
event LogMint(address indexed recipient, uint256 amount, uint256 contributionId); event LogMint(address indexed recipient, uint256 amount, uint32 contributionId);
function initialize(bytes32[4] _appIds) public onlyInit { function initialize(bytes32[4] _appIds) public onlyInit {
appIds = _appIds; appIds = _appIds;
initialized(); initialized();
} }
function mintFor(address contributorAccount, uint256 amount, uint256 contributionId) public isInitialized auth(MINT_TOKEN_ROLE) { function mintFor(address contributorAccount, uint256 amount, uint32 contributionId) public isInitialized auth(MINT_TOKEN_ROLE) {
_mint(contributorAccount, amount); _mint(contributorAccount, amount);
emit LogMint(contributorAccount, amount, contributionId); emit LogMint(contributorAccount, amount, contributionId);
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long