Skip to content

Commit

Permalink
Adds upgradeability by proxy
Browse files Browse the repository at this point in the history
  • Loading branch information
o-a-hudson committed Jul 12, 2018
1 parent aee310a commit 39fb0e3
Show file tree
Hide file tree
Showing 24 changed files with 351 additions and 718 deletions.
8 changes: 4 additions & 4 deletions contracts/Blacklistable.sol
@@ -1,23 +1,23 @@
pragma solidity ^0.4.23;

import "./thirdparty/openzeppelin/Ownable.sol";
import "./storage/EternalStorageUpdater.sol";
import "./storage/StorageUpdater.sol";

/**
* @title Blacklistable Token
* @dev Allows accounts to be blacklisted by a "blacklister" role
*/
contract Blacklistable is EternalStorageUpdater, Ownable {
contract Blacklistable is StorageUpdater {

address public blacklister;

event Blacklisted(address indexed _account);
event UnBlacklisted(address indexed _account);
event BlacklisterChanged(address indexed newBlacklister);

/* Todo: determine if makes sense to remove
constructor(address _blacklister) public {
blacklister = _blacklister;
}
}*/

/**
* @dev Throws if called by any account other than the blacklister
Expand Down
52 changes: 8 additions & 44 deletions contracts/FiatToken.sol
Expand Up @@ -2,18 +2,17 @@ pragma solidity ^0.4.23;

import './thirdparty/openzeppelin/ERC20.sol';
import './thirdparty/openzeppelin/SafeMath.sol';
import './thirdparty/openzeppelin/Ownable.sol';
import './thirdparty/openzeppelin/Pausable.sol';
import './thirdparty/zeppelinos/ownership/Ownable.sol';
import './thirdparty/zeppelinos/OwnedUpgradeabilityStorage.sol';

import './Blacklistable.sol';
import './Upgradable.sol';
import './UpgradedContract.sol';

/**
* @title FiatToken
* @dev ERC20 Token backed by fiat reserves
*/
contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
contract FiatToken is OwnedUpgradeabilityStorage, Ownable, ERC20, Pausable, Blacklistable {
using SafeMath for uint256;

string public name;
Expand All @@ -28,31 +27,24 @@ contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
event MinterRemoved(address indexed oldMinter);
event MasterMinterChanged(address indexed newMasterMinter);

constructor(
address _contractStorageAddress,
function initialize(
string _name,
string _symbol,
string _currency,
uint8 _decimals,
address _masterMinter,
address _pauser,
address _blacklister,
address _upgrader,
address _owner
)
EternalStorageUpdater(_contractStorageAddress)
Pausable(_pauser)
Blacklistable(_blacklister)
Upgradable(_upgrader)
public
{

) public {
name = _name;
symbol = _symbol;
currency = _currency;
decimals = _decimals;
masterMinter = _masterMinter;
transferOwnership(_owner);
pauser = _pauser;
blacklister = _blacklister;
setOwner(_owner);
}

/**
Expand All @@ -63,13 +55,6 @@ contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
_;
}

/**
* @dev Function to get address of data contract
*/
function getDataContractAddress() external view returns (address) {
return address(contractStorage);
}

/**
* @dev Function to mint tokens
* @param _amount The amount of tokens to mint.
Expand Down Expand Up @@ -112,19 +97,13 @@ contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
* @param spender address The account spender
*/
function allowance(address owner, address spender) public view returns (uint256) {
if (isUpgraded()) {
return UpgradedContract(upgradedAddress).allowance(owner, spender);
}
return getAllowed(owner, spender);
}

/**
* @dev Get totalSupply of token
*/
function totalSupply() public view returns (uint256) {
if (isUpgraded()) {
return UpgradedContract(upgradedAddress).totalSupply();
}
return getTotalSupply();
}

Expand All @@ -133,9 +112,6 @@ contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
* @param account address The account
*/
function balanceOf(address account) public view returns (uint256) {
if (isUpgraded()) {
return UpgradedContract(upgradedAddress).balanceOf(account);
}
return getBalance(account);
}

Expand All @@ -144,10 +120,6 @@ contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
* @return True if the operation was successful.
*/
function approve(address _spender, uint256 _value) whenNotPaused notBlacklistedBoth(msg.sender, _spender) public returns (bool) {
if (isUpgraded()) {
return UpgradedContract(upgradedAddress).approveViaPriorContract(msg.sender, _spender, _value);
}

setAllowed(msg.sender, _spender, _value);
emit Approval(msg.sender, _spender, _value);
return true;
Expand All @@ -162,10 +134,6 @@ contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
* @return bool success
*/
function transferFrom(address _from, address _to, uint256 _value) whenNotPaused notBlacklistedBoth(msg.sender, _from) public returns (bool) {
if (isUpgraded()) {
return UpgradedContract(upgradedAddress).transferFromViaPriorContract(msg.sender, _from, _to, _value);
}

require(isBlacklisted(_to) == false);

uint256 allowed;
Expand All @@ -185,10 +153,6 @@ contract FiatToken is Ownable, ERC20, Pausable, Blacklistable, Upgradable {
* @return bool success
*/
function transfer(address _to, uint256 _value) whenNotPaused notBlacklistedBoth(msg.sender, _to) public returns (bool) {
if (isUpgraded()) {
return UpgradedContract(upgradedAddress).transferViaPriorContract(msg.sender, _to, _value);
}

doTransfer(msg.sender, _to, _value);
return true;
}
Expand Down
11 changes: 11 additions & 0 deletions contracts/FiatTokenProxy.sol
@@ -0,0 +1,11 @@
pragma solidity ^0.4.23;

import './thirdparty/zeppelinos/OwnedUpgradeabilityProxy.sol';

/**
* @title FiatTokenProxy
* @dev This contract proxies FiatToken calls and enables FiatToken upgrades
*/
contract FiatTokenProxy is OwnedUpgradeabilityProxy {

}
61 changes: 0 additions & 61 deletions contracts/Upgradable.sol

This file was deleted.

17 changes: 0 additions & 17 deletions contracts/UpgradedContract.sol

This file was deleted.

77 changes: 0 additions & 77 deletions contracts/storage/EternalStorageUpdater.sol

This file was deleted.

0 comments on commit 39fb0e3

Please sign in to comment.