github.com/codingfuture/orig-energi3@v0.8.4/energi/contracts/src/IBlacklistRegistry.sol (about) 1 // Copyright 2019 The Energi Core Authors 2 // This file is part of Energi Core. 3 // 4 // Energi Core is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Energi Core is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Energi Core. If not, see <http://www.gnu.org/licenses/>. 16 17 // Energi Governance system is the fundamental part of Energi Core. 18 19 // NOTE: It's not allowed to change the compiler due to byte-to-byte 20 // match requirement. 21 pragma solidity 0.5.16; 22 //pragma experimental SMTChecker; 23 24 import { IProposal } from "./IProposal.sol"; 25 import { ITreasury } from "./ITreasury.sol"; 26 27 /** 28 * Interface of BlacklistProposal 29 */ 30 contract IBlacklistProposal is IProposal { 31 function isObeyed() external view returns(bool); 32 } 33 34 /** 35 * Genesis version of BlacklistRegistry interface. 36 * 37 * Base Consensus interface for blocking outgoing transactions from 38 * blacklisted accounts. 39 * 40 * NOTE: it MUST NOT change after blockchain launch! 41 */ 42 interface IBlacklistRegistry { 43 event BlacklistProposal( 44 address indexed target, 45 IBlacklistProposal proposal 46 ); 47 event WhitelistProposal( 48 address indexed target, 49 IBlacklistProposal proposal 50 ); 51 event DrainProposal( 52 address indexed target, 53 IBlacklistProposal proposal 54 ); 55 56 function compensation_fund() external view returns(ITreasury); 57 function EBI_signer() external view returns(address); 58 59 function proposals(address) external view returns( 60 IBlacklistProposal enforce, 61 IBlacklistProposal revoke, 62 IBlacklistProposal drain); 63 function propose(address) external payable returns(IBlacklistProposal); 64 function proposeRevoke(address) external payable returns(IBlacklistProposal); 65 function proposeDrain(address) external payable returns(IBlacklistProposal); 66 function isBlacklisted(address) external view returns(bool); 67 function isDrainable(address) external view returns(bool); 68 function collect(address) external; 69 function drainMigration(uint item_id, bytes20 owner) external; 70 function enumerateAll() external view returns(address[] memory addresses); 71 function enumerateBlocked() external view returns(address[] memory addresses); 72 function enumerateDrainable() external view returns(address[] memory addresses); 73 function onDrain(address) external; 74 }