aboutsummaryrefslogtreecommitdiff
path: root/src/signet.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/signet.h')
-rw-r--r--src/signet.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/signet.h b/src/signet.h
new file mode 100644
index 0000000000..23563a83c4
--- /dev/null
+++ b/src/signet.h
@@ -0,0 +1,37 @@
+// Copyright (c) 2019-2020 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#ifndef BITCOIN_SIGNET_H
+#define BITCOIN_SIGNET_H
+
+#include <consensus/params.h>
+#include <primitives/block.h>
+#include <primitives/transaction.h>
+
+#include <optional.h>
+
+/**
+ * Extract signature and check whether a block has a valid solution
+ */
+bool CheckSignetBlockSolution(const CBlock& block, const Consensus::Params& consensusParams);
+
+/**
+ * Generate the signet tx corresponding to the given block
+ *
+ * The signet tx commits to everything in the block except:
+ * 1. It hashes a modified merkle root with the signet signature removed.
+ * 2. It skips the nonce.
+ */
+class SignetTxs {
+ template<class T1, class T2>
+ SignetTxs(const T1& to_spend, const T2& to_sign) : m_to_spend{to_spend}, m_to_sign{to_sign} { }
+
+public:
+ static Optional<SignetTxs> Create(const CBlock& block, const CScript& challenge);
+
+ const CTransaction m_to_spend;
+ const CTransaction m_to_sign;
+};
+
+#endif // BITCOIN_SIGNET_H