Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/network-subgraphs/src/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { Operator as OperatorContract } from '../generated/templates/Operator/Op

const BUCKET_SECONDS = BigInt.fromI32(60 * 60 * 24) // 1 day
const NETWORK_ENTITY_ID = "network-entity-id"
export const MAX_STREAM_ID_LENGTH = 1000

/**
* Helper function to load a project or create a project with default values. It will probably silence some errors.
Expand Down
12 changes: 10 additions & 2 deletions packages/network-subgraphs/src/projectRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
StreamRemoved,
PaymentDetailsByChainUpdated,
} from '../generated/ProjectRegistryV1/ProjectRegistryV1'
import { getIsDataUnionValue, loadOrCreateProject } from './helpers'
import { getIsDataUnionValue, loadOrCreateProject, MAX_STREAM_ID_LENGTH } from './helpers'

export function handleProjectCreation(event: ProjectCreated): void {
const id = event.params.id.toHexString()
Expand Down Expand Up @@ -151,7 +151,11 @@ export function handleStreamAddition(event: StreamAdded): void {
const streamId = event.params.streamId
log.info('handleStreamAddition: projectId={} streamId={} blockNumber={}',
[projectId, streamId, event.block.number.toString()])

if (streamId.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [streamId])
return
}

let project = loadOrCreateProject(event.params.projectId)

const streams = project.streams
Expand All @@ -165,6 +169,10 @@ export function handleStreamRemoval(event: StreamRemoved): void {
const streamId = event.params.streamId
log.info('handleStreamRemoval: projectId={} streamId={} blockNumber={}',
[projectId, streamId, event.block.number.toString()])
if (streamId.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [streamId])
return
}

let project = loadOrCreateProject(event.params.projectId)

Expand Down
6 changes: 5 additions & 1 deletion packages/network-subgraphs/src/sponsorshipFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { Sponsorship as SponsorshipContract } from '../generated/templates/Spons
import { NewSponsorship } from '../generated/SponsorshipFactory/SponsorshipFactory'
import { Sponsorship, Stream } from '../generated/schema'
import { Sponsorship as SponsorshipTemplate } from '../generated/templates'
import { loadOrCreateNetwork, loadOrCreateSponsorshipDailyBucket } from './helpers'
import { loadOrCreateNetwork, loadOrCreateSponsorshipDailyBucket, MAX_STREAM_ID_LENGTH } from './helpers'

export function handleNewSponsorship(event: NewSponsorship): void {
const sponsorshipContractAddress = event.params.sponsorshipContract
Expand All @@ -14,6 +14,10 @@ export function handleNewSponsorship(event: NewSponsorship): void {
[event.block.number.toString(), sponsorshipContractAddressString,
event.params.policies.map<string>((x) => x.toHexString()).join(", "), event.params.policyParams.toString(), creator]
)
if (event.params.streamId.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [event.params.streamId])
return
}

const sponsorship = new Sponsorship(sponsorshipContractAddressString)
sponsorship.totalStakedWei = BigInt.zero()
Expand Down
15 changes: 14 additions & 1 deletion packages/network-subgraphs/src/streamRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { ByteArray, Bytes, log, store, crypto } from '@graphprotocol/graph-ts'
import { StreamCreated, StreamDeleted, StreamUpdated, PermissionUpdated, PermissionUpdatedForUserId }
from '../generated/StreamRegistry/StreamRegistry'
import { Stream, StreamPermission } from '../generated/schema'
import { MAX_STREAM_ID_LENGTH } from './helpers'

/**
* Hash the streamId and the userId, in order to get constant-length permission IDs (ETH-867)
Expand All @@ -12,12 +13,16 @@ import { Stream, StreamPermission } from '../generated/schema'
* because it could cause some streams with same 1k-prefix to mix up when sorting
**/
function getPermissionId(streamId: string, userId: Bytes): string {
return streamId.slice(0, 1000) + "-" + crypto.keccak256(Bytes.fromUTF8(streamId).concat(userId)).toHexString()
return streamId + "-" + crypto.keccak256(userId).toHexString()
}

export function handleStreamCreation(event: StreamCreated): void {
log.info('handleStreamCreation: id={} metadata={} blockNumber={}',
[event.params.id, event.params.metadata, event.block.number.toString()])
if (event.params.id.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [event.params.id])
return
}
let stream = new Stream(event.params.id)
stream.metadata = event.params.metadata
stream.createdAt = event.block.timestamp
Expand Down Expand Up @@ -47,6 +52,10 @@ export function handleStreamUpdate(event: StreamUpdated): void {
export function handlePermissionUpdate(event: PermissionUpdated): void {
log.info('handlePermissionUpdate: user={} streamId={} blockNumber={}',
[event.params.user.toHexString(), event.params.streamId, event.block.number.toString()])
if (event.params.streamId.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [event.params.streamId])
return
}
let stream = Stream.load(event.params.streamId)
if (stream == null) { return }

Expand All @@ -69,6 +78,10 @@ export function handlePermissionUpdate(event: PermissionUpdated): void {
export function handlePermissionUpdateForUserId(event: PermissionUpdatedForUserId): void {
log.info('handlePermissionUpdateForUserId: user={} streamId={} blockNumber={}',
[event.params.user.toHexString(), event.params.streamId, event.block.number.toString()])
if (event.params.streamId.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [event.params.streamId])
return
}
let stream = Stream.load(event.params.streamId)
if (stream == null) { return }

Expand Down
11 changes: 10 additions & 1 deletion packages/network-subgraphs/src/streamStorageRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@ import {
Removed
} from '../generated/StreamStorageRegistry/StreamStorageRegistry'
import { Node } from '../generated/schema'
import { MAX_STREAM_ID_LENGTH } from './helpers'

export function handleStorageNodeAddedToStream(event: Added): void {
let nodeId = event.params.nodeAddress.toHexString()
let streamId = event.params.streamId.toString()
log.info('handleStorageNodeAddedToStream: stream={} node={} blockNumber={}', [streamId, nodeId, event.block.number.toString()])
if (event.params.streamId.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [event.params.streamId])
return
}

let node = Node.load(nodeId)!
if (!node.storedStreams) {
Expand All @@ -28,7 +33,11 @@ export function handleStorageNodeRemovedFromStream(event: Removed): void {
let nodeId = event.params.nodeAddress.toHexString()
let streamId = event.params.streamId.toString()
log.info('handleStorageNodeRemovedFromStream: stream={} node={} blockNumber={}', [streamId, nodeId, event.block.number.toString()])

if (event.params.streamId.length > MAX_STREAM_ID_LENGTH) {
log.warning("Overlong stream id not supported: {}", [event.params.streamId])
return
}

let node = Node.load(nodeId)!
if (!node) { return }
if (!node.storedStreams) { return }
Expand Down
Loading