mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-14 14:24:32 +00:00
3bb707422b
The 3 proofs can be reworked to two proofs as we can use the BeaconBlock directly instead of BeaconBlockHeader and BeaconBlockBody. This is possible because the HTR of the BeaconBlock is the same as the one of the BeaconBlockHeader. This results in 32 bytes less as an intermediate hash can be removed. But more importantly looks more clean and compact in structure and code.
68 lines
1.8 KiB
Nim
68 lines
1.8 KiB
Nim
# fluffy
|
|
# Copyright (c) 2024 Status Research & Development GmbH
|
|
# Licensed and distributed under either of
|
|
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
|
|
{.push raises: [].}
|
|
|
|
import std/streams, yaml, results, yaml/parser, yaml/presenter
|
|
|
|
export yaml
|
|
|
|
type YamlPortalContent* = object
|
|
content_key*: string
|
|
content_value*: string
|
|
|
|
proc loadFromYaml*(T: type, file: string): Result[T, string] =
|
|
let s =
|
|
try:
|
|
openFileStream(file)
|
|
except IOError as e:
|
|
return err(e.msg)
|
|
defer:
|
|
try:
|
|
close(s)
|
|
except Exception as e:
|
|
raiseAssert(e.msg)
|
|
var res: T
|
|
try:
|
|
{.gcsafe.}:
|
|
yaml.load(s, res)
|
|
except YamlConstructionError as e:
|
|
return err(e.msg)
|
|
except YamlParserError as e:
|
|
return err(e.msg)
|
|
except OSError as e:
|
|
return err(e.msg)
|
|
except IOError as e:
|
|
return err(e.msg)
|
|
ok(res)
|
|
|
|
proc dumpToYaml*[T](value: T, file: string): Result[void, string] =
|
|
let s = newFileStream(file, fmWrite)
|
|
defer:
|
|
try:
|
|
close(s)
|
|
except Exception as e:
|
|
raiseAssert(e.msg)
|
|
|
|
# To dump to yaml, avoiding TAGS and YAML version directives
|
|
var dumper = minimalDumper()
|
|
dumper.setDefaultStyle()
|
|
dumper.serialization.handles = @[]
|
|
dumper.serialization.tagStyle = tsNone
|
|
dumper.presentation.outputVersion = ovNone
|
|
|
|
try:
|
|
{.gcsafe.}:
|
|
dumper.dump(value, s)
|
|
except YamlPresenterJsonError as e:
|
|
return err(e.msg)
|
|
except YamlSerializationError as e:
|
|
return err(e.msg)
|
|
except YamlPresenterOutputError as e:
|
|
return err(e.msg)
|
|
ok()
|