Skip to content

Commit

Permalink
Revert "Update creator node middleware for new eth contracts (#896)"
Browse files Browse the repository at this point in the history
This reverts commit 61740fc.
  • Loading branch information
dmanjunath committed Oct 7, 2020
1 parent 61740fc commit 6e43e4b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 27 deletions.
1 change: 0 additions & 1 deletion creator-node/scripts/run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ mkdir -p $storagePath
# setting delegate keys for app to start
export delegateOwnerWallet="0x1eC723075E67a1a2B6969dC5CfF0C6793cb36D25"
export delegatePrivateKey="0xdb527e4d4a2412a443c17e1666764d3bba43e89e61129a35f9abc337ec170a5d"
export creatorNodeEndpoint="http://localhost:5000"

# tests
run_unit_tests
Expand Down
8 changes: 0 additions & 8 deletions creator-node/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

const ON_DEATH = require('death')
const path = require('path')
const EthereumWallet = require('ethereumjs-wallet')

const initializeApp = require('./app')
const config = require('./config')
Expand Down Expand Up @@ -56,13 +55,6 @@ const startApp = async () => {
if (!delegateOwnerWallet || !delegatePrivateKey || !creatorNodeEndpoint) {
exitWithError('Cannot startup without delegateOwnerWallet, delegatePrivateKey, and creatorNodeEndpoint')
}

// fail if delegateOwnerWallet doesn't derive from delegatePrivateKey
const privateKeyBuffer = Buffer.from(config.get('delegatePrivateKey').replace('0x', ''), 'hex')
const walletAddress = EthereumWallet.fromPrivateKey(privateKeyBuffer).getAddressString()
if (walletAddress !== config.get('delegateOwnerWallet').toLowerCase()) {
throw new Error('Invalid delegatePrivateKey/delegateOwnerWallet pair')
}
const storagePath = configFileStorage()

const mode = getMode()
Expand Down
31 changes: 17 additions & 14 deletions creator-node/src/middlewares.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ async function triggerSecondarySyncs (req) {
try {
if (!req.session.nodeIsPrimary || !req.session.creatorNodeEndpoints || !Array.isArray(req.session.creatorNodeEndpoints)) return
const [primary, ...secondaries] = req.session.creatorNodeEndpoints
req.logger.error(`SIDTEST: primary ${primary} calling sync against: ${secondaries}`)
await Promise.all(secondaries.map(async secondary => {
if (!secondary || !_isFQDN(secondary)) return
const axiosReq = {
Expand All @@ -119,28 +120,30 @@ async function triggerSecondarySyncs (req) {
}

/** Retrieves current FQDN registered on-chain with node's owner wallet. */
// TODO - this can all be cached on startup, but we can't validate the spId on startup unless the
// services has been registered, and we can't register the service unless the service starts up.
// Bit of a chicken and egg problem here with timing of first time setup, but potential optimization here
async function getOwnEndpoint (req) {
if (config.get('isUserMetadataNode')) throw new Error('Not available for userMetadataNode')
const libs = req.app.get('audiusLibs')

let creatorNodeEndpoint = config.get('creatorNodeEndpoint')
if (!creatorNodeEndpoint) throw new Error('Must provide either creatorNodeEndpoint config var.')
let spOwnerWallet
if (config.get('spOwnerWallet')) {
spOwnerWallet = config.get('spOwnerWallet')
} else if (config.get('ethWallets') && config.get('spOwnerWalletIndex') && Array.isArray(config.get('ethWallets')) && config.get('ethWallets').length > config.get('spOwnerWalletIndex')) {
spOwnerWallet = config.get('ethWallets')[config.get('spOwnerWalletIndex')]
} else {
throw new Error('Must provide either spOwnerWallet or ethWallets and spOwnerWalletIndex config vars.')
}

const spId = await libs.ethContracts.ServiceProviderFactoryClient.getServiceProviderIdFromAddress(spOwnerWallet, 'creator-node')
const spInfo = [await libs.ethContracts.ServiceProviderFactoryClient.getServiceProviderInfo('creator-node', spId)]

const spId = await libs.ethContracts.ServiceProviderFactoryClient.getServiceProviderIdFromEndpoint(creatorNodeEndpoint)
if (!spId) throw new Error('Cannot get spId for node')
const spInfo = await libs.ethContracts.ServiceProviderFactoryClient.getServiceEndpointInfo('creator-node', spId)
// confirm on-chain endpoint exists and is valid FQDN
if (!spInfo ||
!spInfo.hasOwnProperty('endpoint') ||
!(spInfo.owner !== config.get('spOwnerWallet')) ||
!(spInfo.delegateOwnerWallet !== config.get('delegateOwnerWallet')) ||
(spInfo['endpoint'] && !_isFQDN(spInfo['endpoint']))) {
throw new Error(`Cannot getOwnEndpoint for node ${spInfo}`)
spInfo.length === 0 ||
!spInfo[0].hasOwnProperty('endpoint') ||
(spInfo[0]['endpoint'] && !_isFQDN(spInfo[0]['endpoint']))) {
throw new Error('fail')
}
return spInfo['endpoint']
return spInfo[0]['endpoint']
}

/** Get all creator node endpoints for user by wallet from discprov. */
Expand Down
8 changes: 4 additions & 4 deletions creator-node/test/lib/libsMock.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ function getLibsMock () {
const libsMock = {
ethContracts: {
ServiceProviderFactoryClient: {
getServiceProviderIdFromEndpoint: sinon.mock().atLeast(1),
getServiceEndpointInfo: sinon.mock().atLeast(1)
getServiceProviderIdFromAddress: sinon.mock().atLeast(1),
getServiceProviderInfo: sinon.mock().atLeast(1)
}
},
User: {
Expand All @@ -15,8 +15,8 @@ function getLibsMock () {
discoveryProviderEndpoint: 'http://docker.for.mac.localhost:5000'
}
}
libsMock.ethContracts.ServiceProviderFactoryClient.getServiceProviderIdFromEndpoint.returns('1')
libsMock.ethContracts.ServiceProviderFactoryClient.getServiceEndpointInfo.returns({ 'endpoint': 'http://localhost:5000' })
libsMock.ethContracts.ServiceProviderFactoryClient.getServiceProviderIdFromAddress.returns('1')
libsMock.ethContracts.ServiceProviderFactoryClient.getServiceProviderInfo.returns({ 'endpoint': 'http://localhost:5000' })
libsMock.User.getUsers.returns([{ 'creator_node_endpoint': 'http://localhost:5000', 'blocknumber': 10, 'track_blocknumber': 10 }])
libsMock.User.getUsers.atMost(10)

Expand Down

0 comments on commit 6e43e4b

Please sign in to comment.