diff --git a/bitcoin/script.c b/bitcoin/script.c index 0714b2a4d..d707c5b63 100644 --- a/bitcoin/script.c +++ b/bitcoin/script.c @@ -374,7 +374,7 @@ bool is_p2pkh(const u8 *script, struct bitcoin_address *addr) { size_t script_len = tal_len(script); - if (script_len != 25) + if (script_len != BITCOIN_SCRIPTPUBKEY_P2PKH_LEN) return false; if (script[0] != OP_DUP) return false; @@ -395,7 +395,7 @@ bool is_p2sh(const u8 *script, struct ripemd160 *addr) { size_t script_len = tal_len(script); - if (script_len != 23) + if (script_len != BITCOIN_SCRIPTPUBKEY_P2SH_LEN) return false; if (script[0] != OP_HASH160) return false; @@ -412,7 +412,7 @@ bool is_p2wsh(const u8 *script, struct sha256 *addr) { size_t script_len = tal_len(script); - if (script_len != 1 + 1 + sizeof(struct sha256)) + if (script_len != BITCOIN_SCRIPTPUBKEY_P2WSH_LEN) return false; if (script[0] != OP_0) return false; @@ -427,7 +427,7 @@ bool is_p2wpkh(const u8 *script, struct bitcoin_address *addr) { size_t script_len = tal_len(script); - if (script_len != 1 + 1 + sizeof(struct ripemd160)) + if (script_len != BITCOIN_SCRIPTPUBKEY_P2WPKH_LEN) return false; if (script[0] != OP_0) return false; diff --git a/bitcoin/script.h b/bitcoin/script.h index 6623e14a6..fd0e89a5e 100644 --- a/bitcoin/script.h +++ b/bitcoin/script.h @@ -144,4 +144,16 @@ bool is_p2wpkh(const u8 *script, struct bitcoin_address *addr); /* Are these two scripts equal? */ bool scripteq(const tal_t *s1, const tal_t *s2); +/* OP_DUP + OP_HASH160 + PUSH(20-byte-hash) + OP_EQUALVERIFY + OP_CHECKSIG */ +#define BITCOIN_SCRIPTPUBKEY_P2PKH_LEN (1 + 1 + 1 + 20 + 1 + 1) + +/* OP_HASH160 + PUSH(20-byte-hash) + OP_EQUAL */ +#define BITCOIN_SCRIPTPUBKEY_P2SH_LEN (1 + 1 + 20 + 1) + +/* OP_0 + PUSH(20-byte-hash) */ +#define BITCOIN_SCRIPTPUBKEY_P2WPKH_LEN (1 + 1 + 20) + +/* OP_0 + PUSH(32-byte-hash) */ +#define BITCOIN_SCRIPTPUBKEY_P2WSH_LEN (1 + 1 + 32) + #endif /* LIGHTNING_BITCOIN_SCRIPT_H */