Skip to content

Latest commit

 

History

History
392 lines (326 loc) · 11.2 KB

PolicyAdmin.md

File metadata and controls

392 lines (326 loc) · 11.2 KB

Policy Admin Contract (PolicyAdmin.sol)

View Source: contracts/core/policy/PolicyAdmin.sol

↗ Extends: IPolicyAdmin, Recoverable

PolicyAdmin

The policy admin contract enables the owner (governance) to set the policy rate and fee info.

Functions

Constructs this contract

function (IStore store) public nonpayable Recoverable 

Arguments

Name Type Description
store IStore Provide the store contract instance
Source Code
constructor(IStore store) Recoverable(store) {}

setPolicyRatesByKey

Sets policy rates for the given cover key. This feature is only accessible by cover manager.

function setPolicyRatesByKey(bytes32 coverKey, uint256 floor, uint256 ceiling) external nonpayable nonReentrant 

Arguments

Name Type Description
coverKey bytes32
floor uint256 The lowest cover fee rate for this cover
ceiling uint256 The highest cover fee rate for this cover
Source Code
function setPolicyRatesByKey(
    bytes32 coverKey,
    uint256 floor,
    uint256 ceiling
  ) external override nonReentrant {
    s.mustNotBePaused();
    AccessControlLibV1.mustBeCoverManager(s);

    require(floor > 0, "Please specify floor");
    require(ceiling > floor, "Invalid ceiling");

    if (coverKey > 0) {
      s.mustBeValidCoverKey(coverKey);

      s.setUintByKeys(ProtoUtilV1.NS_COVER_POLICY_RATE_FLOOR, coverKey, floor);
      s.setUintByKeys(ProtoUtilV1.NS_COVER_POLICY_RATE_CEILING, coverKey, ceiling);
    } else {
      s.setUintByKey(ProtoUtilV1.NS_COVER_POLICY_RATE_FLOOR, floor);
      s.setUintByKey(ProtoUtilV1.NS_COVER_POLICY_RATE_CEILING, ceiling);
    }

    s.updateStateAndLiquidity(coverKey);

    emit CoverPolicyRateSet(coverKey, floor, ceiling);
  }

setCoverageLag

The coverage of a policy begins at the EOD timestamp of the policy purchase date plus the coverage lag. Coverage lag is a specified time period that can be set globally or on a per-cover basis to delay the start of coverage. This allows us to defend against time-based opportunistic attacks, which occur when an attacker purchases coverage after an incident has occurred but before the incident has been reported.

function setCoverageLag(bytes32 coverKey, uint256 window) external nonpayable

Arguments

Name Type Description
coverKey bytes32
window uint256
Source Code
function setCoverageLag(bytes32 coverKey, uint256 window) external override {
    require(window >= 1 days, "Enter at least 1 day");

    s.mustNotBePaused();
    AccessControlLibV1.mustBeCoverManager(s);

    if (coverKey > 0) {
      s.mustBeValidCoverKey(coverKey);
      s.setUintByKeys(ProtoUtilV1.NS_COVERAGE_LAG, coverKey, window);

      emit CoverageLagSet(coverKey, window);
      return;
    }

    s.setUintByKey(ProtoUtilV1.NS_COVERAGE_LAG, window);
    emit CoverageLagSet(coverKey, window);
  }

getPolicyRates

Gets the cover policy rates for the given cover key Warning: this function does not validate the cover key supplied.

function getPolicyRates(bytes32 coverKey) external view
returns(floor uint256, ceiling uint256)

Arguments

Name Type Description
coverKey bytes32
Source Code
function getPolicyRates(bytes32 coverKey) external view override returns (uint256 floor, uint256 ceiling) {
    return s.getPolicyRatesInternal(coverKey);
  }

getCoverageLag

Gets the policy lag for the given cover key Warning: this function does not validate the cover key supplied.

function getCoverageLag(bytes32 coverKey) external view
returns(uint256)

Arguments

Name Type Description
coverKey bytes32
Source Code
function getCoverageLag(bytes32 coverKey) external view override returns (uint256) {
    return s.getCoverageLagInternal(coverKey);
  }

version

Version number of this contract

function version() external pure
returns(bytes32)

Arguments

Name Type Description
Source Code
function version() external pure override returns (bytes32) {
    return "v0.1";
  }

getName

Name of this contract

function getName() external pure
returns(bytes32)

Arguments

Name Type Description
Source Code
function getName() external pure override returns (bytes32) {
    return ProtoUtilV1.CNAME_POLICY_ADMIN;
  }

Contracts