interface.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //go:generate mockgen -source interface.go -destination=mock_interface.go -package=mps
  2. package mps
  3. import (
  4. "context"
  5. "github.com/ethereum/go-ethereum/common"
  6. "github.com/ethereum/go-ethereum/core/state"
  7. "github.com/ethereum/go-ethereum/core/types"
  8. "github.com/ethereum/go-ethereum/trie"
  9. )
  10. // PrivateStateManager interface separates
  11. type PrivateStateManager interface {
  12. PrivateStateMetadataResolver
  13. // StateRepository returns repository corresponding to a block hash
  14. StateRepository(blockHash common.Hash) (PrivateStateRepository, error)
  15. // CheckAt verifies if there's a state being managed at a block hash
  16. CheckAt(blockHash common.Hash) error
  17. // TrieDB returns the trie database
  18. TrieDB() *trie.Database
  19. }
  20. type PrivateStateMetadataResolver interface {
  21. ResolveForManagedParty(managedParty string) (*PrivateStateMetadata, error)
  22. ResolveForUserContext(ctx context.Context) (*PrivateStateMetadata, error)
  23. // PSIs returns list of types.PrivateStateIdentifier being managed
  24. PSIs() []types.PrivateStateIdentifier
  25. // NotIncludeAny returns true if NONE of the managedParties is a member
  26. // of the given psm, otherwise returns false
  27. NotIncludeAny(psm *PrivateStateMetadata, managedParties ...string) bool
  28. }
  29. // PrivateStateRepository abstracts how we handle private state(s) including
  30. // retrieving from and peristing private states to the underlying database
  31. type PrivateStateRepository interface {
  32. PrivateStateRoot(psi types.PrivateStateIdentifier) (common.Hash, error)
  33. StatePSI(psi types.PrivateStateIdentifier) (*state.StateDB, error)
  34. CommitAndWrite(isEIP158 bool, block *types.Block) error
  35. Commit(isEIP158 bool, block *types.Block) error
  36. Copy() PrivateStateRepository
  37. Reset() error
  38. DefaultState() (*state.StateDB, error)
  39. DefaultStateMetadata() *PrivateStateMetadata
  40. IsMPS() bool
  41. MergeReceipts(pub, priv types.Receipts) types.Receipts
  42. }