apply_extra.go 595 B

12345678910111213141516171819202122232425262728293031
  1. package qbftengine
  2. import "github.com/ethereum/go-ethereum/core/types"
  3. type ApplyQBFTExtra func(*types.QBFTExtra) error
  4. func Combine(applies ...ApplyQBFTExtra) ApplyQBFTExtra {
  5. return func(extra *types.QBFTExtra) error {
  6. for _, apply := range applies {
  7. err := apply(extra)
  8. if err != nil {
  9. return err
  10. }
  11. }
  12. return nil
  13. }
  14. }
  15. func ApplyHeaderQBFTExtra(header *types.Header, applies ...ApplyQBFTExtra) error {
  16. extra, err := getExtra(header)
  17. if err != nil {
  18. return err
  19. }
  20. err = Combine(applies...)(extra)
  21. if err != nil {
  22. return err
  23. }
  24. return setExtra(header, extra)
  25. }