mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-19 09:54:16 +01:00
bitcoin/script.c: Add scriptpubkey_opreturn_padded, which creates an OP_RETURN with a pointless random 20-byte padding.
In the case of `donateutxo`, this is needed since a simple spend of a P2WPKH to an `OP_RETURN` would be below the minimum transaction size. Sizes below 20 are not plausible as commitments.
This commit is contained in:
parent
ee276bcb86
commit
6c13e9b300
@ -9,6 +9,7 @@
|
|||||||
#include <ccan/endian/endian.h>
|
#include <ccan/endian/endian.h>
|
||||||
#include <ccan/mem/mem.h>
|
#include <ccan/mem/mem.h>
|
||||||
#include <common/utils.h>
|
#include <common/utils.h>
|
||||||
|
#include <sodium/randombytes.h>
|
||||||
|
|
||||||
/* Some standard ops */
|
/* Some standard ops */
|
||||||
#define OP_0 0x00
|
#define OP_0 0x00
|
||||||
@ -221,6 +222,16 @@ u8 *scriptpubkey_opreturn(const tal_t *ctx)
|
|||||||
add_op(&script, OP_RETURN);
|
add_op(&script, OP_RETURN);
|
||||||
return script;
|
return script;
|
||||||
}
|
}
|
||||||
|
u8 *scriptpubkey_opreturn_padded(const tal_t *ctx)
|
||||||
|
{
|
||||||
|
u8 *script = tal_arr(ctx, u8, 0);
|
||||||
|
u8 random[20];
|
||||||
|
randombytes_buf(random, sizeof(random));
|
||||||
|
|
||||||
|
add_op(&script, OP_RETURN);
|
||||||
|
script_push_bytes(&script, random, sizeof(random));
|
||||||
|
return script;
|
||||||
|
}
|
||||||
|
|
||||||
/* Create an input script which spends p2pkh */
|
/* Create an input script which spends p2pkh */
|
||||||
u8 *bitcoin_redeem_p2pkh(const tal_t *ctx, const struct pubkey *pubkey,
|
u8 *bitcoin_redeem_p2pkh(const tal_t *ctx, const struct pubkey *pubkey,
|
||||||
|
@ -30,6 +30,11 @@ u8 *scriptpubkey_p2pkh(const tal_t *ctx, const struct bitcoin_address *addr);
|
|||||||
|
|
||||||
/* Create a prunable output script */
|
/* Create a prunable output script */
|
||||||
u8 *scriptpubkey_opreturn(const tal_t *ctx);
|
u8 *scriptpubkey_opreturn(const tal_t *ctx);
|
||||||
|
/* Create a prunable output script with 20 random bytes.
|
||||||
|
* This is needed since a spend from a p2wpkh to an `OP_RETURN` without
|
||||||
|
* any other outputs would result in a transaction smaller than the
|
||||||
|
* minimum size. */
|
||||||
|
u8 *scriptpubkey_opreturn_padded(const tal_t *ctx);
|
||||||
|
|
||||||
/* Create an input script which spends p2pkh */
|
/* Create an input script which spends p2pkh */
|
||||||
u8 *bitcoin_redeem_p2pkh(const tal_t *ctx, const struct pubkey *pubkey,
|
u8 *bitcoin_redeem_p2pkh(const tal_t *ctx, const struct pubkey *pubkey,
|
||||||
|
Loading…
Reference in New Issue
Block a user