From 04165e161ab170936db26ecbe14d1ad1d1791d83 Mon Sep 17 00:00:00 2001 From: Duke Date: Thu, 12 Sep 2024 13:40:30 -0400 Subject: [PATCH] Explain more details about the burn address --- src/hush_bitcoind.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/hush_bitcoind.h b/src/hush_bitcoind.h index de16d72ae..218f09db7 100644 --- a/src/hush_bitcoind.h +++ b/src/hush_bitcoind.h @@ -24,7 +24,17 @@ #include "cc/CCinclude.h" #include "sietch.h" -// this is the address for pubkey = 0x000000000000000000000000000000000 (33 bytes) +// This is the address for pubkey = 0x000000000000000000000000000000000 (33 bytes) +// Funds sent to a burn address can never be spent because the pubkey is invalid +// because it is not a point on the elliptic curve we use (secp256k1, like all other +// Bitcoin-derived codebases). secp256k1 is defined by the equation y^2 = x^3 + 7 . +// Using pubkey=0 also implies privkey=0 and the (pubkey,privkey) pair are the same +// as the (x,y) pair in the equation. If you plug in (0,0) to the equation you get +// 0^2 = 0^3 + 7 or 0=7 which is false. This means that (0,0) is not a valid point +// on the secp256k1 curve. Therefore there is no valid signature to spend the funds +// sent to the burn address, because a valid signature must use a valid point on the +// elliptic curve being used. For these reasons, we can prove that the burn address +// receives funds which can never be spent. #define BURN_ADDRESS "RD6GgnrMpPaTSMn8vai6yiGA7mN4QGPVMY" int32_t hush_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp);