github.com/codingfuture/orig-energi3@v0.8.4/energi/contracts/src/BackboneRewardV1.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 { GlobalConstants } from "./constants.sol"; 25 import { IGovernedContract, GovernedContract } from "./GovernedContract.sol"; 26 import { IBlockReward } from "./IBlockReward.sol"; 27 import { NonReentrant } from "./NonReentrant.sol"; 28 29 /** 30 * Genesis hardcoded version of BackboneReward 31 * 32 * NOTE: it MUST NOT change after blockchain launch! 33 */ 34 contract BackboneRewardV1 is 35 GlobalConstants, 36 GovernedContract, 37 IBlockReward, 38 NonReentrant 39 { 40 address payable public backbone_address; 41 42 // IGovernedContract 43 //--------------------------------- 44 constructor(address _proxy, address payable _backbone_address) public GovernedContract(_proxy) { 45 backbone_address = _backbone_address; 46 } 47 48 // IBlockReward 49 //--------------------------------- 50 function reward() 51 external payable 52 noReentry 53 { 54 if (msg.value > 0) { 55 backbone_address.transfer(msg.value); 56 } 57 } 58 59 function getReward(uint _blockNumber) 60 external view 61 returns(uint amount) 62 { 63 if ((_blockNumber > 0) && (backbone_address != address(0))) { 64 amount = REWARD_BACKBONE_V1; 65 } 66 } 67 68 // Safety 69 //--- 70 function () external payable { 71 revert("Not supported"); 72 } 73 } 74