Line data Source code
1 : #ifndef HEADER_fd_src_discof_genesis_fd_genesi_tile_h 2 : #define HEADER_fd_src_discof_genesis_fd_genesi_tile_h 3 : 4 : /* The genesis tile publishes a single message type: 5 : 6 : A 'fd_genesis_meta_t' struct, followed by a Bincode-encoded genesis 7 : blob. */ 8 : 9 : #include "../../ballet/lthash/fd_lthash.h" 10 : #include "../../flamenco/fd_flamenco_base.h" 11 : #include "../../flamenco/accdb/fd_accdb_base.h" 12 : 13 : /* Worst case bound for a genesis TAR and bzip2's output size in MiB can 14 : fit in a uint (in bytes). */ 15 : #define FD_GENESIS_MAX_FILE_SIZE_MIB (4055UL) 16 : 17 : struct fd_genesis_meta { 18 : ulong bootstrap : 1; 19 : ulong has_lthash : 1; 20 : 21 : fd_hash_t genesis_hash; 22 : ulong creation_time_seconds; 23 : fd_lthash_value_t lthash; 24 : 25 : fd_accdb_fork_id_t accdb_root; /* populated by genesi when bootstrap is set */ 26 : 27 : ulong blob_sz; 28 : /* uchar[ blob_sz ] follows immediately after this struct */ 29 : }; 30 : 31 : typedef struct fd_genesis_meta fd_genesis_meta_t; 32 : 33 : FD_FN_CONST static inline ulong 34 0 : fd_genesi_tile_mtu( ulong max_message_size ) { 35 0 : return sizeof(fd_genesis_meta_t) + max_message_size; 36 0 : } 37 : 38 : #endif /* HEADER_fd_src_discof_genesis_fd_genesi_tile_h */