remove some debugRaiseAsserts and fill in Electra functionality (#6178)

This commit is contained in:
tersec 2024-04-06 07:46:02 +00:00 committed by GitHub
parent 06894dd2f6
commit 0d534224b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 56 additions and 17 deletions

View File

@ -409,8 +409,11 @@ proc installValidatorApiHandlers*(router: var RestRouter, node: BeaconNode) =
withBlck(message.blck): withBlck(message.blck):
let data = let data =
when consensusFork >= ConsensusFork.Electra: when consensusFork >= ConsensusFork.Electra:
debugRaiseAssert "validator API, electra" let blobsBundle = message.blobsBundleOpt.get()
default(phase0.BeaconBlock) electra.BlockContents(
`block`: forkyBlck,
kzg_proofs: blobsBundle.proofs,
blobs: blobsBundle.blobs)
elif consensusFork >= ConsensusFork.Deneb: elif consensusFork >= ConsensusFork.Deneb:
let blobsBundle = message.blobsBundleOpt.get() let blobsBundle = message.blobsBundleOpt.get()
deneb.BlockContents( deneb.BlockContents(

View File

@ -70,6 +70,7 @@ RestJson.useDefaultSerializationFor(
DepositReceipt, DepositReceipt,
DepositTreeSnapshot, DepositTreeSnapshot,
DistributedKeystoreInfo, DistributedKeystoreInfo,
ElectraSignedBlockContents,
EmptyBody, EmptyBody,
Eth1Data, Eth1Data,
EventBeaconBlockObject, EventBeaconBlockObject,
@ -245,6 +246,7 @@ RestJson.useDefaultSerializationFor(
electra.BeaconBlock, electra.BeaconBlock,
electra.BeaconState, electra.BeaconState,
electra.BeaconBlockBody, electra.BeaconBlockBody,
electra.BlockContents,
electra.ExecutionPayload, electra.ExecutionPayload,
electra.ExecutionPayloadHeader, electra.ExecutionPayloadHeader,
electra.SignedBeaconBlock, electra.SignedBeaconBlock,
@ -2299,7 +2301,7 @@ proc writeValue*(
writer.writeField("data", value.denebData) writer.writeField("data", value.denebData)
of ConsensusFork.Electra: of ConsensusFork.Electra:
writer.writeField("version", "electra") writer.writeField("version", "electra")
debugRaiseAssert "writeValue RestJson Electra ForkedSignedBaconBlock" writer.writeField("data", value.electraData)
writer.endRecord() writer.endRecord()
# ForkedHashedBeaconState is used where a `ForkedBeaconState` normally would # ForkedHashedBeaconState is used where a `ForkedBeaconState` normally would
@ -3616,8 +3618,17 @@ proc decodeBody*(
ok(RestPublishedSignedBlockContents( ok(RestPublishedSignedBlockContents(
kind: ConsensusFork.Deneb, denebData: blckContents)) kind: ConsensusFork.Deneb, denebData: blckContents))
of ConsensusFork.Electra: of ConsensusFork.Electra:
debugRaiseAssert "electra" let blckContents =
return err(RestErrorMessage.init(Http400, UnexpectedDecodeError)) try:
SSZ.decode(body.data, ElectraSignedBlockContents)
except SerializationError as exc:
return err(RestErrorMessage.init(Http400, UnableDecodeError,
[version, exc.formatMsg("<data>")]))
except CatchableError as exc:
return err(RestErrorMessage.init(Http400, UnexpectedDecodeError,
[version, $exc.msg]))
ok(RestPublishedSignedBlockContents(
kind: ConsensusFork.Electra, electraData: blckContents))
else: else:
err(RestErrorMessage.init(Http415, "Invalid content type", err(RestErrorMessage.init(Http415, "Invalid content type",
[version, $body.contentType])) [version, $body.contentType]))
@ -3748,9 +3759,24 @@ proc decodeBodyJsonOrSsz*(
ok(RestPublishedSignedBlockContents( ok(RestPublishedSignedBlockContents(
kind: ConsensusFork.Deneb, denebData: blckContents)) kind: ConsensusFork.Deneb, denebData: blckContents))
of ConsensusFork.Electra: of ConsensusFork.Electra:
debugRaiseAssert "electra" let blckContents =
return err( try:
RestErrorMessage.init(Http400, UnexpectedDecodeError)) RestJson.decode(body.data, ElectraSignedBlockContents,
requireAllFields = true,
allowUnknownFields = true)
except SerializationError as exc:
debug "Failed to decode JSON data",
err = exc.formatMsg("<data>"),
data = string.fromBytes(body.data)
return err(
RestErrorMessage.init(Http400, UnableDecodeError,
[version, exc.formatMsg("<data>")]))
except CatchableError as exc:
return err(
RestErrorMessage.init(Http400, UnexpectedDecodeError,
[version, $exc.msg]))
ok(RestPublishedSignedBlockContents(
kind: ConsensusFork.Electra, electraData: blckContents))
else: else:
err(RestErrorMessage.init(Http415, "Invalid content type", err(RestErrorMessage.init(Http415, "Invalid content type",
[version, $body.contentType])) [version, $body.contentType]))

View File

@ -536,8 +536,7 @@ proc getBlockSignature*(v: AttachedValidator, fork: Fork,
let web3signerRequest = let web3signerRequest =
when blck is ForkedBlindedBeaconBlock: when blck is ForkedBlindedBeaconBlock:
case blck.kind case blck.kind
of ConsensusFork.Phase0 .. ConsensusFork.Capella, ConsensusFork.Electra: of ConsensusFork.Phase0 .. ConsensusFork.Capella:
debugRaiseAssert "move electra case out"
return SignatureResult.err("Invalid blinded beacon block fork") return SignatureResult.err("Invalid blinded beacon block fork")
of ConsensusFork.Deneb: of ConsensusFork.Deneb:
case v.data.remoteType case v.data.remoteType
@ -552,6 +551,19 @@ proc getBlockSignature*(v: AttachedValidator, fork: Fork,
Web3SignerForkedBeaconBlock(kind: ConsensusFork.Deneb, Web3SignerForkedBeaconBlock(kind: ConsensusFork.Deneb,
data: blck.denebData.toBeaconBlockHeader), data: blck.denebData.toBeaconBlockHeader),
proofs) proofs)
of ConsensusFork.Electra:
case v.data.remoteType
of RemoteSignerType.Web3Signer:
Web3SignerRequest.init(fork, genesis_validators_root,
Web3SignerForkedBeaconBlock(kind: ConsensusFork.Electra,
data: blck.electraData.toBeaconBlockHeader))
of RemoteSignerType.VerifyingWeb3Signer:
let proofs = blockPropertiesProofs(
blck.electraData.body, electraIndex)
Web3SignerRequest.init(fork, genesis_validators_root,
Web3SignerForkedBeaconBlock(kind: ConsensusFork.Electra,
data: blck.electraData.toBeaconBlockHeader),
proofs)
elif blck is deneb_mev.BlindedBeaconBlock: elif blck is deneb_mev.BlindedBeaconBlock:
case v.data.remoteType case v.data.remoteType
of RemoteSignerType.Web3Signer: of RemoteSignerType.Web3Signer:

View File

@ -275,8 +275,8 @@ proc cmdBench(conf: DbConf, cfg: RuntimeConfig) =
blocks[4].add dag.db.getBlock( blocks[4].add dag.db.getBlock(
blck.root, deneb.TrustedSignedBeaconBlock).get() blck.root, deneb.TrustedSignedBeaconBlock).get()
of ConsensusFork.Electra: of ConsensusFork.Electra:
debugRaiseAssert "" blocks[5].add dag.db.getBlock(
let x = 5 blck.root, electra.TrustedSignedBeaconBlock).get()
let stateData = newClone(dag.headState) let stateData = newClone(dag.headState)

View File

@ -130,9 +130,7 @@ proc loadOps(
SSZ, consensusFork.SignedBeaconBlock) SSZ, consensusFork.SignedBeaconBlock)
blobData = blobData =
when consensusFork >= ConsensusFork.Electra: when consensusFork >= ConsensusFork.Deneb:
debugRaiseAssert "no electra support in fc test"
elif consensusFork >= ConsensusFork.Deneb:
if step.hasKey"blobs": if step.hasKey"blobs":
numExtraFields += 2 numExtraFields += 2
Opt.some BlobData( Opt.some BlobData(

View File

@ -82,8 +82,8 @@ proc getTestStates*(
cfg.CAPELLA_FORK_EPOCH = 3.Epoch cfg.CAPELLA_FORK_EPOCH = 3.Epoch
if consensusFork >= ConsensusFork.Deneb: if consensusFork >= ConsensusFork.Deneb:
cfg.DENEB_FORK_EPOCH = 4.Epoch cfg.DENEB_FORK_EPOCH = 4.Epoch
if consensusFork >= ConsensusFork.Electra:
debugRaiseAssert "ELECTRA_FORK_EPOCH" cfg.ELECTRA_FORK_EPOCH = 5.Epoch
for i, epoch in stateEpochs: for i, epoch in stateEpochs:
let slot = epoch.Epoch.start_slot let slot = epoch.Epoch.start_slot