Skip to content

Commit

Permalink
feat: remove finalized implementation from preset base contracts (#21)
Browse files Browse the repository at this point in the history
Co-authored-by: luzzifoss <fedeluzzi00@gmail.com>
  • Loading branch information
luzzif and luzzifoss committed Jan 2, 2024
1 parent e61d04a commit 94a76a6
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 13 deletions.
41 changes: 30 additions & 11 deletions contracts/presets/kpi-tokens/BaseKPIToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,10 @@ import {IKPIToken} from "../../interfaces/IKPIToken.sol";
/// implementations for a set of Carrot KPI token functions.
/// @author Federico Luzzi - <federico.luzzi@carrot-labs.xyz>
abstract contract BaseKPIToken is IKPIToken, Initializable {
address public override owner;
string public override description;
bool public override finalized;
uint256 public override expiration;
uint256 public override creationTimestamp;
address internal internalOwner;
string internal internalDescription;
uint256 internal internalExpiration;
uint256 internal internalCreationTimestamp;
address internal kpiTokensManager;
uint128 internal templateVersion;
uint256 internal templateId;
Expand Down Expand Up @@ -53,10 +52,10 @@ abstract contract BaseKPIToken is IKPIToken, Initializable {
if (_templateId == 0) revert InvalidTemplateId();
if (_templateVersion == 0) revert InvalidTemplateVersion();

owner = _owner;
description = _description;
expiration = _expiration;
creationTimestamp = block.timestamp;
internalOwner = _owner;
internalDescription = _description;
internalExpiration = _expiration;
internalCreationTimestamp = block.timestamp;
kpiTokensManager = _kpiTokensManager;
templateId = _templateId;
templateVersion = _templateVersion;
Expand All @@ -67,12 +66,32 @@ abstract contract BaseKPIToken is IKPIToken, Initializable {
/// @param _newOwner The new owner.
function transferOwnership(address _newOwner) external override {
if (_newOwner == address(0)) revert InvalidOwner();
address _owner = owner;
address _owner = internalOwner;
if (msg.sender != _owner) revert Forbidden();
owner = _newOwner;
internalOwner = _newOwner;
emit OwnershipTransferred(_owner, _newOwner);
}

/// @dev Returns the KPI token's owner.
function owner() external view virtual override returns (address) {
return internalOwner;
}

/// @dev Returns the KPI token's description.
function description() external view virtual override returns (string memory) {
return internalDescription;
}

/// @dev Returns the KPI token's expiration.
function expiration() external view virtual override returns (uint256) {
return internalExpiration;
}

/// @dev Returns the KPI token's creation timestamp.
function creationTimestamp() external view virtual override returns (uint256) {
return internalCreationTimestamp;
}

/// @dev Returns the KPI token's template as fetched from Carrot's KPI tokens manager,
/// given the template's id and version.
function template() external view override returns (Template memory) {
Expand Down
1 change: 0 additions & 1 deletion contracts/presets/oracles/BaseOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import {IOracle} from "../../interfaces/IOracle.sol";
/// implementations for a set of Carrot oracle functions.
/// @author Federico Luzzi - <federico.luzzi@carrot-labs.xyz>
abstract contract BaseOracle is IOracle, Initializable {
bool public override finalized;
address public override kpiToken;
address internal oraclesManager;
uint128 internal templateVersion;
Expand Down
2 changes: 2 additions & 0 deletions test/mocks/MockBaseOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import {InitializeOracleParams} from "../../contracts/commons/Types.sol";
import {BaseOracle} from "../../contracts/presets/oracles/BaseOracle.sol";

contract MockBaseOracle is BaseOracle {
bool public override finalized;

function initialize(InitializeOracleParams memory _params) external payable override initializer {
__BaseOracle_init(_params.kpiToken, _params.templateId, _params.templateVersion);
}
Expand Down
2 changes: 2 additions & 0 deletions test/mocks/MockConstantAnswererTrustedOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import {BaseOracle} from "../../contracts/presets/oracles/BaseOracle.sol";
import {InitializeOracleParams} from "../../contracts/commons/Types.sol";

contract MockConstantAnswererTrustedOracle is BaseOracle, ConstantAnswererTrustedOracle {
bool public override finalized;

constructor(address _answerer) ConstantAnswererTrustedOracle(_answerer) {}

function initialize(InitializeOracleParams memory _params) external payable override initializer {
Expand Down
2 changes: 2 additions & 0 deletions test/mocks/MockConstrainedOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import {IBaseTemplatesManager, Template} from "../../contracts/interfaces/IBaseT
import {InitializeOracleParams} from "../../contracts/commons/Types.sol";

contract MockConstrainedOracle is BaseOracle, ConstrainedOracle {
bool public override finalized;

function initialize(InitializeOracleParams memory _params) external payable override initializer {
(Constraint _constraint, uint256 _value0, uint256 _value1) =
abi.decode(_params.data, (Constraint, uint256, uint256));
Expand Down
1 change: 1 addition & 0 deletions test/mocks/MockKPIToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ struct OracleData {
/// @dev A KPI token template implementation
/// @author Federico Luzzi - <federico.luzzi@carrot-labs.xyz>
contract MockKPIToken is BaseKPIToken {
bool public override finalized;
address[] internal _oracles;

function initialize(InitializeKPITokenParams memory _params) external payable override initializer {
Expand Down
2 changes: 1 addition & 1 deletion test/mocks/MockOracle.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {InitializeOracleParams} from "../../contracts/commons/Types.sol";
contract MockOracle is IOracle, Initializable {
address public constant RESULT_GETTER = address(4321);

bool public finalized;
bool public override finalized;
address public kpiToken;
address internal oraclesManager;
uint128 internal templateVersion;
Expand Down

0 comments on commit 94a76a6

Please sign in to comment.