mirror of
https://github.com/0glabs/0g-chain.git
synced 2024-12-26 08:15:19 +00:00
77 lines
3.0 KiB
Protocol Buffer
77 lines
3.0 KiB
Protocol Buffer
|
syntax = "proto3";
|
||
|
|
||
|
package cosmos.orm.v1alpha1;
|
||
|
|
||
|
import "google/protobuf/descriptor.proto";
|
||
|
|
||
|
extend google.protobuf.MessageOptions {
|
||
|
// module_schema is used to define the ORM schema for an app module.
|
||
|
// All module config messages that use module_schema must also declare
|
||
|
// themselves as app module config messages using the cosmos.app.v1.is_module
|
||
|
// option.
|
||
|
ModuleSchemaDescriptor module_schema = 104503792;
|
||
|
}
|
||
|
|
||
|
// ModuleSchemaDescriptor describe's a module's ORM schema.
|
||
|
message ModuleSchemaDescriptor {
|
||
|
repeated FileEntry schema_file = 1;
|
||
|
|
||
|
// FileEntry describes an ORM file used in a module.
|
||
|
message FileEntry {
|
||
|
// id is a prefix that will be varint encoded and prepended to all the
|
||
|
// table keys specified in the file's tables.
|
||
|
uint32 id = 1;
|
||
|
|
||
|
// proto_file_name is the name of a file .proto in that contains
|
||
|
// table definitions. The .proto file must be in a package that the
|
||
|
// module has referenced using cosmos.app.v1.ModuleDescriptor.use_package.
|
||
|
string proto_file_name = 2;
|
||
|
|
||
|
// storage_type optionally indicates the type of storage this file's
|
||
|
// tables should used. If it is left unspecified, the default KV-storage
|
||
|
// of the app will be used.
|
||
|
StorageType storage_type = 3;
|
||
|
}
|
||
|
|
||
|
// prefix is an optional prefix that precedes all keys in this module's
|
||
|
// store.
|
||
|
bytes prefix = 2;
|
||
|
}
|
||
|
|
||
|
// StorageType
|
||
|
enum StorageType {
|
||
|
// STORAGE_TYPE_DEFAULT_UNSPECIFIED indicates the persistent
|
||
|
// KV-storage where primary key entries are stored in merkle-tree
|
||
|
// backed commitment storage and indexes and seqs are stored in
|
||
|
// fast index storage. Note that the Cosmos SDK before store/v2alpha1
|
||
|
// does not support this.
|
||
|
STORAGE_TYPE_DEFAULT_UNSPECIFIED = 0;
|
||
|
|
||
|
// STORAGE_TYPE_MEMORY indicates in-memory storage that will be
|
||
|
// reloaded every time an app restarts. Tables with this type of storage
|
||
|
// will by default be ignored when importing and exporting a module's
|
||
|
// state from JSON.
|
||
|
STORAGE_TYPE_MEMORY = 1;
|
||
|
|
||
|
// STORAGE_TYPE_TRANSIENT indicates transient storage that is reset
|
||
|
// at the end of every block. Tables with this type of storage
|
||
|
// will by default be ignored when importing and exporting a module's
|
||
|
// state from JSON.
|
||
|
STORAGE_TYPE_TRANSIENT = 2;
|
||
|
|
||
|
// STORAGE_TYPE_INDEX indicates persistent storage which is not backed
|
||
|
// by a merkle-tree and won't affect the app hash. Note that the Cosmos SDK
|
||
|
// before store/v2alpha1 does not support this.
|
||
|
STORAGE_TYPE_INDEX = 3;
|
||
|
|
||
|
// STORAGE_TYPE_INDEX indicates persistent storage which is backed by
|
||
|
// a merkle-tree. With this type of storage, both primary and index keys
|
||
|
// will affect the app hash and this is generally less efficient
|
||
|
// than using STORAGE_TYPE_DEFAULT_UNSPECIFIED which separates index
|
||
|
// keys into index storage. Note that modules built with the
|
||
|
// Cosmos SDK before store/v2alpha1 must specify STORAGE_TYPE_COMMITMENT
|
||
|
// instead of STORAGE_TYPE_DEFAULT_UNSPECIFIED or STORAGE_TYPE_INDEX
|
||
|
// because this is the only type of persistent storage available.
|
||
|
STORAGE_TYPE_COMMITMENT = 4;
|
||
|
}
|