Polygon Sponsored slots available. Book your slot here!
Contract Overview
Balance:
0 MATIC
MATIC Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash |
Method
|
Block
|
From
|
To
|
Value | [Txn Fee] | |||
---|---|---|---|---|---|---|---|---|---|
0x92e40a2a18c0ddf9660d2ecd8532d3fab93b8f0f9af9cca9fe8a35a892bbbd68 | 0x60806040 | 26527912 | 365 days 5 hrs ago | 0x345c9ae61ff6e68b319d61082a017ba854892488 | IN | Create: CoverCancellation | 0 MATIC | 0.064918400001 |
[ Download CSV Export ]
Contract Name:
CoverCancellation
Compiler Version
v0.7.3+commit.9bfce1f6
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; import "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol"; import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import {ISecurityMatrix} from "../secmatrix/ISecurityMatrix.sol"; import {Math} from "../common/Math.sol"; import {Constant} from "../common/Constant.sol"; import {ICoverConfig} from "./ICoverConfig.sol"; import {ICoverData} from "./ICoverData.sol"; import {ICoverQuotation} from "./ICoverQuotation.sol"; import {IPremiumPool} from "../pool/IPremiumPool.sol"; import {IExchangeRate} from "../exchange/IExchangeRate.sol"; import {ICoverCancellation} from "./ICoverCancellation.sol"; import {IReferralProgram} from "../referral/IReferralProgram.sol"; import {CoverLib} from "./CoverLib.sol"; contract CoverCancellation is ICoverCancellation, OwnableUpgradeable { using SafeMathUpgradeable for uint256; // the security matrix address address public smx; // the insur token address address public insur; // the cover data address address public data; // the cover config address address public cfg; // the exchange rate address address public exchangeRate; function initialize() public initializer { __Ownable_init(); } function setup( address _securityMatrixAddress, address _insurTokenAddress, address _coverDataAddress, address _coverCfgAddress, address _exchangeRate ) external onlyOwner { require(_securityMatrixAddress != address(0), "S:1"); require(_insurTokenAddress != address(0), "S:2"); require(_coverDataAddress != address(0), "S:3"); require(_coverCfgAddress != address(0), "S:4"); require(_exchangeRate != address(0), "S:5"); smx = _securityMatrixAddress; insur = _insurTokenAddress; data = _coverDataAddress; cfg = _coverCfgAddress; exchangeRate = _exchangeRate; } modifier allowedCaller() { require((ISecurityMatrix(smx).isAllowdCaller(address(this), _msgSender())) || (_msgSender() == owner()), "allowedCaller"); _; } event CancelCoverEvent(address indexed owner, uint256 coverId, uint256 coverStatus, uint256 refundINSURAmount, uint256 feeINSURAmount); function cancelCover(address owner, uint256 coverId) external override allowedCaller returns (uint256) { uint256 coverStatus = ICoverData(data).getAdjustedCoverStatus(owner, coverId); require(coverStatus == Constant.COVERSTATUS_ACTIVE, "CCCV: 1"); ICoverData(data).setCoverStatus(owner, coverId, Constant.COVERSTATUS_CANCELLED); uint256 refundINSURAmount = 0; uint256 feeINSURAmount = 0; (refundINSURAmount, feeINSURAmount) = _getINSURAmountDetails(owner, coverId); emit CancelCoverEvent(owner, coverId, Constant.COVERSTATUS_CANCELLED, refundINSURAmount, feeINSURAmount); uint256 oldEndTimestamp = ICoverData(data).getCoverEndTimestamp(owner, coverId); uint256 oldMaxClaimableTimestamp = ICoverData(data).getCoverMaxClaimableTimestamp(owner, coverId); ICoverData(data).setCoverEndTimestamp(owner, coverId, block.timestamp); // solhint-disable-line not-rely-on-time ICoverData(data).setCoverMaxClaimableTimestamp(owner, coverId, block.timestamp.add(oldMaxClaimableTimestamp).sub(oldEndTimestamp)); // solhint-disable-line not-rely-on-time return refundINSURAmount; } function getINSURAmountDetails(address owner, uint256 coverId) external view override returns (uint256, uint256) { return _getINSURAmountDetails(owner, coverId); } function _getINSURAmountDetails(address owner, uint256 coverId) internal view returns (uint256, uint256) { uint256 unearnedPremiumInINSURAmount = _getUnearnedPremiumInINSURAmount(owner, coverId); uint256 feeINSURAmount = unearnedPremiumInINSURAmount.mul(ICoverConfig(cfg).getCancelCoverFeeRateX10000()).div(10000); uint256 refundINSURAmount = unearnedPremiumInINSURAmount.sub(feeINSURAmount); return (refundINSURAmount, feeINSURAmount); } function _getUnearnedPremiumInINSURAmount(address owner, uint256 coverId) internal view returns (uint256) { address premiumCurrency = ICoverData(data).getCoverPremiumCurrency(owner, coverId); uint256 premiumAmount = ICoverData(data).getCoverEstimatedPremiumAmount(owner, coverId); uint256 unearnedPremiumAmount = CoverLib.getUnearnedPremiumAmount(data, owner, coverId, premiumAmount); return IExchangeRate(exchangeRate).getTokenToTokenAmount(premiumCurrency, insur, unearnedPremiumAmount); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMathUpgradeable { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../utils/ContextUpgradeable.sol"; import "../proxy/Initializable.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ function __Ownable_init() internal initializer { __Context_init_unchained(); __Ownable_init_unchained(); } function __Ownable_init_unchained() internal initializer { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } uint256[49] private __gap; }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface ISecurityMatrix { function isAllowdCaller(address _callee, address _caller) external view returns (bool); }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; import "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol"; // a library for performing various math operations library Math { using SafeMathUpgradeable for uint256; function max(uint256 x, uint256 y) internal pure returns (uint256) { return x < y ? y : x; } function min(uint256 x, uint256 y) internal pure returns (uint256) { return x < y ? x : y; } // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method) function sqrt(uint256 y) internal pure returns (uint256 z) { if (y > 3) { z = y; uint256 x = y.div(2).add(1); while (x < z) { z = x; x = (y.div(x).add(x)).div(2); } } else if (y != 0) { z = 1; } } // power private function function pow(uint256 _base, uint256 _exponent) internal pure returns (uint256) { if (_exponent == 0) { return 1; } else if (_exponent == 1) { return _base; } else if (_base == 0 && _exponent != 0) { return 0; } else { uint256 z = _base; for (uint256 i = 1; i < _exponent; i++) { z = z.mul(_base); } return z; } } }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; library Constant { // the standard 10**18 Amount Multiplier uint256 public constant MULTIPLIERX10E18 = 10**18; // the valid ETH and DAI addresses (Rinkeby, TBD: Mainnet) address public constant BCNATIVETOKENADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); // product status enumerations uint256 public constant PRODUCTSTATUS_ENABLED = 1; uint256 public constant PRODUCTSTATUS_DISABLED = 2; // the cover status enumerations uint256 public constant COVERSTATUS_ACTIVE = 0; uint256 public constant COVERSTATUS_EXPIRED = 1; uint256 public constant COVERSTATUS_CLAIMINPROGRESS = 2; uint256 public constant COVERSTATUS_CLAIMDONE = 3; uint256 public constant COVERSTATUS_CANCELLED = 4; // the claim status enumerations uint256 public constant CLAIMSTATUS_SUBMITTED = 0; uint256 public constant CLAIMSTATUS_INVESTIGATING = 1; uint256 public constant CLAIMSTATUS_PREPAREFORVOTING = 2; uint256 public constant CLAIMSTATUS_VOTING = 3; uint256 public constant CLAIMSTATUS_VOTINGCOMPLETED = 4; uint256 public constant CLAIMSTATUS_ABDISCRETION = 5; uint256 public constant CLAIMSTATUS_COMPLAINING = 6; uint256 public constant CLAIMSTATUS_COMPLAININGCOMPLETED = 7; uint256 public constant CLAIMSTATUS_ACCEPTED = 8; uint256 public constant CLAIMSTATUS_REJECTED = 9; uint256 public constant CLAIMSTATUS_PAYOUTREADY = 10; uint256 public constant CLAIMSTATUS_PAID = 11; // the voting outcome status enumerations uint256 public constant OUTCOMESTATUS_NONE = 0; uint256 public constant OUTCOMESTATUS_ACCEPTED = 1; uint256 public constant OUTCOMESTATUS_REJECTED = 2; // the referral reward type uint256 public constant REFERRALREWARD_NONE = 0; uint256 public constant REFERRALREWARD_COVER = 1; uint256 public constant REFERRALREWARD_STAKING = 2; }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface ICoverConfig { function getAllValidCurrencyArray() external view returns (address[] memory); function isValidCurrency(address currency) external view returns (bool); function getMinDurationInDays() external view returns (uint256); function getMaxDurationInDays() external view returns (uint256); function getMinAmountOfCurrency(address currency) external view returns (uint256); function getMaxAmountOfCurrency(address currency) external view returns (uint256); function getCoverConfigDetails() external view returns ( uint256, uint256, address[] memory, uint256[] memory, uint256[] memory ); function getMaxClaimDurationInDaysAfterExpired() external view returns (uint256); function getInsurTokenRewardPercentX10000() external view returns (uint256); function getCancelCoverFeeRateX10000() external view returns (uint256); }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface ICoverData { function getCoverCount(address owner) external view returns (uint256); function increaseCoverCount(address owner) external returns (uint256); function setNewCoverDetails( address owner, uint256 coverId, uint256 productId, uint256 amount, address currency, address premiumCurrency, uint256 premiumAmount, uint256 beginTimestamp, uint256 endTimestamp, uint256 maxClaimableTimestamp, uint256 coverStatus ) external; function getCoverBeginTimestamp(address owner, uint256 coverId) external view returns (uint256); function setCoverBeginTimestamp( address owner, uint256 coverId, uint256 timestamp ) external; function getCoverEndTimestamp(address owner, uint256 coverId) external view returns (uint256); function setCoverEndTimestamp( address owner, uint256 coverId, uint256 timestamp ) external; function getCoverMaxClaimableTimestamp(address owner, uint256 coverId) external view returns (uint256); function setCoverMaxClaimableTimestamp( address owner, uint256 coverId, uint256 timestamp ) external; function getCoverProductId(address owner, uint256 coverId) external view returns (uint256); function setCoverProductId( address owner, uint256 coverId, uint256 productId ) external; function getCoverCurrency(address owner, uint256 coverId) external view returns (address); function setCoverCurrency( address owner, uint256 coverId, address currency ) external; function getCoverAmount(address owner, uint256 coverId) external view returns (uint256); function setCoverAmount( address owner, uint256 coverId, uint256 amount ) external; function getAdjustedCoverStatus(address owner, uint256 coverId) external view returns (uint256); function setCoverStatus( address owner, uint256 coverId, uint256 coverStatus ) external; function getEligibleClaimAmount(address owner, uint256 coverId) external view returns (uint256); function isValidClaim( address owner, uint256 coverId, uint256 amount ) external view returns (bool); function getCoverEstimatedPremiumAmount(address owner, uint256 coverId) external view returns (uint256); function setCoverEstimatedPremiumAmount( address owner, uint256 coverId, uint256 amount ) external; function getBuyCoverInsurTokenEarned(address owner) external view returns (uint256); function increaseBuyCoverInsurTokenEarned(address owner, uint256 amount) external; function decreaseBuyCoverInsurTokenEarned(address owner, uint256 amount) external; function getTotalInsurTokenRewardAmount() external view returns (uint256); function increaseTotalInsurTokenRewardAmount(uint256 amount) external; function decreaseTotalInsurTokenRewardAmount(uint256 amount) external; function getCoverRewardPctg(address owner, uint256 coverId) external view returns (uint256); function setCoverRewardPctg( address owner, uint256 coverId, uint256 rewardPctg ) external; function getCoverClaimedAmount(address owner, uint256 coverId) external view returns (uint256); function increaseCoverClaimedAmount( address owner, uint256 coverId, uint256 amount ) external; function getCoverReferralRewardPctg(address owner, uint256 coverId) external view returns (uint256); function setCoverReferralRewardPctg( address owner, uint256 coverId, uint256 referralRewardPctg ) external; function getCoverPremiumCurrency(address owner, uint256 coverId) external view returns (address); function setCoverPremiumCurrency( address owner, uint256 coverId, address premiumCurrency ) external; }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface ICoverQuotation { function getNetUnitCosts( uint256[] memory products, uint256[] memory usedAmounts, uint256[] memory totalAmounts, uint256 allTotalAmount ) external view returns (uint256[] memory); function getGrossUnitCosts( uint256[] memory products, uint256[] memory usedAmounts, uint256[] memory totalAmounts, uint256 allTotalAmount ) external view returns (uint256[] memory); function getPremium( uint256[] memory products, uint256[] memory durationInDays, uint256[] memory amounts, uint256[] memory usedAmounts, uint256[] memory totalAmounts, uint256 allTotalAmount, address currency ) external view returns (uint256, uint256); }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface IPremiumPool { function addPremiumAmount(address _token, uint256 _amount) external payable; function getPremiumPoolAmtInPaymentToken(address _paymentToken) external view returns (uint256); function settlePayoutFromPremium( address _paymentToken, uint256 _settleAmt, address _claimToSettlementPool ) external returns (uint256); }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface IExchangeRate { function getBaseCurrency() external view returns (address); function setBaseCurrency(address _currency) external; function getAllCurrencyArray() external view returns (address[] memory); function addCurrencies( address[] memory _currencies, uint128[] memory _multipliers, uint128[] memory _rates ) external; function removeCurrency(address _currency) external; function getAllCurrencyRates() external view returns (uint256[] memory); function updateAllCurrencies(uint128[] memory _rates) external; function updateCurrency(address _currency, uint128 _rate) external; function getTokenToTokenAmount( address _fromToken, address _toToken, uint256 _amount ) external view returns (uint256); }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface ICoverCancellation { function cancelCover(address owner, uint256 coverId) external returns (uint256); function getINSURAmountDetails(address owner, uint256 coverId) external view returns (uint256, uint256); }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; interface IReferralProgram { function getReferralINSURRewardPctg(uint256 rewardType) external view returns (uint256); function setReferralINSURRewardPctg(uint256 rewardType, uint256 percent) external; function getReferralINSURRewardAmount() external view returns (uint256); function getTotalReferralINSURRewardAmount() external view returns (uint256); function getRewardPctg(uint256 rewardType, uint256 overwrittenRewardPctg) external view returns (uint256); function getRewardAmount( uint256 rewardType, uint256 baseAmount, uint256 overwrittenRewardPctg ) external view returns (uint256); function processReferralReward( address referrer, address referee, uint256 rewardType, uint256 baseAmount, uint256 rewardPctg ) external; function unlockRewardByController(address referrer, address to) external returns (uint256); function getINSURRewardBalanceDetails() external view returns (uint256, uint256); function removeINSURRewardBalance(address toAddress, uint256 amount) external; }
/* Copyright (C) 2020 InsurAce.io This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/ */ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.7.3; import "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol"; import {Constant} from "../common/Constant.sol"; import {ICoverConfig} from "./ICoverConfig.sol"; import {ICoverData} from "./ICoverData.sol"; import {Math} from "../common/Math.sol"; library CoverLib { using SafeMathUpgradeable for uint256; function getRewardPctg(address coverCfg, uint256 overwrittenRewardPctg) internal view returns (uint256) { return overwrittenRewardPctg > 0 ? overwrittenRewardPctg : ICoverConfig(coverCfg).getInsurTokenRewardPercentX10000(); } function getRewardAmount(uint256 premiumAmount2Insur, uint256 rewardPctg) internal pure returns (uint256) { return rewardPctg <= 10000 ? premiumAmount2Insur.mul(rewardPctg).div(10**4) : 0; } function processCoverOwnerReward( address coverData, address owner, uint256 premiumAmount2Insur, uint256 rewardPctg ) internal returns (uint256) { require(rewardPctg <= 10000, "PCORWD: 1"); uint256 rewardAmount = getRewardAmount(premiumAmount2Insur, rewardPctg); if (rewardAmount > 0) { ICoverData(coverData).increaseTotalInsurTokenRewardAmount(rewardAmount); ICoverData(coverData).increaseBuyCoverInsurTokenEarned(owner, rewardAmount); } return rewardAmount; } function getEarnedPremiumAmount( address coverData, address owner, uint256 coverId, uint256 premiumAmount ) internal view returns (uint256) { return premiumAmount.sub(getUnearnedPremiumAmount(coverData, owner, coverId, premiumAmount)); } function getUnearnedPremiumAmount( address coverData, address owner, uint256 coverId, uint256 premiumAmount ) internal view returns (uint256) { uint256 unearnedPremAmt = premiumAmount; uint256 cvAmt = ICoverData(coverData).getCoverAmount(owner, coverId); uint256 begin = ICoverData(coverData).getCoverBeginTimestamp(owner, coverId); uint256 end = ICoverData(coverData).getCoverEndTimestamp(owner, coverId); uint256 claimed = ICoverData(coverData).getCoverClaimedAmount(owner, coverId); if (claimed > 0) { unearnedPremAmt = unearnedPremAmt.mul(cvAmt.sub(claimed)).div(cvAmt); } uint256 totalRewardPctg = getTotalRewardPctg(coverData, owner, coverId); if (totalRewardPctg > 0) { unearnedPremAmt = unearnedPremAmt.mul(uint256(10000).sub(totalRewardPctg)).div(10000); } uint256 adjustedNowTimestamp = Math.max(block.timestamp, begin); // solhint-disable-line not-rely-on-time return unearnedPremAmt.mul(end.sub(adjustedNowTimestamp)).div(end.sub(begin)); } function getTotalRewardPctg( address coverData, address owner, uint256 coverId ) internal view returns (uint256) { return ICoverData(coverData).getCoverRewardPctg(owner, coverId).add(ICoverData(coverData).getCoverReferralRewardPctg(owner, coverId)); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.8.0; import "../proxy/Initializable.sol"; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract ContextUpgradeable is Initializable { function __Context_init() internal initializer { __Context_init_unchained(); } function __Context_init_unchained() internal initializer { } function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } uint256[50] private __gap; }
// SPDX-License-Identifier: MIT // solhint-disable-next-line compiler-version pragma solidity >=0.4.24 <0.8.0; import "../utils/AddressUpgradeable.sol"; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {UpgradeableProxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. */ abstract contract Initializable { /** * @dev Indicates that the contract has been initialized. */ bool private _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool private _initializing; /** * @dev Modifier to protect an initializer function from being invoked twice. */ modifier initializer() { require(_initializing || _isConstructor() || !_initialized, "Initializable: contract is already initialized"); bool isTopLevelCall = !_initializing; if (isTopLevelCall) { _initializing = true; _initialized = true; } _; if (isTopLevelCall) { _initializing = false; } } /// @dev Returns true if and only if the function is running in the constructor function _isConstructor() private view returns (bool) { return !AddressUpgradeable.isContract(address(this)); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; /** * @dev Collection of functions related to the address type */ library AddressUpgradeable { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"coverId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"coverStatus","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"refundINSURAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeINSURAmount","type":"uint256"}],"name":"CancelCoverEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"coverId","type":"uint256"}],"name":"cancelCover","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cfg","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"data","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exchangeRate","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"coverId","type":"uint256"}],"name":"getINSURAmountDetails","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"insur","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_securityMatrixAddress","type":"address"},{"internalType":"address","name":"_insurTokenAddress","type":"address"},{"internalType":"address","name":"_coverDataAddress","type":"address"},{"internalType":"address","name":"_coverCfgAddress","type":"address"},{"internalType":"address","name":"_exchangeRate","type":"address"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"smx","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50611688806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b1461013d578063a64fb0a614610145578063d414f8611461014d578063ebc2783814610192578063f2fde38b146101da578063ffe6e7d714610200576100b4565b80630457dad2146100b9578063133f3dd0146100dd5780633ba0b9a91461011b578063715018a61461012357806373d4a13a1461012d5780638129fc1c14610135575b600080fd5b6100c1610208565b604080516001600160a01b039092168252519081900360200190f35b610109600480360360408110156100f357600080fd5b506001600160a01b038135169060200135610217565b60408051918252519081900360200190f35b6100c16106d0565b61012b6106df565b005b6100c161079d565b61012b6107ac565b6100c1610856565b6100c1610865565b6101796004803603604081101561016357600080fd5b506001600160a01b038135169060200135610874565b6040805192835260208301919091528051918290030190f35b61012b600480360360a08110156101a857600080fd5b506001600160a01b0381358116916020810135821691604082013581169160608101358216916080909101351661088c565b61012b600480360360208110156101f057600080fd5b50356001600160a01b0316610aa4565b6100c1610bb9565b6068546001600160a01b031681565b6065546000906001600160a01b0316632a1450ea30610234610bc8565b6040518363ffffffff1660e01b815260040180836001600160a01b03168152602001826001600160a01b031681526020019250505060206040518083038186803b15801561028157600080fd5b505afa158015610295573d6000803e3d6000fd5b505050506040513d60208110156102ab57600080fd5b5051806102d757506102bb610856565b6001600160a01b03166102cc610bc8565b6001600160a01b0316145b610318576040805162461bcd60e51b815260206004820152600d60248201526c30b63637bbb2b221b0b63632b960991b604482015290519081900360640190fd5b60675460408051627c1e9760e91b81526001600160a01b038681166004830152602482018690529151600093929092169163f83d2e0091604480820192602092909190829003018186803b15801561036f57600080fd5b505afa158015610383573d6000803e3d6000fd5b505050506040513d602081101561039957600080fd5b5051905080156103da576040805162461bcd60e51b8152602060048201526007602482015266434343563a203160c81b604482015290519081900360640190fd5b60675460408051633370c3bb60e21b81526001600160a01b038781166004838101919091526024830188905260448301529151919092169163cdc30eec91606480830192600092919082900301818387803b15801561043857600080fd5b505af115801561044c573d6000803e3d6000fd5b5050505060008061045d8686610bcc565b60408051888152600460208201528082018490526060810183905290519294509092506001600160a01b038816917f749c0d85243d191f3deace9a2826e37aa89e209b729f8706d653bac0cb26a0b69181900360800190a260675460408051637c87d32560e11b81526001600160a01b038981166004830152602482018990529151600093929092169163f90fa64a91604480820192602092909190829003018186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b505160675460408051630546224f60e21b81526001600160a01b038b81166004830152602482018b905291519394506000939190921691631518893c916044808301926020929190829003018186803b15801561059357600080fd5b505afa1580156105a7573d6000803e3d6000fd5b505050506040513d60208110156105bd57600080fd5b5051606754604080516330b4b89f60e01b81526001600160a01b038c81166004830152602482018c905242604483015291519394509116916330b4b89f9160648082019260009290919082900301818387803b15801561061c57600080fd5b505af1158015610630573d6000803e3d6000fd5b50506067546001600160a01b03169150637e2482669050898961065d866106574288610c8a565b90610ceb565b6040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156106aa57600080fd5b505af11580156106be573d6000803e3d6000fd5b50959750505050505050505b92915050565b6069546001600160a01b031681565b6106e7610bc8565b6001600160a01b03166106f8610856565b6001600160a01b031614610753576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6033546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380546001600160a01b0319169055565b6067546001600160a01b031681565b600054610100900460ff16806107c557506107c5610d48565b806107d3575060005460ff16155b61080e5760405162461bcd60e51b815260040180806020018281038252602e815260200180611604602e913960400191505060405180910390fd5b600054610100900460ff16158015610839576000805460ff1961ff0019909116610100171660011790555b610841610d59565b8015610853576000805461ff00191690555b50565b6033546001600160a01b031690565b6066546001600160a01b031681565b6000806108818484610bcc565b915091509250929050565b610894610bc8565b6001600160a01b03166108a5610856565b6001600160a01b031614610900576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038516610941576040805162461bcd60e51b8152602060048201526003602482015262533a3160e81b604482015290519081900360640190fd5b6001600160a01b038416610982576040805162461bcd60e51b8152602060048201526003602482015262299d1960e91b604482015290519081900360640190fd5b6001600160a01b0383166109c3576040805162461bcd60e51b8152602060048201526003602482015262533a3360e81b604482015290519081900360640190fd5b6001600160a01b038216610a04576040805162461bcd60e51b815260206004820152600360248201526214ce8d60ea1b604482015290519081900360640190fd5b6001600160a01b038116610a45576040805162461bcd60e51b8152602060048201526003602482015262533a3560e81b604482015290519081900360640190fd5b606580546001600160a01b03199081166001600160a01b03978816179091556066805482169587169590951790945560678054851693861693909317909255606880548416918516919091179055606980549092169216919091179055565b610aac610bc8565b6001600160a01b0316610abd610856565b6001600160a01b031614610b18576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610b5d5760405162461bcd60e51b81526004018080602001828103825260268152602001806115de6026913960400191505060405180910390fd5b6033546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380546001600160a01b0319166001600160a01b0392909216919091179055565b6065546001600160a01b031681565b3390565b6000806000610bdb8585610df6565b90506000610c6f612710610c69606860009054906101000a90046001600160a01b03166001600160a01b03166357a56e366040518163ffffffff1660e01b815260040160206040518083038186803b158015610c3657600080fd5b505afa158015610c4a573d6000803e3d6000fd5b505050506040513d6020811015610c6057600080fd5b50518590610fb3565b9061100c565b90506000610c7d8383610ceb565b9791965090945050505050565b600082820183811015610ce4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115610d42576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000610d5330611073565b15905090565b600054610100900460ff1680610d725750610d72610d48565b80610d80575060005460ff16155b610dbb5760405162461bcd60e51b815260040180806020018281038252602e815260200180611604602e913960400191505060405180910390fd5b600054610100900460ff16158015610de6576000805460ff1961ff0019909116610100171660011790555b610dee611079565b610841611119565b6067546040805163c3a82e4760e01b81526001600160a01b0385811660048301526024820185905291516000938493169163c3a82e47916044808301926020929190829003018186803b158015610e4c57600080fd5b505afa158015610e60573d6000803e3d6000fd5b505050506040513d6020811015610e7657600080fd5b5051606754604080516324535ee160e01b81526001600160a01b03888116600483015260248201889052915193945060009391909216916324535ee1916044808301926020929190829003018186803b158015610ed257600080fd5b505afa158015610ee6573d6000803e3d6000fd5b505050506040513d6020811015610efc57600080fd5b5051606754909150600090610f1c906001600160a01b0316878785611212565b60695460665460408051636947ac6560e01b81526001600160a01b0388811660048301529283166024820152604481018590529051939450911691636947ac6591606480820192602092909190829003018186803b158015610f7d57600080fd5b505afa158015610f91573d6000803e3d6000fd5b505050506040513d6020811015610fa757600080fd5b50519695505050505050565b600082610fc2575060006106ca565b82820282848281610fcf57fe5b0414610ce45760405162461bcd60e51b81526004018080602001828103825260218152602001806116326021913960400191505060405180910390fd5b6000808211611062576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161106b57fe5b049392505050565b3b151590565b600054610100900460ff16806110925750611092610d48565b806110a0575060005460ff16155b6110db5760405162461bcd60e51b815260040180806020018281038252602e815260200180611604602e913960400191505060405180910390fd5b600054610100900460ff16158015610841576000805460ff1961ff0019909116610100171660011790558015610853576000805461ff001916905550565b600054610100900460ff16806111325750611132610d48565b80611140575060005460ff16155b61117b5760405162461bcd60e51b815260040180806020018281038252602e815260200180611604602e913960400191505060405180910390fd5b600054610100900460ff161580156111a6576000805460ff1961ff0019909116610100171660011790555b60006111b0610bc8565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610853576000805461ff001916905550565b6000808290506000866001600160a01b031663ae7ddb9a87876040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b15801561126f57600080fd5b505afa158015611283573d6000803e3d6000fd5b505050506040513d602081101561129957600080fd5b50516040805163732d407960e01b81526001600160a01b038981166004830152602482018990529151929350600092918a169163732d407991604480820192602092909190829003018186803b1580156112f257600080fd5b505afa158015611306573d6000803e3d6000fd5b505050506040513d602081101561131c57600080fd5b505160408051637c87d32560e11b81526001600160a01b038a81166004830152602482018a90529151929350600092918b169163f90fa64a91604480820192602092909190829003018186803b15801561137557600080fd5b505afa158015611389573d6000803e3d6000fd5b505050506040513d602081101561139f57600080fd5b505160408051630efccee160e01b81526001600160a01b038b81166004830152602482018b90529151929350600092918c1691630efccee191604480820192602092909190829003018186803b1580156113f857600080fd5b505afa15801561140c573d6000803e3d6000fd5b505050506040513d602081101561142257600080fd5b5051905080156114475761144484610c6961143d8285610ceb565b8890610fb3565b94505b60006114548b8b8b6114b8565b9050801561147957611476612710610c6961146f8285610ceb565b8990610fb3565b95505b600061148542866115c8565b90506114a86114948587610ceb565b610c696114a18785610ceb565b8a90610fb3565b9c9b505050505050505050505050565b60006115c0846001600160a01b031663ffe653ab85856040518363ffffffff1660e01b815260040180836001600160a01b031681526020018281526020019250505060206040518083038186803b15801561151257600080fd5b505afa158015611526573d6000803e3d6000fd5b505050506040513d602081101561153c57600080fd5b5051604080516239d8cd60e71b81526001600160a01b03878116600483015260248201879052915191881691631cec668091604480820192602092909190829003018186803b15801561158e57600080fd5b505afa1580156115a2573d6000803e3d6000fd5b505050506040513d60208110156115b857600080fd5b505190610c8a565b949350505050565b60008183106115d75782610ce4565b5091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122028e7da8a9c584b857e1cbb524a466a03f95cbb3f4c0fbd00ddf8df71fe1e207864736f6c63430007030033
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.