99 lines
2.6 KiB
Protocol Buffer
99 lines
2.6 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package sf.substreams.v1;
|
|
|
|
option go_package = "github.com/streamingfast/substreams/pb/sf/substreams/v1;pbsubstreams";
|
|
|
|
message Modules {
|
|
repeated Module modules = 1;
|
|
repeated Binary binaries = 2;
|
|
}
|
|
|
|
// Binary represents some code compiled to its binary form.
|
|
message Binary {
|
|
string type = 1;
|
|
bytes content = 2;
|
|
}
|
|
|
|
message Module {
|
|
string name = 1;
|
|
oneof kind {
|
|
KindMap kind_map = 2;
|
|
KindStore kind_store = 3;
|
|
}
|
|
|
|
uint32 binary_index = 4;
|
|
string binary_entrypoint = 5;
|
|
|
|
repeated Input inputs = 6;
|
|
Output output = 7;
|
|
|
|
uint64 initial_block = 8;
|
|
|
|
message KindMap {
|
|
string output_type = 1;
|
|
}
|
|
|
|
message KindStore {
|
|
// The `update_policy` determines the functions available to mutate the store
|
|
// (like `set()`, `set_if_not_exists()` or `sum()`, etc..) in
|
|
// order to ensure that parallel operations are possible and deterministic
|
|
//
|
|
// Say a store cumulates keys from block 0 to 1M, and a second store
|
|
// cumulates keys from block 1M to 2M. When we want to use this
|
|
// store as a dependency for a downstream module, we will merge the
|
|
// two stores according to this policy.
|
|
UpdatePolicy update_policy = 1;
|
|
string value_type = 2;
|
|
|
|
enum UpdatePolicy {
|
|
UPDATE_POLICY_UNSET = 0;
|
|
// Provides a store where you can `set()` keys, and the latest key wins
|
|
UPDATE_POLICY_SET = 1;
|
|
// Provides a store where you can `set_if_not_exists()` keys, and the first key wins
|
|
UPDATE_POLICY_SET_IF_NOT_EXISTS = 2;
|
|
// Provides a store where you can `add_*()` keys, where two stores merge by summing its values.
|
|
UPDATE_POLICY_ADD = 3;
|
|
// Provides a store where you can `min_*()` keys, where two stores merge by leaving the minimum value.
|
|
UPDATE_POLICY_MIN = 4;
|
|
// Provides a store where you can `max_*()` keys, where two stores merge by leaving the maximum value.
|
|
UPDATE_POLICY_MAX = 5;
|
|
// Provides a store where you can `append()` keys, where two stores merge by concatenating the bytes in order.
|
|
UPDATE_POLICY_APPEND = 6;
|
|
}
|
|
}
|
|
|
|
message Input {
|
|
oneof input {
|
|
Source source = 1;
|
|
Map map = 2;
|
|
Store store = 3;
|
|
Params params = 4;
|
|
}
|
|
|
|
message Source {
|
|
string type = 1; // ex: "sf.ethereum.type.v1.Block"
|
|
}
|
|
message Map {
|
|
string module_name = 1; // ex: "block_to_pairs"
|
|
}
|
|
message Store {
|
|
string module_name = 1;
|
|
Mode mode = 2;
|
|
|
|
enum Mode {
|
|
UNSET = 0;
|
|
GET = 1;
|
|
DELTAS = 2;
|
|
}
|
|
}
|
|
message Params {
|
|
string value = 1;
|
|
}
|
|
}
|
|
|
|
message Output {
|
|
string type = 1;
|
|
}
|
|
}
|