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 }`