syntax = "proto3"; package quilibrium.node.application.pb; option go_package = "source.quilibrium.com/quilibrium/monorepo/node/protobufs"; message Application { bytes address = 1; ExecutionContext execution_context = 2; } // The ExecutionContext defines the operating environment of the application enum ExecutionContext { // Intrinsic execution is a protocol-native application – Nodes are expected // to have the necessary information required to execute. // Intrinsic applications have addresses that have infinitessimal likelihood // of collision and must be constructed as nothing-up-my-sleeve values. EXECUTION_CONTEXT_INTRINSIC = 0; // Hypergraph execution is also protocol-native, however it can be chained // with extrinsic execution whereas other intrinsics cannot. // Hypergraph applications have addresses that are derived from location // within the hypergraph. EXECUTION_CONTEXT_HYPERGRAPH = 1; // Extrinsic execution is evaluation of application code that lives on the // protocol, either within the hypergraph or supplementary to it, e.g. MetaVM. EXECUTION_CONTEXT_EXTRINSIC = 2; } message IntrinsicExecutionInput { bytes address = 1; bytes input = 2; } message IntrinsicExecutionOutput { bytes address = 1; bytes output = 2; bytes proof = 3; } message Message { bytes hash = 1; bytes address = 2; bytes payload = 3; }