syntax = "proto3";

package exchain.nebula.v1;

import "google/protobuf/descriptor.proto";
import "nebula/ext/options.proto";
import "nebula/v1/transaction.proto";

option csharp_namespace = "ExChain.Nebula.V1";
option go_package = "github.com/exchain/go-exchain/exchain/protocol/nebula/v1";
option java_multiple_files = true;
option java_outer_classname = "BlockProto";
option java_package = "org.exchain.nebula.v1";
option php_namespace = "ExChain\\Nebula\\v1";

message BlockHeader {
  uint64 height = 1;
  bytes parent_hash = 2;
  uint64 timestamp = 3;
  uint64 l1_height = 4;
  bytes l1_hash = 5;
  uint64 sequence_number = 6;
  bytes proposer = 7;
  bytes app_root = 8; // used to verify block is valid.
  bytes signature = 9; // used to verify block is mint by proposer.
}

message Block {
  BlockHeader header = 1;
  TransactionList transactions = 2;
}
