#ifndef LIGHTNING_BITCOIN_BLOCK_H #define LIGHTNING_BITCOIN_BLOCK_H #include "config.h" #include "bitcoin/shadouble.h" #include #include #include #include #include struct chainparams; struct bitcoin_blkid { struct sha256_double shad; }; /* Define bitcoin_blkid_eq (no padding) */ STRUCTEQ_DEF(bitcoin_blkid, 0, shad.sha.u); struct bitcoin_block_hdr { le32 version; struct bitcoin_blkid prev_hash; struct sha256_double merkle_hash; le32 timestamp; le32 target; le32 nonce; }; struct elements_block_proof { u8 *challenge; u8 *solution; }; struct elements_block_hdr { u32 block_height; struct elements_block_proof proof; }; struct bitcoin_block { struct bitcoin_block_hdr hdr; struct elements_block_hdr *elements_hdr; /* tal_count shows now many */ struct bitcoin_tx **tx; }; struct bitcoin_block * bitcoin_block_from_hex(const tal_t *ctx, const struct chainparams *chainparams, const char *hex, size_t hexlen); /* Compute the double SHA block ID from the block header. */ void bitcoin_block_blkid(const struct bitcoin_block *block, struct bitcoin_blkid *out); /* Parse hex string to get blockid (reversed, a-la bitcoind). */ bool bitcoin_blkid_from_hex(const char *hexstr, size_t hexstr_len, struct bitcoin_blkid *blockid); /* Get hex string of blockid (reversed, a-la bitcoind). */ bool bitcoin_blkid_to_hex(const struct bitcoin_blkid *blockid, char *hexstr, size_t hexstr_len); #endif /* LIGHTNING_BITCOIN_BLOCK_H */