@@ -753,19 +753,9 @@ export function createOrLoadGraphNetwork(
753753 graphNetwork . currentL1BlockNumber = blockNumber
754754 } else {
755755 // L2 - Get L1 block number from EpochManager
756- let epochManagerAddress = Address . fromString ( addresses . epochManager )
757- let contract = EpochManager . bind ( epochManagerAddress )
758- let response = contract . try_blockNum ( )
759- if ( ! response . reverted ) {
760- graphNetwork . lastLengthUpdateBlock = response . value . toI32 ( )
761- graphNetwork . currentL1BlockNumber = response . value
762- } else {
763- graphNetwork . lastLengthUpdateBlock = 0
764- graphNetwork . currentL1BlockNumber = BigInt . fromI32 ( 0 )
765- log . warning ( 'Failed to query EpochManager to get L1 block number. Transaction reverted. Address used: {}' , [
766- epochManagerAddress . toHexString ( ) ,
767- ] )
768- }
756+ let l1BlockNumber = getL1BlockNumber ( )
757+ graphNetwork . lastLengthUpdateBlock = l1BlockNumber . toI32 ( )
758+ graphNetwork . currentL1BlockNumber = l1BlockNumber
769759 }
770760 graphNetwork . currentEpoch = 0
771761 graphNetwork . epochCount = 0
@@ -805,15 +795,38 @@ export function createOrLoadGraphNetwork(
805795 graphNetwork . save ( )
806796 }
807797
808- // Update epoch - only if we have a non zero L1 block number, which might be zero until contracts are deployed and the first epoch is run
809- if ( ! graphNetwork . currentL1BlockNumber ! . equals ( BigInt . fromI32 ( 0 ) ) ) {
798+ if ( ! addresses . isL1 ) {
799+ let l1BlockNumber = getL1BlockNumber ( )
800+ graphNetwork . lastLengthUpdateBlock = l1BlockNumber . toI32 ( )
801+ graphNetwork . currentL1BlockNumber = l1BlockNumber
802+ }
803+
804+ if (
805+ ! graphNetwork . currentL1BlockNumber ! . equals ( BigInt . fromI32 ( 0 ) ) &&
806+ graphNetwork . epochLength !== 0
807+ ) {
808+ // these might be zero until contracts are deployed and the first epoch is run
810809 let epoch = createOrLoadEpoch ( addresses . isL1 ? blockNumber : graphNetwork . currentL1BlockNumber ! , graphNetwork )
811810 epoch . save ( )
812811 }
813812
814813 return graphNetwork as GraphNetwork
815814}
816815
816+ export function getL1BlockNumber ( ) : BigInt {
817+ let epochManagerAddress = Address . fromString ( addresses . epochManager )
818+ let contract = EpochManager . bind ( epochManagerAddress )
819+ let response = contract . try_blockNum ( )
820+ if ( ! response . reverted ) {
821+ return response . value
822+ } else {
823+ log . warning ( 'Failed to query EpochManager to get L1 block number. Transaction reverted. Address used: {}' , [
824+ epochManagerAddress . toHexString ( ) ,
825+ ] )
826+ return BigInt . fromI32 ( 0 )
827+ }
828+ }
829+
817830export function addQm ( a : ByteArray ) : ByteArray {
818831 let out = new Uint8Array ( 34 )
819832 out [ 0 ] = 0x12
0 commit comments