Skip to content

Commit 2534141

Browse files
committed
Merge ElementsProject#1219: Simplicity
5088360 Asset tests: Check script error (Christian Lewe) 4ca2411 Asset tests: Parse Elements script errors (Russell O'Connor) afee926 Simplicity Functional Tests. (Russell O'Connor) bcd508f Add Simplicity Deployment structure (Russell O'Connor) 1698454 Add Simplicity verification (Russell O'Connor) 96fb8f5 Store hash_genesis_block in PrecomputedTransactionData. (Russell O'Connor) 50916cf simplicity: enable coverage in configure.ac (Byron Hambly) 6c69253 Add MSVC build configuration for libelementssimplicity (Russell O'Connor) 28553fd Add Simplicity to the build system. (Russell O'Connor) d5ad21b Lint simplicity subtree (Russell O'Connor) f502c24 Squashed 'src/simplicity/' content from commit 86ac0f92c4 (Russell O'Connor) 5224c1a Exclude simplicity directory (Russell O'Connor) 52b92b8 Cherry-pick <bitcoin/bitcoin#27122> (Russell O'Connor) Pull request description: Tasks needed to pass CI: - [x] For Mingw32, remove pthread dependency from Simplicity (upstream). - [x] Merge (upcoming) libsecp256k1 release into Simplicity (upstream). Tasks needed for public signet: - [x] Add weight requirements for jets and combinantors (upstream). - [x] Maximum memory allocation (upstream). - [x] Other missing anti-DOS protection (upstream)? Tasks needed for testing. - [ ] Ensure that the fuzzer covers `libelementssimplicity`. Before merging: - [ ] Rebase on master. ACKs for top commit: delta1: utACK 5088360 apoelstra: utACK 5088360 Tree-SHA512: c1f77c6133306d4d88fbc79aa86764b751497b75ec2884241f7d4fe946bbe6a13f3469cd586c44b4c1640fe2cb4c12299cc9998742d49aea5658a1893c0a6a68
2 parents fbc01d5 + 5088360 commit 2534141

File tree

132 files changed

+52683
-24
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

132 files changed

+52683
-24
lines changed

Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ LCOV_FILTER_PATTERN = \
195195
-p "src/crypto/ctaes" \
196196
-p "src/minisketch" \
197197
-p "src/secp256k1" \
198+
-p "src/simplicity/secp256k1" \
198199
-p "depends"
199200

200201
DIR_FUZZ_SEED_CORPUS ?= qa-assets/fuzz_seed_corpus

build_msvc/bitcoin.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbitcoin_wallet_tool", "l
3838
EndProject
3939
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsecp256k1", "libsecp256k1\libsecp256k1.vcxproj", "{BB493552-3B8C-4A8C-BF69-A6E7A51D2EA6}"
4040
EndProject
41+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libelementssimplicity", "libelementssimplicity\libelementssimplicity.vcxproj", "{ABAE25F0-D700-46E1-9EF6-5D6DDFCF8B26}"
42+
EndProject
4143
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libleveldb", "libleveldb\libleveldb.vcxproj", "{18430FEF-6B61-4C53-B396-718E02850F1B}"
4244
EndProject
4345
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbitcoin_qt", "libbitcoin_qt\libbitcoin_qt.vcxproj", "{2B4ABFF8-D1FD-4845-88C9-1F3C0A6512BF}"
@@ -128,6 +130,10 @@ Global
128130
{BB493552-3B8C-4A8C-BF69-A6E7A51D2EA6}.Debug|x64.Build.0 = Debug|x64
129131
{BB493552-3B8C-4A8C-BF69-A6E7A51D2EA6}.Release|x64.ActiveCfg = Release|x64
130132
{BB493552-3B8C-4A8C-BF69-A6E7A51D2EA6}.Release|x64.Build.0 = Release|x64
133+
{ABAE25F0-D700-46E1-9EF6-5D6DDFCF8B26}.Debug|x64.ActiveCfg = Debug|x64
134+
{ABAE25F0-D700-46E1-9EF6-5D6DDFCF8B26}.Debug|x64.Build.0 = Debug|x64
135+
{ABAE25F0-D700-46E1-9EF6-5D6DDFCF8B26}.Release|x64.ActiveCfg = Release|x64
136+
{ABAE25F0-D700-46E1-9EF6-5D6DDFCF8B26}.Release|x64.Build.0 = Release|x64
131137
{18430FEF-6B61-4C53-B396-718E02850F1B}.Debug|x64.ActiveCfg = Debug|x64
132138
{18430FEF-6B61-4C53-B396-718E02850F1B}.Debug|x64.Build.0 = Debug|x64
133139
{18430FEF-6B61-4C53-B396-718E02850F1B}.Release|x64.ActiveCfg = Release|x64

build_msvc/common.init.vcxproj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,12 @@
8787
<ClCompile>
8888
<WarningLevel>Level3</WarningLevel>
8989
<PrecompiledHeader>NotUsing</PrecompiledHeader>
90-
<AdditionalOptions>/utf-8 /Zc:__cplusplus /std:c++17 %(AdditionalOptions)</AdditionalOptions>
90+
<LanguageStandard>stdcpp17</LanguageStandard>
91+
<AdditionalOptions>/utf-8 /Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
9192
<DisableSpecificWarnings>4018;4244;4267;4334;4715;4805;4834</DisableSpecificWarnings>
9293
<TreatWarningAsError>true</TreatWarningAsError>
9394
<PreprocessorDefinitions>_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;SECP256K1_STATIC;_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING;ZMQ_STATIC;NOMINMAX;WIN32;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CONSOLE;_WIN32_WINNT=0x0601;_WIN32_IE=0x0501;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
94-
<AdditionalIncludeDirectories>..\..\src;..\..\src\minisketch\include;..\..\src\univalue\include;..\..\src\secp256k1\include;..\..\src\leveldb\include;..\..\src\leveldb\helpers\memenv;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
95+
<AdditionalIncludeDirectories>..\..\src;..\..\src\minisketch\include;..\..\src\univalue\include;..\..\src\secp256k1\include;..\..\src\simplicity\include;..\..\src\leveldb\include;..\..\src\leveldb\helpers\memenv;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
9596
</ClCompile>
9697
<Link>
9798
<SubSystem>Console</SubSystem>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="..\common.init.vcxproj" />
4+
<PropertyGroup Label="Globals">
5+
<ProjectGuid>{ABAE25F0-D700-46E1-9EF6-5D6DDFCF8B26}</ProjectGuid>
6+
</PropertyGroup>
7+
<PropertyGroup Label="Configuration">
8+
<ConfigurationType>StaticLibrary</ConfigurationType>
9+
</PropertyGroup>
10+
<ItemGroup>
11+
<ClCompile Include="..\..\src\simplicity\bitstream.c" />
12+
<ClCompile Include="..\..\src\simplicity\cmr.c" />
13+
<ClCompile Include="..\..\src\simplicity\dag.c" />
14+
<ClCompile Include="..\..\src\simplicity\deserialize.c" />
15+
<ClCompile Include="..\..\src\simplicity\eval.c" />
16+
<ClCompile Include="..\..\src\simplicity\frame.c" />
17+
<ClCompile Include="..\..\src\simplicity\jets-secp256k1.c" />
18+
<ClCompile Include="..\..\src\simplicity\jets.c" />
19+
<ClCompile Include="..\..\src\simplicity\rsort.c" />
20+
<ClCompile Include="..\..\src\simplicity\sha256.c" />
21+
<ClCompile Include="..\..\src\simplicity\type.c" />
22+
<ClCompile Include="..\..\src\simplicity\typeInference.c" />
23+
<ClCompile Include="..\..\src\simplicity\primitive\elements\env.c" />
24+
<ClCompile Include="..\..\src\simplicity\primitive\elements\exec.c" />
25+
<ClCompile Include="..\..\src\simplicity\primitive\elements\elementsJets.c" />
26+
<ClCompile Include="..\..\src\simplicity\primitive\elements\ops.c" />
27+
<ClCompile Include="..\..\src\simplicity\primitive\elements\primitive.c" />
28+
</ItemGroup>
29+
<ItemDefinitionGroup>
30+
<ClCompile>
31+
<LanguageStandard_C>stdc11</LanguageStandard_C>
32+
<DisableSpecificWarnings>4090;4146;4244;4715</DisableSpecificWarnings>
33+
</ClCompile>
34+
</ItemDefinitionGroup>
35+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
36+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
37+
<Import Project="..\common.vcxproj" />
38+
</Project>

build_msvc/test_bitcoin/test_bitcoin.vcxproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@
5656
<ProjectReference Include="..\libsecp256k1\libsecp256k1.vcxproj">
5757
<Project>{bb493552-3b8c-4a8c-bf69-a6e7a51d2ea6}</Project>
5858
</ProjectReference>
59+
<ProjectReference Include="..\libelementssimplicity\libelementssimplicity.vcxproj">
60+
<Project>{abae25f0-d700-46e1-9ef6-5d6ddfcf8b26}</Project>
61+
</ProjectReference>
5962
<ProjectReference Include="..\libleveldb\libleveldb.vcxproj">
6063
<Project>{18430fef-6b61-4c53-b396-718e02850f1b}</Project>
6164
</ProjectReference>

ci/lint/06_script.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export COMMIT_RANGE
1717
# check with -r to not have to fetch all the remotes.
1818
test/lint/git-subtree-check.sh src/crypto/ctaes
1919
test/lint/git-subtree-check.sh src/secp256k1
20+
test/lint/git-subtree-check.sh src/simplicity
2021
test/lint/git-subtree-check.sh src/minisketch
2122
test/lint/git-subtree-check.sh src/univalue
2223
test/lint/git-subtree-check.sh src/leveldb

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -862,7 +862,7 @@ if test "$use_lcov" = "yes"; then
862862

863863
AX_CHECK_LINK_FLAG([--coverage], [LDFLAGS="$LDFLAGS --coverage"],
864864
[AC_MSG_ERROR([lcov testing requested but --coverage linker flag does not work])])
865-
AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
865+
AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage";CFLAGS="$CFLAGS --coverage"],
866866
[AC_MSG_ERROR([lcov testing requested but --coverage flag does not work])])
867867
CXXFLAGS="$CXXFLAGS -Og"
868868
fi

src/Makefile.am

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ AM_LIBTOOLFLAGS = --preserve-dup-deps
1515
PTHREAD_FLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
1616
EXTRA_LIBRARIES =
1717

18-
BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) -I$(srcdir)/secp256k1/include -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) $(BDB_CPPFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
18+
BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) -I$(srcdir)/secp256k1/include -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT) -I$(srcdir)/$(ELEMENTS_SIMPLICITY_INCLUDE_DIR_INT) $(BDB_CPPFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
1919

2020
LIBBITCOIN_NODE=libbitcoin_node.a
2121
LIBBITCOIN_COMMON=libbitcoin_common.a
@@ -721,7 +721,8 @@ elements_bin_ldadd = \
721721
$(LIBLEVELDB) \
722722
$(LIBLEVELDB_SSE42) \
723723
$(LIBMEMENV) \
724-
$(LIBSECP256K1)
724+
$(LIBSECP256K1) \
725+
$(LIBELEMENTSSIMPLICITY)
725726

726727
elements_bin_ldadd += $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(ZMQ_LIBS) $(SQLITE_LIBS)
727728

@@ -772,7 +773,8 @@ elements_tx_LDADD = \
772773
$(LIBBITCOIN_UTIL) \
773774
$(LIBBITCOIN_CONSENSUS) \
774775
$(LIBBITCOIN_CRYPTO) \
775-
$(LIBSECP256K1)
776+
$(LIBSECP256K1) \
777+
$(LIBELEMENTSSIMPLICITY)
776778
#
777779

778780
# bitcoin-wallet binary #
@@ -790,6 +792,7 @@ elements_wallet_LDADD = \
790792
$(LIBBITCOIN_CONSENSUS) \
791793
$(LIBBITCOIN_CRYPTO) \
792794
$(LIBSECP256K1) \
795+
$(LIBELEMENTSSIMPLICITY) \
793796
$(BDB_LIBS) \
794797
$(EVENT_LIBS) \
795798
$(LIBLEVELDB) \
@@ -818,7 +821,8 @@ elements_util_LDADD = \
818821
$(LIBUNIVALUE) \
819822
$(LIBBITCOIN_CONSENSUS) \
820823
$(LIBBITCOIN_CRYPTO) \
821-
$(LIBSECP256K1)
824+
$(LIBSECP256K1) \
825+
$(LIBELEMENTSSIMPLICITY)
822826
#
823827

824828
# bitcoin-chainstate binary #
@@ -953,8 +957,8 @@ include_HEADERS = script/bitcoinconsensus.h
953957
libelementsconsensus_la_SOURCES = support/cleanse.cpp $(crypto_libbitcoin_crypto_base_a_SOURCES) $(libelements_consensus_a_SOURCES)
954958

955959
libelementsconsensus_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS)
956-
libelementsconsensus_la_LIBADD = $(LIBSECP256K1)
957-
libelementsconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL
960+
libelementsconsensus_la_LIBADD = $(LIBSECP256K1) $(LIBELEMENTSSIMPLICITY)
961+
libelementsconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include -I$(srcdir)/$(ELEMENTS_SIMPLICITY_INCLUDE_DIR_INT) -DBUILD_BITCOIN_INTERNAL
958962
libelementsconsensus_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
959963

960964
endif
@@ -1079,3 +1083,5 @@ include Makefile.qttest.include
10791083
endif
10801084

10811085
include Makefile.univalue.include
1086+
1087+
include Makefile.elementssimplicity.include

src/Makefile.bench.include

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ bench_bench_bitcoin_LDADD = \
6262
$(LIBLEVELDB_SSE42) \
6363
$(LIBMEMENV) \
6464
$(LIBSECP256K1) \
65+
$(LIBELEMENTSSIMPLICITY) \
6566
$(LIBUNIVALUE) \
6667
$(EVENT_PTHREADS_LIBS) \
6768
$(EVENT_LIBS)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
include simplicity/elements-sources.mk
2+
3+
LIBELEMENTSSIMPLICITY = libelementssimplicity.la
4+
noinst_LTLIBRARIES += $(LIBELEMENTSSIMPLICITY)
5+
libelementssimplicity_la_SOURCES = $(ELEMENTS_SIMPLICITY_LIB_SOURCES_INT) $(ELEMENTS_SIMPLICITY_DIST_HEADERS_INT) $(ELEMENTS_SIMPLICITY_LIB_HEADERS_INT)
6+
libelementssimplicity_la_CPPFLAGS = $(AM_CPPFLAGS) $(SHANI_CXXFLAGS) -I$(srcdir)/$(ELEMENTS_SIMPLICITY_INCLUDE_DIR_INT)

src/Makefile.qt.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ elements_qt_ldadd += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
330330
endif
331331
elements_qt_ldadd += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
332332
$(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(LIBSECP256K1) \
333-
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(SQLITE_LIBS)
333+
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(SQLITE_LIBS) $(LIBELEMENTSSIMPLICITY)
334334
elements_qt_ldflags = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
335335
elements_qt_libtoolflags = $(AM_LIBTOOLFLAGS) --tag CXX
336336

src/Makefile.qttest.include

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ qt_test_test_elements_qt_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
5353
endif
5454
qt_test_test_elements_qt_LDADD += $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) \
5555
$(LIBLEVELDB_SSE42) $(LIBMEMENV) $(QT_LIBS) $(QT_DBUS_LIBS) $(QT_TEST_LIBS) \
56-
$(QR_LIBS) $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(LIBSECP256K1) \
56+
$(QR_LIBS) $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(LIBSECP256K1) $(LIBELEMENTSSIMPLICITY) \
5757
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(SQLITE_LIBS)
5858
qt_test_test_elements_qt_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
5959
qt_test_test_elements_qt_CXXFLAGS = $(AM_CXXFLAGS) $(QT_PIE_FLAGS)

src/Makefile.test.include

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ FUZZ_SUITE_LD_COMMON = \
5050
$(LIBLEVELDB_SSE42) \
5151
$(LIBMEMENV) \
5252
$(LIBSECP256K1) \
53+
$(LIBELEMENTSSIMPLICITY) \
5354
$(MINISKETCH_LIBS) \
5455
$(EVENT_LIBS) \
5556
$(EVENT_PTHREADS_LIBS)
@@ -204,7 +205,7 @@ test_test_bitcoin_LDADD += $(LIBBITCOIN_WALLET)
204205
endif
205206

206207
test_test_bitcoin_LDADD += $(LIBBITCOIN_NODE) $(LIBBITCOIN_CLI) $(LIBBITCOIN_COMMON) $(LIBBITCOIN_UTIL) $(LIBBITCOIN_CONSENSUS) $(LIBBITCOIN_CRYPTO) $(LIBUNIVALUE) \
207-
$(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(LIBSECP256K1) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS) $(MINISKETCH_LIBS)
208+
$(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) $(LIBSECP256K1) $(LIBELEMENTSSIMPLICITY) $(EVENT_LIBS) $(EVENT_PTHREADS_LIBS) $(MINISKETCH_LIBS)
208209
test_test_bitcoin_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
209210

210211
test_test_bitcoin_LDADD += $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(SQLITE_LIBS)

src/chainparams.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,12 @@ class CMainParams : public CChainParams {
214214
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021
215215
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 709632; // Approximately November 12th, 2021
216216

217+
// Simplicity
218+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].bit = 24;
219+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
220+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
221+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].min_activation_height = 0; // No activation delay
222+
217223
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000002927cdceccbd5209e81e80db");
218224
consensus.defaultAssumeValid = uint256S("0x000000000000000000052d314a259755ca65944e68df6b12a067ea8f1f5a7091"); // 724466
219225

@@ -354,6 +360,12 @@ class CTestNetParams : public CChainParams {
354360
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = 1628640000; // August 11th, 2021
355361
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
356362

363+
// Simplicity
364+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].bit = 24;
365+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
366+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
367+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].min_activation_height = 0; // No activation delay
368+
357369
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000064728c7be6fe4b2f961");
358370
consensus.defaultAssumeValid = uint256S("0x00000000000163cfb1f97c4e4098a3692c8053ad9cab5ad9c86b338b5c00b8b7"); // 2143398
359371

@@ -514,6 +526,12 @@ class SigNetParams : public CChainParams {
514526
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
515527
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
516528

529+
// Simplicity
530+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].bit = 24;
531+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
532+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
533+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].min_activation_height = 0; // No activation delay
534+
517535
// ELEMENTS: copied from Main
518536
consensus.genesis_subsidy = 50*COIN;
519537
consensus.connect_genesis_outputs = false;
@@ -607,6 +625,12 @@ class CRegTestParams : public CChainParams {
607625
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nPeriod = 128; // test ability to change from default
608626
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nThreshold = 128;
609627

628+
// Simplicity
629+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].bit = 24;
630+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nStartTime = Consensus::BIP9Deployment::ALWAYS_ACTIVE;
631+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
632+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].min_activation_height = 0; // No activation delay
633+
610634
consensus.nMinimumChainWork = uint256{};
611635
consensus.defaultAssumeValid = uint256{};
612636

@@ -1257,6 +1281,12 @@ class CLiquidV1Params : public CChainParams {
12571281
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nPeriod = 10080; // one week...
12581282
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].nThreshold = 10080; // ...of 100% signalling
12591283

1284+
// Simplicity
1285+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].bit = 24;
1286+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
1287+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
1288+
consensus.vDeployments[Consensus::DEPLOYMENT_SIMPLICITY].min_activation_height = 0; // No activation delay
1289+
12601290
// Activated from block 1,000,000.
12611291
consensus.vDeployments[Consensus::DEPLOYMENT_DYNA_FED].bit = 25;
12621292
// Allow blocksigners to delay activation.

src/consensus/params.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,11 @@ enum DeploymentPos : uint16_t {
3434
DEPLOYMENT_TESTDUMMY,
3535
DEPLOYMENT_TAPROOT, // Deployment of Schnorr/Taproot (BIPs 340-342)
3636
DEPLOYMENT_DYNA_FED, // Deployment of dynamic federation
37+
DEPLOYMENT_SIMPLICITY, // Deployment of Simplicity
3738
// NOTE: Also add new deployments to VersionBitsDeploymentInfo in deploymentinfo.cpp
3839
MAX_VERSION_BITS_DEPLOYMENTS
3940
};
40-
constexpr bool ValidDeployment(DeploymentPos dep) { return DEPLOYMENT_TESTDUMMY <= dep && dep <= DEPLOYMENT_DYNA_FED; }
41+
constexpr bool ValidDeployment(DeploymentPos dep) { return DEPLOYMENT_TESTDUMMY <= dep && dep < MAX_VERSION_BITS_DEPLOYMENTS; }
4142

4243
/**
4344
* Struct for each individual consensus rule change using BIP9.

src/deploymentinfo.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ const struct VBDeploymentInfo VersionBitsDeploymentInfo[Consensus::MAX_VERSION_B
1919
/*.name =*/ "dynafed",
2020
/*.gbt_force =*/ true,
2121
},
22+
{
23+
/*.name =*/ "simplicity",
24+
/*.gbt_force =*/ true,
25+
},
2226
};
2327

2428
std::string DeploymentName(Consensus::BuriedDeployment dep)

0 commit comments

Comments
 (0)