This branch contains upstream Elements, native BIP300/BIP301 deposits, withdrawals and BMM bidding, and Utreexo accumulator development tooling. Confidential transaction range proofs, surjection proofs and amount validation remain native Elements features.
No exchange, USDD bridge, SP1 jet, proof program or external verifier archive is
part of this branch. The fairmint exchange is maintained on fairmint-exchange.
The previous complete implementation is preserved on
archive/exchange-usdd-sp1-20261027.
This branch uses a production identity targeting mainnet. Its data
subdirectory is elements-native-v1, with P2P port 7072 and RPC port 7071. Never reuse another chain's databases or wallets.
The frozen identity is in src/elements_drivechain_identity.h; its independent
serializer is contrib/devtools/elements_identity_refreeze.py.
The production identity uses slot 24. Its matching sidechain proposal must be activated before the parent can authenticate blocks and peg operations. The former existing-proposal override is off. Its genesis, network magic and data directory differ from the fairmint branch; keep their chain data separate.
Use the platform instructions in doc/build-unix.md or doc/build-osx.md and the
Haskell compiler and test setup.
Use GHC 9.6.7 and cabal-install >= 3.14.2.0. CMake builds the Haskell
library and native node together. No USDD or SP1 verifier archive is required.
cmake -S . -B build -DBUILD_TESTS=ON \
-DELEMENTS_GHC="$(command -v ghc-9.6.7)"
cmake --build build -j1
ctest --test-dir build --output-on-failureKeep RPC private and authenticated. Configure a synced parent matching the frozen
network identity, using a local cookie or the authenticated TLS transport
described in doc/drivechain-rpc-security.md. Start with
drivechainl1blocksync=0; enabling a producer and funding its dedicated bidding
wallet are separate operator decisions.