From b83066e057013cfaa62c113fed5de14cbb63c623 Mon Sep 17 00:00:00 2001 From: Jarrad Hope Date: Sun, 17 Feb 2019 18:50:11 +0700 Subject: [PATCH] hmmm --- app/js/index.js | 114 ++++- chains.json | 982 +------------------------------------- config/blockchain.js | 2 +- config/contracts.js | 10 +- contracts/Meritocracy.sol | 21 +- 5 files changed, 121 insertions(+), 1008 deletions(-) diff --git a/app/js/index.js b/app/js/index.js index ebda217..dba8f7f 100644 --- a/app/js/index.js +++ b/app/js/index.js @@ -14,15 +14,13 @@ import Meritocracy from 'Embark/contracts/Meritocracy'; /* TODO: -- approve & allocate SNT -- withdraw SNT - list praise for contributor - listen to events to update UI, (initially on page load but within function calls) */ // Todo Resolve ENS entries const options = [ -{ 'label' : 'Jarrad (Test)', 'value' : '0xe5d882a925D9c4de439d2a109D0a0Bd5250E776F' }, +{ 'label' : 'Jarrad (Test)', 'value' : '0x926495cf9510174080ef2f7931242e85c0de2af8' }, { 'label' : 'Andreas S.', 'value' : '0x4923121411e884a4af66ec025712eba600a782d3' }, { 'label' : 'andrey.dev', 'value' : '0xA4EcA293cb578a68b190e3e07c2B170dc753fe44' }, { 'label' : 'barry', 'value' : '0xa46b0546481a04b7de049a8a20f8a9b2b2c5cc05' }, @@ -75,6 +73,9 @@ class App extends React.Component { this.handleContributorSelection = this.handleContributorSelection.bind(this); this.handleAwardChange = this.handleAwardChange.bind(this); + this.handlePraiseChange = this.handlePraiseChange.bind(this); + this.awardTokens = this.awardTokens.bind(this); + this.withdrawTokens = this.withdrawTokens.bind(this); this.state = { error: null, @@ -86,7 +87,8 @@ class App extends React.Component { selectedContributors: [], contributorList: [], // TODO: Merge these data structures? contributorData: {}, - award: 0 + award: 0, + praise: '' }; } @@ -97,7 +99,7 @@ class App extends React.Component { return this.setState({error: err.message || err}); } - console.log(web3.eth.defaultAccount); + // console.log(web3.eth.defaultAccount); var contributorData = {}; contributorData[web3.eth.defaultAccount] = { allocation: 0, @@ -108,19 +110,7 @@ class App extends React.Component { }; this.setState({contributorData: contributorData, defaultAccount : web3.eth.defaultAccount }); - // this.getRegistry(); this.getContributors(); - - // Meritocracy.methods.registryLength().call().then(_value => { - // let length = parseInt(_value); - // this.setState({ registryLength: length }); - - // for(var i=0; i < length; i++) { - // // Meritocracy.methods.registryLength().call().then(_value => { - // // }); - // } - // }); - }); } @@ -136,22 +126,31 @@ class App extends React.Component { console.log(`handleAwardChange:`, amount); } + handlePraiseChange(e) { + this.setState({ praise: e.target.value }); + } + getContributor(_address) { Meritocracy.methods.contributors(_address).call().then(_contributor => { var contributorData = this.state.contributorData; contributorData[_contributor.addr.toLowerCase()] = _contributor; // Lowercase here incase we use keys for let registry = _registry.map(Function.prototype.call, String.prototype.toLowerCase); let contributorList = options.filter(_e => { if (registry.includes(_e.value.toLowerCase())) return _e; + // TODO resolve ENS names + // EmbarkJS.Names.resolve("ethereum.eth").then(address => { + // console.log("the address for ethereum.eth is: " + address); + // }) }); this.setState({ contributorList : contributorList }); @@ -162,6 +161,73 @@ class App extends React.Component { }); } + awardTokens(e) { + let currentContributor = this.state.contributorData[this.state.defaultAccount]; + + // TODO some sanity checks + if(this.state.award <= 0) { + console.log('amount must be more than 0'); + return; + } + + + let addresses = this.state.selectedContributors.map(a => a.value); + + switch(addresses.length) { + case 0: + console.log('No Contributor Selected'); + return; + case 1: + // use award + console.log('use award'); + + try { + Meritocracy.methods.award(addresses[0], this.state.award, this.state.praise).send().then(_contributor => { + getContributor(this.state.defaultAccount); + }); + } catch(e) { + console.log('tx failed? got enough tokens to award?'); + } + break; + default: + // use awardContributors + console.log('using awardContributors'); + + try { + Meritocracy.methods.awardContributors(addresses, this.state.award, this.state.praise).send().then(_contributor => { + getContributor(this.state.defaultAccount); + }); + } catch(e) { + console.log('tx failed? got enough tokens to award?'); + } + break; + } + } + + withdrawTokens(e) { + + console.log('withdrawTokens'); + let currentContributor = this.state.contributorData[this.state.defaultAccount]; + + if (currentContributor.received == 0) { + console.log('can only call withdraw when you have tokens'); + return; + } + + if ( currentContributor.allocation > 0 ) { + console.log('you must allocate all your tokens'); + return; + } + + try { + Meritocracy.methods.withdraw().send().then(_contributor => { + getContributor(this.state.defaultAccount); + }); + } catch(e) { + console.log('tx failed? Did you allocate all your tokens first?'); + } + } + render() { const { selectedContributors, contributorList, award, contributorData, defaultAccount } = this.state; if (this.state.error) { @@ -173,7 +239,7 @@ class App extends React.Component { if(!defaultAccount) return (
Cannot Find web3.eth.defaultAccount
); const currentContributor = contributorData[defaultAccount]; - + console.log('currentContributor.allocation', defaultAccount, currentContributor.allocation); return (

Status Meritocracy

@@ -194,13 +260,13 @@ class App extends React.Component {
-
- Total Allocating: {award * selectedContributors.length} SNT
- +
+ Total Awarding: {award * selectedContributors.length} SNT
+ -

Awarded Kudos

+

Your Kudos History

- Your Received Kudos: { currentContributor.received } SNT
+ Your Received Kudos: { currentContributor.received } SNT
0x00 has sent you 500 SNT "keep up the good work" diff --git a/chains.json b/chains.json index 847a408..f2a0dee 100644 --- a/chains.json +++ b/chains.json @@ -1,989 +1,21 @@ { - "0x0399343ea5cbf9b93edc98e29ddf86d385c0997b8378ee60afc11cd14484edfb": { - "contracts": { - "0xb84d125645e94e6329e6494db63830d1c68a719c328036dce55337f79a512e27": { - "name": "SimpleStorage", - "address": "0x0139F5bD92760b0535A3BF503ff20755B56120Fe" - }, - "0x3043b04ad856d169c8f0b0509c0bc63192dc7edd92d6933c58708298a0e381be": { - "name": "ENSRegistry", - "address": "0x56c916c5229e7fc0dcc2b8dffa50A0BB7C1803D0" - }, - "0x4b412c3f4bab69e90e9938e89bf0b74320f421fc0725592bf465068b26201402": { - "name": "Resolver", - "address": "0x545CFAC6f642b8752BE942a8f4e6cD41fFd3AeEe" - }, - "0xe6d2b6a71cbbd055e47b30467a9d898344c3fad1485e895eded0244453841cfe": { - "name": "FIFSRegistrar", - "address": "0x988E079CC0D04Ed01c2c5dDca09B25DDD1F4aFE4" - }, - "0xc920172104d0372dfa1375d4c9ef05ae15569b94b88fd4b0d5a834965dc7420b": { - "name": "SimpleStorage", - "address": "0x38a6Bb08E64c2EceB89aC0d0635bD543AD4e60B8" - }, - "0xfb4295b67b9ca6e0992ff331dbd64c98b6cdb4bd896e033995691356b504077c": { - "name": "ERC20Receiver", - "address": "0xd3C99B684b4ff3E9eC0eEb8AC046Dfe1e1b309a4" - }, - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x5022174e5cC5264FBD67BC3AB055ab6109158D62" - } - } - }, - "0xc855132a1ab94dc31b77189ca76fe861dede5013d46445d9b5ad8a6da5ffb508": { + "0x888fb9ca9383ed8235e8a00cd21b2fb6e0302dd22dec12606496d5d77d23ccaf": { "contracts": { "0xfb4295b67b9ca6e0992ff331dbd64c98b6cdb4bd896e033995691356b504077c": { "name": "ERC20Receiver", - "address": "0x44bbA839B4b9B4f80Bfe016E9f9BAF7e3266c48b" + "address": "0x914ae6A1b17F455f058bDc4d4010Bb7281BD47e2" }, "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { "name": "MiniMeTokenFactory", - "address": "0x4D155a4c68196092907E6C1CD06F08D4F8D0A4e4" + "address": "0xc6b47B0d1c1Ce88D4615Fe489469C2E914fAD841" }, - "0xc6744ff8ae4483600e95a4f52780424cbf1719b99009b3ed3397c42ab683350d": { + "0x0b443399353a5650101ba464bd844ee95f00834b0b4931db54f8b4e16eed8c79": { "name": "SNT", - "address": "0x32dbB8258C4F19c72770C8f926d169e0Dff656f7" + "address": "0xB2F001F37DA4D3a9d87eBD6Dc4325Aa82c2A83ad" }, - "0xfd7ba1d8638b477661cbd597414b0b4a5b6e277d2fc2947e08e417fc2453becb": { + "0x4ece53dda87e5f51d09fafe5ff4c2a6df503b7a04de12939a589024a9c2831a1": { "name": "Meritocracy", - "address": "0x868C59B9FF6361Fe66d47a907BbF670F86efE455" - }, - "0x91a7635ace87d0dd04a63f8cd62203bd1da3258132f899dcc9e26ab3012f616d": { - "name": "Meritocracy", - "address": "0x82F6d95A2CbbaCe7CE7BD37e036443276Cc1c3A3" - } - } - }, - "0x9ed7a625c779501885ef8376379ed5492745c30cfcd919bed3cc3cc4e01d522f": { - "contracts": { - "0xfb4295b67b9ca6e0992ff331dbd64c98b6cdb4bd896e033995691356b504077c": { - "name": "ERC20Receiver", - "address": "0x135d5ec78e34F71451594a5755513fA440A361DB" - }, - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x000F6f673b33Be7d4Ce7256654205C7482686fBf" - }, - "0x7a531eedff91102db0ffd706a0021b770fba77517d5ab6cc4ae19c6d22c287e7": { - "name": "SNT", - "address": "0x97b991b76Eb93D52808715C52F5bF0a6EA81167B" - }, - "0x380d1fdd01cac4effd59d4a2b82246f9971f65ce4b0abbd0c8158a84375cc36a": { - "name": "Meritocracy", - "address": "0x755f52Afe8166011B978aE142465c25b9D3F9ab3" - }, - "0xbc4cdf618077fe963006a9927c9981f7c83011ab64abc40b4c0e8a2b95bb969b": { - "name": "Meritocracy", - "address": "0x68B8c6cB36B5E476Bb31598C82D91810cda740B8" - }, - "0xc2fcb69e0c06e6b612c9773971f962b871d8f10abcbe5752c2b21f2222e7d043": { - "name": "Meritocracy", - "address": "0x3b09228F1C2e5242Af9681D2854AeA3A112105d2" - }, - "0x1411ee9f114a60cef8802a53ea89c2640c01fba8139488cbeccde02c58fea5e6": { - "name": "Meritocracy", - "address": "0x7D1Ac123Ffdf90f911343cb7FeDd3902caC303B6" - } - } - }, - "0xb48197af1aae17ea5658f53c14ec0696b7dc334014fdeb4fe0074ddc3fa7aa6d": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x4bbf0c67cd823e9483916babf64dda6594cc353a2346fb1d1e3a7b263ac151a4": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x6d67cbf7e364b4d874227e87a8041b687f45e80b542140fa74b6965e63232234": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xcfe27940c49fda8b05e99d82e681de9a8e33271836453de3feb2ffed679ae8ec": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xdca0553778dd8ac04b5924d7b0ca32326675fcfb352f7afd1caebf333fb58ffe": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x416f6c9811112226f50ce2cfa1ba6f68644912ef8fc592fc76162a0071ed6316": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x9ac1ae00a36c65a3db2af6ecb13c957c1eaeb0dad4b1e144f24705eb453e2916": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x59d06ad28a7220c75b8ea8e716c77e4ce4046cf83be3f2780bb0b38037db2182": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x0d79b3003b37610807836d281028bb229626793ff4afdda711bc553c065c6ae3": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x79c20c953b22dfa8d1149a0c931c58a09dc71940be88b30b6aaffcaa40bf91f5": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x43259ba4de7511b3a4e8d131589377f6cb8f10d442d102ecca6c7fde10c3f28e": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x8c86836e9f7da95cb0ffc1876193905c9efa89ecde8bbabf9d956dab37f60040": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xf9390365d3359d82130240fb82d641f549c765a583bc94e849a8f09244a89936": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9e5bab5e4c9e4d611f84e5a5826401806fb721215d932957d8754493ae753c0f": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xe059e945b2ccecf2ab8f62f04e80a9b0e11f61636f14c25d2d19ba4dd6446b3b": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0xe312465a5009642014a9880698b4c2a3ea2bd910d7ab5f0aabc35aec44d717af": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x968a54017c9a8d782e2efefe8ab87a536e5dea2d1c6e23b5a2f59fe30b9f5d11": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0xe312465a5009642014a9880698b4c2a3ea2bd910d7ab5f0aabc35aec44d717af": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x99cacc9d542f7e469d3bd080aa821ec2488479f59b5757fe537431153e06eeaa": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0xe312465a5009642014a9880698b4c2a3ea2bd910d7ab5f0aabc35aec44d717af": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x70d2e63eafb7f74ae0ca38ee78726e13c0a527cf68ab7d6a2cce6faa0eab71b4": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xa5dedbca74d432e3d988a51e6419156d895b5b06eb37d92daebb9d739043bc3b": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xc8557bde399a5c9c58f215a5374178df120f3b74a969b5547938234a0e088677": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5a8718add47b3578b845352cc33532ac62a310dd1fcdd81b6cf2936b7f5c6416": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x470337dc98ae7d33f1e4892e624f6456f37d8c7e8d9f16f2595c7da4b720ab11": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x47408820a01b898884d3388cb4dc9f9a17018f108abe46aa71296a4533e04a71": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xe4ed11e7aa5323ef8eb9ac49ac3c4f00d591a8d2246fe34f6ab0dfadad87738a": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x7ff69151ae19f6233fe8aaa04ab443f2b9479fc0ab4a6c38b2a1a82575e3b834": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xeb61fa5a51b5c39dd608fb5a921348d3df15f2ce8c87d394d72b78d64387b217": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x584fda5868cbb23543b6209581e7a357fb5da4572dd3d304ea212edb597ee33f": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x5bdfbc3deebfd6f93f0e9091698c98dc6ecfefd3ca651994768344157a6777c2": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x75a964848f5a73d561fdf33e0fd7723e17b732f1b36f73a011c69ebd3b4a96de": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x4b7cc7dfc04001d290a77097aced8ac8aeab9d8773974285c5fd3785d5bda31c": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xe5d3caa4937f2b8f21ad59b60b54e218d880d8b553f6df1ee7400e26e2152568": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x9bb158c02026497d7e939552f0053370f9b6f9a6e18169d415f1a5cf4615da5d": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xccfbd08005b654b98eddea1e397bb3bfd6b052d859e1e039d2f1394b4fdcafb6": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x58a7b935b0db7ec81ac202f0b7f4d283884529ad6a85dbba606e27440a9886c0": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xb8da11e7407e6717c8edd2a29b6a886e6e0e216cd67bb8012c6ce8b2c3fc5eec": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xbbbc720944d8b4aff89cc132129510aff02da9341e5c314d4d37836432bf72aa": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x40860ed51f5caf441a5f2ccb1bcaeb1cbbbb967e2b2d442d77c23a7fd63760fc": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x21ce31a0aff84209e8fbc7453a342ce93420b4712fcd285fb635c1385d7b91b8": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xd8973a39f5a008b6939c7f9755e40ed0dec169d1a6cba87f469898d7a7f1ec76": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x05be9c6a1e249dfa1591dff3b9c962297fdca0578667247071729cc25eb7bb2a": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xb097450785614b697715b9680e3cc65aee3996405509cc870cca6703bacaecd3": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xc2b36de14516e35a72eb62ecf50fedde5a80a00d55561d7ffa56c23ecbf34210": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xed036ae4ab73a81a095e5bb060c7fecdf9547afa34e93d093ea18bd499ccc455": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x9cc85e744b0077fbe4c1f4ca42e8846b987a51fd68849ada9e0fdf79fa273cb9": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x49d86540d21be243d6b35ac3d57a70a706f7deb3bb86ef077f4284cd96c49996": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0xdbb86398e138a56d6f9aedadef62d41d99e5a3c6a39d64605ec1e4ad2ed03552": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xafffa90a8bde013ecfaa2f52c9e3a91cec80efb2bf21a11aa6322dd14cdcff9f": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0xdbb86398e138a56d6f9aedadef62d41d99e5a3c6a39d64605ec1e4ad2ed03552": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xb78c5af6ccf56c3a3467561d3ae57a6446fd2239d3b1ad07cc6c9a0bd0a865d2": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x78671fa87a2081dd20332ebf134a0e2dab79f47bfe878fb8911921d78dbad054": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x434aba1e9737c8527b5514ba9b1dbd2330705ce02243cb119510c11668159714": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x2b62fb48a19b53e76d5137574f996db9188d511227d1971c3997820ecdbe9d04": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xed91b3f34bf33b1fd575587cbdf56f3cf146d6d01942680ec63207f3de1fb8ba": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x2b62fb48a19b53e76d5137574f996db9188d511227d1971c3997820ecdbe9d04": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x19e9af8eb3780d5cf63633ebddc5f9e7b994ee155147562f24a7a521541736d3": { - "contracts": { - "0xe5413cb03538126884d14df481da47efdeba969bd6c7e3609abaf1dc42973b1a": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x1dc86cbe444c7243c6565fc68d02a9a0623e97a7d9470f1debede7951c2acb37": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x303aabe1cc76d9f9b44f0fa6d2b591caad9d8ca9f68e93b4c29cb7032325c454": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x3e4a5db1e3a1be66c5ca32935858f59ef2d663d9b61cbc5d58d615a66dcef3e2": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x8dcbda3fa57656d85655a34d7ab8322b281398f9ff82d4b514bffd9cdb8aa882": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xa9c3989e54c3562677dc2ae5b110c685d3f4fb20ca022129b9bfda42da2198d5": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x9cdb59f2e1169042ddcde06e795f1f1a048f3f174944f8dfef24053437658bc7": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x80de0115cf04efd18ca62af4dcf3d730f53cb5e4679ec4c255f30b863b245662": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x561b6de32ed651096b732dd625e66fce149ce013772437b299ffc509e4afbff6": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x524fdac119d48e0770f7177ce6f2143c14c4ca20da44228f8fabd3a1227e72e2": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0xd68e2690cadbb23f27f9eedcb06933caed5e7ae0712cc6d848f745b032dcb2bb": { - "contracts": { - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0x7078E9E73FeFf15eC5C4C58233adc19447719979" - }, - "0x378c10bc6c0a80dcd46fb9e79c3b00f48ae9d84bd234c3c7d5a67840ea081503": { - "name": "SNT", - "address": "0x195fcB5B1D04E58C90813a5d67a5Ab84Bc4D85e5" - }, - "0x5cb3f3ab15dc9e70c8fdeb30dbd57772d8a799094fdd7223882185a6e1aaa712": { - "name": "Meritocracy", - "address": "0x9c888ff4D7d4F512C79073ad5016116327fD8315" - } - } - }, - "0x4bc38b34c07b8a6c66e6c35c8b9190aa9dbbbbfbb44e931c0b6bbb548a41c314": { - "contracts": { - "0xfb4295b67b9ca6e0992ff331dbd64c98b6cdb4bd896e033995691356b504077c": { - "name": "ERC20Receiver", - "address": "0x0411c78250cE8E2eABB8CBAd40fc00d2A3E033b8" - }, - "0x6ef111d7ff114790dccb0eb991ffc66c0717516aa3cebfd356736581b75b0402": { - "name": "MiniMeTokenFactory", - "address": "0xAF6CAB501B116b355eA625634D93D716d9D963f7" - }, - "0xe024507e4403493fb8df8c797ae73d826768944147c76b3055d15ecfdcaac932": { - "name": "SNT", - "address": "0x419896246B37Aa76069A9759681659B39243b067" - }, - "0x5e20db450c276e2e1a9c99fbe635b9b2b5b11a642ff8f095c33cf8c1c851b9d5": { - "name": "Meritocracy", - "address": "0x269DC75d444C7469F2d5ED92347176B816cAC493" - }, - "0xc27e5dd27c20c051c71255a91c8b25e554e64fd6fe428d0e371b67c58bf253e3": { - "name": "Meritocracy", - "address": "0x65100f2D0603D44a66581db7F1D1A5C11846DBbF" - }, - "0x13d91a0331aadaac87d665f6ccef30d34ea1a85589f013061fdd09491187e637": { - "name": "Meritocracy", - "address": "0xC46f2b6B71F7C8260e717955CeD55Bf3704140E7" - }, - "0x4a8b1afed5495cda89097b1693e1af4d89d211a9abeb37c8da8906c85dbdafdb": { - "name": "Meritocracy", - "address": "0xCc912Ea14fA8E3aCE6ADC3A77a1Fa13E051F01e4" - }, - "0xf1bc82db827697b7247dcab65bc35ae2f9d95b4751c032589d12c0871b34812f": { - "name": "Meritocracy", - "address": "0x13784cea0958d7d647AE1aB876C9D27B334c049B" - }, - "0xa82a374d2671b281340897dced9d6abc0e790ea70ba995ea23e3bddab837b40a": { - "name": "Meritocracy", - "address": "0x1da8769811006DB73cfDD4da7F30B0A10491442e" - }, - "0x97256015cd62d33069de61f787f92ab4018a1b583e68a7f02a115f69826ecbf3": { - "name": "Meritocracy", - "address": "0xe4dE16E6772b172a92A0281429a8042b54fbDF17" - }, - "0xd8bab3823cd725bde48a473b1c2a798fc2fb869d069f5e30ded91e08d51a5844": { - "name": "Meritocracy", - "address": "0xFeDcB215c60217D7ef5E53DdD3b41C7ef0bCB4e9" - }, - "0xe3f0f2754c5a3d39bad789acf67b8de70ae9498e58d24eaf7fa4228e24fddaec": { - "name": "Meritocracy", - "address": "0x283745d2eFC19CB1a0C20028CF3A9457f0F14c45" + "address": "0x19bD71805744B56234E4088B9ae390DF0A49480b" } } } diff --git a/config/blockchain.js b/config/blockchain.js index ceee1ea..45f34c2 100644 --- a/config/blockchain.js +++ b/config/blockchain.js @@ -4,7 +4,7 @@ module.exports = { enabled: true, rpcHost: "localhost", // HTTP-RPC server listening interface (default: "localhost") rpcPort: 8545, // HTTP-RPC server listening port (default: 8545) - rpcCorsDomain: "auto", // Comma separated list of domains from which to accept cross origin requests (browser enforced) + rpcCorsDomain: "*", // Comma separated list of domains from which to accept cross origin requests (browser enforced) // When set to "auto", Embark will automatically set the cors to the address of the webserver wsRPC: true, // Enable the WS-RPC server wsOrigins: "auto", // Origins from which to accept websockets requests diff --git a/config/contracts.js b/config/contracts.js index c1e2a79..4a877a1 100644 --- a/config/contracts.js +++ b/config/contracts.js @@ -1,6 +1,6 @@ // this is also defined in index.js const options = [ -{ 'label' : 'Jarrad (Test)', 'value' : '0xe5d882a925D9c4de439d2a109D0a0Bd5250E776F' }, +{ 'label' : 'Jarrad (Test)', 'value' : '0x926495cf9510174080ef2f7931242e85c0de2af8' }, { 'label' : 'Andreas S.', 'value' : '0x4923121411e884a4af66ec025712eba600a782d3' }, // commented because I already added to blockchain { 'label' : 'andrey.dev', 'value' : '0xA4EcA293cb578a68b190e3e07c2B170dc753fe44' }, { 'label' : 'barry', 'value' : '0xa46b0546481a04b7de049a8a20f8a9b2b2c5cc05' }, @@ -153,8 +153,14 @@ module.exports = { ] }, "afterDeploy": [ + // Give Tokens to Meritocracy Owner "SNT.methods.generateTokens('$accounts[0]', '100000000000000000000').send()", - "Meritocracy.methods.addContributors([" + getContributors().toString() + "]).send()" + // Add All Contributors + "Meritocracy.methods.addContributors([" + getContributors().toString() + "]).send()", + // Allocate Owner Tokens + "SNT.methods.approve('$Meritocracy', 10000).send()", + "Meritocracy.methods.allocate(10000).send()" + ] }, diff --git a/contracts/Meritocracy.sol b/contracts/Meritocracy.sol index 97dbd60..7b63aa8 100644 --- a/contracts/Meritocracy.sol +++ b/contracts/Meritocracy.sol @@ -124,13 +124,8 @@ contract Meritocracy { emit ContributorWithdrew(cReceiver.addr); } - // TODO: for different UI - // function awardMultipleContributors ( address[][2] _contributors ) external { - - // } - // Allow Contributors to award allocated tokens to other Contributors - function award(address _contributor, uint256 _amount, string calldata _praise) external { + function award(address _contributor, uint256 _amount, string memory _praise) public { // Locals Contributor storage cSender = contributors[msg.sender]; Contributor storage cReceiver = contributors[_contributor]; @@ -156,6 +151,20 @@ contract Meritocracy { emit ContributorTransaction(cSender.addr, cReceiver.addr); } + // Allow Contributor to award multiple Contributors + function awardContributors(address[] calldata _contributors, uint256 _amountEach, string calldata _praise) external { + // Locals + Contributor storage cSender = contributors[msg.sender]; + uint256 contributorsLength = _contributors.length; + uint256 totalAmount = contributorsLength * _amountEach; + // Requirements + require(cSender.allocation >= totalAmount); + // Body + for (uint256 i = 0; i < contributorsLength; i++) { + award(_contributors[i], _amountEach, _praise); + } + } + // Admin Functions ------------------------------------------------------------------------------------- // Add Contributor to Registry