mirror of
https://github.com/onsonr/sonr.git
synced 2025-03-10 13:07:09 +00:00
46 lines
1.4 KiB
Go
46 lines
1.4 KiB
Go
|
package transaction
|
||
|
|
||
|
type (
|
||
|
// Msg uses structural types to define the interface for a message.
|
||
|
Msg = interface {
|
||
|
Reset()
|
||
|
String() string
|
||
|
ProtoMessage()
|
||
|
}
|
||
|
Identity = []byte
|
||
|
)
|
||
|
|
||
|
// GenericMsg defines a generic version of a Msg.
|
||
|
// The GenericMsg refers to the non pointer version of Msg,
|
||
|
// and is required to allow its instantiations in generic contexts.
|
||
|
type GenericMsg[T any] interface {
|
||
|
*T
|
||
|
Msg
|
||
|
}
|
||
|
|
||
|
// Codec defines the TX codec, which converts a TX from bytes to its concrete representation.
|
||
|
type Codec[T Tx] interface {
|
||
|
// Decode decodes the tx bytes into a DecodedTx, containing
|
||
|
// both concrete and bytes representation of the tx.
|
||
|
Decode([]byte) (T, error)
|
||
|
// DecodeJSON decodes the tx JSON bytes into a DecodedTx
|
||
|
DecodeJSON([]byte) (T, error)
|
||
|
}
|
||
|
|
||
|
// Tx defines the interface for a transaction.
|
||
|
// All custom transactions must implement this interface.
|
||
|
type Tx interface {
|
||
|
// Hash returns the unique identifier for the Tx.
|
||
|
Hash() [32]byte
|
||
|
// GetMessages returns the list of state transitions of the Tx.
|
||
|
GetMessages() ([]Msg, error)
|
||
|
// GetSenders returns the tx state transition sender.
|
||
|
GetSenders() ([]Identity, error) // TODO reduce this to a single identity if accepted
|
||
|
// GetGasLimit returns the gas limit of the tx. Must return math.MaxUint64 for infinite gas
|
||
|
// txs.
|
||
|
GetGasLimit() (uint64, error)
|
||
|
// Bytes returns the encoded version of this tx. Note: this is ideally cached
|
||
|
// from the first instance of the decoding of the tx.
|
||
|
Bytes() []byte
|
||
|
}
|