use case statement to avoid runtime doAssert

This commit is contained in:
Dustin Brody 2020-08-04 19:44:16 +02:00 committed by zah
parent c142de4b7f
commit 9c65c50249
1 changed files with 15 additions and 16 deletions

View File

@ -108,23 +108,22 @@ func toPubKey*(privkey: ValidatorPrivKey): ValidatorPubKey =
proc toRealPubKey(pubkey: ValidatorPubKey): Option[ValidatorPubKey] =
var validatorKeyCache {.threadvar.}: Table[Hash, Option[ValidatorPubKey]]
if pubkey.kind == Real:
case pubkey.kind:
of Real:
return some(pubkey)
doAssert pubkey.kind == OpaqueBlob
let key = hash(pubkey.blob)
try:
validatorKeyCache[key]
except KeyError:
var val: blscurve.PublicKey
let maybeRealKey =
if fromBytes(val, pubkey.blob):
some ValidatorPubKey(kind: Real, blsValue: val)
else:
none ValidatorPubKey
validatorKeyCache[key] = maybeRealKey
maybeRealKey
of OpaqueBlob:
let key = hash(pubkey.blob)
try:
validatorKeyCache[key]
except KeyError:
var val: blscurve.PublicKey
let maybeRealKey =
if fromBytes(val, pubkey.blob):
some ValidatorPubKey(kind: Real, blsValue: val)
else:
none ValidatorPubKey
validatorKeyCache[key] = maybeRealKey
maybeRealKey
proc initPubKey*(pubkey: ValidatorPubKey): ValidatorPubKey =
let key = toRealPubKey(pubkey)