mirror of https://github.com/poanetwork/gecko.git
41 lines
1.2 KiB
Go
41 lines
1.2 KiB
Go
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package choices
|
|
|
|
import (
|
|
"github.com/ava-labs/gecko/ids"
|
|
)
|
|
|
|
// Decidable represents element that can be decided.
|
|
//
|
|
// Decidable objects are typically thought of as either transactions, blocks, or
|
|
// vertices.
|
|
type Decidable interface {
|
|
// ID returns a unique ID for this element.
|
|
//
|
|
// Typically, this is implemented by using a cryptographic hash of a
|
|
// binary representation of this element. An element should return the same
|
|
// IDs upon repeated calls.
|
|
ID() ids.ID
|
|
|
|
// Accept this element.
|
|
//
|
|
// This element will be accepted by every correct node in the network.
|
|
Accept() error
|
|
|
|
// Reject this element.
|
|
//
|
|
// This element will not be accepted by any correct node in the network.
|
|
Reject() error
|
|
|
|
// Status returns this element's current status.
|
|
//
|
|
// If Accept has been called on an element with this ID, Accepted should be
|
|
// returned. Similarly, if Reject has been called on an element with this
|
|
// ID, Rejected should be returned. If the contents of this element are
|
|
// unknown, then Unknown should be returned. Otherwise, Processing should be
|
|
// returned.
|
|
Status() Status
|
|
}
|