cosmos-sdk/server/rosetta/types.go

105 lines
3.1 KiB
Go

package rosetta
import (
"crypto/sha256"
)
// statuses
const (
StatusTxSuccess = "Success"
StatusTxReverted = "Reverted"
StatusPeerSynced = "synced"
StatusPeerSyncing = "syncing"
)
// In rosetta all state transitions must be represented as transactions
// since in tendermint begin block and end block are state transitions
// which are not represented as transactions we mock only the balance changes
// happening at those levels as transactions. (check BeginBlockTxHash for more info)
const (
DeliverTxSize = sha256.Size
BeginEndBlockTxSize = DeliverTxSize + 1
EndBlockHashStart = 0x0
BeginBlockHashStart = 0x1
)
const (
// BurnerAddressIdentifier mocks the account identifier of a burner address
// all coins burned in the sdk will be sent to this identifier, which per sdk.AccAddress
// design we will never be able to query (as of now).
// Rosetta does not understand supply contraction.
BurnerAddressIdentifier = "burner"
)
// TransactionType is used to distinguish if a rosetta provided hash
// represents endblock, beginblock or deliver tx
type TransactionType int
const (
UnrecognizedTx TransactionType = iota
BeginBlockTx
EndBlockTx
DeliverTxTx
)
// metadata options
// misc
const (
Log = "log"
)
// ConstructionPreprocessMetadata is used to represent
// the metadata rosetta can provide during preprocess options
type ConstructionPreprocessMetadata struct {
Memo string `json:"memo"`
GasLimit uint64 `json:"gas_limit"`
GasPrice string `json:"gas_price"`
}
func (c *ConstructionPreprocessMetadata) FromMetadata(meta map[string]interface{}) error {
return unmarshalMetadata(meta, c)
}
// PreprocessOperationsOptionsResponse is the structured metadata options returned by the preprocess operations endpoint
type PreprocessOperationsOptionsResponse struct {
ExpectedSigners []string `json:"expected_signers"`
Memo string `json:"memo"`
GasLimit uint64 `json:"gas_limit"`
GasPrice string `json:"gas_price"`
}
func (c PreprocessOperationsOptionsResponse) ToMetadata() (map[string]interface{}, error) {
return marshalMetadata(c)
}
func (c *PreprocessOperationsOptionsResponse) FromMetadata(meta map[string]interface{}) error {
return unmarshalMetadata(meta, c)
}
// SignerData contains information on the signers when the request
// is being created, used to populate the account information
type SignerData struct {
AccountNumber uint64 `json:"account_number"`
Sequence uint64 `json:"sequence"`
}
// ConstructionMetadata are the metadata options used to
// construct a transaction. It is returned by ConstructionMetadataFromOptions
// and fed to ConstructionPayload to process the bytes to sign.
type ConstructionMetadata struct {
ChainID string `json:"chain_id"`
SignersData []*SignerData `json:"signer_data"`
GasLimit uint64 `json:"gas_limit"`
GasPrice string `json:"gas_price"`
Memo string `json:"memo"`
}
func (c ConstructionMetadata) ToMetadata() (map[string]interface{}, error) {
return marshalMetadata(c)
}
func (c *ConstructionMetadata) FromMetadata(meta map[string]interface{}) error {
return unmarshalMetadata(meta, c)
}