prysm-pulse/sharding/types.go
Raul Jordan 44ad64ffa5 sharding: tests pass
Former-commit-id: 8fbbb08b62c3ca59d5a74ecdc12944c9facc6ad6 [formerly 564ebef7667c7c3e5e2476046027961dbe900e4d]
Former-commit-id: ac1af4f69f41c54afc520259285dfb68775be966
2018-05-22 06:53:15 -05:00

38 lines
1.1 KiB
Go

package sharding
import (
"math/big"
ethereum "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/ethereum/go-ethereum/sharding/contracts"
)
// Service defines items that can be registered into a sharding client.
//
// life-cycle management is delegated to the sharding client. The service is allowed to
// initialize itself upon creation, but no goroutines should be spun up outside of the
// Start method.
type Service interface {
// Start is called after all services have been constructed and the networking
// layer was also initialized to spawn any goroutines required by the service.
Start() error
// Stop terminates all goroutines belonging to the service, blocking until they
// are all terminated.
Stop() error
}
// Node methods that must be implemented to run a sharding node.
type Node interface {
Start() error
Close()
CreateTXOpts(*big.Int) (*bind.TransactOpts, error)
ChainReader() ethereum.ChainReader
Account() *accounts.Account
SMCCaller() *contracts.SMCCaller
SMCTransactor() *contracts.SMCTransactor
DepositFlagSet() bool
}