From d188561dbcf60d7f586ccd01edd7f841609a0e31 Mon Sep 17 00:00:00 2001 From: Lyubomir Kiprov Date: Sat, 20 Jul 2019 12:11:13 +0300 Subject: [PATCH] Change the metadata fetching flow --- back-end/logs.log | 23 +++++++ .../discover-service/discover-service.js | 67 +++++++++++++------ .../services/snt-service/snt-service.js | 6 +- 3 files changed, 73 insertions(+), 23 deletions(-) diff --git a/back-end/logs.log b/back-end/logs.log index 934461b..1f696d2 100644 --- a/back-end/logs.log +++ b/back-end/logs.log @@ -15,3 +15,26 @@ [2019-07-20 10:57:31]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmNUSXTixR4DZtPQ5vuBoEAZtv5Pe6CQdkgpRyPYfsbVs6] has been uploaded successfully [2019-07-20 10:59:15]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmVv5G6UvVBAFsMQtff8Sk9p12Hn29g959wUeE3WjsdGUv] has been uploaded successfully [2019-07-20 11:00:45]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmQiiVYUTtpg1DtiKnVKVfkfKkM7Brt7JHVFLcVf3H1yDV] has been uploaded successfully +[2019-07-20 11:04:34]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmNMPu9ykeAmmjBoN4g3zBC5HGypr6K4MFb3Tjkmd78i5B] has been uploaded successfully +[2019-07-20 11:06:41]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmScorFHZqFYze8RYNXpXuJPTh4ptwTcLeGPE5TodC6gnw] has been uploaded successfully +[2019-07-20 11:06:50]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:09:14]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmeyTjkdgSA2M28xugPNRXCjSmsQNHWfsNeYyCfK1FyqV9] has been uploaded successfully +[2019-07-20 11:10:55]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmQDFjSnY5pTo2k8uHgvYBFYKB1C9RtrNFxt4enLizP9Hp] has been uploaded successfully +[2019-07-20 11:12:14]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmZ4yiDhHmWf1tTsio4vrTzZrE51XKbtm8NzYUV68cxXZz] has been uploaded successfully +[2019-07-20 11:12:14]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:32:31]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [Qmf5RuGyCJFVVtCq7KLXgWwmgRVhTi7oKyiN1Nqk7Fw7Rv] has been uploaded successfully +[2019-07-20 11:32:31]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:35:27]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmcsiJkjcfuGvVYK55j9RC2DCBwvHPjrcBrG7UztM3G9xw] has been uploaded successfully +[2019-07-20 11:35:27]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:38:06]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmbJ1t7GmMujpvVcFpdGQ58dTxFAtNYaUxNNEXrXS9hnHJ] has been uploaded successfully +[2019-07-20 11:38:06]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:39:17]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmPheif9S68kEo4hzuszveWMk5LMEsUb2f5MR8nStkiZBs] has been uploaded successfully +[2019-07-20 11:39:17]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:45:48]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmcFPhH8yLG7ERjbEv6kyWsPEGMu2JufXud7Regdn4KNHz] has been uploaded successfully +[2019-07-20 11:45:48]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:47:31]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmWvNbgnR82ZkjWmAC7SMisA7k7zKCz7Fqu9HKVwyhJqFY] has been uploaded successfully +[2019-07-20 11:47:31]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 11:49:43]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmRtZmATHLNgxSZPbsDXaDiRe7hURagzCWYqbG7rdtS9T1] has been uploaded successfully +[2019-07-20 11:50:02]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 +[2019-07-20 12:10:07]-[INFO]-[DApps-Metadata-Controller]: A dapp metadata with hash [QmYA7iGvK4641Fu2uPSKe5ahUmrMxrksFDtigvQb4VDtXd] has been uploaded successfully +[2019-07-20 12:10:07]-[ERROR]-[Base-Email]: Email service verification failed due to Error: connect ECONNREFUSED 127.0.0.1:587 diff --git a/src/common/blockchain/services/discover-service/discover-service.js b/src/common/blockchain/services/discover-service/discover-service.js index bcf1595..91ea250 100644 --- a/src/common/blockchain/services/discover-service/discover-service.js +++ b/src/common/blockchain/services/discover-service/discover-service.js @@ -9,6 +9,20 @@ import DiscoverContract from '../../../../embarkArtifacts/contracts/Discover' const BN = require('bn.js') +const EMPTY_METADATA = { + developer: '', + id: '', + metadata: { + status: 'EMPTY', + }, + balance: 0, + rate: 0, + available: 0, + votesMinted: 0, + votesCast: 0, + effectiveBalance: 0, +} + class DiscoverService extends BlockchainService { constructor(sharedContext) { super(sharedContext, DiscoverContract, DiscoverValidator) @@ -17,10 +31,11 @@ class DiscoverService extends BlockchainService { // View methods async upVoteEffect(id, amount) { - await this.validator.validateUpVoteEffect(id, amount) + const tokenAmount = new BN(amount, 10) + await this.validator.validateUpVoteEffect(id, tokenAmount) return DiscoverContract.methods - .upvoteEffect(id, amount) + .upvoteEffect(id, tokenAmount.toString()) .call({ from: this.sharedContext.account }) } @@ -104,21 +119,25 @@ class DiscoverService extends BlockchainService { } async getDAppById(id) { - let dapp - try { - const dappId = await DiscoverContract.methods - .id2index(id) - .call({ from: this.sharedContext.account }) + let dapp = EMPTY_METADATA + const dappExists = await this.isDAppExists(id) - dapp = await DiscoverContract.methods - .dapps(dappId) - .call({ from: this.sharedContext.account }) - } catch (error) { - throw new Error('Searching DApp does not exists') - } + if (dappExists) { + try { + const dappId = await DiscoverContract.methods + .id2index(id) + .call({ from: this.sharedContext.account }) - if (dapp.id != id) { - throw new Error('Error fetching correct data from contract') + dapp = await DiscoverContract.methods + .dapps(dappId) + .call({ from: this.sharedContext.account }) + } catch (error) { + throw new Error('Searching DApp does not exists') + } + + if (dapp.id != id) { + throw new Error('Error fetching correct data from contract') + } } return dapp @@ -126,10 +145,11 @@ class DiscoverService extends BlockchainService { async getDAppDataById(id) { const dapp = await this.getDAppById(id) + if (dapp.metadata.status == 'EMPTY') return EMPTY_METADATA try { const dappMetadata = await MetadataClient.retrieveMetadata(dapp.metadata) - if (dappMetadata === null) return null + if (dappMetadata === null) return EMPTY_METADATA dapp.metadata = dappMetadata.details dapp.metadata.status = dappMetadata.status @@ -153,6 +173,7 @@ class DiscoverService extends BlockchainService { async checkIfCreatorOfDApp(id) { const dapp = await this.getDAppById(id) + if (dapp.metadata.status == 'EMPTY') return false this.sharedContext.account = await super.getAccount() return dapp.developer.toLowerCase() == this.sharedContext.account @@ -174,15 +195,16 @@ class DiscoverService extends BlockchainService { const uploadedMetadata = await MetadataClient.upload(dappMetadata, email) - let createdTx = null - if (tokenAmount.gt(0)) { + let createdTx = '' + + if (tokenAmount.gt(new BN(0, 10))) { const callData = ConnectedDiscoverContract.methods .createDApp(dappId, tokenAmount.toString(), uploadedMetadata) .encodeABI() createdTx = await this.sharedContext.SNTService.approveAndCall( this.contract, - tokenAmount.toString(), + tokenAmount, callData, ) } @@ -198,7 +220,7 @@ class DiscoverService extends BlockchainService { await this.validator.validateUpVoting(id, tokenAmount) const callData = DiscoverContract.methods - .upvote(id, tokenAmount) + .upvote(id, tokenAmount.toString()) .encodeABI() return this.sharedContext.SNTService.approveAndCall( this.contract, @@ -216,7 +238,7 @@ class DiscoverService extends BlockchainService { const tokenAmount = this.decimalMultiplier.mul(amountBN) const callData = DiscoverContract.methods - .downvote(dapp.id, tokenAmount) + .downvote(dapp.id, tokenAmount.toString()) .encodeABI() return this.sharedContext.SNTService.approveAndCall( this.contract, @@ -234,7 +256,8 @@ class DiscoverService extends BlockchainService { try { return broadcastContractFn( - ConnectedDiscoverContract.methods.withdraw(id, tokenAmount).send, + ConnectedDiscoverContract.methods.withdraw(id, tokenAmount.toString()) + .send, this.sharedContext.account, ) } catch (error) { diff --git a/src/common/blockchain/services/snt-service/snt-service.js b/src/common/blockchain/services/snt-service/snt-service.js index 2a679f8..8139119 100644 --- a/src/common/blockchain/services/snt-service/snt-service.js +++ b/src/common/blockchain/services/snt-service/snt-service.js @@ -40,7 +40,11 @@ class SNTService extends BlockchainService { const ConnectedSNTToken = await super.__unlockServiceAccount(SNTToken) await this.validator.validateApproveAndCall(spender, amount) return broadcastContractFn( - ConnectedSNTToken.methods.approveAndCall(spender, amount, callData).send, + ConnectedSNTToken.methods.approveAndCall( + spender, + amount.toString(), + callData, + ).send, this.sharedContext.account, ) }