{"version":3,"sources":["images/logos/logo_validators_dapp@2x.png","images/logos/Lukso_Wordmark_navy.png","images/icons/icon-menu.svg","images/icons/icon-menu-sokol.svg","images/icons/icon-close.svg","images/icons/icon-close-sokol.svg","../node_modules/react-places-autocomplete/dist/images sync /^/.//powered_by_google_.*/.png$","messages.js","ValidatorPhysicalAddresses.js","Validator.js","Loading.js","AllValidators.js","helpers.js","App.js","Socials.js","Footer.js","NavigationLinks.js","MobileMenuLinks.js","Header.js","contracts/helpers.js","contracts/KeysManager.contract.js","contracts/ProofOfPhysicalAddress.contract.js","contracts/PoaConsensus.contract.js","contracts/Metadata.contract.js","getWeb3.js","contracts/addresses.js","registerServiceWorker.js","index.js","constants.js"],"names":["module","exports","__webpack_require__","p","map","./powered_by_google_default.png","./powered_by_google_inverse.png","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","Object","resolve","messages","repo","concat","PhysicalAddressValue","_ref2","addresses","address","index","confirmedIcon","isConfirmed","react_default","a","createElement","className","title","key","fullAddress","us_state","toUpperCase","postal_code","ValidatorPhysicalAddress","_ref","physicalAddresses","confirmedAddresses","filter","unconfirmedAddresses","singleOrMultiple","length","validatorPhysicalAddressClassName","ValidatorPhysicalAddresses_PhysicalAddressValue","Validator","props","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","state","confirmation","metadataContract","getConfirmations","miningKey","then","setState","_this$props","firstName","lastName","children","showAllValidators","methodToCall","confirmations","indexAndAddress","ValidatorPhysicalAddresses","Component","styles","netId","core","backgroundColor","constants","NETWORKS","TESTNET","Loading","style","AllValidators","getMetadataContract","bind","assertThisInitialized","getProofOfPhysicalAddressContract","getKeysManagerContract","validators","loading","getValidatorsData","web3Config","data","i","_this2","augmentValidatorsWithPhysicalAddress","augmentedValidators","reload","popa","Promise","all","validator","_this3","getVotingByMining","votingKey","validatorsVotingAndMiningKeys","getAllAddressRegisteredEvents","addressRegisteredEvents","getValidatorsPhysicalAddressesPromises","validatorKeys","getPhysicalAddressesOfWalletAddress","getPhysicalAddressesResult","validatorsPhysicalAddresses","validatorPhysicalAddresses","physicalAddress","location","city","zip","assign","console","error","_context2","t0","objectSpread","nextProps","nextState","proofOfPhysicalAddressContract","keysManager","_this4","src_Loading","filtered","values","some","val","String","toLowerCase","includes","searchTerm","_iteratorNormalCompletion","_didIteratorError","_iteratorError","undefined","_step","_loop","value","slicedToArray","childrenWithProps","React","Children","child","cloneElement","miningkey","push","src_Validator","licenseId","expirationDate","createdDate","updatedDate","_iterator","entries","Symbol","iterator","next","done","err","return","isValidatorsPage","validatorsCountObj","validatorsCount","titleContainer","viewTitle","helpers","generateAlert","icon","msg","content","document","innerHTML","swal","netIdByName","netName","netNameLowerCase","NAME","App","checkValidation","onClick","onChangeFormField","getKeysManager","getVotingKey","onChangeAutoComplete","form","onSelect","onSelectAutocomplete","hasData","defaultValues","setMetadata","isValidVotingKey","setIsValidVotingKey","getValidatorData","getMiningKey","currentData","getPendingChange","pendingChange","Number","minThreshold","isVotingActive","invalidaVotingKey","isAfter","moment","forEach","geocodeByAddress","place","address_components","addressType","types","short_name","street_number","route","locality","administrative_area_level_1","log","isValid","sendTxToContract","createMetadata","zipcode","unix","receipt","catch","errDescription","message","userDeniedTransactionPattern","event","field","target","classNameHiddenIfNotCoreNetwork","BtnAction","inputProps","onChange","loader","htmlFor","type","dist_default","autocompleteItem","formattedSuggestion","mainText","secondaryText","href","rel","Socials","url","item","Footer","footerClassName","src_Socials","NavigationLinks","navigationData","baseRootPath","NavLink","activeClassName","exact","to","MobileMenuLinks","onMenuToggle","Header","select","injectedWeb3","showMobileMenu","thisIsTestnet","headerClassName","logoImageName","logoSokol","logoBase","menuIcon","menuIconSokol","menuIconBase","menuOpenIcon","menuOpenIconSokol","menuOpenIconBase","options","_netId","label","react_select_es","width","wrapperStyle","clearable","src_MobileMenuLinks","src","alt","src_NavigationLinks","addressesURL","branch","URL","organization","repoName","addressesSourceFile","ABIURL","contract","ABIsSources","getABI","addr","fetch","response","json","KeysManager","web3","KEYS_MANAGER_ADDRESS","BRANCH","KeysManagerAbi","instance","eth","Contract","methods","miningKeyByVoting","ProofOfPhysicalAddress","PROOF_OF_PHYSICAL_ADDRESS","proofOfPhysicalAddressAbi","getAllEvents","getPhysicalAddressesByWalletAddressAndKeccakIdentifierArray","walletAddress","registeredAddressEvents","result","keccakIdentifiers","returnValues","wallet","keccakIdentifier","keccakIdentifierArray","promises","userAddressByKeccakIdentifier","asyncToGenerator","regenerator_default","mark","_callee3","addressStatusTuple","addressFound","addressIndex","addressConfirmed","wrap","_context3","prev","abrupt","userAddress","t1","sent","stop","_x6","apply","arguments","physicalAddressArray","eventName","getPastEvents","fromBlock","toBlock","_context5","PoaConsensus","POA_ADDRESS","poaConsensusAbi","getValidators","isMasterOfCeremonyRemoved","toAscii","hex","str","l","substring","parseInt","substr","fromCharCode","Metadata","gasPrice","utils","toWei","METADATA_ADDRESS","MOC","MetadataAbi","metadataInstance","MOC_ADDRESS","poaInstance","init","mocRemoved","miningKeys","fromAscii","send","from","helpersGlobal","validatorData","format","_ref3","_callee4","reject","mocAddressLowercase","_context4","getMocData","finish","_x5","pendingChanges","miningKeyToConfirm","senderVotingKey","senderMiningKey","isValidatorAlreadyVoted","alreadyConfirmed","isAddressAlreadyVoted","confirmPendingChange","getMinThreshold","finalize","setWeb3","provider","Web3","providers","HttpProvider","RPC","src_getWeb3","window","addEventListener","_callee","errorMsg","netIdName","defaultAccount","accounts","network","_context","ethereum","enable","currentProvider","net","getId","getAccounts","host","indexOf","web3Instance","contracts_addresses","wrongRepo","isLocalhost","Boolean","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","history","createBrowserHistory","setMetadataPath","pendingChangesPath","AppMainRouter","toggleMobileMenu","prevState","listen","onRouteChange","onSetRender","onPendingChangesRender","onAllValidatorsRender","onConfirmPendingChange","onFinalize","onSearch","onNetworkChange","getNetIdClass","showSearch","pathname","poaConsensus","getWeb3","networkAddresses","_x","_callee2","config","initContracts","t2","t3","t4","_x2","cb","noMetamaskAccount","src_App","successMsg","preventDefault","checkForVotingKey","currentTarget","getAttribute","_onBtnClick","AllValidators_AllValidators","ref","term","_ref6","_callee8","_context8","_x8","search","placeholder","Router","src_Header","Route","path","render","src_Footer","ReactDOM","src_AppMainRouter","getElementById","process","origin","status","headers","get","ready","unregister","checkValidServiceWorker","registerServiceWorker","PoaNetworkConsensus","ValidatorMetadata","22"],"mappings":"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","file":"static/js/main.32f92291.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/Lukso_Wordmark_navy.4fe20c1b.png\";","module.exports = __webpack_public_path__ + \"static/media/icon-menu.2617925c.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-menu-sokol.744ecac7.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-close.247c46b8.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon-close-sokol.7bbf3da2.svg\";","var map = {\n\t\"./powered_by_google_default.png\": 154,\n\t\"./powered_by_google_inverse.png\": 155\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) { // check for number or string\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn id;\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 153;","let messages = {}\nmessages.wrongRepo = function(repo) {\n return `There is no such file in configured repo ${repo}`\n}\nmessages.invalidaVotingKey =\n 'The key is not valid voting Key or you are connected to the wrong chain! Please make sure you have loaded correct voting key in Metamask'\nmessages.noMetamaskAccount = `Your MetaMask is locked.\nPlease choose your voting key in MetaMask and reload the page.\nCheck POA Network wiki for more info.`\n\nmodule.exports = {\n messages\n}\n","import React from 'react'\n\nconst ICON_CONFIRMED_CLASSNAME = 'data-icon--confirmed'\nconst ICON_UNCONFIRMED_CLASSNAME = 'data-icon--unconfirmed'\nconst ICON_CONFIRMED_TOOLTIP = 'Confirmed Address'\nconst ICON_UNCONFIRMED_TOOLTIP = 'Unconfirmed Address'\n\nconst ValidatorPhysicalAddress = ({ physicalAddresses }) => {\n const confirmedAddresses = physicalAddresses.filter(a => a.isConfirmed)\n const unconfirmedAddresses = physicalAddresses.filter(a => !a.isConfirmed)\n let addresses = confirmedAddresses.concat(unconfirmedAddresses)\n\n let singleOrMultiple =\n addresses.length > 1 ? 'validator-physical-address--multiple' : 'validator-physical-address--single'\n let validatorPhysicalAddressClassName = `validators-table-i validator-physical-address ${singleOrMultiple}`\n\n return (\n
\n

Address

\n \n
\n )\n}\n\nconst PhysicalAddressValue = ({ addresses }) => {\n return addresses.map((address, index) => {\n // Confirmed icon rendered only if address.isConfirmed has a boolean value\n let confirmedIcon = null\n if (address.isConfirmed === true || address.isConfirmed === false) {\n confirmedIcon = (\n \n )\n }\n\n return (\n

\n {`${address.fullAddress}, ${address.us_state.toUpperCase()}, ${address.postal_code}`}\n {confirmedIcon}\n

\n )\n })\n}\n\nexport default ValidatorPhysicalAddress\n","import React, { Component } from 'react'\nimport ValidatorPhysicalAddresses from './ValidatorPhysicalAddresses'\n\nclass Validator extends Component {\n constructor(props) {\n super(props)\n this.state = {\n confirmation: null\n }\n this.props.metadataContract.getConfirmations({ miningKey: this.props.address }).then(confirmation => {\n this.setState({ confirmation: confirmation[0] })\n })\n }\n\n render() {\n let {\n physicalAddresses,\n address,\n firstName,\n lastName,\n //licenseId,\n //expirationDate,\n //createdDate,\n //updatedDate,\n index,\n children\n } = this.props\n\n const showAllValidators = this.props.methodToCall === 'getAllValidatorsData'\n\n const confirmations = showAllValidators ? (\n ''\n ) : (\n
{this.state.confirmation} confirmations
\n )\n\n const indexAndAddress = showAllValidators ? `#${index}. ${address}` : address\n /*const pendingChangeDate = !updatedDate ? (\n ''\n ) : (\n
\n

Pending Change Date

\n

{updatedDate}

\n
\n )*/\n\n return (\n
\n
\n
\n
{indexAndAddress}
\n
Wallet Address
\n
\n {confirmations}\n
\n
\n
\n

Notary

\n
\n
\n

Full Name

\n

\n {firstName} {lastName}\n

\n
\n \n
\n
\n {/*\n
\n

Notary license

\n
\n
\n

License ID

\n

{licenseId}

\n
\n
\n

License Expiration

\n

{expirationDate}

\n
\n
\n

Miner Creation Date

\n

{createdDate}

\n
\n {pendingChangeDate}\n
\n
\n */}\n
\n
{children}
\n
\n )\n }\n}\nexport default Validator\n","import React from 'react'\nimport { constants } from './constants'\n\nconst styles = netId => {\n const core = {\n backgroundColor: 'rgba(253, 206, 196, 0.8)'\n }\n const sokol = {\n backgroundColor: 'rgba(253, 206, 196, 0.8)'\n }\n\n if (netId in constants.NETWORKS) {\n return constants.NETWORKS[netId].TESTNET ? sokol : core\n }\n\n return core\n}\nconst Loading = ({ netId }) => (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n)\nexport default Loading\n","import React, { Component } from 'react'\nimport Validator from './Validator'\nimport Loading from './Loading'\n\nexport default class AllValidators extends Component {\n constructor(props) {\n super(props)\n this.getMetadataContract = this.getMetadataContract.bind(this)\n this.getProofOfPhysicalAddressContract = this.getProofOfPhysicalAddressContract.bind(this)\n this.getKeysManagerContract = this.getKeysManagerContract.bind(this)\n this.state = {\n validators: [],\n loading: true\n }\n this.getValidatorsData.call(this)\n }\n componentWillMount() {\n const { props } = this\n const { web3Config } = props\n const { netId } = web3Config\n this.setState({ loading: true, netId: netId })\n }\n async getValidatorsData() {\n const netId = this.props.web3Config.netId\n this.getMetadataContract()\n [this.props.methodToCall](netId)\n .then(data => {\n for (let i = 0; i < data.length; i++) {\n data[i].index = i + 1\n }\n return this.augmentValidatorsWithPhysicalAddress(data)\n })\n .then(augmentedValidators => {\n this.setState({\n validators: augmentedValidators,\n loading: false,\n reload: false,\n netId\n })\n })\n }\n async augmentValidatorsWithPhysicalAddress(validators) {\n let augmentedValidators = []\n\n const popa = this.getProofOfPhysicalAddressContract()\n try {\n if (popa === null) {\n throw new Error(`ProofOfPhysicalAddress not deployed in the current network`)\n }\n\n // Get each validator's voting & mining key array (if voting key is present set it as the 1st element)\n let validatorsVotingAndMiningKeys = await Promise.all(\n validators.map((validator, index) => {\n const miningKey = validators[index].address\n return this.getKeysManagerContract()\n .getVotingByMining(validator.address)\n .then(votingKey => {\n const isNotVotingKey =\n votingKey === '0x0000000000000000000000000000000000000000' ||\n votingKey === '0x00' ||\n votingKey === '0x0' ||\n votingKey === '0x'\n return isNotVotingKey ? [miningKey] : [votingKey, miningKey]\n })\n })\n )\n\n // Get PoPA physical address of validator using voting & mining array\n const addressRegisteredEvents = await popa.getAllAddressRegisteredEvents()\n const getValidatorsPhysicalAddressesPromises = validatorsVotingAndMiningKeys.map(validatorKeys => {\n return popa\n .getPhysicalAddressesOfWalletAddress(validatorKeys[0], addressRegisteredEvents)\n .then(getPhysicalAddressesResult => {\n // If addresses not found and the keys array has an extra element, retry the fetch and return its result\n return getPhysicalAddressesResult === null && validatorKeys.length > 1\n ? popa.getPhysicalAddressesOfWalletAddress(validatorKeys[1], addressRegisteredEvents)\n : getPhysicalAddressesResult\n })\n })\n const validatorsPhysicalAddresses = await Promise.all(getValidatorsPhysicalAddressesPromises)\n\n augmentedValidators = validatorsPhysicalAddresses.map((physicalAddresses, index) => {\n const validator = validators[index]\n let validatorPhysicalAddresses\n // If PoPA addresses found, map them to a format known by the UI components.\n // Else, map the physical address from the validator's metadata .\n if (physicalAddresses && physicalAddresses.length > 0) {\n validatorPhysicalAddresses = physicalAddresses.map(physicalAddress => ({\n fullAddress: `${physicalAddress.data.location} ${physicalAddress.data.city}`,\n us_state: physicalAddress.data.state,\n postal_code: physicalAddress.data.zip,\n isConfirmed: physicalAddress.isConfirmed === true\n }))\n } else {\n validatorPhysicalAddresses = [\n {\n fullAddress: validator.fullAddress,\n us_state: validator.us_state,\n postal_code: validator.postal_code,\n isConfirmed: false\n }\n ]\n }\n\n return Object.assign({}, validator, { physicalAddresses: validatorPhysicalAddresses })\n })\n } catch (e) {\n console.error(\n `Error while augmenting validators with physical addresses from ProofOfPhysicalAddress, using Metadata's physical addresses`,\n e\n )\n // If an error ocurred or PoPA is not available, fallback to mapping the physical address from the validator's metadata\n // without confirmed/unconfirmed information\n augmentedValidators = validators.map(validator => ({\n ...validator,\n physicalAddresses: [\n {\n fullAddress: validator.fullAddress,\n us_state: validator.us_state,\n postal_code: validator.postal_code\n }\n ]\n }))\n }\n\n return augmentedValidators\n }\n shouldComponentUpdate(nextProps, nextState) {\n if (nextProps.web3Config.netId !== this.state.netId) {\n this.getValidatorsData.call(this)\n return false\n }\n return true\n }\n getMetadataContract() {\n return this.props.web3Config.metadataContract\n }\n getProofOfPhysicalAddressContract() {\n return this.props.web3Config.proofOfPhysicalAddressContract\n }\n getKeysManagerContract() {\n return this.props.web3Config.keysManager\n }\n render() {\n const loading = this.state.loading ? : ''\n const filtered = this.state.validators.filter((validator, index) => {\n return Object.values(validator).some(val =>\n String(val)\n .toLowerCase()\n .includes(this.props.searchTerm)\n )\n })\n let validators = []\n for (let [index, validator] of filtered.entries()) {\n let childrenWithProps = React.Children.map(this.props.children, child => {\n return React.cloneElement(child, { miningkey: validator.address })\n })\n validators.push(\n \n {childrenWithProps}\n \n )\n }\n const isValidatorsPage = this.props.methodToCall === 'getAllValidatorsData'\n const validatorsCountObj = (\n
\n Total number of validators: \n {this.state.validators.length}\n
\n )\n const validatorsCount = isValidatorsPage ? validatorsCountObj : ''\n\n const titleContainer = (\n
\n {this.props.viewTitle}\n {validatorsCount}\n
\n )\n\n return (\n
\n {loading}\n {titleContainer}\n {validators}\n
\n )\n }\n}\n","import swal from 'sweetalert'\nimport { constants } from './constants'\n\nfunction generateAlert(icon, title, msg) {\n var content = document.createElement('div')\n content.innerHTML = `
${msg}
`\n swal({\n icon: icon,\n title: title,\n content: content\n })\n}\n\nfunction netIdByName(netName) {\n const netNameLowerCase = netName.toLowerCase()\n for (let netId in constants.NETWORKS) {\n if (constants.NETWORKS[netId].NAME.toLowerCase() === netNameLowerCase) {\n return netId\n }\n }\n return null\n}\n\nconst helpers = {\n generateAlert,\n netIdByName\n}\n\nexport default helpers\n","import React, { Component } from 'react'\nimport './stylesheets/application.css'\nimport PlacesAutocomplete, { geocodeByAddress } from 'react-places-autocomplete'\nimport moment from 'moment'\nimport Loading from './Loading'\nimport { messages } from './messages'\nimport helpers from './helpers'\nimport { constants } from './constants'\n\nclass App extends Component {\n constructor(props) {\n super(props)\n this.checkValidation = this.checkValidation.bind(this)\n this.onClick = this.onClick.bind(this)\n this.onChangeFormField = this.onChangeFormField.bind(this)\n this.getKeysManager = this.getKeysManager.bind(this)\n this.getMetadataContract = this.getMetadataContract.bind(this)\n this.getVotingKey = this.getVotingKey.bind(this)\n this.onChangeAutoComplete = address => {\n const form = this.state.form\n form.fullAddress = address\n this.setState({ form })\n }\n this.onSelect = this.onSelectAutocomplete.bind(this)\n this.state = {\n web3Config: {},\n form: {\n fullAddress: '',\n expirationDate: '',\n postal_code: '',\n us_state: '',\n firstName: '',\n lastName: '',\n licenseId: ''\n },\n hasData: false\n }\n\n this.defaultValues = null\n this.setMetadata.call(this)\n\n this.isValidVotingKey = false\n this.setIsValidVotingKey.call(this)\n }\n async setMetadata() {\n const currentData = await this.getMetadataContract().getValidatorData(this.getMiningKey())\n const hasData = currentData.postal_code ? true : false\n this.defaultValues = currentData\n const pendingChange = await this.getMetadataContract().getPendingChange(this.getMiningKey())\n if (Number(pendingChange.minThreshold) > 0) {\n var msg = `\n First Name: ${pendingChange.firstName}
\n Last Name: ${pendingChange.lastName}
\n Full Address: ${pendingChange.fullAddress}
\n Expiration Date: ${pendingChange.expirationDate}
\n License ID: ${pendingChange.licenseId}
\n US state: ${pendingChange.us_state}
\n Zip Code: ${pendingChange.postal_code}
\n `\n helpers.generateAlert('warning', 'You have pending changes!', msg)\n }\n this.setState({\n form: {\n fullAddress: currentData.fullAddress,\n expirationDate: currentData.expirationDate,\n postal_code: currentData.postal_code,\n us_state: currentData.us_state,\n firstName: currentData.firstName,\n lastName: currentData.lastName,\n licenseId: currentData.licenseId\n },\n hasData\n })\n }\n async setIsValidVotingKey() {\n this.isValidVotingKey = await this.getKeysManager().isVotingActive(this.getVotingKey())\n if (!this.isValidVotingKey) {\n helpers.generateAlert('warning', 'Warning!', messages.invalidaVotingKey)\n }\n }\n getKeysManager() {\n return this.props.web3Config.keysManager\n }\n getMetadataContract() {\n return this.props.web3Config.metadataContract\n }\n getVotingKey() {\n return this.props.web3Config.votingKey\n }\n getMiningKey() {\n return this.props.web3Config.miningKey\n }\n checkValidation() {\n const isAfter = moment(this.state.form.expirationDate).isAfter(moment())\n let keys = Object.keys(this.state.form)\n keys.forEach(key => {\n if (!this.state.form[key]) {\n this.setState({ loading: false })\n helpers.generateAlert('warning', 'Warning!', `${key} cannot be empty`)\n return false\n }\n })\n if (isAfter) {\n } else {\n this.setState({ loading: false })\n helpers.generateAlert('warning', 'Warning!', 'Expiration date should be valid')\n return false\n }\n return true\n }\n async onSelectAutocomplete(data) {\n let place = await geocodeByAddress(data)\n let address_components = {}\n for (var i = 0; i < place[0].address_components.length; i++) {\n var addressType = place[0].address_components[i].types[0]\n switch (addressType) {\n case 'postal_code':\n address_components.postal_code = place[0].address_components[i].short_name\n break\n case 'street_number':\n address_components.street_number = place[0].address_components[i].short_name\n break\n case 'route':\n address_components.route = place[0].address_components[i].short_name\n break\n case 'locality':\n address_components.locality = place[0].address_components[i].short_name\n break\n case 'administrative_area_level_1':\n address_components.administrative_area_level_1 = place[0].address_components[i].short_name\n break\n default:\n break\n }\n let form = this.state.form\n form.fullAddress = `${address_components.street_number} ${address_components.route} ${\n address_components.locality\n }`\n form.us_state = address_components.administrative_area_level_1\n form.postal_code = address_components.postal_code\n this.setState({\n form\n })\n }\n }\n async onClick() {\n this.setState({ loading: true })\n const isFormValid = this.checkValidation()\n if (isFormValid) {\n const votingKey = this.getVotingKey()\n console.log('voting', votingKey)\n const isValid = await this.getKeysManager().isVotingActive(votingKey)\n console.log(isValid)\n if (isValid) {\n // add loading screen\n await this.sendTxToContract()\n } else {\n this.setState({ loading: false })\n helpers.generateAlert('warning', 'Warning!', messages.invalidaVotingKey)\n return\n }\n }\n }\n async sendTxToContract() {\n this.getMetadataContract()\n .createMetadata({\n firstName: this.state.form.firstName,\n lastName: this.state.form.lastName,\n licenseId: this.state.form.licenseId,\n fullAddress: this.state.form.fullAddress,\n state: this.state.form.us_state,\n zipcode: this.state.form.postal_code,\n expirationDate: moment(this.state.form.expirationDate).unix(),\n votingKey: this.getVotingKey(),\n hasData: this.state.hasData\n })\n .then(receipt => {\n console.log(receipt)\n this.setState({ loading: false })\n helpers.generateAlert('success', 'Congratulations!', 'Your metadata was sent!')\n })\n .catch(error => {\n console.error(error.message)\n let errDescription\n if (error.message.includes(constants.userDeniedTransactionPattern))\n errDescription = `Error: ${constants.userDeniedTransactionPattern}`\n else errDescription = error.message\n this.setState({ loading: false })\n var msg = `\n Something went wrong!

\n ${errDescription}\n `\n helpers.generateAlert('error', 'Error!', msg)\n })\n }\n onChangeFormField(event) {\n const field = event.target.id\n const value = event.target.value\n let form = this.state.form\n\n form[field] = value\n this.setState({ form })\n }\n render() {\n const { netId } = this.props.web3Config\n const classNameHiddenIfNotCoreNetwork = netId !== helpers.netIdByName('core') ? 'display-none' : ''\n\n if (!this.isValidVotingKey) {\n return null\n }\n const BtnAction = this.state.hasData ? 'Update' : 'Set'\n const AutocompleteItem = ({ formattedSuggestion }) => (\n
\n {formattedSuggestion.mainText} {formattedSuggestion.secondaryText}\n
\n )\n\n const inputProps = {\n value: this.state.form.fullAddress,\n onChange: this.onChangeAutoComplete,\n id: 'address'\n }\n let loader = this.state.loading ? : ''\n let createKeyBtn = (\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n

\n \n The entered address will be displayed as Unconfirmed and will be used if you don't have Registered Address(es)\n in{' '}\n \n PoPA DApp\n \n . You have to use PoPA to register and confirm your address(es).\n

\n
\n )\n\n let content = createKeyBtn\n const titleContainer = (\n
\n {this.props.viewTitle}\n
\n )\n\n return (\n
\n {loader}\n {titleContainer}\n {content}\n
\n )\n }\n}\n\nexport default App\n","import React from 'react'\n\nlet Socials = () => {\n const socialItems = [\n {\n icon: 'socials-i_twitter',\n title: 'Twitter',\n url: 'https://twitter.com/lukso_io'\n },\n // {\n // icon: 'socials-i_poa',\n // title: 'POA Network',\n // url: 'https://poa.network'\n // },\n {\n icon: 'socials-i_telegram',\n title: 'Telegram',\n url: 'https://t.me/oraclesnetwork'\n },\n {\n icon: 'socials-i_github',\n title: 'GitHub',\n url: 'https://github.com/lukso-network/'\n }\n ]\n\n return (\n
\n {socialItems.map((item, index) => (\n \n {item.title}\n \n ))}\n
\n )\n}\n\nexport default Socials\n","import React from 'react'\nimport Socials from './Socials'\nimport { constants } from './constants'\n\nconst Footer = ({ netId }) => {\n const footerClassName = netId in constants.NETWORKS && constants.NETWORKS[netId].TESTNET ? 'sokol' : 'sokol'\n\n return (\n
\n
\n \n \n \n

Built by POA. All rights reserved.

\n \n
\n
\n )\n}\n\nexport default Footer\n","import React from 'react'\nimport { NavLink } from 'react-router-dom'\n\nconst NavigationLinks = ({ navigationData, baseRootPath }) => {\n return navigationData.map((item, index) => (\n \n \n {item.title}\n \n ))\n}\n\nexport default NavigationLinks\n","import React from 'react'\nimport { NavLink } from 'react-router-dom'\n\nconst MobileMenuLinks = ({ onMenuToggle, navigationData }) => {\n return (\n
\n {navigationData.map((item, index) => (\n \n \n {item.title}\n \n ))}\n
\n )\n}\n\nexport default MobileMenuLinks\n","import React from 'react'\nimport Select from 'react-select'\nimport logoBase from './images/logos/logo_validators_dapp@2x.png'\nimport logoSokol from './images/logos/Lukso_Wordmark_navy.png'\nimport menuIconBase from './images/icons/icon-menu.svg'\nimport menuIconSokol from './images/icons/icon-menu-sokol.svg'\nimport menuOpenIconBase from './images/icons/icon-close.svg'\nimport menuOpenIconSokol from './images/icons/icon-close-sokol.svg'\nimport NavigationLinks from './NavigationLinks'\nimport MobileMenuLinks from './MobileMenuLinks'\nimport { constants } from './constants'\n\nconst Header = ({ netId, onChange, injectedWeb3, showMobileMenu, onMenuToggle, baseRootPath, navigationData }) => {\n const thisIsTestnet = netId in constants.NETWORKS && constants.NETWORKS[netId].TESTNET\n const headerClassName = thisIsTestnet ? 'sokol' : ''\n const logoImageName = thisIsTestnet ? logoSokol : logoBase\n const menuIcon = thisIsTestnet ? menuIconSokol : menuIconBase\n const menuOpenIcon = thisIsTestnet ? menuOpenIconSokol : menuOpenIconBase\n\n let select\n let options = []\n\n for (const _netId in constants.NETWORKS) {\n options.push({ value: _netId, label: `Network: ${constants.NETWORKS[_netId].NAME}` })\n }\n\n if (!injectedWeb3) {\n select = (\n \n )\n }\n return (\n
\n {showMobileMenu && (\n
\n {}\n
\n )}\n
\n \n \"\"\n \n Validators\n
\n \n
\n
\n \n
\n {select}\n
\n
\n )\n}\n\nexport default Header\n","import { constants } from '../constants'\n\nfunction addressesURL(branch) {\n const URL = `https://raw.githubusercontent.com/${constants.organization}/${constants.repoName}/${branch}/${\n constants.addressesSourceFile\n }`\n console.log(URL)\n return URL\n}\n\nfunction ABIURL(branch, contract) {\n const URL = `https://raw.githubusercontent.com/${constants.organization}/${constants.repoName}/${branch}/abis/${\n constants.ABIsSources[contract]\n }`\n console.log(URL)\n return URL\n}\n\nfunction getABI(branch, contract) {\n let addr = helpers.ABIURL(branch, contract)\n return fetch(addr).then(function(response) {\n return response.json()\n })\n}\n\nconst helpers = {\n addressesURL,\n ABIURL,\n getABI\n}\n\nexport default helpers\n","import { constants } from '../constants'\nimport helpers from './helpers'\n\nexport default class KeysManager {\n async init({ web3, netId, addresses }) {\n const { KEYS_MANAGER_ADDRESS } = addresses\n console.log('Keys Manager address ', KEYS_MANAGER_ADDRESS)\n\n const KeysManagerAbi = await helpers.getABI(constants.NETWORKS[netId].BRANCH, 'KeysManager')\n\n this.instance = new web3.eth.Contract(KeysManagerAbi, KEYS_MANAGER_ADDRESS)\n }\n async isVotingActive(votingKey) {\n return await this.instance.methods.isVotingActive(votingKey).call()\n }\n async miningKeyByVoting(votingKey) {\n return await this.instance.methods.miningKeyByVoting(votingKey).call()\n }\n async getVotingByMining(miningKey) {\n return await this.instance.methods.getVotingByMining(miningKey).call()\n }\n}\n","import helpers from './helpers'\nimport { constants } from '../constants'\n\nconst REGISTER_ADDRESS_EVENT_NAME = 'LogAddressRegistered'\n\nexport default class ProofOfPhysicalAddress {\n async init({ web3, netId, addresses }) {\n const { PROOF_OF_PHYSICAL_ADDRESS } = addresses\n\n const branch = constants.NETWORKS[netId].BRANCH\n if (branch !== 'core') {\n throw new Error(`ProofOfPhysicalAddress contract not deployed on network \"${branch}\"`)\n }\n const proofOfPhysicalAddressAbi = await helpers.getABI(branch, 'ProofOfPhysicalAddress')\n this.instance = new web3.eth.Contract(proofOfPhysicalAddressAbi, PROOF_OF_PHYSICAL_ADDRESS)\n\n this.getPhysicalAddressesOfWalletAddress = this.getPhysicalAddressesOfWalletAddress.bind(this)\n this.getAllEvents = this.getAllEvents.bind(this)\n this.getAllAddressRegisteredEvents = this.getAllAddressRegisteredEvents.bind(this)\n this.getPhysicalAddressesByWalletAddressAndKeccakIdentifierArray = this.getPhysicalAddressesByWalletAddressAndKeccakIdentifierArray.bind(\n this\n )\n }\n\n /**\n * Given a wallet address, return a promise that resolves to an array of physical addresses from PoPA contract or null.\n * If a cached registeredAddressEvents is provided, it will be used to get the corresponding keccakIdentifiers from it.\n * @param {String} walletAddress\n * @param {Object[]} registeredAddressEvents (optional)\n * @return {Promise}\n */\n async getPhysicalAddressesOfWalletAddress(walletAddress, registeredAddressEvents) {\n let result = null\n try {\n if (!registeredAddressEvents) {\n registeredAddressEvents = await this.getAllEvents(REGISTER_ADDRESS_EVENT_NAME)\n }\n\n let keccakIdentifiers = registeredAddressEvents\n .filter(event => event.returnValues.wallet === walletAddress)\n .map(event => event.returnValues.keccakIdentifier)\n\n if (keccakIdentifiers.length > 0) {\n let physicalAddresses = await this.getPhysicalAddressesByWalletAddressAndKeccakIdentifierArray(\n walletAddress,\n keccakIdentifiers\n )\n result = physicalAddresses.length > 0 ? physicalAddresses : result\n }\n } catch (e) {\n console.error(`Error in getPhysicalAddressesOfWalletAddress`, e)\n }\n return result\n }\n\n /**\n * Given a walletAddress and an array of keccakIdentifiers, return a promise that resolves to an array\n * of the corresponding confirmed and unconfirmed physical addresses, or an empty array (unregistered\n * addresses are not included).\n * @param {String} walletAddress\n * @param {String[]} keccakIdentifierArray\n * @return {Promise}\n */\n async getPhysicalAddressesByWalletAddressAndKeccakIdentifierArray(walletAddress, keccakIdentifierArray) {\n let promises = keccakIdentifierArray.map(keccakIdentifier => {\n return this.instance.methods\n .userAddressByKeccakIdentifier(walletAddress, keccakIdentifier)\n .call()\n .then(async addressStatusTuple => {\n const addressFound = addressStatusTuple[0]\n const addressIndex = addressStatusTuple[1]\n const addressConfirmed = addressStatusTuple[2]\n if (addressFound === false) {\n return null\n } else {\n return {\n isConfirmed: addressConfirmed,\n data: await this.instance.methods.userAddress(walletAddress, addressIndex).call()\n }\n }\n })\n .catch(e => {\n console.error(`Error in getPhysicalAddressesByWalletAddressAndKeccakIdentifierArray`, e)\n return null\n })\n })\n let physicalAddressArray = await Promise.all(promises)\n return physicalAddressArray.filter(address => address !== null)\n }\n\n /**\n * Get all event objects, with the given eventName.\n * @param {String} eventName\n * @return {Promise}\n */\n async getAllEvents(eventName) {\n let result = []\n try {\n result = await this.instance.getPastEvents(eventName, { fromBlock: 0, toBlock: 'latest' })\n } catch (e) {\n console.error(e)\n }\n return result\n }\n\n /**\n * Get all addressRegistered event objects.\n * @return {Promise}\n */\n async getAllAddressRegisteredEvents() {\n return this.getAllEvents(REGISTER_ADDRESS_EVENT_NAME)\n }\n}\n","import helpers from './helpers'\nimport { constants } from '../constants'\n\nexport default class PoaConsensus {\n async init({ web3, netId, addresses }) {\n const { POA_ADDRESS } = addresses\n console.log('POA Address ', POA_ADDRESS)\n\n const poaConsensusAbi = await helpers.getABI(constants.NETWORKS[netId].BRANCH, 'PoaNetworkConsensus')\n\n this.instance = new web3.eth.Contract(poaConsensusAbi, POA_ADDRESS)\n }\n async getValidators() {\n console.log(this.instance)\n return await this.instance.methods.getValidators().call()\n }\n async isMasterOfCeremonyRemoved() {\n if (this.instance.methods.isMasterOfCeremonyRemoved) {\n return await this.instance.methods.isMasterOfCeremonyRemoved().call()\n }\n return false\n }\n}\n","import PoaConsensus from './PoaConsensus.contract'\nimport moment from 'moment'\nimport helpers from './helpers'\nimport helpersGlobal from '../helpers'\nimport { messages } from '../messages'\nimport { constants } from '../constants'\n\nvar toAscii = function(hex) {\n var str = '',\n i = 0,\n l = hex.length\n if (hex.substring(0, 2) === '0x') {\n i = 2\n }\n for (; i < l; i += 2) {\n var code = parseInt(hex.substr(i, 2), 16)\n if (code === 0) continue // this is added\n str += String.fromCharCode(code)\n }\n return str\n}\n\nexport default class Metadata {\n async init({ web3, netId, addresses }) {\n this.web3 = web3\n this.gasPrice = web3.utils.toWei('2', 'gwei')\n\n const { METADATA_ADDRESS, MOC } = addresses\n console.log('Metadata contract Address: ', METADATA_ADDRESS)\n\n const MetadataAbi = await helpers.getABI(constants.NETWORKS[netId].BRANCH, 'ValidatorMetadata')\n\n this.metadataInstance = new web3.eth.Contract(MetadataAbi, METADATA_ADDRESS)\n this.MOC_ADDRESS = MOC\n this.addresses = addresses\n\n const poaInstance = new PoaConsensus()\n await poaInstance.init({ web3, netId, addresses })\n this.mocRemoved = await poaInstance.isMasterOfCeremonyRemoved()\n this.miningKeys = await poaInstance.getValidators()\n }\n async createMetadata({\n firstName,\n lastName,\n licenseId,\n fullAddress,\n state,\n zipcode,\n expirationDate,\n votingKey,\n hasData\n }) {\n let methodToCall = hasData ? 'changeRequest' : 'createMetadata'\n return await this.metadataInstance.methods[methodToCall](\n this.web3.utils.fromAscii(firstName),\n this.web3.utils.fromAscii(lastName),\n this.web3.utils.fromAscii(licenseId),\n fullAddress,\n this.web3.utils.fromAscii(state),\n this.web3.utils.fromAscii(zipcode),\n expirationDate\n ).send({ from: votingKey, gasPrice: this.gasPrice })\n }\n\n getMocData() {\n // Barinov, Igor\t\t755 Bounty Dr 202\tFoster City\tCA\t94404 \t41\t2206724\t07/23/2021\n return {\n firstName: 'Igor',\n lastName: 'Barinov',\n fullAddress: '755 Bounty Dr 202, Foster City',\n createdDate: '2017-12-18',\n updatedDate: '',\n expirationDate: '2021-07-23',\n licenseId: '2206724',\n us_state: 'CA',\n postal_code: '94404'\n }\n }\n\n async getValidatorData(miningKey) {\n if (!miningKey) {\n helpersGlobal.generateAlert('warning', 'Warning!', messages.invalidaVotingKey)\n return {}\n }\n\n let validatorData = await this.metadataInstance.methods.validators(miningKey).call()\n let createdDate = validatorData.createdDate > 0 ? moment.unix(validatorData.createdDate).format('YYYY-MM-DD') : ''\n let updatedDate = validatorData.updatedDate > 0 ? moment.unix(validatorData.updatedDate).format('YYYY-MM-DD') : ''\n let expirationDate =\n validatorData.expirationDate > 0 ? moment.unix(validatorData.expirationDate).format('YYYY-MM-DD') : ''\n return {\n firstName: toAscii(validatorData.firstName),\n lastName: toAscii(validatorData.lastName),\n fullAddress: validatorData.fullAddress,\n createdDate,\n updatedDate,\n expirationDate,\n licenseId: toAscii(validatorData.licenseId),\n us_state: toAscii(validatorData.state),\n postal_code: toAscii(validatorData.zipcode)\n }\n }\n\n async getAllValidatorsData(netId) {\n let all = []\n return new Promise(async (resolve, reject) => {\n console.log(this.miningKeys)\n const mocAddressLowercase = this.MOC_ADDRESS.toLowerCase()\n for (let key of this.miningKeys) {\n let data\n if (key.toLowerCase() === mocAddressLowercase) {\n if (this.mocRemoved) {\n continue\n }\n data = this.getMocData()\n } else {\n data = await this.getValidatorData(key)\n }\n data.address = key\n all.push(data)\n }\n resolve(all)\n })\n }\n\n async getPendingChange(miningKey) {\n if (!miningKey) {\n helpersGlobal.generateAlert('warning', 'Warning!', messages.invalidaVotingKey)\n return {}\n }\n\n let pendingChanges = await this.metadataInstance.methods.pendingChanges(miningKey).call()\n let createdDate = pendingChanges.createdDate > 0 ? moment.unix(pendingChanges.createdDate).format('YYYY-MM-DD') : ''\n let updatedDate = pendingChanges.updatedDate > 0 ? moment.unix(pendingChanges.updatedDate).format('YYYY-MM-DD') : ''\n let expirationDate =\n pendingChanges.expirationDate > 0 ? moment.unix(pendingChanges.expirationDate).format('YYYY-MM-DD') : ''\n return {\n firstName: toAscii(pendingChanges.firstName),\n lastName: toAscii(pendingChanges.lastName),\n fullAddress: pendingChanges.fullAddress,\n createdDate,\n updatedDate,\n expirationDate,\n licenseId: toAscii(pendingChanges.licenseId),\n us_state: toAscii(pendingChanges.state),\n postal_code: toAscii(pendingChanges.zipcode),\n minThreshold: pendingChanges.minThreshold\n }\n }\n\n async getAllPendingChanges() {\n let pendingChanges = []\n for (let key of this.miningKeys) {\n let pendingChange = await this.getPendingChange(key)\n pendingChange.address = key\n if (pendingChange.postal_code) {\n pendingChanges.push(pendingChange)\n }\n }\n return pendingChanges\n }\n\n async confirmPendingChange({ miningKeyToConfirm, senderVotingKey, senderMiningKey }) {\n const { methods } = this.metadataInstance\n let alreadyConfirmed\n if (methods.isValidatorAlreadyVoted) {\n alreadyConfirmed = await methods.isValidatorAlreadyVoted(miningKeyToConfirm, senderMiningKey).call()\n } else {\n alreadyConfirmed = await methods.isAddressAlreadyVoted(miningKeyToConfirm, senderVotingKey).call()\n }\n console.log(alreadyConfirmed)\n if (alreadyConfirmed) {\n throw {\n message: `You already confirmed this change.`\n }\n }\n if (senderMiningKey === miningKeyToConfirm) {\n throw {\n message: `You cannot confirm your own changes.\\n\n Please ask other validators to verify your new information.`\n }\n } else if (senderMiningKey === '0x0000000000000000000000000000000000000000') {\n throw {\n message: messages.invalidaVotingKey\n }\n }\n return await this.metadataInstance.methods\n .confirmPendingChange(miningKeyToConfirm)\n .send({ from: senderVotingKey, gasPrice: this.gasPrice })\n }\n\n async getConfirmations({ miningKey }) {\n return await this.metadataInstance.methods.confirmations(miningKey).call()\n }\n\n async getMinThreshold({ miningKey }) {\n let validatorData = await this.metadataInstance.methods.validators(miningKey).call()\n return validatorData.minThreshold\n }\n\n async finalize({ miningKeyToConfirm, senderVotingKey, senderMiningKey }) {\n const confirmations = await this.getConfirmations({\n miningKey: miningKeyToConfirm\n })\n const getMinThreshold = await this.getMinThreshold({\n miningKey: miningKeyToConfirm\n })\n if (senderMiningKey === '0x0000000000000000000000000000000000000000') {\n throw {\n message: messages.invalidaVotingKey\n }\n }\n if (Number(confirmations[0]) < Number(getMinThreshold)) {\n throw {\n message: `There is not enough confimations.\\n\n The minimum threshold to finalize is ${getMinThreshold}.`\n }\n }\n return await this.metadataInstance.methods\n .finalize(miningKeyToConfirm)\n .send({ from: senderVotingKey, gasPrice: this.gasPrice })\n }\n}\n","import Web3 from 'web3'\nimport helpers from './helpers'\nimport { constants } from './constants'\n\nlet getWeb3 = () => {\n return new Promise(function(resolve, reject) {\n // Wait for loading completion to avoid race conditions with web3 injection timing.\n window.addEventListener('load', async function() {\n let web3 = null\n\n // Checking if Web3 has been injected by the browser (Mist/MetaMask)\n if (window.ethereum) {\n web3 = new Web3(window.ethereum)\n console.log('Injected web3 detected.')\n try {\n await window.ethereum.enable()\n } catch (e) {\n reject({ message: 'You have denied access to your accounts' })\n return\n }\n } else if (window.web3) {\n web3 = new Web3(window.web3.currentProvider)\n console.log('Injected web3 detected.')\n }\n\n let errorMsg = null\n let netIdName\n let netId\n let injectedWeb3 = web3 !== null\n let defaultAccount = null\n\n if (web3) {\n netId = await web3.eth.net.getId()\n console.log('netId', netId)\n\n if (!(netId in constants.NETWORKS)) {\n netIdName = 'ERROR'\n errorMsg = `You aren't connected to POA Network.\n Please, switch to POA Network and refresh the page.\n Check POA Network Wiki for more info.`\n console.log('This is an unknown network.')\n } else {\n netIdName = constants.NETWORKS[netId].NAME\n console.log(`This is ${netIdName}`)\n }\n\n const accounts = await web3.eth.getAccounts()\n\n defaultAccount = accounts[0] || null\n } else {\n // Fallback to localhost if no web3 injection.\n\n console.log('No web3 instance injected, using Local web3.')\n console.error('Metamask not found')\n\n if (window.location.host.indexOf('sokol') !== -1) {\n netId = helpers.netIdByName('sokol')\n } else if (window.location.host.indexOf('dai-test') !== -1) {\n netId = helpers.netIdByName('dai-test')\n } else if (window.location.host.indexOf('dai') !== -1) {\n netId = helpers.netIdByName('dai')\n } else {\n netId = helpers.netIdByName('core')\n }\n\n const network = constants.NETWORKS[netId]\n\n web3 = new Web3(new Web3.providers.HttpProvider(network.RPC))\n netIdName = network.NAME\n }\n\n document.title = `${netIdName} - POA Validators DApp`\n\n if (errorMsg !== null) {\n reject({ message: errorMsg })\n return\n }\n\n resolve({\n web3Instance: web3,\n netId,\n netIdName,\n injectedWeb3,\n defaultAccount\n })\n })\n })\n}\n\nconst setWeb3 = netId => {\n const provider = new Web3.providers.HttpProvider(constants.NETWORKS[netId].RPC)\n return new Web3(provider)\n}\n\nexport default getWeb3\n\nexport { setWeb3 }\n","import { constants } from '../constants'\nimport helpers from './helpers'\nimport helpersGlobal from '../helpers'\nimport messages from '../messages'\n/*const local = {\n METADATA_ADDRESS: '0xcBB2912666c7e8023B7ec78B6842702eB26336aC',\n KEYS_MANAGER_ADDRESS: '0x2b1dbc7390a65dc40f7d64d67ea11b4d627dd1bf',\n POA_ADDRESS: '0x83451c8bc04d4ee9745ccc58edfab88037bc48cc',\n MOC: '0xCf260eA317555637C55F70e55dbA8D5ad8414Cb0'\n}*/\n\nexport default web3Config => {\n const branch = constants.NETWORKS[web3Config.netId].BRANCH\n return new Promise((resolve, reject) => {\n fetch(helpers.addressesURL(branch))\n .then(response => {\n response.json().then(json => {\n resolve({ addresses: json, web3Config })\n })\n })\n .catch(function(err) {\n let addr = helpers.addressesURL(branch)\n let msg = `\n Something went wrong!

\n ${messages.wrongRepo(addr)}\n `\n helpersGlobal.generateAlert('error', 'Error!', msg)\n reject(err)\n })\n })\n}\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl)\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.')\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (response.status === 404 || response.headers.get('content-type').indexOf('javascript') === -1) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl)\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.')\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","import 'react-select/dist/react-select.css'\nimport AllValidators from './AllValidators'\nimport App from './App'\nimport Footer from './Footer'\nimport Header from './Header'\nimport KeysManager from './contracts/KeysManager.contract'\nimport ProofOfPhysicalAddress from './contracts/ProofOfPhysicalAddress.contract'\nimport Loading from './Loading'\nimport Metadata from './contracts/Metadata.contract'\nimport React, { Component } from 'react'\nimport ReactDOM from 'react-dom'\nimport createBrowserHistory from 'history/createBrowserHistory'\nimport getWeb3, { setWeb3 } from './getWeb3'\nimport helpers from './helpers'\nimport networkAddresses from './contracts/addresses'\nimport registerServiceWorker from './registerServiceWorker'\nimport { Router, Route } from 'react-router-dom'\nimport { messages } from './messages'\nimport { constants } from './constants'\n\nconst history = createBrowserHistory()\nconst baseRootPath = '/poa-dapps-validators'\nconst setMetadataPath = `${baseRootPath}/set`\nconst pendingChangesPath = `${baseRootPath}/pending-changes`\nconst navigationData = [\n {\n icon: 'link-icon-all',\n title: 'All',\n url: baseRootPath\n },\n {\n icon: 'link-icon-set-metadata',\n title: 'Set Metadata',\n url: setMetadataPath\n },\n {\n icon: 'link-icon-pending-changes',\n title: 'Pending Changes',\n url: pendingChangesPath\n }\n]\n\nclass AppMainRouter extends Component {\n constructor(props) {\n super(props)\n\n history.listen(this.onRouteChange.bind(this))\n\n this.onSetRender = this.onSetRender.bind(this)\n this.onPendingChangesRender = this.onPendingChangesRender.bind(this)\n this.onAllValidatorsRender = this.onAllValidatorsRender.bind(this)\n this.onConfirmPendingChange = this.onConfirmPendingChange.bind(this)\n this.onFinalize = this.onFinalize.bind(this)\n this.onSearch = this.onSearch.bind(this)\n this.onNetworkChange = this.onNetworkChange.bind(this)\n this.toggleMobileMenu = this.toggleMobileMenu.bind(this)\n this.getNetIdClass = this.getNetIdClass.bind(this)\n\n this.state = {\n showSearch: history.location.pathname !== setMetadataPath,\n keysManager: null,\n metadataContract: null,\n poaConsensus: null,\n votingKey: null,\n miningKey: null,\n loading: true,\n searchTerm: '',\n injectedWeb3: true,\n netId: '',\n error: false,\n title: navigationData[0].title,\n showMobileMenu: false\n }\n getWeb3()\n .then(async web3Config => {\n return networkAddresses(web3Config)\n })\n .then(async config => {\n const { web3Config, addresses } = config\n await this.initContracts({\n web3: web3Config.web3Instance,\n netId: web3Config.netId,\n addresses\n })\n this.setState({\n votingKey: web3Config.defaultAccount,\n miningKey: await this.state.keysManager.miningKeyByVoting(web3Config.defaultAccount),\n injectedWeb3: web3Config.injectedWeb3\n })\n })\n .catch(error => {\n console.error(error.message)\n this.setState({ loading: false, error: true })\n helpers.generateAlert('error', 'Error!', error.message)\n })\n }\n async initContracts({ web3, netId, addresses }) {\n const keysManager = new KeysManager()\n await keysManager.init({\n web3,\n netId,\n addresses\n })\n const metadataContract = new Metadata()\n await metadataContract.init({\n web3,\n netId,\n addresses\n })\n let proofOfPhysicalAddressContract = new ProofOfPhysicalAddress()\n try {\n await proofOfPhysicalAddressContract.init({\n web3,\n netId,\n addresses\n })\n } catch (e) {\n console.error('Error initializing ProofOfPhysicalAddress', e)\n proofOfPhysicalAddressContract = null\n }\n this.setState({\n keysManager,\n metadataContract,\n proofOfPhysicalAddressContract,\n loading: false,\n netId\n })\n }\n onRouteChange() {\n if (history.location.pathname === setMetadataPath) {\n this.setState({ showSearch: false })\n\n if (this.state.injectedWeb3 === false) {\n helpers.generateAlert('warning', 'Warning!', 'Metamask was not found')\n }\n } else {\n this.setState({ showSearch: true })\n }\n }\n checkForVotingKey(cb) {\n if (this.state.votingKey && !this.state.loading) {\n return cb()\n }\n helpers.generateAlert('warning', 'Warning!', messages.noMetamaskAccount)\n return ''\n }\n onSetRender() {\n if (!this.state.votingKey) {\n return '' // prevent rendering if the keys are not loaded yet\n }\n return \n }\n toggleMobileMenu = () => {\n this.setState(prevState => ({ showMobileMenu: !prevState.showMobileMenu }))\n }\n\n async _onBtnClick({ event, methodToCall, successMsg }) {\n event.preventDefault()\n this.checkForVotingKey(async () => {\n this.setState({ loading: true })\n const miningKey = event.currentTarget.getAttribute('miningkey')\n try {\n let result = await this.state.metadataContract[methodToCall]({\n miningKeyToConfirm: miningKey,\n senderVotingKey: this.state.votingKey,\n senderMiningKey: this.state.miningKey\n })\n console.log(result)\n this.setState({ loading: false })\n helpers.generateAlert('success', 'Congratulations!', successMsg)\n } catch (error) {\n this.setState({ loading: false })\n console.error(error.message)\n helpers.generateAlert('error', 'Error!', error.message)\n }\n })\n }\n async onConfirmPendingChange(event) {\n await this._onBtnClick({\n event,\n methodToCall: 'confirmPendingChange',\n successMsg: 'You have successfully confirmed the change!'\n })\n }\n async onFinalize(event) {\n await this._onBtnClick({\n event,\n methodToCall: 'finalize',\n successMsg: 'You have successfully finalized the change!'\n })\n }\n onPendingChangesRender() {\n return this.state.loading || this.state.error ? (\n ''\n ) : (\n \n \n \n \n )\n }\n onAllValidatorsRender() {\n return this.state.loading || this.state.error ? (\n ''\n ) : (\n \n )\n }\n getNetIdClass() {\n const { netId } = this.state\n if (netId in constants.NETWORKS) {\n return constants.NETWORKS[netId].TESTNET ? 'sokol' : ''\n }\n return ''\n }\n onSearch(term) {\n this.setState({ searchTerm: term.target.value.toLowerCase() })\n }\n async onNetworkChange(e) {\n this.setState({ loading: true })\n\n const netId = e.value\n const web3 = setWeb3(netId)\n\n networkAddresses({ netId }).then(async config => {\n const { addresses } = config\n await this.initContracts({ web3, netId, addresses })\n })\n }\n render() {\n const search = this.state.showSearch ? (\n
\n
\n \n
\n
\n ) : (\n ''\n )\n\n const loading = this.state.loading ? : ''\n\n return (\n \n
\n {loading}\n \n {search}\n \n \n \n \n \n
\n