Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
6bb5609
Testchains: Don't check the genesis block
jtimon Jul 3, 2015
6848561
Remove extra nonce reset logic in IncrementExtraNonce
TheBlueMatt Jan 19, 2016
7abc17e
Fail in DecodeHexTx if there is extra data at the end
TheBlueMatt Jun 6, 2015
1469f27
Get rid of CTxOut::GetHash
sipa May 11, 2015
183cc2e
Restore MoneyRange checks on total tx fees
TheBlueMatt Jan 19, 2016
7731e39
Chainparams: Use a regular factory for creating chainparams
jtimon May 22, 2015
595f6bd
Chainparams: Get rid of CChainParams& Params(std::string)
TheBlueMatt Jan 11, 2016
6275ff8
Chainparams: Generic selection with -chain=<chainString> in addition …
jtimon May 24, 2015
8441051
Chainparams: Qt: Simplify network/chain styles and add a default purp…
jtimon Jul 3, 2015
d16d076
Checkpoints: The hash of the genesis block it's the genesis checkpoin…
jtimon Jul 1, 2015
cbb438c
Chainparams: Adapt qt/paymentserver to support more than 2 chains
jtimon May 25, 2015
28c3d99
Elements: Remove testnet3
jtimon Nov 16, 2015
568827d
Elements: Start Alpha
jtimon Nov 17, 2015
101d8d7
Un-hard-code genesis hashes
TheBlueMatt Feb 9, 2016
911294c
Refactors in anticipation of private chain mode
Jan 11, 2016
49002b0
Implement basic private chain mode
instagibbs Sep 7, 2016
b6a9974
Block with invalid signature is corruption-possible
TheBlueMatt Mar 20, 2016
f0327ad
Re-add support for bitcoin headers/proofs in sidechain validation
TheBlueMatt Apr 8, 2015
c8ac3bf
Add block sign/sig combine/etc RPC functions
TheBlueMatt Apr 10, 2015
6be3888
Disable proof checking for all blocks on load
sipa Aug 26, 2015
cf5d167
Add CScript::IsWithdrawLock() (which is standard)
TheBlueMatt Jan 19, 2016
c51a6f3
Add CScript::PushWithdraw function
TheBlueMatt Feb 21, 2016
cca18ee
Add withdraw lock to script/standard.h (and, thus, RPC raw txn)
TheBlueMatt Nov 15, 2014
6c945be
Tweak SignatureChecker to expose a bit more about the transaction
TheBlueMatt May 27, 2015
a37cd32
Verify Withdraw proofs in script execution
TheBlueMatt Dec 6, 2014
9f3c9ad
Add withdraw-spent to CCoinsView/utxodb
TheBlueMatt Feb 7, 2016
c549d96
Add sidechain claims to UTXO db
TheBlueMatt Feb 21, 2016
1606336
Enforce single-withdraw by tracking withdraws-spent in CheckInputs
TheBlueMatt Mar 17, 2016
79d422a
Add withdraw-claimed tracking to mempool and enforce it
TheBlueMatt Mar 19, 2016
54f981d
Keep mempool consistent after conflicting withdraw-spent
TheBlueMatt Mar 19, 2016
3db5ff1
Add removeForBlock-withdraws test
TheBlueMatt Mar 20, 2016
6939698
Disable replacement of peg-in transactions
TheBlueMatt Mar 19, 2016
4f9ed18
MOVEONLY: Move CallRPC into its own file
TheBlueMatt Dec 6, 2014
183e00b
Use RPC calls to check bitcoin blocks are valid and confirmed
TheBlueMatt Dec 6, 2014
f381a70
Make genesis coinbase outputs spendable
TheBlueMatt Jan 26, 2016
0663a9b
No subsidy, 21 million genesis block
TheBlueMatt Feb 7, 2016
49f24bc
Add explicit fee field to transaction
TheBlueMatt Mar 19, 2016
3e00c90
Require input values in createrawtransaction
TheBlueMatt Mar 2, 2016
3ad6bbe
Refactors in anticipation of blinded values
luke-jr Feb 15, 2016
7ca7629
Update libsecp (TODO: Do this via subtree)
TheBlueMatt Feb 19, 2016
357d472
Enable required modules in secp256k1 for CT
TheBlueMatt Mar 3, 2016
438b0d8
Consensus support for blinded amounts
luke-jr Feb 18, 2016
7ab3826
Add blinding transaction-creation code
TheBlueMatt Mar 3, 2016
f044cba
Add base58 support for blinded addresses
TheBlueMatt Feb 29, 2016
57028e5
bitcoin-tx changes for blinded values
TheBlueMatt Mar 1, 2016
683dd3c
Wallet updates for CT
sipa Mar 1, 2016
fa413cb
Allow CreateTransaction to return the values of the outputs
TheBlueMatt Mar 2, 2016
c33e8ea
Qt updates for in-wallet CT
TheBlueMatt Mar 2, 2016
eaf5ab0
Add blinding key import/export RPCs
TheBlueMatt Mar 2, 2016
0146361
Deal better with unknown amounts in balances
sipa Feb 16, 2016
9bfc2c8
Better algorithm for determining whether a dummy output is needed
sipa Mar 22, 2016
3914ec3
Add withdraw-locks-creation tracking in txdb
TheBlueMatt Mar 13, 2016
4b80cee
Add function to get withdraw outputs which are claim-able
TheBlueMatt Mar 21, 2016
e396106
Add withdraw-manipulation RPCs
TheBlueMatt Mar 6, 2016
5ddb052
Add regtest mode with a very large OP_TRUE output
TheBlueMatt Mar 3, 2016
f24cdee
Default --with-libs to "no"
gwillen Jun 9, 2015
cffa0d0
Enable various script validations always
TheBlueMatt Mar 6, 2016
dff6b02
No DoS for sending a tx/block claiming an unconfirmed btc block
TheBlueMatt Mar 19, 2016
455ff66
Respond to getheaders even in IBD mode
TheBlueMatt Mar 22, 2016
51b609c
Copy Elements alpha's README
TheBlueMatt Mar 3, 2016
1cba61a
Elements Beta branding
TheBlueMatt Mar 4, 2016
4d2379f
Rename binaries and shared libraries
TheBlueMatt Mar 4, 2016
c5c68ee
Give a nice error for "make bitcoind", instead of a misleading one.
gwillen Nov 17, 2015
7b848b8
Change default datadir
TheBlueMatt Mar 6, 2016
1212994
Randomly permutate ports
TheBlueMatt Mar 7, 2016
40a12f6
Change constant keys to shit I found on google
TheBlueMatt Mar 7, 2016
832e8f9
Fix genesis block creation
TheBlueMatt Mar 19, 2016
e4d2392
Split genesis output into 100 identical outputs
TheBlueMatt Mar 14, 2016
3ab63b4
Make withdraw-combines combining to > MAX_MONEY / 100 non-std
TheBlueMatt Mar 18, 2016
44cff58
Set network parameters
TheBlueMatt Mar 19, 2016
5427f23
new chain
TheBlueMatt Mar 18, 2016
184288a
re-enable generate RPC for unsigned chains
TheBlueMatt Mar 22, 2016
0156202
Require coinbase outputs be to a specific script
TheBlueMatt Mar 26, 2016
c04435d
rotate addresses for new chain again
TheBlueMatt Mar 26, 2016
4254f33
Disable fInbound requirement for preferred-sync peers
TheBlueMatt Mar 26, 2016
d8c5160
Various updates to locked-output UTXO selection
instagibbs Mar 20, 2016
9590054
Basic locked utxo testing
instagibbs Mar 30, 2016
d999fc0
Default-refuse to sendrawtransaction an unblinded, but could be, tx
TheBlueMatt Mar 31, 2016
f49fc53
Reactivated rpc_rawparams (TODO: Split into appropriate squashes)
instagibbs Apr 5, 2016
f2538b9
Added testing of mainchain withdraw tx tracking
instagibbs Apr 6, 2016
09060cf
Fix caching of blinding data
sipa Mar 14, 2016
f4d7ccd
Never include unknown amounts in listreceived*
sipa Mar 14, 2016
1024905
Add comment explaining check
TheBlueMatt Apr 12, 2016
baa3b0c
Disable -peerbloomfilters by default in sidechains
wtogami Apr 22, 2016
d0feca3
Rename `blindtrust` to `validatepegin` and invert boolean
wtogami Apr 21, 2016
52d9da3
Rename RPC `claimwithdraw` to `claimpegin` for clarity
wtogami Apr 28, 2016
76d648b
Rename RPC `getfundingaddress` to `getpeginaddress` for clarity
wtogami Apr 28, 2016
4de4fad
Cleanup and clarify sendtomainchain help text
wtogami Apr 28, 2016
69eb300
Fix CLI help text to refer to sidechain RPC port 9041 instead of Bitc…
wtogami Apr 28, 2016
f7b0966
Add CLIENT_VERSION_BUILD to version.
wtogami Apr 8, 2016
b6c20c0
Enable peginsign in tx tool
jonasnick Apr 30, 2016
d860e87
No dust for withdrawlocks
instagibbs May 9, 2016
35c4766
Make failures to connect via Socks5() more informative and less unnec…
wtogami May 10, 2016
a727d76
Actually enforce withdraw consensus rules
instagibbs May 11, 2016
8b72b64
Remove unneeded CT addresses
instagibbs May 11, 2016
3ee361c
Don't DoS ban peers for possibly valid pegin blocks
instagibbs May 12, 2016
76abf88
Rename wallet-based blinding pubkey lookups
instagibbs May 5, 2016
6062500
Use dummy nonce for pegin, simplify rpcs
instagibbs May 16, 2016
0dbffde
Fix CTxOut null set/checking
instagibbs May 18, 2016
f1878a4
Use Socks5ErrorString() to decode error responses from socks proxy.
wtogami May 19, 2016
bab5e9e
Rework CallRPC, use bitcoind cookie auth
instagibbs Jun 3, 2016
9c62706
Startup RPC check, failed block queue setup
instagibbs Jun 3, 2016
a75159e
block validation on script error of properly signed block
instagibbs Jun 3, 2016
5093a5c
IsStandard rule for withdrawLock dust
instagibbs Jun 2, 2016
670e7fb
Range proofs in witness
sipa Jun 4, 2016
7a278f7
correct unknown value comment
instagibbs Jun 7, 2016
f1435bd
Build & Doc Only Changes: Rename Sidechain Name
wtogami Apr 29, 2016
78e8f0c
Don't tally -1 when funds are unknown
instagibbs Jun 7, 2016
8c8565c
CreateTransaction stores destination blinding keys,factors, and amounts
instagibbs Jun 7, 2016
85be082
Add parentChainPowLimit, check in CheckBitcoinProof
instagibbs Jun 9, 2016
5412a58
Add thread-local storage of rpc username
instagibbs Apr 21, 2016
fdcb038
Add audit log file
instagibbs Apr 22, 2016
2f5d051
Make sure user is set for audit logging through QT
instagibbs Apr 28, 2016
2a34dbd
Introduce user getter to avoid null pointers
instagibbs Apr 28, 2016
2e0973a
added functions to rpc logging
instagibbs Jun 6, 2016
1527515
Add blinding data to be rpc logged
instagibbs Jun 9, 2016
e637e5a
block header commits to height
instagibbs May 27, 2016
fe2f6c3
Don't log scary message about withdrawLock outputs
instagibbs Jun 10, 2016
89756b2
More compact and pretty printing of blindingdata in ListTransactions
instagibbs Jun 10, 2016
fd9a254
Add blindingfactors to listtransactions rpc help
instagibbs Jun 10, 2016
d212526
Add witness commitment when there are only txout witnesses
sipa Jun 11, 2016
5b20532
Zero value coinbase output are exempt from fixed destination
sipa Jun 13, 2016
eedc960
Upstream: remove extraneous warning about variable being used before …
maaku Jul 7, 2016
2ff3733
More meaningful error messages for WPV failure
instagibbs Jul 1, 2016
8d7b7d4
Increase ancestor/dependant size limit to 375kB
instagibbs Jul 1, 2016
ba69977
Add basic testing of blinding caching functionality in wallet
instagibbs Jul 7, 2016
710dda7
Remove CTxMemPoolEntry nValueIn since unused and we don't know it
instagibbs Aug 28, 2016
2191420
FIXME: Unit tests compile and pass
instagibbs Apr 6, 2016
56aa82f
Move amount verification to main
instagibbs Jul 6, 2016
33609ed
Multithreaded amount commitment and range proof checking
instagibbs Jul 6, 2016
7154c1f
Rangeproof caching
instagibbs Jul 12, 2016
15c2a60
Enable P2SH in ConnectBlock regardless of timestamp
instagibbs Jul 21, 2016
c136e0a
Enforce all ISM upgrades immediately
instagibbs Sep 21, 2016
f40bfeb
Activate CSV and Segwit immediately
instagibbs Sep 21, 2016
6b77b1a
CheckInputs: Fix DoS erroneous DoS ban during mempool relay
instagibbs Aug 12, 2016
9009318
Better error report for failed BitcoindRPCCheck
instagibbs Aug 16, 2016
a90d953
More useful claimpegin errors for malformed arguments
instagibbs Aug 17, 2016
0f98b91
getpeginaddress clarification and output variable name changes
instagibbs Aug 17, 2016
ef891a1
add testproposedblock rpc call
instagibbs Aug 19, 2016
cc272af
Regtest generate sends fees to wallet
instagibbs Apr 27, 2016
934023c
Add parent genesis hash to chainparams, simplify checks
instagibbs Aug 15, 2016
617d9bb
[libsecp] Add negation functionality
instagibbs Aug 29, 2016
93b07ea
Harden pegin address generation
instagibbs Aug 30, 2016
d67536a
Re-activated (some) python tests
instagibbs Apr 11, 2016
7fa61dd
Upstream? Globals: Allow to parse arguments without implicitly using …
jtimon Apr 4, 2016
e2aef80
Preparations: Pass mapArgs to CChainParams::Factory
jtimon Sep 22, 2016
cd12c3e
Introduce static CScript StrHexToScriptWithDefault() in chainparams.cpp
jtimon Sep 23, 2016
51cc3a7
QA: Add -signblockscript command line argument
jonasnick Jun 23, 2016
bb1f44f
QA: Allow setting the fedpeg script with a command line argument
jonasnick Mar 22, 2016
6a3b75d
[HF] Re-activated some disabled Bitcoin OPs and enabled new opcodes
instagibbs Oct 12, 2016
d81e6a6
Tests for new opcodes
instagibbs Oct 13, 2016
565e1e6
Create max size/weight blocks by default
instagibbs Nov 7, 2016
a6c6702
Count CHECKSIGFROMSTACK* against sigops limit
instagibbs Nov 14, 2016
01d7915
Migrate project naming from "Beta" to "Elements"
martindale Nov 22, 2016
66114fd
bip125 opt-in rbf by default for sent transactions
instagibbs Nov 28, 2016
5eed205
Change CONTRIBUTING.md to reflect Elements Project process
instagibbs Nov 28, 2016
1150d0e
Add IFDEF around blind transactions
martindale Nov 29, 2016
c868ef3
Fix IsConfirmedBitcoinBlock, clean up CallRPC
instagibbs Dec 7, 2016
424a85f
Detect mainchain cookie auth using datadir checking, not mapArgs
instagibbs Dec 7, 2016
d224e2e
Retry bitcoind RPC connection upon warmup error code return
instagibbs Dec 7, 2016
a4d29a6
Add regtest python peg-in test
instagibbs Dec 12, 2016
6252e5c
GetBlockSubsidy is always 0
instagibbs Dec 14, 2016
4e8b3a4
fix getpeginaddress clarification
instagibbs Dec 17, 2016
2f3c267
Change out of date comment for getpeginaddress
instagibbs Dec 17, 2016
1d71348
New address prefix: CTE
instagibbs Jan 10, 2017
93a0f2c
Update README for refresh
instagibbs Jan 17, 2017
876759d
Hugely reduce the minimum priority
TheBlueMatt Mar 6, 2016
04eb014
Increase default block priority size to 20% of blocksize
instagibbs Jan 24, 2017
58db3a1
Uses built-in byte swap if available (Apple) and if bswap_XX is undef…
kallewoof Dec 16, 2016
8736efe
DOWN: fixup! Unused tip on getblockchaininfo
jtimon Feb 1, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
*.tar.gz

*.exe
src/bitcoin
src/bitcoind
src/bitcoin-cli
src/bitcoin-tx
src/test/test_bitcoin
src/qt/test/test_bitcoin-qt
src/elements
src/elementsd
src/elements-cli
src/elements-tx
src/test/test_elements
src/qt/test/test_elements-qt

# autoreconf
Makefile.in
Expand Down Expand Up @@ -74,12 +74,12 @@ src/qt/test/moc*.cpp
# Compilation and Qt preprocessor part
*.qm
Makefile
bitcoin-qt
Bitcoin-Qt.app
elements-qt
Elements-Qt.app

# Unit-tests
Makefile.test
bitcoin-qt_test
elements-qt_test
src/test/buildenv.py

# Resources cpp
Expand Down
19 changes: 8 additions & 11 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
Contributing to Bitcoin Core
Contributing to Elements Core
============================

The Bitcoin Core project operates an open contributor model where anyone is welcome to contribute towards development in the form of peer review, testing and patches. This document explains the practical process and guidelines for contributing.

Firstly in terms of structure, there is no particular concept of “Core developers” in the sense of privileged people. Open source often naturally revolves around meritocracy where longer term contributors gain more trust from the developer community. However, some hierarchy is necessary for practical purposes. As such there are repository “maintainers” who are responsible for merging pull requests as well as a “lead maintainer” who is responsible for the release cycle, overall merging, moderation and appointment of maintainers.
The Elements Core project operates an open contributor model where anyone is welcome to contribute towards development in the form of peer review, testing and patches. This document explains the practical process and guidelines for contributing.

In Contrast to Bitcoin Core, this repository is property of Blockstream Inc. which means that acceptance of contributions comes down to one of the privelaged "maintainers" of the repository. These maintainers are responsible for merging pull requests as well as a “lead maintainer” who is responsible for the release cycle, overall merging, moderation and appointment of maintainers. The intention is however to follow a very similar meritocratic model to Bitcoin Core's, meaning that all contributions are welcome, and a history of high-quality contributions will likely pull more weight than otherwise.

Contributor Workflow
--------------------
Expand Down Expand Up @@ -81,9 +80,9 @@ Project maintainers aim for a quick turnaround on refactoring pull requests, so
"Decision Making" Process
-------------------------

The following applies to code changes to the Bitcoin Core project (and related projects such as libsecp256k1), and is not to be confused with overall Bitcoin Network Protocol consensus changes.
The following applies to code changes to the Elements Core project (and related projects such as libsecp256k1).

Whether a pull request is merged into Bitcoin Core rests with the project merge maintainers and ultimately the project lead.
Whether a pull request is merged into Elements Core rests with the project merge maintainers and ultimately the project lead.

Maintainers will take into consideration if a patch is in line with the general principles of the project; meets the minimum standards for inclusion; and will judge the general consensus of contributors.

Expand All @@ -96,8 +95,7 @@ In general, all pull requests must:
- not break the existing test suite;
- where bugs are fixed, where possible, there should be unit tests demonstrating the bug and also proving the fix. This helps prevent regression.

Patches that change Bitcoin consensus rules are considerably more involved than normal because they affect the entire ecosystem and so must be preceded by extensive mailing list discussions and have a numbered BIP. While each case will be different, one should be prepared to expend more time and effort than for other kinds of patches because of increased peer review and consensus building requirements.

Changes to the consensus ruleset will likely be denied unless it is a direct security issue. In this case the issue should be sent to one of the project maintainers in private using secure communication if possible. Blockstream reserves the right to include additional feature softforks to a currently-running network, and hardforking changes for new networks.

###Peer Review

Expand All @@ -115,10 +113,9 @@ Project maintainers reserve the right to weigh the opinions of peer reviewers us

Where a patch set affects consensus critical code, the bar will be set much higher in terms of discussion and peer review requirements, keeping in mind that mistakes could be very costly to the wider community. This includes refactoring of consensus critical code.

Where a patch set proposes to change the Bitcoin consensus, it must have been discussed extensively on the mailing list and IRC, be accompanied by a widely discussed BIP and have a generally widely perceived technical consensus of being a worthwhile change based on the judgement of the maintainers.

Where a patch set proposes to change the Elements consensus, it must have been discussed extensively on the github thread, and receive a larger number of ACKs, including multiple tested ACKs from maintainers.

Release Policy
--------------

The project leader is the release manager for each Bitcoin Core release.
The project leader is the release manager for each Elements Core release.
8 changes: 4 additions & 4 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ $(OSX_APP)/Contents/Resources/bitcoin.icns: $(OSX_INSTALLER_ICONS)
$(MKDIR_P) $(@D)
$(INSTALL_DATA) $< $@

$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(BITCOIN_QT_BIN)
$(OSX_APP)/Contents/MacOS/Elements-Qt: $(BITCOIN_QT_BIN)
$(MKDIR_P) $(@D)
STRIPPROG="$(STRIP)" $(INSTALL_STRIP_PROGRAM) $< $@

Expand All @@ -93,7 +93,7 @@ $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings:

OSX_APP_BUILT=$(OSX_APP)/Contents/PkgInfo $(OSX_APP)/Contents/Resources/empty.lproj \
$(OSX_APP)/Contents/Resources/bitcoin.icns $(OSX_APP)/Contents/Info.plist \
$(OSX_APP)/Contents/MacOS/Bitcoin-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings
$(OSX_APP)/Contents/MacOS/Elements-Qt $(OSX_APP)/Contents/Resources/Base.lproj/InfoPlist.strings

osx_volname:
echo $(OSX_VOLNAME) >$@
Expand All @@ -111,7 +111,7 @@ $(APP_DIST_DIR)/Applications:
@rm -f $@
@cd $(@D); $(LN_S) /Applications $(@F)

$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt
$(APP_DIST_EXTRAS): $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Elements-Qt

$(OSX_DMG): $(APP_DIST_EXTRAS)
$(GENISOIMAGE) -no-cache-inodes -D -l -probe -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -apple -o $@ dist
Expand All @@ -126,7 +126,7 @@ $(APP_DIST_DIR)/.background/$(OSX_BACKGROUND_IMAGE): $(OSX_BACKGROUND_IMAGE_DPIF
$(APP_DIST_DIR)/.DS_Store: $(OSX_DSSTORE_GEN)
$(PYTHON) $< "$@" "$(OSX_VOLNAME)"

$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
$(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Elements-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING)
INSTALLNAMETOOL=$(INSTALLNAMETOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) -translations-dir=$(QT_TRANSLATION_DIR) -add-qt-tr $(OSX_QT_TRANSLATIONS) -verbose 2

deploydir: $(APP_DIST_EXTRAS)
Expand Down
104 changes: 40 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,81 +1,57 @@
Bitcoin Core integration/staging tree
=====================================
The Elements Project
=================================
This is the integration and staging tree for the Elements Project, a series of
improvements and extensions to the Bitcoin protocol.

[![Build Status](https://travis-ci.org/bitcoin/bitcoin.svg?branch=master)](https://travis-ci.org/bitcoin/bitcoin)
What is the Elements Project?
-----------------
Elements is an open source collaborative project where we work on a collection
of experiments to more rapidly bring technical innovation to Bitcoin. Elements
are features that are proposed and developed in this technical community that in
arbitrary combinations can be fashioned into sidechains.

https://bitcoincore.org
https://github.com/ElementsProject/elementsproject.github.io

Learn more on [the Elements Project website](https://www.elementsproject.org).

What is Bitcoin?
----------------
https://www.bitcoin.org

Bitcoin is an experimental digital currency that enables instant payments to
Bitcoin is an experimental new digital currency that enables instant payments to
anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate
with no central authority: managing transactions and issuing money are carried
out collectively by the network. Bitcoin Core is the name of open source
out collectively by the network. Elements Alpha is the name of open source
software which enables the use of this currency.

For more information, as well as an immediately useable, binary version of
the Bitcoin Core software, see https://bitcoin.org/en/download, or read the
[original whitepaper](https://bitcoincore.org/bitcoin.pdf).

License
-------

Bitcoin Core is released under the terms of the MIT license. See [COPYING](COPYING) for more
information or see https://opensource.org/licenses/MIT.
the Bitcoin Core software, see https://www.bitcoin.org/en/download.

Development Process
-------------------

The `master` branch is regularly built and tested, but is not guaranteed to be
completely stable. [Tags](https://github.com/bitcoin/bitcoin/tags) are created
regularly to indicate new official, stable release versions of Bitcoin Core.
What is Elements?
----------------

The contribution workflow is described in [CONTRIBUTING.md](CONTRIBUTING.md).
Compared to Bitcoin itself, it adds the following features:
* [Confidential Transactions][confidential-transactions]
* [Additional opcodes][opcodes]
* [Deterministic Peg][deterministic-peg]
* [Signed Blocks][signed-blocks]

The developer [mailing list](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev)
should be used to discuss complicated or controversial changes before working
on a patch set.
Previous elements that have been integrated into Core:
* [Segregated Witness][segregated-witness]
* [Relative Lock Time][relative-lock-time]

Developer IRC can be found on Freenode at #bitcoin-core-dev.
Elements deferred for additional research and standardization:
* [Schnorr Signatures][schnorr-signatures]

Testing
License
-------

Testing and code review is the bottleneck for development; we get more pull
requests than we can review and test on short notice. Please be patient and help out by testing
other people's pull requests, and remember this is a security-critical project where any mistake might cost people
lots of money.

### Automated Testing

Developers are strongly encouraged to write [unit tests](/doc/unit-tests.md) for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled in configure) with: `make check`

There are also [regression and integration tests](/qa) of the RPC interface, written
in Python, that are run automatically on the build server.
These tests can be run (if the [test dependencies](/qa) are installed) with: `qa/pull-tester/rpc-tests.py`

The Travis CI system makes sure that every pull request is built for Windows, Linux, and OS X, and that unit/sanity tests are run automatically.

### Manual Quality Assurance (QA) Testing

Changes should be tested by somebody other than the developer who wrote the
code. This is especially important for large or high-risk changes. It is useful
to add a test plan to the pull request description if testing the changes is
not straightforward.

Translations
------------

Changes to translations as well as new translations can be submitted to
[Bitcoin Core's Transifex page](https://www.transifex.com/projects/p/bitcoin/).

Translations are periodically pulled from Transifex and merged into the git repository. See the
[translation process](doc/translation_process.md) for details on how this works.

**Important**: We do not accept translation changes as GitHub pull requests because the next
pull from Transifex would automatically overwrite them again.

Translators should also subscribe to the [mailing list](https://groups.google.com/forum/#!forum/bitcoin-translators).
Elements is released under the terms of the MIT license. See [COPYING](COPYING) for more
information or see http://opensource.org/licenses/MIT.

[confidential-transactions]: https://www.elementsproject.org/elements/confidential-transactions
[segregated-witness]: https://www.elementsproject.org/elements/segregated-witness
[relative-lock-time]: https://www.elementsproject.org/elements/relative-lock-time
[schnorr-signatures]: https://www.elementsproject.org/elements/schnorr-signatures
[opcodes]: https://www.elementsproject.org/elements/opcodes
[deterministic-peg]: https://www.elementsproject.org/elements/deterministic-pegs
[signed-blocks]: https://www.elementsproject.org/elements/signed-blocks
11 changes: 5 additions & 6 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@ define(_CLIENT_VERSION_REVISION, 1)
define(_CLIENT_VERSION_BUILD, 0)
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2016)
define(_COPYRIGHT_HOLDERS,[The %s developers])
define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
AC_INIT([Bitcoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/bitcoin/bitcoin/issues],[bitcoin],[https://bitcoincore.org/])
AC_INIT([Elements Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION._CLIENT_VERSION_BUILD],[https://github.com/ElementsProject/elements/issues],[elements])
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
AC_CONFIG_AUX_DIR([build-aux])
Expand Down Expand Up @@ -227,9 +225,9 @@ AC_ARG_WITH([utils],

AC_ARG_WITH([libs],
[AS_HELP_STRING([--with-libs],
[build libraries (default=yes)])],
[build libraries (default=no)])],
[build_bitcoin_libs=$withval],
[build_bitcoin_libs=yes])
[build_bitcoin_libs=no])

AC_ARG_WITH([daemon],
[AS_HELP_STRING([--with-daemon],
Expand Down Expand Up @@ -1109,11 +1107,12 @@ PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
unset PKG_CONFIG_LIBDIR
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"


if test x$need_bundled_univalue = xyes; then
AC_CONFIG_SUBDIRS([src/univalue])
fi

ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-experimental --enable-module-recovery --enable-module-schnorr --enable-module-ecdh --enable-module-rangeproof"
AC_CONFIG_SUBDIRS([src/secp256k1])

AC_OUTPUT
Expand Down
2 changes: 1 addition & 1 deletion contrib/debian/watch
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Run the "uscan" command to check for upstream updates and more.
version=3
# use qa.debian.org redirector; see man uscan
opts=uversionmangle=s/(\d)(alpha|beta|rc)/$1~$2/,dversionmangle=s/~dfsg\d*// \
opts=uversionmangle=s/(\d)(alpha|beta|core|rc)/$1~$2/,dversionmangle=s/~dfsg\d*// \
http://githubredir.debian.net/github/bitcoin/bitcoin v(.*).tar.gz
10 changes: 5 additions & 5 deletions contrib/gitian-descriptors/gitian-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ packages:
- "ca-certificates"
- "python"
remotes:
- "url": "https://github.com/bitcoin/bitcoin.git"
"dir": "bitcoin"
- "url": "https://github.com/ElementsProject/elements.git"
"dir": "elements"
files: []
script: |

Expand Down Expand Up @@ -83,6 +83,7 @@ script: |
create_global_faketime_wrappers "2000-01-01 12:00:00"
create_per-host_faketime_wrappers "2000-01-01 12:00:00"
export PATH=${WRAP_DIR}:${PATH}
cd elements

EXTRA_INCLUDES_BASE=$WRAP_DIR/extra_includes
mkdir -p $EXTRA_INCLUDES_BASE
Expand Down Expand Up @@ -113,7 +114,6 @@ script: |
chmod +x ${WRAP_DIR}/${prog}
done

cd bitcoin
BASEPREFIX=`pwd`/depends
# Build dependencies for each host
for i in $HOSTS; do
Expand All @@ -135,13 +135,13 @@ script: |
./autogen.sh
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
make dist
SOURCEDIST=`echo bitcoin-*.tar.gz`
SOURCEDIST=`echo elements-*.tar.gz`
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
# Correct tar file order
mkdir -p temp
pushd temp
tar xf ../$SOURCEDIST
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
find elements-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
popd

ORIGPATH="$PATH"
Expand Down
13 changes: 7 additions & 6 deletions contrib/gitian-descriptors/gitian-osx-signer.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
---
name: "bitcoin-dmg-signer"
name: "elements-dmg-signer"
suites:
- "trusty"
architectures:
- "amd64"
packages:
- "faketime"
reference_datetime: "2016-01-01 00:00:00"
remotes:
- "url": "https://github.com/bitcoin-core/bitcoin-detached-sigs.git"
- "url": "https://github.com/ElementsProject/gitian.sigs.ep.git"
"dir": "signature"
files:
- "bitcoin-osx-unsigned.tar.gz"
- "elements-osx-unsigned.tar.gz"
script: |
WRAP_DIR=$HOME/wrapped
mkdir -p ${WRAP_DIR}
Expand All @@ -27,11 +28,11 @@ script: |
chmod +x ${WRAP_DIR}/${prog}
done

UNSIGNED=bitcoin-osx-unsigned.tar.gz
SIGNED=bitcoin-osx-signed.dmg
UNSIGNED=elements-osx-unsigned.tar.gz
SIGNED=elements-osx-signed.dmg

tar -xf ${UNSIGNED}
OSX_VOLNAME="$(cat osx_volname)"
./detached-sig-apply.sh ${UNSIGNED} signature/osx
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "${OSX_VOLNAME}" -no-pad -r -dir-mode 0755 -apple -o uncompressed.dmg signed-app
${WRAP_DIR}/genisoimage -no-cache-inodes -D -l -probe -V "Elements-Sidechain" -no-pad -r -apple -o uncompressed.dmg signed-app
${WRAP_DIR}/dmg dmg uncompressed.dmg ${OUTDIR}/${SIGNED}
Loading