Skip to content

Commit

Permalink
Merge pull request #144 from kyledewy/master
Browse files Browse the repository at this point in the history
Refactored broker withdraw into an ether withdraw and token withdraw
  • Loading branch information
0xdewy committed Oct 11, 2018
2 parents 760e03c + fe06f77 commit 1622f4c
Show file tree
Hide file tree
Showing 16 changed files with 304 additions and 118 deletions.
12 changes: 12 additions & 0 deletions accounts.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[
"0x3325f7195d3479b4e14589dee6a717a28c38834e",
"0x4f617757b8983394b6f417965a722e1c6a106db7",
"0x1dcc059da57518a96610a3573439605319f1c52d",
"0x55f509e331204294e7572ebfa40fe634abfeac79",
"0x04d077e9b054fa56ece10f702e640d0a978cc0e2",
"0xdbdbae2d289fae784e2330bfdeb20db97fef3fd0",
"0x1c669a342b8135f0954fe06890469535f27d6322",
"0xbc3c3506851172bfdba81f4a658da91f5342a6aa",
"0x77ab32f82e4774293dfe44f547c226a022242bbd",
"0x2d8d926565e6fc90e1ca2a1d53e6a59d02997dd6"
]
18 changes: 18 additions & 0 deletions addresses.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"MyBit": "0x09d674df341bf9d646cbeea6cd0e52ecc5a521af",
"ERC20Burner": "0x3f516edccb48aba6ecb3ea7363153b32ea6ddeb7",
"Database": "0x604dfb2cd1756448974ba0df779c67b50181959d",
"ContractManager": "0xfdec573f2891bc565739553ec99daa5c8083fb60",
"API": "0xf3404a9df3e253df0a49ceefb4d5f6c29bf80874",
"SingleOwned": "0x7ca92a5fb0dff6880dfab37d1ebe5b479edbf16f",
"Pausible": "0x82ee2c12990c15760405900a6ff10dc3beec00ab",
"AccessHierarchy": "0x95d4adf5e39aefadadca90ec708d6aec7d05baae",
"PlatformFunds": "0xe1338c43bc20233249084d8d07f3c2396da31abb",
"Operators": "0x6a3cbaa94e47afade11d161e07bc6139d98071c8",
"BrokerEscrow": "0x49991e600b65ed194cb6e7998aa13acbbec47309",
"CrowdsaleETH": "0x91cdeadabe2bf959e12744cfdbd282dccbe8e8c6",
"CrowdsaleGeneratorETH": "0x677b376fb2e54de1928c8f2590afc4cd84a57796",
"CrowdsaleERC20": "0x7255afecda4c7c46059e0f6e08b801526a2bf5f1",
"CrowdsaleGeneratorERC20": "0x315ea8d405af627a8c3276d90099ea0b33b88e29",
"AssetExchange": "0x621b9a2c4fe3a90b044561bed2cf4ad223bfe77d"
}
1 change: 0 additions & 1 deletion contracts/crowdsale/CrowdsaleETH.sol
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,6 @@ contract CrowdsaleETH {
// @param the ID of this asset.
function finalizeCrowdsale(bytes32 _assetID)
internal
whenNotPaused
returns (bool) {
database.setBool(keccak256(abi.encodePacked("crowdsaleFinalized", _assetID)), true);
database.deleteUint(keccak256(abi.encodePacked("amountToRaise", _assetID)));
Expand Down
1 change: 0 additions & 1 deletion contracts/crowdsale/CrowdsaleGeneratorETH.sol
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ contract CrowdsaleGeneratorETH {
database.setUint(keccak256(abi.encodePacked("fundingDeadline", assetID)), now.add(_fundingLength));
uint brokerFee = _amountToRaise.mul(uint(100).mul(scalingFactor).div(uint(100).sub(_brokerPerc)).sub(scalingFactor)).div(scalingFactor);
database.setUint(keccak256(abi.encodePacked("amountToRaise", assetID)), _amountToRaise);
database.setUint(keccak256(abi.encodePacked("brokerFee", assetID)), brokerFee);
database.setAddress(keccak256(abi.encodePacked("tokenAddress", assetID)), assetAddress);
database.setBytes32(keccak256(abi.encodePacked("assetTokenID", assetAddress)), assetID);
database.setAddress(keccak256(abi.encodePacked("broker", assetID)), msg.sender); // Make this a require() if want to enforce escrow
Expand Down
102 changes: 76 additions & 26 deletions contracts/database/API.sol
Original file line number Diff line number Diff line change
@@ -1,101 +1,151 @@
pragma solidity ^0.4.24;

import "../interfaces/DBInterface.sol";

import "../math/SafeMath.sol";

interface TokenView {
function totalSupply() external view returns (uint);
function balanceOf() external view returns (uint);
function valuePerToken() external view returns (uint);
function scalingFactor() external view returns (uint);
function assetIncome() external view returns (uint);
}

interface DBView {
function uintStorage(bytes32 _key) external view returns (uint);

function stringStorage(bytes32 _key) external view returns (string);

function addressStorage(bytes32 _key) external view returns (address);

function bytesStorage(bytes32 _key) external view returns (bytes);

function bytes32Storage(bytes32 _key) external view returns (bytes32);

function boolStorage(bytes32 _key) external view returns (bool);

function intStorage(bytes32 _key) external view returns (bool);
}


contract API{
using SafeMath for uint256;

DBInterface private database;
DBView private database;

constructor(address _database)
public {
database = DBInterface(_database);
database = DBView(_database);
}

//Crowdsale + assets
function generateAssetID(address _broker, uint _amountToRaise, bytes32 _operatorID, string _assetURI)
external
public
pure
returns(bytes32) {
bytes32 assetID = keccak256(abi.encodePacked(_broker, _amountToRaise, _operatorID, _assetURI));
return assetID;
}

function getAssetID(address _tokenAddress)
external
public
view
returns(bytes32) {
bytes32 assetID = database.bytes32Storage(keccak256(abi.encodePacked("assetTokenID", _tokenAddress)));
return assetID;
}

function getAssetAddress(bytes32 _assetID)
external
public
view
returns(address) {
address assetAddress = database.addressStorage(keccak256(abi.encodePacked("tokenAddress", _assetID)));
return assetAddress;
}

function getAssetFundingToken(bytes32 _assetID)
external
public
view
returns(address) {
address fundingTokenAddress = database.addressStorage(keccak256(abi.encodePacked("fundingToken", _assetID)));
return fundingTokenAddress;
}

// IF we decide not to store assetIncome
// function getAssetIncome(bytes32 _assetID)
// public
// view
// returns (uint) {
// TokenView asset = TokenView(getAssetAddress(_assetID));
// uint valuePerToken = asset.valuePerToken();
// return (valuePerToken * (asset.totalSupply())) / asset.scalingFactor();
// }

function getAssetROI(bytes32 _assetID)
public
view
returns (uint) {
TokenView assetToken = TokenView(getAssetAddress(_assetID));
return (assetToken.assetIncome() * 100) / assetToken.totalSupply();
}

function getAssetFundingGoal(bytes32 _assetID)
external
public
view
returns(uint) {
uint fundingGoal = database.uintStorage(keccak256(abi.encodePacked("amountToRaise", _assetID)));
return fundingGoal;
}

function getAssetFundingDeadline(bytes32 _assetID)
external
public
view
returns(uint) {
uint fundingDeadline = database.uintStorage(keccak256(abi.encodePacked("fundingDeadline", _assetID)));
return fundingDeadline;
}

function crowdsaleFinalized(bytes32 _assetID)
external
public
view
returns(bool) {
bool status = database.boolStorage(keccak256(abi.encodePacked("crowdsaleFinalized", _assetID)));
return status;
}

function getAssetBroker(bytes32 _assetID)
external
public
view
returns(address) {
address brokerAddress = database.addressStorage(keccak256(abi.encodePacked("broker", _assetID)));
return brokerAddress;
}

function getAssetBrokerFee(bytes32 _assetID)
external
public
view
returns(uint) {
uint brokerFee = database.uintStorage(keccak256(abi.encodePacked("brokerFee", _assetID)));
return brokerFee;
}

function getBrokerEscrowID(bytes32 _assetID, address _broker)
external
public
pure
returns(bytes32) {
bytes32 brokerEscrowID = keccak256(abi.encodePacked(_assetID, _broker));
return brokerEscrowID;
}

function getBrokerEscrow(bytes32 _brokerEscrowID)
public
view
returns (uint) {
return database.uintStorage(keccak256(abi.encodePacked("brokerEscrow", _brokerEscrowID)));
}

function getBrokerEscrowRemaining(bytes32 _brokerEscrowID)
external
public
view
returns(uint) {
uint redeemed = getBrokerEscrowRedeemed(_brokerEscrowID);
Expand All @@ -112,39 +162,39 @@ contract API{
}

function getAssetOperator(bytes32 _assetID)
external
public
view
returns(address) {
address operatorAddress = database.addressStorage(keccak256(abi.encodePacked("operator", _assetID)));
return operatorAddress;
}

function generateOperatorID(string _operatorURI)
external
public
pure
returns(bytes32) {
bytes32 operatorID = keccak256(abi.encodePacked(_operatorURI));
return operatorID;
}

function getOperatorID(address _operatorAddress)
external
public
view
returns(bytes32) {
bytes32 operatorID = database.bytes32Storage(keccak256(abi.encodePacked("operator", _operatorAddress)));
return operatorID;
}

function getOperatorAddress(bytes32 _operatorID)
external
public
view
returns(address) {
address operatorAddress = database.addressStorage(keccak256(abi.encodePacked("operator", _operatorID)));
return operatorAddress;
}

function generateOrderID(bytes32 _assetID, address _sender, uint _amount, uint _price, bool _buyOrder)
external
public
pure
returns(bytes32) {
bytes32 orderID = keccak256(abi.encodePacked(_assetID, _sender, _amount, _price, _buyOrder));
Expand All @@ -153,23 +203,23 @@ contract API{

//Platform functions
function getPlatformToken()
external
public
view
returns(address) {
address tokenAddress = database.addressStorage(keccak256(abi.encodePacked("platformToken")));
return tokenAddress;
}

function getPlatformWallet()
external
public
view
returns(address) {
address walletAddress = database.addressStorage(keccak256(abi.encodePacked("platformWallet")));
return walletAddress;
}

function getContractAddress(string _contractName)
external
public
view
returns(address) {
address contractAddress = database.addressStorage(keccak256(abi.encodePacked("contract", _contractName)));
Expand All @@ -185,31 +235,31 @@ contract API{
}

function getUserPermission(address _user)
external
public
view
returns(bool) {
bool status = database.boolStorage(keccak256(abi.encodePacked(getCurrentState(), _user)));
return status;
}

function getFunctionCost(bytes4 _sig, address _contract)
external
public
view
returns(uint) {
uint cost = database.uintStorage(keccak256(abi.encodePacked(_sig, _contract)));
return cost;
}

function contractPaused(address _contract)
external
public
view
returns(bool) {
bool status = database.boolStorage(keccak256(abi.encodePacked("paused", _contract)));
return status;
}

function contractOwner(address _account)
external
public
view
returns(bool) {
bool status = database.boolStorage(keccak256(abi.encodePacked("owner", _account)));
Expand Down

0 comments on commit 1622f4c

Please sign in to comment.