diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json index 56df6225beb..d4263c63b6e 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks.json @@ -10,7 +10,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted, if using SSZ encoding." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json index 32866e570a8..d5f618fe8ce 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blinded_blocks_{block_id}.json @@ -29,7 +29,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json index 2d2da89b4c9..fe8a79993ba 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blob_sidecars_{block_id}.json @@ -41,7 +41,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json index 703cca02f5b..63e426ffe4b 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_blocks.json @@ -10,7 +10,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted, if using SSZ encoding." } } ], @@ -38,6 +38,8 @@ "$ref" : "#/components/schemas/SignedBlockContentsDeneb" }, { "$ref" : "#/components/schemas/SignedBlockContentsElectra" + }, { + "$ref" : "#/components/schemas/SignedBlockContentsFulu" } ] } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json index 56fb7296377..d56edf703d0 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_light_client_updates.json @@ -44,7 +44,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ] }, "data": { diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json index ee6c0b839fe..7b14df25a4a 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_consolidations.json @@ -23,7 +23,7 @@ "required" : true, "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "example" : "phase0" } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json index 4daacc4478c..29688e3333c 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_deposits.json @@ -23,7 +23,7 @@ "required" : true, "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "example" : "phase0" } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json index 46e5bbe88f9..86978f0bc76 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v1_beacon_states_{state_id}_pending_partial_withdrawals.json @@ -23,7 +23,7 @@ "required" : true, "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "example" : "phase0" } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json index 1cb1edbd7d8..cc1aef32b49 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blinded_blocks.json @@ -20,7 +20,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json index 91bea9a6f03..6784c9b3fbd 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks.json @@ -20,7 +20,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the block being submitted." } } ], @@ -48,6 +48,8 @@ "$ref" : "#/components/schemas/SignedBlockContentsDeneb" }, { "$ref" : "#/components/schemas/SignedBlockContentsElectra" + }, { + "$ref" : "#/components/schemas/SignedBlockContentsFulu" } ] } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json index c73cde0e358..9b7a2103393 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_blocks_{block_id}_attestations.json @@ -29,7 +29,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json index 592f1b8bc6d..122d579e6be 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attestations.json @@ -38,7 +38,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } @@ -85,7 +86,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the attestations being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json index 9562ee1a45b..e8ff23c8729 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_beacon_pool_attester_slashings.json @@ -19,7 +19,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } @@ -66,7 +67,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the attester slashing being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json index a803cb0fe24..3becc3252fa 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_debug_beacon_states_{state_id}.json @@ -29,7 +29,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json index 88123b6bfc9..cfc817fd982 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_and_proofs.json @@ -10,7 +10,7 @@ "in" : "header", "schema" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ], + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ], "description" : "Version of the aggregate and proofs being submitted." } } ], diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json index 232b9a64bd7..6976d143131 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v2_validator_aggregate_attestation.json @@ -50,7 +50,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json index f0d04e5f761..b1e08a9ff28 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/paths/_eth_v3_validator_blocks_{slot}.json @@ -68,7 +68,8 @@ "bellatrix", "capella", "deneb", - "electra" + "electra", + "fulu" ], "example": "phase0" } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/BlockContentsFulu.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/BlockContentsFulu.json new file mode 100644 index 00000000000..cce1946b2ef --- /dev/null +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/BlockContentsFulu.json @@ -0,0 +1,28 @@ +{ + "title" : "BlockContentsFulu", + "type" : "object", + "required" : [ "block", "kzg_proofs", "blobs" ], + "properties" : { + "block" : { + "$ref" : "#/components/schemas/BeaconBlockElectra" + }, + "kzg_proofs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "Bytes48 hexadecimal", + "format" : "bytes" + } + }, + "blobs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "SSZ hexadecimal", + "format" : "bytes" + } + } + } +} \ No newline at end of file diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json index 9cb12c68428..14f755d1397 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAggregatedAttestationResponseV2.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "object", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json index 80cd5b0740b..0b8c5d9d726 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetAllBlocksAtSlotResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "array", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json index 36777047ed8..6a06a9e0709 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlindedBlockResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json index 03a7a2c46d7..bc15072c3b4 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlobSidecarsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json index 0ab64e88a12..f7392a9c234 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockAttestationsResponseV2.json @@ -11,7 +11,7 @@ }, "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "object", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json index 87ad068b65f..dfedfb0bc1f 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetBlockV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json index 2d83bbbbbab..df021bf818e 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetLightClientBootstrapResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "$ref" : "#/components/schemas/LightClientBootstrap" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json index fdef248e084..9b560ab6f4e 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingConsolidationsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json index 8b4264a33be..e790fde76eb 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingDepositsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json index cf0f5c2f217..1a7e648ff70 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPendingPartialWithdrawalsResponse.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json index 80756cfe9c9..cc8fac0295b 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttestationsV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "array", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json index f7d37298367..b9c894f3a06 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetPoolAttesterSlashingsV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "data" : { "type" : "object", diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json index 27b011ce585..91c7ea990a7 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/GetStateV2Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_optimistic" : { "type" : "boolean" diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json index eede3e02bbf..544a88c106c 100644 --- a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/ProduceBlockV3Response.json @@ -5,7 +5,7 @@ "properties" : { "version" : { "type" : "string", - "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra" ] + "enum" : [ "phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu" ] }, "execution_payload_blinded" : { "type" : "boolean" @@ -45,6 +45,8 @@ "$ref" : "#/components/schemas/BlockContentsElectra" }, { "$ref" : "#/components/schemas/BlindedBeaconBlockElectra" + }, { + "$ref" : "#/components/schemas/BlockContentsFulu" } ] } } diff --git a/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/SignedBlockContentsFulu.json b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/SignedBlockContentsFulu.json new file mode 100644 index 00000000000..33ff526ffba --- /dev/null +++ b/data/beaconrestapi/src/integration-test/resources/tech/pegasys/teku/beaconrestapi/beacon/schema/SignedBlockContentsFulu.json @@ -0,0 +1,28 @@ +{ + "title" : "SignedBlockContentsFulu", + "type" : "object", + "required" : [ "signed_block", "kzg_proofs", "blobs" ], + "properties" : { + "signed_block" : { + "$ref" : "#/components/schemas/SignedBeaconBlockElectra" + }, + "kzg_proofs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "Bytes48 hexadecimal", + "format" : "bytes" + } + }, + "blobs" : { + "type" : "array", + "items" : { + "type" : "string", + "pattern" : "^0x[a-fA-F0-9]{2,}$", + "description" : "SSZ hexadecimal", + "format" : "bytes" + } + } + } +} \ No newline at end of file diff --git a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java index 061c052beaa..2878f0c34d0 100644 --- a/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java +++ b/ethereum/json-types/src/main/java/tech/pegasys/teku/ethereum/json/types/EthereumTypes.java @@ -22,7 +22,6 @@ import java.util.Locale; import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.function.Function; import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.units.bigints.UInt256; @@ -94,9 +93,7 @@ public class EthereumTypes { public static final StringValueTypeDefinition MILESTONE_TYPE = new EnumTypeDefinition<>( - SpecMilestone.class, - milestone -> milestone.name().toLowerCase(Locale.ROOT), - Set.of(SpecMilestone.FULU)); // TODO-fulu eventually we remove this ignore + SpecMilestone.class, milestone -> milestone.name().toLowerCase(Locale.ROOT)); public static final EnumHeaderTypeDefinition ETH_CONSENSUS_HEADER_TYPE = new EnumHeaderTypeDefinition.EnumTypeHeaderDefinitionBuilder<>( @@ -106,8 +103,6 @@ public class EthereumTypes { .description( "Required in response so client can deserialize returned json or ssz data more effectively.") .example("phase0") - .excludedEnumerations( - Set.of(SpecMilestone.FULU)) // TODO-fulu eventually we remove this ignore .build(); public static final BooleanHeaderTypeDefinition ETH_HEADER_EXECUTION_PAYLOAD_BLINDED_TYPE = diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecFactory.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecFactory.java index e180cdbf65a..ec3742a778c 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecFactory.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/SpecFactory.java @@ -18,6 +18,7 @@ import static tech.pegasys.teku.spec.SpecMilestone.CAPELLA; import static tech.pegasys.teku.spec.SpecMilestone.DENEB; import static tech.pegasys.teku.spec.SpecMilestone.ELECTRA; +import static tech.pegasys.teku.spec.SpecMilestone.FULU; import static tech.pegasys.teku.spec.SpecMilestone.PHASE0; import static tech.pegasys.teku.spec.config.SpecConfig.FAR_FUTURE_EPOCH; @@ -30,6 +31,7 @@ import tech.pegasys.teku.spec.config.SpecConfigCapella; import tech.pegasys.teku.spec.config.SpecConfigDeneb; import tech.pegasys.teku.spec.config.SpecConfigElectra; +import tech.pegasys.teku.spec.config.SpecConfigFulu; import tech.pegasys.teku.spec.config.SpecConfigLoader; import tech.pegasys.teku.spec.config.builder.SpecConfigBuilder; @@ -76,9 +78,17 @@ public static Spec create(final SpecConfigAndParent config .toVersionElectra() .map(SpecConfigElectra::getElectraForkEpoch) .orElse(FAR_FUTURE_EPOCH); + final UInt64 fuluForkEpoch = + config + .specConfig() + .toVersionFulu() + .map(SpecConfigFulu::getFuluForkEpoch) + .orElse(FAR_FUTURE_EPOCH); final SpecMilestone highestMilestoneSupported; - if (!electraForkEpoch.equals(FAR_FUTURE_EPOCH)) { + if (!fuluForkEpoch.equals(FAR_FUTURE_EPOCH)) { + highestMilestoneSupported = FULU; + } else if (!electraForkEpoch.equals(FAR_FUTURE_EPOCH)) { highestMilestoneSupported = ELECTRA; } else if (!denebForkEpoch.equals(FAR_FUTURE_EPOCH)) { highestMilestoneSupported = DENEB; diff --git a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java index 4b966af2285..520bc0fa232 100644 --- a/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java +++ b/ethereum/spec/src/main/java/tech/pegasys/teku/spec/schemas/SchemaDefinitionCache.java @@ -61,9 +61,6 @@ private SchemaDefinitions createSchemaDefinition(final SpecMilestone milestone) } public List getSupportedMilestones() { - // TODO-fulu remove filtering up to electra - return spec.getForkSchedule().getSupportedMilestones().stream() - .filter(specMilestone -> specMilestone.isLessThan(SpecMilestone.FULU)) - .toList(); + return spec.getForkSchedule().getSupportedMilestones().stream().toList(); } }