Python-Based Bitcoin Software
C++ Python C Shell Makefile Assembly Other
#157 Compare This branch is 417 commits ahead of etotheipi:master.
Latest commit cc9eccf Nov 8, 2016 @goatpig committed on GitHub Merge pull request #128 from achow101/master
Remove bitcoinarmory.com link from multisig dialog
Permalink
Failed to load latest commit information.
PublicKeys Merge remote-tracking branch 'origin/pr/14' into testing Mar 8, 2016
armoryengine bump version Nov 2, 2016
bitcoinrpc_jsonrpc Use cookie auth Sep 6, 2016
cppForSwig fix debian build Nov 2, 2016
dpkgfiles Fix execution of program to Python 2, both in starter and in URL hand… Aug 12, 2016
extras ARMORY-389 use bitcoin rpc calls estimatefee and estimatepriority to … May 26, 2015
guitest Added a little bit of UI testing using the Linux Desktop Testing Proj… Mar 9, 2015
img Added a way to add real life randomness through shuffling an ordinary… Feb 23, 2016
linuxbuild some changes in markdowns Mar 4, 2016
osxbuild OS X note changes Oct 31, 2016
po Updated version number Jan 7, 2015
pytest Replace Bitcoin-Qt with Bitcoin-Core Mar 7, 2016
r-pi Update R-Pi Python2.7 links Aug 30, 2016
release_scripts Remove GoogleCode upload release script Mar 7, 2016
samplemodules clean up merge, some fixes, double scan speed by avoiding critical copy Jul 29, 2016
txjsonrpc ARMORY-125 - More armoryd cleanup. Note that there are now two JSON-R… May 22, 2014
ui Remove bitcoinarmory.com link from multisig dialog Nov 8, 2016
urllib3 Tweaking privacy info Apr 23, 2014
webshop Updated copyright statements Jan 8, 2015
windowsbuild Replaced instructions with Markdown Feb 26, 2016
.gitignore Correct cppForSwig ignores Aug 31, 2016
ArmoryQt.py pass client datadir to db when auto spawning Oct 30, 2016
ArmorySetup.nsi update some data in the windows intaller script Sep 15, 2016
LICENSE some more license language updates Feb 5, 2016
LICENSE-ATI Updated license language Feb 4, 2016
LICENSE-MIT Updated license language Feb 4, 2016
LICENSE.py Updated copyright statements Jan 8, 2015
Makefile update make install Sep 14, 2016
README.md Replace Bitcoin-Qt with Bitcoin-Core Mar 7, 2016
README_OSX.md OS X note changes Oct 31, 2016
SDM.py pass client datadir to db when auto spawning Oct 30, 2016
announcefetch.py Updated copyright statements Jan 8, 2015
armorycolors.py opt-in RBF detection and flagging Feb 28, 2016
armoryd.README Add a note to the armoryd README reminding people that a bitcoind ins… Jun 26, 2014
armoryd.py Merge remote-tracking branch 'origin/pr/68' into dev Sep 1, 2016
armorymodels.py fix address book Aug 28, 2016
changelog.txt fix coin control Oct 30, 2016
dynamicImport.py Revert to No-Zip modules for testnet Jan 27, 2015
edit_icons.bat Updated a few this to make the process more pleasant Sep 24, 2013
edit_icons.rts Implemented complete automation of creating the installer Sep 25, 2013
guardian.py Updated copyright statements Jan 8, 2015
imgList.xml update imgList Mar 12, 2016
jasvet.py Remove extra line in ClearSign signing Mar 11, 2016
nginx_example.conf change default fcgi port to 9001 Jul 28, 2016
qrcodenative.py ARMORY-24 Implement Wizard SystemMerge Jan 24, 2014
qt4reactor.py Created readblkupdate test, added qt4reactor license Jan 15, 2013
qtdefines.py granular coin control Aug 28, 2016
qtdialogs.py fix coin control Oct 30, 2016
setup.py Fix email package import for py2exe build Jun 25, 2014
subprocess_win.py tiny fix in subprocess_win.py Jan 7, 2015
update_version.py run update_version when building installer on windows Jan 7, 2015
writeNSISCompilerArgs.py multiple unicode fixes Mar 7, 2014

README.md

Armory

Created by Alan Reiner on 13 July, 2011

Forked by goatpig in February 2016

Armory is a full-featured Bitcoin client, offering a dozen innovative features not found in any other client software! Manage multiple wallets (deterministic and watching-only), print paper backups that work forever, import or sweep private keys, and keep your savings in a computer that never touches the internet, while still being able to manage incoming payments, and create outgoing payments with the help of a USB key.

Multi-signature transactions are accommodated under-the-hood about 80%, and will be completed and integrated into the UI soon.

Armory has no independent networking components built in. Instead, it relies on on the Satoshi client to securely connect to peers, validate blockchain data, and broadcast transactions for us. Although it was initially planned to cut the umbilical cord to the Satoshi client and implement independent networking, it has turned out to be an inconvenience worth having. Reimplementing all the networking code would be fraught with bugs, security holes, and possible blockchain forking. The reliance on Bitcoin-Core right now is actually making Armory more secure!

Donations

Will post an address eventually for donations

Building Armory From Source

Instructions for Windows
Instructions for Mac OS X
Instructions for Ubuntu and Arch Linux

Dependencies

  • GNU Compiler Collection
    Linux: Install package g++

  • Crypto++
    Linux: Install package libcrypto++-dev
    Windows: Download

  • SWIG
    Linux: Install package swig
    Windows: Download
    MSVS: Copy swigwin-2.x directory next to cryptopp as swigwin

  • Python 2.6/2.7
    Linux: Install package python-dev
    Windows: Download

  • Python Twisted -- asynchronous networking
    Linux: Install package python-twisted
    Windows: Download

  • PyQt 4 (for Python 2.X)
    Linux: Install packages libqtcore4, libqt4-dev, python-qt4, and pyqt4-dev-tools
    Windows: Download

  • qt4reactor.py -- combined eventloop for PyQt and Twisted
    All OS: Download

  • pywin32
    Windows Only: qt4reactor relies on pywin32 (for win32event module). Download

  • py2exe
    (OPTIONAL - if you want to make a standalone executable in Windows)
    Windows: Download

  • LMDB - database engine, modified to suit Armory's use cases LMDB page

Sample Code

Armory contains over 25,000 lines of code, between the C++ and python libraries. This can be very confusing for someone unfamiliar with the code (you). Below I have attempted to illustrate the CONOPS (concept of operations) that the library was designed for, so you know how to use it in your own development activities. There is a TON of sample code in the following:

License

Distributed partially under the GNU Affero General Public License (AGPL v3)
and the MIT License See LICENSE file

Copyright

Copyright (C) 2011-2015, Armory Technologies, Inc.