github.com/onflow/flow-go@v0.33.17/model/convert/fixtures_test.go (about)

     1  package convert_test
     2  
     3  import (
     4  	"github.com/onflow/flow-go/crypto"
     5  	"github.com/onflow/flow-go/fvm/systemcontracts"
     6  	"github.com/onflow/flow-go/model/flow"
     7  	"github.com/onflow/flow-go/utils/unittest"
     8  )
     9  
    10  // This file contains service event fixtures for testing purposes.
    11  // The Cadence form is represented by JSON-CDC-encoded string variables.
    12  
    13  // EpochSetupFixture returns an EpochSetup service event as a Cadence event
    14  // representation and as a protocol model representation.
    15  func EpochSetupFixture(chain flow.ChainID) (flow.Event, *flow.EpochSetup) {
    16  	events := systemcontracts.ServiceEventsForChain(chain)
    17  
    18  	event := unittest.EventFixture(events.EpochSetup.EventType(), 1, 1, unittest.IdentifierFixture(), 0)
    19  	event.Payload = []byte(epochSetupFixtureJSON)
    20  
    21  	// randomSource is [0,0,...,1,2,3,4]
    22  	randomSource := make([]uint8, flow.EpochSetupRandomSourceLength)
    23  	for i := 0; i < 4; i++ {
    24  		randomSource[flow.EpochSetupRandomSourceLength-1-i] = uint8(4 - i)
    25  	}
    26  
    27  	expected := &flow.EpochSetup{
    28  		Counter:            1,
    29  		FirstView:          100,
    30  		FinalView:          200,
    31  		DKGPhase1FinalView: 150,
    32  		DKGPhase2FinalView: 160,
    33  		DKGPhase3FinalView: 170,
    34  		RandomSource:       randomSource,
    35  		Assignments: flow.AssignmentList{
    36  			{
    37  				flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000001"),
    38  				flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000002"),
    39  			},
    40  			{
    41  				flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000003"),
    42  				flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000004"),
    43  			},
    44  		},
    45  		Participants: flow.IdentityList{
    46  			{
    47  				Role:          flow.RoleCollection,
    48  				NodeID:        flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000001"),
    49  				Address:       "1.flow.com",
    50  				NetworkPubKey: unittest.MustDecodePublicKeyHex(crypto.ECDSAP256, "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"),
    51  				StakingPubKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"),
    52  				Weight:        100,
    53  			},
    54  			{
    55  				Role:          flow.RoleCollection,
    56  				NodeID:        flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000002"),
    57  				Address:       "2.flow.com",
    58  				NetworkPubKey: unittest.MustDecodePublicKeyHex(crypto.ECDSAP256, "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"),
    59  				StakingPubKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"),
    60  				Weight:        100,
    61  			},
    62  			{
    63  				Role:          flow.RoleCollection,
    64  				NodeID:        flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000003"),
    65  				Address:       "3.flow.com",
    66  				NetworkPubKey: unittest.MustDecodePublicKeyHex(crypto.ECDSAP256, "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"),
    67  				StakingPubKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"),
    68  				Weight:        100,
    69  			},
    70  			{
    71  				Role:          flow.RoleCollection,
    72  				NodeID:        flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000004"),
    73  				Address:       "4.flow.com",
    74  				NetworkPubKey: unittest.MustDecodePublicKeyHex(crypto.ECDSAP256, "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"),
    75  				StakingPubKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"),
    76  				Weight:        100,
    77  			},
    78  			{
    79  				Role:          flow.RoleConsensus,
    80  				NodeID:        flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000011"),
    81  				Address:       "11.flow.com",
    82  				NetworkPubKey: unittest.MustDecodePublicKeyHex(crypto.ECDSAP256, "cfdfe8e4362c8f79d11772cb7277ab16e5033a63e8dd5d34caf1b041b77e5b2d63c2072260949ccf8907486e4cfc733c8c42ca0e4e208f30470b0d950856cd47"),
    83  				StakingPubKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "8207559cd7136af378bba53a8f0196dee3849a3ab02897c1995c3e3f6ca0c4a776c3ae869d1ddbb473090054be2400ad06d7910aa2c5d1780220fdf3765a3c1764bce10c6fe66a5a2be51a422e878518bd750424bb56b8a0ecf0f8ad2057e83f"),
    84  				Weight:        100,
    85  			},
    86  			{
    87  				Role:          flow.RoleExecution,
    88  				NodeID:        flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000021"),
    89  				Address:       "21.flow.com",
    90  				NetworkPubKey: unittest.MustDecodePublicKeyHex(crypto.ECDSAP256, "d64318ba0dbf68f3788fc81c41d507c5822bf53154530673127c66f50fe4469ccf1a054a868a9f88506a8999f2386d86fcd2b901779718cba4fb53c2da258f9e"),
    91  				StakingPubKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "880b162b7ec138b36af401d07868cb08d25746d905395edbb4625bdf105d4bb2b2f4b0f4ae273a296a6efefa7ce9ccb914e39947ce0e83745125cab05d62516076ff0173ed472d3791ccef937597c9ea12381d76f547a092a4981d77ff3fba83"),
    92  				Weight:        100,
    93  			},
    94  			{
    95  				Role:          flow.RoleVerification,
    96  				NodeID:        flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000031"),
    97  				Address:       "31.flow.com",
    98  				NetworkPubKey: unittest.MustDecodePublicKeyHex(crypto.ECDSAP256, "697241208dcc9142b6f53064adc8ff1c95760c68beb2ba083c1d005d40181fd7a1b113274e0163c053a3addd47cd528ec6a1f190cf465aac87c415feaae011ae"),
    99  				StakingPubKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "b1f97d0a06020eca97352e1adde72270ee713c7daf58da7e74bf72235321048b4841bdfc28227964bf18e371e266e32107d238358848bcc5d0977a0db4bda0b4c33d3874ff991e595e0f537c7b87b4ddce92038ebc7b295c9ea20a1492302aa7"),
   100  				Weight:        100,
   101  			},
   102  		},
   103  	}
   104  
   105  	return event, expected
   106  }
   107  
   108  // EpochCommitFixture returns an EpochCommit service event as a Cadence event
   109  // representation and as a protocol model representation.
   110  func EpochCommitFixture(chain flow.ChainID) (flow.Event, *flow.EpochCommit) {
   111  
   112  	events := systemcontracts.ServiceEventsForChain(chain)
   113  
   114  	event := unittest.EventFixture(events.EpochCommit.EventType(), 1, 1, unittest.IdentifierFixture(), 0)
   115  	event.Payload = []byte(epochCommitFixtureJSON)
   116  
   117  	expected := &flow.EpochCommit{
   118  		Counter: 1,
   119  		ClusterQCs: []flow.ClusterQCVoteData{
   120  			{
   121  				VoterIDs: []flow.Identifier{
   122  					flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000001"),
   123  					flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000002"),
   124  				},
   125  				SigData: unittest.MustDecodeSignatureHex("b072ed22ed305acd44818a6c836e09b4e844eebde6a4fdbf5cec983e2872b86c8b0f6c34c0777bf52e385ab7c45dc55d"),
   126  			},
   127  			{
   128  				VoterIDs: []flow.Identifier{
   129  					flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000003"),
   130  					flow.MustHexStringToIdentifier("0000000000000000000000000000000000000000000000000000000000000004"),
   131  				},
   132  				SigData: unittest.MustDecodeSignatureHex("899e266a543e1b3a564f68b22f7be571f2e944ec30fadc4b39e2d5f526ba044c0f3cb2648f8334fc216fa3360a0418b2"),
   133  			},
   134  		},
   135  		DKGGroupKey: unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "8c588266db5f5cda629e83f8aa04ae9413593fac19e4865d06d291c9d14fbdd9bdb86a7a12f9ef8590c79cb635e3163315d193087e9336092987150d0cd2b14ac6365f7dc93eec573752108b8c12368abb65f0652d9f644e5aed611c37926950"),
   136  		DKGParticipantKeys: []crypto.PublicKey{
   137  			unittest.MustDecodePublicKeyHex(crypto.BLSBLS12381, "87a339e4e5c74f089da20a33f515d8c8f4464ab53ede5a74aa2432cd1ae66d522da0c122249ee176cd747ddc83ca81090498389384201614caf51eac392c1c0a916dfdcfbbdf7363f9552b6468434add3d3f6dc91a92bbe3ee368b59b7828488"),
   138  		},
   139  	}
   140  
   141  	return event, expected
   142  }
   143  
   144  var epochSetupFixtureJSON = `
   145  {
   146    "type": "Event",
   147    "value": {
   148      "id": "A.01cf0e2f2f715450.FlowEpoch.EpochSetup",
   149      "fields": [
   150        {
   151          "name": "counter",
   152          "value": {
   153            "type": "UInt64",
   154            "value": "1"
   155          }
   156        },
   157        {
   158          "name": "nodeInfo",
   159          "value": {
   160            "type": "Array",
   161            "value": [
   162              {
   163                "type": "Struct",
   164                "value": {
   165                  "id": "A.01cf0e2f2f715450.FlowIDTableStaking.NodeInfo",
   166                  "fields": [
   167                    {
   168                      "name": "id",
   169                      "value": {
   170                        "type": "String",
   171                        "value": "0000000000000000000000000000000000000000000000000000000000000001"
   172                      }
   173                    },
   174                    {
   175                      "name": "role",
   176                      "value": {
   177                        "type": "UInt8",
   178                        "value": "1"
   179                      }
   180                    },
   181                    {
   182                      "name": "networkingAddress",
   183                      "value": {
   184                        "type": "String",
   185                        "value": "1.flow.com"
   186                      }
   187                    },
   188                    {
   189                      "name": "networkingKey",
   190                      "value": {
   191                        "type": "String",
   192                        "value": "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"
   193                      }
   194                    },
   195                    {
   196                      "name": "stakingKey",
   197                      "value": {
   198                        "type": "String",
   199                        "value": "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"
   200                      }
   201                    },
   202                    {
   203                      "name": "tokensStaked",
   204                      "value": {
   205                        "type": "UFix64",
   206                        "value": "0.00000000"
   207                      }
   208                    },
   209                    {
   210                      "name": "tokensCommitted",
   211                      "value": {
   212                        "type": "UFix64",
   213                        "value": "1350000.00000000"
   214                      }
   215                    },
   216                    {
   217                      "name": "tokensUnstaking",
   218                      "value": {
   219                        "type": "UFix64",
   220                        "value": "0.00000000"
   221                      }
   222                    },
   223                    {
   224                      "name": "tokensUnstaked",
   225                      "value": {
   226                        "type": "UFix64",
   227                        "value": "0.00000000"
   228                      }
   229                    },
   230                    {
   231                      "name": "tokensRewarded",
   232                      "value": {
   233                        "type": "UFix64",
   234                        "value": "0.00000000"
   235                      }
   236                    },
   237                    {
   238                      "name": "delegators",
   239                      "value": {
   240                        "type": "Array",
   241                        "value": []
   242                      }
   243                    },
   244                    {
   245                      "name": "delegatorIDCounter",
   246                      "value": {
   247                        "type": "UInt32",
   248                        "value": "0"
   249                      }
   250                    },
   251                    {
   252                      "name": "tokensRequestedToUnstake",
   253                      "value": {
   254                        "type": "UFix64",
   255                        "value": "0.00000000"
   256                      }
   257                    },
   258                    {
   259                      "name": "initialWeight",
   260                      "value": {
   261                        "type": "UInt64",
   262                        "value": "100"
   263                      }
   264                    }
   265                  ]
   266                }
   267              },
   268              {
   269                "type": "Struct",
   270                "value": {
   271                  "id": "A.01cf0e2f2f715450.FlowIDTableStaking.NodeInfo",
   272                  "fields": [
   273                    {
   274                      "name": "id",
   275                      "value": {
   276                        "type": "String",
   277                        "value": "0000000000000000000000000000000000000000000000000000000000000002"
   278                      }
   279                    },
   280                    {
   281                      "name": "role",
   282                      "value": {
   283                        "type": "UInt8",
   284                        "value": "1"
   285                      }
   286                    },
   287                    {
   288                      "name": "networkingAddress",
   289                      "value": {
   290                        "type": "String",
   291                        "value": "2.flow.com"
   292                      }
   293                    },
   294                    {
   295                      "name": "networkingKey",
   296                      "value": {
   297                        "type": "String",
   298                        "value": "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"
   299                      }
   300                    },
   301                    {
   302                      "name": "stakingKey",
   303                      "value": {
   304                        "type": "String",
   305                        "value": "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"
   306                      }
   307                    },
   308                    {
   309                      "name": "tokensStaked",
   310                      "value": {
   311                        "type": "UFix64",
   312                        "value": "0.00000000"
   313                      }
   314                    },
   315                    {
   316                      "name": "tokensCommitted",
   317                      "value": {
   318                        "type": "UFix64",
   319                        "value": "1350000.00000000"
   320                      }
   321                    },
   322                    {
   323                      "name": "tokensUnstaking",
   324                      "value": {
   325                        "type": "UFix64",
   326                        "value": "0.00000000"
   327                      }
   328                    },
   329                    {
   330                      "name": "tokensUnstaked",
   331                      "value": {
   332                        "type": "UFix64",
   333                        "value": "0.00000000"
   334                      }
   335                    },
   336                    {
   337                      "name": "tokensRewarded",
   338                      "value": {
   339                        "type": "UFix64",
   340                        "value": "0.00000000"
   341                      }
   342                    },
   343                    {
   344                      "name": "delegators",
   345                      "value": {
   346                        "type": "Array",
   347                        "value": []
   348                      }
   349                    },
   350                    {
   351                      "name": "delegatorIDCounter",
   352                      "value": {
   353                        "type": "UInt32",
   354                        "value": "0"
   355                      }
   356                    },
   357                    {
   358                      "name": "tokensRequestedToUnstake",
   359                      "value": {
   360                        "type": "UFix64",
   361                        "value": "0.00000000"
   362                      }
   363                    },
   364                    {
   365                      "name": "initialWeight",
   366                      "value": {
   367                        "type": "UInt64",
   368                        "value": "100"
   369                      }
   370                    }
   371                  ]
   372                }
   373              },
   374              {
   375                "type": "Struct",
   376                "value": {
   377                  "id": "A.01cf0e2f2f715450.FlowIDTableStaking.NodeInfo",
   378                  "fields": [
   379                    {
   380                      "name": "id",
   381                      "value": {
   382                        "type": "String",
   383                        "value": "0000000000000000000000000000000000000000000000000000000000000003"
   384                      }
   385                    },
   386                    {
   387                      "name": "role",
   388                      "value": {
   389                        "type": "UInt8",
   390                        "value": "1"
   391                      }
   392                    },
   393                    {
   394                      "name": "networkingAddress",
   395                      "value": {
   396                        "type": "String",
   397                        "value": "3.flow.com"
   398                      }
   399                    },
   400                    {
   401                      "name": "networkingKey",
   402                      "value": {
   403                        "type": "String",
   404                        "value": "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"
   405                      }
   406                    },
   407                    {
   408                      "name": "stakingKey",
   409                      "value": {
   410                        "type": "String",
   411                        "value": "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"
   412                      }
   413                    },
   414                    {
   415                      "name": "tokensStaked",
   416                      "value": {
   417                        "type": "UFix64",
   418                        "value": "0.00000000"
   419                      }
   420                    },
   421                    {
   422                      "name": "tokensCommitted",
   423                      "value": {
   424                        "type": "UFix64",
   425                        "value": "1350000.00000000"
   426                      }
   427                    },
   428                    {
   429                      "name": "tokensUnstaking",
   430                      "value": {
   431                        "type": "UFix64",
   432                        "value": "0.00000000"
   433                      }
   434                    },
   435                    {
   436                      "name": "tokensUnstaked",
   437                      "value": {
   438                        "type": "UFix64",
   439                        "value": "0.00000000"
   440                      }
   441                    },
   442                    {
   443                      "name": "tokensRewarded",
   444                      "value": {
   445                        "type": "UFix64",
   446                        "value": "0.00000000"
   447                      }
   448                    },
   449                    {
   450                      "name": "delegators",
   451                      "value": {
   452                        "type": "Array",
   453                        "value": []
   454                      }
   455                    },
   456                    {
   457                      "name": "delegatorIDCounter",
   458                      "value": {
   459                        "type": "UInt32",
   460                        "value": "0"
   461                      }
   462                    },
   463                    {
   464                      "name": "tokensRequestedToUnstake",
   465                      "value": {
   466                        "type": "UFix64",
   467                        "value": "0.00000000"
   468                      }
   469                    },
   470                    {
   471                      "name": "initialWeight",
   472                      "value": {
   473                        "type": "UInt64",
   474                        "value": "100"
   475                      }
   476                    }
   477                  ]
   478                }
   479              },
   480              {
   481                "type": "Struct",
   482                "value": {
   483                  "id": "A.01cf0e2f2f715450.FlowIDTableStaking.NodeInfo",
   484                  "fields": [
   485                    {
   486                      "name": "id",
   487                      "value": {
   488                        "type": "String",
   489                        "value": "0000000000000000000000000000000000000000000000000000000000000004"
   490                      }
   491                    },
   492                    {
   493                      "name": "role",
   494                      "value": {
   495                        "type": "UInt8",
   496                        "value": "1"
   497                      }
   498                    },
   499                    {
   500                      "name": "networkingAddress",
   501                      "value": {
   502                        "type": "String",
   503                        "value": "4.flow.com"
   504                      }
   505                    },
   506                    {
   507                      "name": "networkingKey",
   508                      "value": {
   509                        "type": "String",
   510                        "value": "378dbf45d85c614feb10d8bd4f78f4b6ef8eec7d987b937e123255444657fb3da031f232a507e323df3a6f6b8f50339c51d188e80c0e7a92420945cc6ca893fc"
   511                      }
   512                    },
   513                    {
   514                      "name": "stakingKey",
   515                      "value": {
   516                        "type": "String",
   517                        "value": "af4aade26d76bb2ab15dcc89adcef82a51f6f04b3cb5f4555214b40ec89813c7a5f95776ea4fe449de48166d0bbc59b919b7eabebaac9614cf6f9461fac257765415f4d8ef1376a2365ec9960121888ea5383d88a140c24c29962b0a14e4e4e7"
   518                      }
   519                    },
   520                    {
   521                      "name": "tokensStaked",
   522                      "value": {
   523                        "type": "UFix64",
   524                        "value": "0.00000000"
   525                      }
   526                    },
   527                    {
   528                      "name": "tokensCommitted",
   529                      "value": {
   530                        "type": "UFix64",
   531                        "value": "1350000.00000000"
   532                      }
   533                    },
   534                    {
   535                      "name": "tokensUnstaking",
   536                      "value": {
   537                        "type": "UFix64",
   538                        "value": "0.00000000"
   539                      }
   540                    },
   541                    {
   542                      "name": "tokensUnstaked",
   543                      "value": {
   544                        "type": "UFix64",
   545                        "value": "0.00000000"
   546                      }
   547                    },
   548                    {
   549                      "name": "tokensRewarded",
   550                      "value": {
   551                        "type": "UFix64",
   552                        "value": "0.00000000"
   553                      }
   554                    },
   555                    {
   556                      "name": "delegators",
   557                      "value": {
   558                        "type": "Array",
   559                        "value": []
   560                      }
   561                    },
   562                    {
   563                      "name": "delegatorIDCounter",
   564                      "value": {
   565                        "type": "UInt32",
   566                        "value": "0"
   567                      }
   568                    },
   569                    {
   570                      "name": "tokensRequestedToUnstake",
   571                      "value": {
   572                        "type": "UFix64",
   573                        "value": "0.00000000"
   574                      }
   575                    },
   576                    {
   577                      "name": "initialWeight",
   578                      "value": {
   579                        "type": "UInt64",
   580                        "value": "100"
   581                      }
   582                    }
   583                  ]
   584                }
   585              },
   586              {
   587                "type": "Struct",
   588                "value": {
   589                  "id": "A.01cf0e2f2f715450.FlowIDTableStaking.NodeInfo",
   590                  "fields": [
   591                    {
   592                      "name": "id",
   593                      "value": {
   594                        "type": "String",
   595                        "value": "0000000000000000000000000000000000000000000000000000000000000011"
   596                      }
   597                    },
   598                    {
   599                      "name": "role",
   600                      "value": {
   601                        "type": "UInt8",
   602                        "value": "2"
   603                      }
   604                    },
   605                    {
   606                      "name": "networkingAddress",
   607                      "value": {
   608                        "type": "String",
   609                        "value": "11.flow.com"
   610                      }
   611                    },
   612                    {
   613                      "name": "networkingKey",
   614                      "value": {
   615                        "type": "String",
   616                        "value": "cfdfe8e4362c8f79d11772cb7277ab16e5033a63e8dd5d34caf1b041b77e5b2d63c2072260949ccf8907486e4cfc733c8c42ca0e4e208f30470b0d950856cd47"
   617                      }
   618                    },
   619                    {
   620                      "name": "stakingKey",
   621                      "value": {
   622                        "type": "String",
   623                        "value": "8207559cd7136af378bba53a8f0196dee3849a3ab02897c1995c3e3f6ca0c4a776c3ae869d1ddbb473090054be2400ad06d7910aa2c5d1780220fdf3765a3c1764bce10c6fe66a5a2be51a422e878518bd750424bb56b8a0ecf0f8ad2057e83f"
   624                      }
   625                    },
   626                    {
   627                      "name": "tokensStaked",
   628                      "value": {
   629                        "type": "UFix64",
   630                        "value": "0.00000000"
   631                      }
   632                    },
   633                    {
   634                      "name": "tokensCommitted",
   635                      "value": {
   636                        "type": "UFix64",
   637                        "value": "1350000.00000000"
   638                      }
   639                    },
   640                    {
   641                      "name": "tokensUnstaking",
   642                      "value": {
   643                        "type": "UFix64",
   644                        "value": "0.00000000"
   645                      }
   646                    },
   647                    {
   648                      "name": "tokensUnstaked",
   649                      "value": {
   650                        "type": "UFix64",
   651                        "value": "0.00000000"
   652                      }
   653                    },
   654                    {
   655                      "name": "tokensRewarded",
   656                      "value": {
   657                        "type": "UFix64",
   658                        "value": "0.00000000"
   659                      }
   660                    },
   661                    {
   662                      "name": "delegators",
   663                      "value": {
   664                        "type": "Array",
   665                        "value": []
   666                      }
   667                    },
   668                    {
   669                      "name": "delegatorIDCounter",
   670                      "value": {
   671                        "type": "UInt32",
   672                        "value": "0"
   673                      }
   674                    },
   675                    {
   676                      "name": "tokensRequestedToUnstake",
   677                      "value": {
   678                        "type": "UFix64",
   679                        "value": "0.00000000"
   680                      }
   681                    },
   682                    {
   683                      "name": "initialWeight",
   684                      "value": {
   685                        "type": "UInt64",
   686                        "value": "100"
   687                      }
   688                    }
   689                  ]
   690                }
   691              },
   692              {
   693                "type": "Struct",
   694                "value": {
   695                  "id": "A.01cf0e2f2f715450.FlowIDTableStaking.NodeInfo",
   696                  "fields": [
   697                    {
   698                      "name": "id",
   699                      "value": {
   700                        "type": "String",
   701                        "value": "0000000000000000000000000000000000000000000000000000000000000021"
   702                      }
   703                    },
   704                    {
   705                      "name": "role",
   706                      "value": {
   707                        "type": "UInt8",
   708                        "value": "3"
   709                      }
   710                    },
   711                    {
   712                      "name": "networkingAddress",
   713                      "value": {
   714                        "type": "String",
   715                        "value": "21.flow.com"
   716                      }
   717                    },
   718                    {
   719                      "name": "networkingKey",
   720                      "value": {
   721                        "type": "String",
   722                        "value": "d64318ba0dbf68f3788fc81c41d507c5822bf53154530673127c66f50fe4469ccf1a054a868a9f88506a8999f2386d86fcd2b901779718cba4fb53c2da258f9e"
   723                      }
   724                    },
   725                    {
   726                      "name": "stakingKey",
   727                      "value": {
   728                        "type": "String",
   729                        "value": "880b162b7ec138b36af401d07868cb08d25746d905395edbb4625bdf105d4bb2b2f4b0f4ae273a296a6efefa7ce9ccb914e39947ce0e83745125cab05d62516076ff0173ed472d3791ccef937597c9ea12381d76f547a092a4981d77ff3fba83"
   730                      }
   731                    },
   732                    {
   733                      "name": "tokensStaked",
   734                      "value": {
   735                        "type": "UFix64",
   736                        "value": "0.00000000"
   737                      }
   738                    },
   739                    {
   740                      "name": "tokensCommitted",
   741                      "value": {
   742                        "type": "UFix64",
   743                        "value": "1350000.00000000"
   744                      }
   745                    },
   746                    {
   747                      "name": "tokensUnstaking",
   748                      "value": {
   749                        "type": "UFix64",
   750                        "value": "0.00000000"
   751                      }
   752                    },
   753                    {
   754                      "name": "tokensUnstaked",
   755                      "value": {
   756                        "type": "UFix64",
   757                        "value": "0.00000000"
   758                      }
   759                    },
   760                    {
   761                      "name": "tokensRewarded",
   762                      "value": {
   763                        "type": "UFix64",
   764                        "value": "0.00000000"
   765                      }
   766                    },
   767                    {
   768                      "name": "delegators",
   769                      "value": {
   770                        "type": "Array",
   771                        "value": []
   772                      }
   773                    },
   774                    {
   775                      "name": "delegatorIDCounter",
   776                      "value": {
   777                        "type": "UInt32",
   778                        "value": "0"
   779                      }
   780                    },
   781                    {
   782                      "name": "tokensRequestedToUnstake",
   783                      "value": {
   784                        "type": "UFix64",
   785                        "value": "0.00000000"
   786                      }
   787                    },
   788                    {
   789                      "name": "initialWeight",
   790                      "value": {
   791                        "type": "UInt64",
   792                        "value": "100"
   793                      }
   794                    }
   795                  ]
   796                }
   797              },
   798              {
   799                "type": "Struct",
   800                "value": {
   801                  "id": "A.01cf0e2f2f715450.FlowIDTableStaking.NodeInfo",
   802                  "fields": [
   803                    {
   804                      "name": "id",
   805                      "value": {
   806                        "type": "String",
   807                        "value": "0000000000000000000000000000000000000000000000000000000000000031"
   808                      }
   809                    },
   810                    {
   811                      "name": "role",
   812                      "value": {
   813                        "type": "UInt8",
   814                        "value": "4"
   815                      }
   816                    },
   817                    {
   818                      "name": "networkingAddress",
   819                      "value": {
   820                        "type": "String",
   821                        "value": "31.flow.com"
   822                      }
   823                    },
   824                    {
   825                      "name": "networkingKey",
   826                      "value": {
   827                        "type": "String",
   828                        "value": "697241208dcc9142b6f53064adc8ff1c95760c68beb2ba083c1d005d40181fd7a1b113274e0163c053a3addd47cd528ec6a1f190cf465aac87c415feaae011ae"
   829                      }
   830                    },
   831                    {
   832                      "name": "stakingKey",
   833                      "value": {
   834                        "type": "String",
   835                        "value": "b1f97d0a06020eca97352e1adde72270ee713c7daf58da7e74bf72235321048b4841bdfc28227964bf18e371e266e32107d238358848bcc5d0977a0db4bda0b4c33d3874ff991e595e0f537c7b87b4ddce92038ebc7b295c9ea20a1492302aa7"
   836                      }
   837                    },
   838                    {
   839                      "name": "tokensStaked",
   840                      "value": {
   841                        "type": "UFix64",
   842                        "value": "0.00000000"
   843                      }
   844                    },
   845                    {
   846                      "name": "tokensCommitted",
   847                      "value": {
   848                        "type": "UFix64",
   849                        "value": "1350000.00000000"
   850                      }
   851                    },
   852                    {
   853                      "name": "tokensUnstaking",
   854                      "value": {
   855                        "type": "UFix64",
   856                        "value": "0.00000000"
   857                      }
   858                    },
   859                    {
   860                      "name": "tokensUnstaked",
   861                      "value": {
   862                        "type": "UFix64",
   863                        "value": "0.00000000"
   864                      }
   865                    },
   866                    {
   867                      "name": "tokensRewarded",
   868                      "value": {
   869                        "type": "UFix64",
   870                        "value": "0.00000000"
   871                      }
   872                    },
   873                    {
   874                      "name": "delegators",
   875                      "value": {
   876                        "type": "Array",
   877                        "value": []
   878                      }
   879                    },
   880                    {
   881                      "name": "delegatorIDCounter",
   882                      "value": {
   883                        "type": "UInt32",
   884                        "value": "0"
   885                      }
   886                    },
   887                    {
   888                      "name": "tokensRequestedToUnstake",
   889                      "value": {
   890                        "type": "UFix64",
   891                        "value": "0.00000000"
   892                      }
   893                    },
   894                    {
   895                      "name": "initialWeight",
   896                      "value": {
   897                        "type": "UInt64",
   898                        "value": "100"
   899                      }
   900                    }
   901                  ]
   902                }
   903              }
   904            ]
   905          }
   906        },
   907        {
   908          "name": "firstView",
   909          "value": {
   910            "type": "UInt64",
   911            "value": "100"
   912          }
   913        },
   914        {
   915          "name": "finalView",
   916          "value": {
   917            "type": "UInt64",
   918            "value": "200"
   919          }
   920        },
   921        {
   922          "name": "collectorClusters",
   923          "value": {
   924            "type": "Array",
   925            "value": [
   926              {
   927                "type": "Struct",
   928                "value": {
   929                  "id": "A.01cf0e2f2f715450.FlowClusterQC.Cluster",
   930                  "fields": [
   931                    {
   932                      "name": "index",
   933                      "value": {
   934                        "type": "UInt16",
   935                        "value": "0"
   936                      }
   937                    },
   938                    {
   939                      "name": "nodeWeights",
   940                      "value": {
   941                        "type": "Dictionary",
   942                        "value": [
   943                          {
   944                            "key": {
   945                              "type": "String",
   946                              "value": "0000000000000000000000000000000000000000000000000000000000000001"
   947                            },
   948                            "value": {
   949                              "type": "UInt64",
   950                              "value": "100"
   951                            }
   952                          },
   953  						{
   954                            "key": {
   955                              "type": "String",
   956                              "value": "0000000000000000000000000000000000000000000000000000000000000002"
   957                            },
   958                            "value": {
   959                              "type": "UInt64",
   960                              "value": "100"
   961                            }
   962                          }
   963                        ]
   964                      }
   965                    },
   966                    {
   967                      "name": "totalWeight",
   968                      "value": {
   969                        "type": "UInt64",
   970                        "value": "100"
   971                      }
   972                    },
   973                    {
   974                      "name": "votes",
   975                      "value": {
   976                        "type": "Array",
   977                        "value": []
   978                      }
   979                    }
   980                  ]
   981                }
   982              },
   983              {
   984                "type": "Struct",
   985                "value": {
   986                  "id": "A.01cf0e2f2f715450.FlowClusterQC.Cluster",
   987                  "fields": [
   988                    {
   989                      "name": "index",
   990                      "value": {
   991                        "type": "UInt16",
   992                        "value": "1"
   993                      }
   994                    },
   995                    {
   996                      "name": "nodeWeights",
   997                      "value": {
   998                        "type": "Dictionary",
   999                        "value": [
  1000                          {
  1001                            "key": {
  1002                              "type": "String",
  1003                              "value": "0000000000000000000000000000000000000000000000000000000000000003"
  1004                            },
  1005                            "value": {
  1006                              "type": "UInt64",
  1007                              "value": "100"
  1008                            }
  1009                          },
  1010  						{
  1011                            "key": {
  1012                              "type": "String",
  1013                              "value": "0000000000000000000000000000000000000000000000000000000000000004"
  1014                            },
  1015                            "value": {
  1016                              "type": "UInt64",
  1017                              "value": "100"
  1018                            }
  1019                          }
  1020                        ]
  1021                      }
  1022                    },
  1023                    {
  1024                      "name": "totalWeight",
  1025                      "value": {
  1026                        "type": "UInt64",
  1027                        "value": "0"
  1028                      }
  1029                    },
  1030                    {
  1031                      "name": "votes",
  1032                      "value": {
  1033                        "type": "Array",
  1034                        "value": []
  1035                      }
  1036                    }
  1037                  ]
  1038                }
  1039              }
  1040            ]
  1041          }
  1042        },
  1043        {
  1044          "name": "randomSource",
  1045          "value": {
  1046            "type": "String",
  1047            "value": "01020304"
  1048          }
  1049        },
  1050        {
  1051          "name": "DKGPhase1FinalView",
  1052          "value": {
  1053            "type": "UInt64",
  1054            "value": "150"
  1055          }
  1056        },
  1057        {
  1058          "name": "DKGPhase2FinalView",
  1059          "value": {
  1060            "type": "UInt64",
  1061            "value": "160"
  1062          }
  1063        },
  1064        {
  1065          "name": "DKGPhase3FinalView",
  1066          "value": {
  1067            "type": "UInt64",
  1068            "value": "170"
  1069          }
  1070        }
  1071      ]
  1072    }
  1073  }
  1074  `
  1075  
  1076  var epochCommitFixtureJSON = `
  1077  {
  1078      "type": "Event",
  1079      "value": {
  1080          "id": "A.01cf0e2f2f715450.FlowEpoch.EpochCommitted",
  1081          "fields": [
  1082              {
  1083                  "name": "counter",
  1084                  "value": {
  1085                      "type": "UInt64",
  1086                      "value": "1"
  1087                  }
  1088              },
  1089              {
  1090                  "name": "clusterQCs",
  1091                  "value": {
  1092                      "type": "Array",
  1093                      "value": [
  1094                          {
  1095                              "type": "Struct",
  1096                              "value": {
  1097                                  "id": "A.01cf0e2f2f715450.FlowClusterQC.ClusterQC",
  1098                                  "fields": [
  1099                                      {
  1100                                          "name": "index",
  1101                                          "value": {
  1102                                              "type": "UInt16",
  1103                                              "value": "0"
  1104                                          }
  1105                                      },
  1106                                      {
  1107                                          "name": "voteSignatures",
  1108                                          "value": {
  1109                                              "type": "Array",
  1110                                              "value": [
  1111                                                  {
  1112                                                      "type": "String",
  1113                                                      "value": "a39cd1e1bf7e2fb0609b7388ce5215a6a4c01eef2aee86e1a007faa28a6b2a3dc876e11bb97cdb26c3846231d2d01e4d"
  1114                                                  },
  1115                                                  {
  1116                                                      "type": "String",
  1117                                                      "value": "91673ad9c717d396c9a0953617733c128049ac1a639653d4002ab245b121df1939430e313bcbfd06948f6a281f6bf853"
  1118                                                  }
  1119                                              ]
  1120                                          }
  1121                                      },
  1122  									{
  1123  										"name": "voteMessage",
  1124  										"value": {
  1125  											"type": "String",
  1126  											"value": "irrelevant_for_these_purposes"
  1127  										}
  1128  									},
  1129  									{
  1130                                          "name": "voterIDs",
  1131                                          "value": {
  1132                                              "type": "Array",
  1133                                              "value": [
  1134                                                  {
  1135                                                      "type": "String",
  1136                                                      "value": "0000000000000000000000000000000000000000000000000000000000000001"
  1137                                                  },
  1138                                                  {
  1139                                                      "type": "String",
  1140                                                      "value": "0000000000000000000000000000000000000000000000000000000000000002"
  1141                                                  }
  1142                                              ]
  1143                                          }
  1144                                      }
  1145                                  ]
  1146                              }
  1147                          },
  1148                          {
  1149                              "type": "Struct",
  1150                              "value": {
  1151                                  "id": "A.01cf0e2f2f715450.FlowClusterQC.ClusterQC",
  1152                                  "fields": [
  1153                                      {
  1154                                          "name": "index",
  1155                                          "value": {
  1156                                              "type": "UInt16",
  1157                                              "value": "1"
  1158                                          }
  1159                                      },
  1160                                      {
  1161                                          "name": "voteSignatures",
  1162                                          "value": {
  1163                                              "type": "Array",
  1164                                              "value": [
  1165                                                  {
  1166                                                      "type": "String",
  1167                                                      "value": "b2bff159971852ed63e72c37991e62c94822e52d4fdcd7bf29aaf9fb178b1c5b4ce20dd9594e029f3574cb29533b857a"
  1168                                                  },
  1169                                                  {
  1170                                                      "type": "String",
  1171                                                      "value": "9931562f0248c9195758da3de4fb92f24fa734cbc20c0cb80280163560e0e0348f843ac89ecbd3732e335940c1e8dccb"
  1172                                                  }
  1173                                              ]
  1174                                          }
  1175                                      },
  1176  									{
  1177  										"name": "voteMessage",
  1178  										"value": {
  1179  											"type": "String",
  1180  											"value": "irrelevant_for_these_purposes"
  1181  										}
  1182  									},
  1183  									{
  1184                                          "name": "voterIDs",
  1185                                          "value": {
  1186                                              "type": "Array",
  1187                                              "value": [
  1188                                                  {
  1189                                                      "type": "String",
  1190                                                      "value": "0000000000000000000000000000000000000000000000000000000000000003"
  1191                                                  },
  1192                                                  {
  1193                                                      "type": "String",
  1194                                                      "value": "0000000000000000000000000000000000000000000000000000000000000004"
  1195                                                  }
  1196                                              ]
  1197                                          }
  1198                                      }
  1199                                  ]
  1200                              }
  1201                          }
  1202                      ]
  1203                  }
  1204              },
  1205              {
  1206                  "name": "dkgPubKeys",
  1207                  "value": {
  1208                      "type": "Array",
  1209                      "value": [
  1210                          {
  1211                              "type": "String",
  1212                              "value": "8c588266db5f5cda629e83f8aa04ae9413593fac19e4865d06d291c9d14fbdd9bdb86a7a12f9ef8590c79cb635e3163315d193087e9336092987150d0cd2b14ac6365f7dc93eec573752108b8c12368abb65f0652d9f644e5aed611c37926950"
  1213                          },
  1214                          {
  1215                              "type": "String",
  1216                              "value": "87a339e4e5c74f089da20a33f515d8c8f4464ab53ede5a74aa2432cd1ae66d522da0c122249ee176cd747ddc83ca81090498389384201614caf51eac392c1c0a916dfdcfbbdf7363f9552b6468434add3d3f6dc91a92bbe3ee368b59b7828488"
  1217                          }
  1218                      ]
  1219                  }
  1220              }
  1221          ]
  1222      }
  1223  }`