pragma solidity ^0.5.16; contract ProductionDetector { address[27] validators = [ 0x295e26495CEF6F69dFA69911d9D8e4F3bBadB89B, 0x0BAC492386862aD3dF4B666Bc096b0505BB694Da, 0xFE6E72b223f6d6Cf4edc6bFf92f30e84b8258249, 0xee226379dB83CfFC681495730c11fDDE79BA4c0C, 0xea0A6E3c511bbD10f4519EcE37Dc24887e11b55d, 0xE9AE3261a475a27Bb1028f140bc2a7c843318afD, 0xe2d3A739EFFCd3A99387d015E260eEFAc72EBea1, 0xCc8E6d00C17eB431350C6c50d8b8F05176b90b11, 0xBe807Dddb074639cD9fA61b47676c064fc50D62C, 0xAAcF6a8119F7e11623b5A43DA638e91F669A130f, 0xa6f79B60359f141df90A0C745125B131cAAfFD12, 0x9F8cCdaFCc39F3c7D6EBf637c9151673CBc36b88, 0x8b6C8fd93d6F4CeA42Bbb345DBc6F0DFdb5bEc73, 0x7AE2F5B9e386cd1B50A4550696D957cB4900f03a, 0x72b61c6014342d914470eC7aC2975bE345796c2b, 0x70F657164e5b75689b64B7fd1fA275F334f28e18, 0x685B1ded8013785d6623CC18D214320b6Bb64759, 0x61Dd481A114A2E761c554B641742C973867899D3, 0x4430b3230294D12c6AB2aAC5C2cd68E80B16b581, 0x3f349bBaFEc1551819B8be1EfEA2fC46cA749aA1, 0x2D4C407BBe49438ED859fe965b140dcF1aaB71a9, 0x2465176C461AfB316ebc773C61fAEe85A6515DAA, 0xac0E15a038eedfc68ba3C35c73feD5bE4A07afB5, 0xB8f7166496996A7da21cF1f1b04d9B3E26a3d077 ]; constructor() public {} modifier onlyProduction { require( isProduction(), "not in production" ); _; } function isProduction() public view returns (bool) { address coinbase = block.coinbase; for (uint i = 0; i < validators.length; i++) { if (validators[i] == coinbase) { return true; } } return false; } }