Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate elements-cli to elements #112

Closed
wants to merge 161 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
0fed994
Refactors in anticipation of private chain mode
Jan 11, 2016
f1100d5
Implement basic private chain mode
instagibbs Sep 7, 2016
199a311
Block with invalid signature is corruption-possible
TheBlueMatt Mar 20, 2016
c8ebf83
Re-add support for bitcoin headers/proofs in sidechain validation
TheBlueMatt Apr 8, 2015
f4f7f7e
Add block sign/sig combine/etc RPC functions
TheBlueMatt Apr 10, 2015
45e8eb6
Disable proof checking for all blocks on load
sipa Aug 26, 2015
56fa23b
Add CScript::IsWithdrawLock() (which is standard)
TheBlueMatt Jan 19, 2016
1c91077
Add CScript::PushWithdraw function
TheBlueMatt Feb 21, 2016
24e81bd
Add withdraw lock to script/standard.h (and, thus, RPC raw txn)
TheBlueMatt Nov 15, 2014
666109c
Tweak SignatureChecker to expose a bit more about the transaction
TheBlueMatt May 27, 2015
644dbbe
Verify Withdraw proofs in script execution
TheBlueMatt Dec 6, 2014
bf641d6
Add withdraw-spent to CCoinsView/utxodb
TheBlueMatt Feb 7, 2016
462292c
Add sidechain claims to UTXO db
TheBlueMatt Feb 21, 2016
3fe95ce
Enforce single-withdraw by tracking withdraws-spent in CheckInputs
TheBlueMatt Mar 17, 2016
79e833f
Add withdraw-claimed tracking to mempool and enforce it
TheBlueMatt Mar 19, 2016
1ed6992
Keep mempool consistent after conflicting withdraw-spent
TheBlueMatt Mar 19, 2016
7d5b255
Add removeForBlock-withdraws test
TheBlueMatt Mar 20, 2016
4d2d22c
Disable replacement of peg-in transactions
TheBlueMatt Mar 19, 2016
7146a97
MOVEONLY: Move CallRPC into its own file
TheBlueMatt Dec 6, 2014
5f966f7
Use RPC calls to check bitcoin blocks are valid and confirmed
TheBlueMatt Dec 6, 2014
48bf2cf
Make genesis coinbase outputs spendable
TheBlueMatt Jan 26, 2016
c961d3f
No subsidy, 21 million genesis block
TheBlueMatt Feb 7, 2016
40dc494
Add explicit fee field to transaction
TheBlueMatt Mar 19, 2016
792725f
Require input values in createrawtransaction
TheBlueMatt Mar 2, 2016
cf2283a
Refactors in anticipation of blinded values
luke-jr Feb 15, 2016
8d55d79
Update libsecp (TODO: Do this via subtree)
TheBlueMatt Feb 19, 2016
e85de63
Enable required modules in secp256k1 for CT
TheBlueMatt Mar 3, 2016
dbdbffb
Consensus support for blinded amounts
luke-jr Feb 18, 2016
5026830
Add blinding transaction-creation code
TheBlueMatt Mar 3, 2016
acff6b0
Add base58 support for blinded addresses
TheBlueMatt Feb 29, 2016
e018cdb
bitcoin-tx changes for blinded values
TheBlueMatt Mar 1, 2016
0be9893
Wallet updates for CT
sipa Mar 1, 2016
38993b4
Allow CreateTransaction to return the values of the outputs
TheBlueMatt Mar 2, 2016
9038b0e
Qt updates for in-wallet CT
TheBlueMatt Mar 2, 2016
88bdc9c
Add blinding key import/export RPCs
TheBlueMatt Mar 2, 2016
fd7c487
Deal better with unknown amounts in balances
sipa Feb 16, 2016
211c3a0
Better algorithm for determining whether a dummy output is needed
sipa Mar 22, 2016
daefc8d
Add withdraw-locks-creation tracking in txdb
TheBlueMatt Mar 13, 2016
3d95452
Add function to get withdraw outputs which are claim-able
TheBlueMatt Mar 21, 2016
a80b08e
Add withdraw-manipulation RPCs
TheBlueMatt Mar 6, 2016
2e622d7
Add regtest mode with a very large OP_TRUE output
TheBlueMatt Mar 3, 2016
7003bd2
Default --with-libs to "no"
gwillen Jun 9, 2015
96ec51b
Enable various script validations always
TheBlueMatt Mar 6, 2016
6528881
No DoS for sending a tx/block claiming an unconfirmed btc block
TheBlueMatt Mar 19, 2016
fb7afd6
Respond to getheaders even in IBD mode
TheBlueMatt Mar 22, 2016
52911be
Copy Elements alpha's README
TheBlueMatt Mar 3, 2016
c9dc5a0
Elements Beta branding
TheBlueMatt Mar 4, 2016
4cb7a40
Rename binaries and shared libraries
TheBlueMatt Mar 4, 2016
c6c4e06
Give a nice error for "make bitcoind", instead of a misleading one.
gwillen Nov 17, 2015
6ef9b73
Change default datadir
TheBlueMatt Mar 6, 2016
3427b2b
Randomly permutate ports
TheBlueMatt Mar 7, 2016
3ce1f6a
Change constant keys to shit I found on google
TheBlueMatt Mar 7, 2016
88e045a
Fix genesis block creation
TheBlueMatt Mar 19, 2016
dc7cf00
Split genesis output into 100 identical outputs
TheBlueMatt Mar 14, 2016
3567ee8
Make withdraw-combines combining to > MAX_MONEY / 100 non-std
TheBlueMatt Mar 18, 2016
54c3df6
Set network parameters
TheBlueMatt Mar 19, 2016
6107d12
new chain
TheBlueMatt Mar 18, 2016
c039123
re-enable generate RPC for unsigned chains
TheBlueMatt Mar 22, 2016
2e03837
Require coinbase outputs be to a specific script
TheBlueMatt Mar 26, 2016
105d316
rotate addresses for new chain again
TheBlueMatt Mar 26, 2016
05b9e2c
Disable fInbound requirement for preferred-sync peers
TheBlueMatt Mar 26, 2016
19cc1b2
Various updates to locked-output UTXO selection
instagibbs Mar 20, 2016
4cee931
Basic locked utxo testing
instagibbs Mar 30, 2016
30f944a
Default-refuse to sendrawtransaction an unblinded, but could be, tx
TheBlueMatt Mar 31, 2016
aa22fcd
Reactivated rpc_rawparams (TODO: Split into appropriate squashes)
instagibbs Apr 5, 2016
09d4789
Added testing of mainchain withdraw tx tracking
instagibbs Apr 6, 2016
7917e9b
Fix caching of blinding data
sipa Mar 14, 2016
c96dd58
Never include unknown amounts in listreceived*
sipa Mar 14, 2016
b73b26e
Add comment explaining check
TheBlueMatt Apr 12, 2016
40eeed1
Disable -peerbloomfilters by default in sidechains
wtogami Apr 22, 2016
9fbfd7f
Rename `blindtrust` to `validatepegin` and invert boolean
wtogami Apr 21, 2016
9d4d717
Rename RPC `claimwithdraw` to `claimpegin` for clarity
wtogami Apr 28, 2016
d5677d5
Rename RPC `getfundingaddress` to `getpeginaddress` for clarity
wtogami Apr 28, 2016
989579d
Cleanup and clarify sendtomainchain help text
wtogami Apr 28, 2016
7613c19
Fix CLI help text to refer to sidechain RPC port 9041 instead of Bitc…
wtogami Apr 28, 2016
f7aa23f
Add CLIENT_VERSION_BUILD to version.
wtogami Apr 8, 2016
68621a9
Enable peginsign in tx tool
jonasnick Apr 30, 2016
a02eaf7
No dust for withdrawlocks
instagibbs May 9, 2016
327371d
Make failures to connect via Socks5() more informative and less unnec…
wtogami May 10, 2016
978dce8
Actually enforce withdraw consensus rules
instagibbs May 11, 2016
1226422
Remove unneeded CT addresses
instagibbs May 11, 2016
e2a753b
Don't DoS ban peers for possibly valid pegin blocks
instagibbs May 12, 2016
927db2c
Rename wallet-based blinding pubkey lookups
instagibbs May 5, 2016
ed3adc3
Use dummy nonce for pegin, simplify rpcs
instagibbs May 16, 2016
3206cb0
Fix CTxOut null set/checking
instagibbs May 18, 2016
d9b4965
Use Socks5ErrorString() to decode error responses from socks proxy.
wtogami May 19, 2016
b566d06
Rework CallRPC, use bitcoind cookie auth
instagibbs Jun 3, 2016
95c7c72
Startup RPC check, failed block queue setup
instagibbs Jun 3, 2016
eca59fa
block validation on script error of properly signed block
instagibbs Jun 3, 2016
6cdb118
IsStandard rule for withdrawLock dust
instagibbs Jun 2, 2016
2827480
Range proofs in witness
sipa Jun 4, 2016
34d7a01
correct unknown value comment
instagibbs Jun 7, 2016
0b0d513
Build & Doc Only Changes: Rename Sidechain Name
wtogami Apr 29, 2016
953af6f
Don't tally -1 when funds are unknown
instagibbs Jun 7, 2016
3000893
CreateTransaction stores destination blinding keys,factors, and amounts
instagibbs Jun 7, 2016
6f0f82e
Add parentChainPowLimit, check in CheckBitcoinProof
instagibbs Jun 9, 2016
eaf8124
Add thread-local storage of rpc username
instagibbs Apr 21, 2016
229be06
Add audit log file
instagibbs Apr 22, 2016
0d0f79f
Make sure user is set for audit logging through QT
instagibbs Apr 28, 2016
4a29d31
Introduce user getter to avoid null pointers
instagibbs Apr 28, 2016
9cdbcf0
added functions to rpc logging
instagibbs Jun 6, 2016
a838fcd
Add blinding data to be rpc logged
instagibbs Jun 9, 2016
abd2b63
block header commits to height
instagibbs May 27, 2016
1d799d5
Don't log scary message about withdrawLock outputs
instagibbs Jun 10, 2016
46a4fb1
More compact and pretty printing of blindingdata in ListTransactions
instagibbs Jun 10, 2016
777d945
Add blindingfactors to listtransactions rpc help
instagibbs Jun 10, 2016
1865af0
Add witness commitment when there are only txout witnesses
sipa Jun 11, 2016
40ffe12
Zero value coinbase output are exempt from fixed destination
sipa Jun 13, 2016
a7d90bc
Upstream: remove extraneous warning about variable being used before …
maaku Jul 7, 2016
e2fe8aa
More meaningful error messages for WPV failure
instagibbs Jul 1, 2016
e45c060
Increase ancestor/dependant size limit to 375kB
instagibbs Jul 1, 2016
afdba68
Add basic testing of blinding caching functionality in wallet
instagibbs Jul 7, 2016
fc75d5f
Remove CTxMemPoolEntry nValueIn since unused and we don't know it
instagibbs Aug 28, 2016
09d830f
FIXME: Unit tests compile and pass
instagibbs Apr 6, 2016
2686708
Move amount verification to main
instagibbs Jul 6, 2016
6af73ea
Multithreaded amount commitment and range proof checking
instagibbs Jul 6, 2016
75c945e
Rangeproof caching
instagibbs Jul 12, 2016
3cdd796
Enable P2SH in ConnectBlock regardless of timestamp
instagibbs Jul 21, 2016
6762573
Enforce all ISM upgrades immediately
instagibbs Sep 21, 2016
89c9fac
Activate CSV and Segwit immediately
instagibbs Sep 21, 2016
9bf6ae6
CheckInputs: Fix DoS erroneous DoS ban during mempool relay
instagibbs Aug 12, 2016
9c0d0f5
Better error report for failed BitcoindRPCCheck
instagibbs Aug 16, 2016
f41a5a6
More useful claimpegin errors for malformed arguments
instagibbs Aug 17, 2016
9849b26
getpeginaddress clarification and output variable name changes
instagibbs Aug 17, 2016
28bc103
add testproposedblock rpc call
instagibbs Aug 19, 2016
72e4558
Regtest generate sends fees to wallet
instagibbs Apr 27, 2016
7de6c7a
Add parent genesis hash to chainparams, simplify checks
instagibbs Aug 15, 2016
5a5c361
[libsecp] Add negation functionality
instagibbs Aug 29, 2016
e30fe25
Harden pegin address generation
instagibbs Aug 30, 2016
13a77d5
Re-activated (some) python tests
instagibbs Apr 11, 2016
b634beb
Upstream? Globals: Allow to parse arguments without implicitly using …
jtimon Apr 4, 2016
67b0ebc
Preparations: Pass mapArgs to CChainParams::Factory
jtimon Sep 22, 2016
8f91284
Introduce static CScript StrHexToScriptWithDefault() in chainparams.cpp
jtimon Sep 23, 2016
96df96b
QA: Add -signblockscript command line argument
jonasnick Jun 23, 2016
c50f3f3
QA: Allow setting the fedpeg script with a command line argument
jonasnick Mar 22, 2016
045b8e1
[HF] Re-activated some disabled Bitcoin OPs and enabled new opcodes
instagibbs Oct 12, 2016
81a76d6
Tests for new opcodes
instagibbs Oct 13, 2016
309b9cd
Create max size/weight blocks by default
instagibbs Nov 7, 2016
532b682
Count CHECKSIGFROMSTACK* against sigops limit
instagibbs Nov 14, 2016
47bd744
Migrate project naming from "Beta" to "Elements"
martindale Nov 22, 2016
39ec4bf
bip125 opt-in rbf by default for sent transactions
instagibbs Nov 28, 2016
7a084b8
Change CONTRIBUTING.md to reflect Elements Project process
instagibbs Nov 28, 2016
d34aad3
Add IFDEF around blind transactions
martindale Nov 29, 2016
60bcff8
Fix IsConfirmedBitcoinBlock, clean up CallRPC
instagibbs Dec 7, 2016
899c331
Detect mainchain cookie auth using datadir checking, not mapArgs
instagibbs Dec 7, 2016
87a9408
Retry bitcoind RPC connection upon warmup error code return
instagibbs Dec 7, 2016
710df67
Add regtest python peg-in test
instagibbs Dec 12, 2016
75514e3
GetBlockSubsidy is always 0
instagibbs Dec 14, 2016
e457041
fix getpeginaddress clarification
instagibbs Dec 17, 2016
85d7c51
Change out of date comment for getpeginaddress
instagibbs Dec 17, 2016
50ec90b
f'Re-activated (some) python tests' fix priority assumption
instagibbs Dec 19, 2016
e8c37c4
New address prefix: CTE
instagibbs Jan 10, 2017
6604bdd
Update README for refresh
instagibbs Jan 17, 2017
33d2029
f'New address prefix: CTE'
instagibbs Dec 19, 2016
201e732
f'Add regtest python peg-in test'
instagibbs Jan 19, 2017
baf7a75
f'New address prefix: CTE' fix unit test for addresses
instagibbs Jan 20, 2017
07f9a8d
Hugely reduce the minimum priority
TheBlueMatt Mar 6, 2016
4245fdb
f'Add regtest python peg-in test'
instagibbs Jan 24, 2017
7d904a5
Increase default block priority size to 20% of blocksize
instagibbs Jan 24, 2017
c3d18cf
Uses built-in byte swap if available (Apple) and if bswap_XX is undef…
kallewoof Dec 16, 2016
c497ee3
Migrate `elements-cli` to `elements`
martindale 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