bitcoin 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. metadata +17 -288
  2. data/.rspec +0 -1
  3. data/.rvmrc +0 -1
  4. data/Gemfile +0 -4
  5. data/Gemfile.lock +0 -98
  6. data/Guardfile +0 -38
  7. data/README.markdown +0 -24
  8. data/Rakefile +0 -1
  9. data/bin/rbcoin +0 -8
  10. data/bitcoin.gemspec +0 -40
  11. data/config/cucumber.yml +0 -5
  12. data/config/darcs.boring +0 -121
  13. data/doc/DEFINITION_OF_DONE.markdown +0 -12
  14. data/doc/HISTORY.markdown +0 -19
  15. data/doc/LICENCE.markdown +0 -25
  16. data/doc/TODO.markdown +0 -31
  17. data/doc/UBIQUITOUS_LANGUAGE.markdown +0 -15
  18. data/features/descriptions/command_help.feature +0 -31
  19. data/features/descriptions/satoshi_wallet/add_address.feature +0 -49
  20. data/features/descriptions/satoshi_wallet/show_addresses.feature +0 -18
  21. data/features/descriptions/satoshi_wallet/show_version.feature +0 -17
  22. data/features/descriptions/satoshi_wallet/subcommand_help.feature +0 -20
  23. data/features/fixtures/ABOUT_FIXTURES.markdown +0 -6
  24. data/features/fixtures/addressbook_wallet.dat +0 -0
  25. data/features/fixtures/new_wallet.dat +0 -0
  26. data/features/step_definitions/command_steps.rb +0 -3
  27. data/features/step_definitions/wallet_steps.rb +0 -11
  28. data/features/support/env.rb +0 -9
  29. data/lib/bitcoin.rb +0 -5
  30. data/lib/bitcoin/cli.rb +0 -35
  31. data/lib/bitcoin/commands.rb +0 -3
  32. data/lib/bitcoin/commands/help_command.rb +0 -32
  33. data/lib/bitcoin/commands/satoshi_wallet.rb +0 -11
  34. data/lib/bitcoin/commands/satoshi_wallet/add_address_command.rb +0 -61
  35. data/lib/bitcoin/commands/satoshi_wallet/show_addresses_command.rb +0 -16
  36. data/lib/bitcoin/commands/satoshi_wallet/show_version_command.rb +0 -15
  37. data/lib/bitcoin/commands/satoshi_wallet_command.rb +0 -37
  38. data/lib/bitcoin/commands/satoshi_wallet_command_environment.rb +0 -28
  39. data/lib/bitcoin/console/capturing_stream_bundle.rb +0 -42
  40. data/lib/bitcoin/console/stream_bundle.rb +0 -21
  41. data/lib/bitcoin/data_access/satoshi/bdb_satoshi_wallet_repository.rb +0 -155
  42. data/lib/bitcoin/data_access/satoshi/satoshi_version.rb +0 -58
  43. data/lib/bitcoin/data_access/satoshi/satoshi_wallet.rb +0 -39
  44. data/lib/bitcoin/domain/address_book.rb +0 -19
  45. data/lib/bitcoin/domain/bitcoin_address.rb +0 -33
  46. data/lib/bitcoin/filesystem/empty_temp_dir.rb +0 -74
  47. data/lib/bitcoin/rspec/argument_matchers.rb +0 -1
  48. data/lib/bitcoin/rspec/argument_matchers/block_evaluating_to_matcher.rb +0 -23
  49. data/lib/bitcoin/rspec/directory_helpers.rb +0 -22
  50. data/lib/bitcoin/version.rb +0 -3
  51. data/spec/bitcoin/cli_spec.rb +0 -128
  52. data/spec/bitcoin/commands/help_command_spec.rb +0 -53
  53. data/spec/bitcoin/commands/satoshi_wallet/add_address_command_spec.rb +0 -149
  54. data/spec/bitcoin/commands/satoshi_wallet/show_addresses_command_spec.rb +0 -26
  55. data/spec/bitcoin/commands/satoshi_wallet/show_version_command_spec.rb +0 -26
  56. data/spec/bitcoin/commands/satoshi_wallet_command_environment_spec.rb +0 -76
  57. data/spec/bitcoin/commands/satoshi_wallet_command_spec.rb +0 -73
  58. data/spec/bitcoin/console/_contracts/stream_bundle_contract.rb +0 -29
  59. data/spec/bitcoin/console/capturing_stream_bundle_spec.rb +0 -74
  60. data/spec/bitcoin/console/stream_bundle_spec.rb +0 -13
  61. data/spec/bitcoin/data_access/satoshi/bdb_satoshi_wallet_repository_spec.rb +0 -78
  62. data/spec/bitcoin/data_access/satoshi/satoshi_version_spec.rb +0 -112
  63. data/spec/bitcoin/data_access/satoshi/satoshi_wallet_spec.rb +0 -102
  64. data/spec/bitcoin/domain/address_book_spec.rb +0 -63
  65. data/spec/bitcoin/domain/bitcoin_address_spec.rb +0 -52
  66. data/spec/bitcoin/filesystem/empty_temp_dir_spec.rb +0 -170
  67. data/spec/bitcoin/rspec/argument_matchers/block_evaluating_to_matcher_spec.rb +0 -36
  68. data/spec/spec_helper.rb +0 -29
@@ -1,24 +0,0 @@
1
- # Bitcoin
2
-
3
- A [Bitcoin][bitcoin] client written in Ruby
4
-
5
- This is very early stages - I haven't yet spent much time on it, but I
6
- have explored the Bitcoin Berkeley DB database format to some extent,
7
- and the first phase is to be able to read (and write) enough from standard
8
- wallets to be a useful management tool.
9
-
10
- For licence and other documentation, see the "doc" folder
11
-
12
- ## Installation
13
-
14
- You need Berkeley DB 4.7 installed. To get this through MacPorts:
15
-
16
- sudo port install db47
17
-
18
- The BDB gem dependency should then compile.
19
-
20
- ## Contact
21
-
22
- I can be reached by email at <ash.moran@patchspace.co.uk>
23
-
24
- [bitcoin]: http://www.bitcoin.org/
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require 'bundler/gem_tasks'
data/bin/rbcoin DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- $:.unshift(File.dirname(__FILE__) + '/../lib') unless $:.include?(File.dirname(__FILE__) + '/../lib')
4
-
5
- require 'bitcoin/cli'
6
- require 'bitcoin/console/stream_bundle'
7
-
8
- exit Bitcoin::CLI.new(Bitcoin::Console::StreamBundle.new(STDIN, STDOUT, STDERR)).run(ARGV.dup)
@@ -1,40 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "bitcoin/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "bitcoin"
7
- s.version = Bitcoin::VERSION
8
- s.authors = [ "Ash Moran", "Andy Shipman" ]
9
- s.email = %w[ ash.moran@patchspace.co.uk andy@cllearview.com ]
10
- s.homepage = "http://rbcoin.org/"
11
- s.summary = "bitcoin-#{Bitcoin::VERSION}"
12
- s.description = "Bitcoin client"
13
-
14
- # s.rubyforge_project = "bitcoin"
15
-
16
- s.add_dependency("sbdb", ">= 0.0.12.2")
17
- s.add_dependency("lstrip-on-steroids", ">= 1.0.0")
18
-
19
- s.add_development_dependency("rake")
20
- s.add_development_dependency("cucumber")
21
- s.add_development_dependency("aruba")
22
- s.add_development_dependency("rspec")
23
- s.add_development_dependency("fuubar")
24
- s.add_development_dependency("guard")
25
- s.add_development_dependency("guard-rspec")
26
- s.add_development_dependency("guard-cucumber")
27
- s.add_development_dependency("guard-bundler")
28
- s.add_development_dependency("rb-fsevent")
29
- s.add_development_dependency("growl")
30
- s.add_development_dependency("fakefs")
31
- s.add_development_dependency("awesome_print")
32
- s.add_development_dependency("looksee")
33
- s.add_development_dependency("growl_notify")
34
-
35
- # `darcs show files` lists directories unlike `git ls-files`, so we exclude them here
36
- s.files = `darcs show files`.split("\n").select { |file| File.file?(file) }
37
- s.test_files = `darcs show files {features,spec}/*`.split("\n").select { |file| File.file?(file) }
38
- s.executables = `darcs show files bin/*`.split("\n").select { |file| File.file?(file) }.map { |file| File.basename(file) }
39
- s.require_paths = ["lib"]
40
- end
@@ -1,5 +0,0 @@
1
- <%
2
- std_opts = "--require features/support/env.rb --require features/step_definitions --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
3
- %>
4
- default: <%= std_opts %> --tags ~@wip --strict
5
- wip: <%= std_opts %> --tags @wip:3 --wip
@@ -1,121 +0,0 @@
1
- # Boring file regexps:
2
-
3
- ### compiler and interpreter intermediate files
4
- # haskell (ghc) interfaces
5
- \.hi$
6
- \.hi-boot$
7
- \.o-boot$
8
- # object files
9
- \.o$
10
- \.o\.cmd$
11
- # profiling haskell
12
- \.p_hi$
13
- \.p_o$
14
- # haskell program coverage resp. profiling info
15
- \.tix$
16
- \.prof$
17
- # fortran module files
18
- \.mod$
19
- # linux kernel
20
- \.ko\.cmd$
21
- \.mod\.c$
22
- (^|/)\.tmp_versions($|/)
23
- # *.ko files aren't boring by default because they might
24
- # be Korean translations rather than kernel modules
25
- # \.ko$
26
- # python, emacs, java byte code
27
- \.py[co]$
28
- \.elc$
29
- \.class$
30
- # objects and libraries; lo and la are libtool things
31
- \.(obj|a|exe|so|lo|la)$
32
- # compiled zsh configuration files
33
- \.zwc$
34
- # Common LISP output files for CLISP and CMUCL
35
- \.(fas|fasl|sparcf|x86f)$
36
-
37
- ### build and packaging systems
38
- # cabal intermediates
39
- \.installed-pkg-config
40
- \.setup-config
41
- # standard cabal build dir, might not be boring for everybody
42
- # ^dist(/|$)
43
- # autotools
44
- (^|/)autom4te\.cache($|/)
45
- (^|/)config\.(log|status)$
46
- # microsoft web expression, visual studio metadata directories
47
- \_vti_cnf$
48
- \_vti_pvt$
49
- # gentoo tools
50
- \.revdep-rebuild.*
51
- # generated dependencies
52
- ^\.depend$
53
-
54
- ### version control systems
55
- # cvs
56
- (^|/)CVS($|/)
57
- \.cvsignore$
58
- # cvs, emacs locks
59
- ^\.#
60
- # rcs
61
- (^|/)RCS($|/)
62
- ,v$
63
- # subversion
64
- (^|/)\.svn($|/)
65
- # mercurial
66
- (^|/)\.hg($|/)
67
- # git
68
- (^|/)\.git($|/)
69
- # bzr
70
- \.bzr$
71
- # sccs
72
- (^|/)SCCS($|/)
73
- # darcs
74
- (^|/)_darcs($|/)
75
- (^|/)\.darcsrepo($|/)
76
- ^\.darcs-temp-mail$
77
- -darcs-backup[[:digit:]]+$
78
- # gnu arch
79
- (^|/)(\+|,)
80
- (^|/)vssver\.scc$
81
- \.swp$
82
- (^|/)MT($|/)
83
- (^|/)\{arch\}($|/)
84
- (^|/).arch-ids($|/)
85
- # bitkeeper
86
- (^|/)BitKeeper($|/)
87
- (^|/)ChangeSet($|/)
88
-
89
- ### miscellaneous
90
- # backup files
91
- ~$
92
- \.bak$
93
- \.BAK$
94
- # patch originals and rejects
95
- \.orig$
96
- \.rej$
97
- # X server
98
- \..serverauth.*
99
- # image spam
100
- \#
101
- (^|/)Thumbs\.db$
102
- # vi, emacs tags
103
- (^|/)(tags|TAGS)$
104
- #(^|/)\.[^/]
105
- # core dumps
106
- (^|/|\.)core$
107
- # partial broken files (KIO copy operations)
108
- \.part$
109
- # waf files, see http://code.google.com/p/waf/
110
- (^|/)\.waf-[[:digit:].]+-[[:digit:]]+($|/)
111
- (^|/)\.lock-wscript$
112
- # mac os finder
113
- (^|/)\.DS_Store$
114
-
115
- ### Bitcoin gem additions
116
- pkg$
117
- ^tmp/.*
118
- ^bitcoinrb_db_tmp$
119
- ^scratch\.rb$
120
- ^features/fixtures/real_wallet.dat$
121
- ^.*\.gem$
@@ -1,12 +0,0 @@
1
- # Bitcoin Definition of Done
2
-
3
- A feature in the Bitcoin client will be considered done under normal
4
- circumstances if it meets the following criteria:
5
-
6
- * There is a Cucumber feature describing it
7
- * The feature covers the command line interface
8
- * There is a command-line interface for it
9
- * The command-line interface is documented in the internal help
10
- * All realistic input-related error conditions are handled
11
- * All realistic runtime errors are handled
12
- * The feature behaves in a suitably similar way to the Satoshi client
@@ -1,19 +0,0 @@
1
- # Bitcoin gem history
2
-
3
- ## 0.1.2 (2011-08-29)
4
-
5
- ### New features
6
-
7
- * `rbcoin satoshi-wallet add-address` command
8
- * `rbcoin satoshi-wallet show-addresses` command
9
-
10
- ## 0.1.1 (2011-08-22)
11
-
12
- ### New features
13
-
14
- * `rbcoin satoshi-wallet show-version` command
15
- * `rbcoin help` command shows WIP help, not everything described is implemented
16
-
17
- ## 0.1.0 (2011-07-21)
18
-
19
- Initial "release". Doesn't actually do anything yet :-)
@@ -1,25 +0,0 @@
1
- Copyright 2011 Ash Moran <ash.moran@patchspace.co.uk>. All rights reserved.
2
-
3
- Redistribution and use in source and binary forms, with or without modification, are
4
- permitted provided that the following conditions are met:
5
-
6
- 1. Redistributions of source code must retain the above copyright notice, this list of
7
- conditions and the following disclaimer.
8
-
9
- 2. Redistributions in binary form must reproduce the above copyright notice, this list
10
- of conditions and the following disclaimer in the documentation and/or other materials
11
- provided with the distribution.
12
-
13
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ''AS IS'' AND ANY EXPRESS OR IMPLIED
14
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
15
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
16
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
17
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
18
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
19
- ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
20
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
21
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
-
23
- The views and conclusions contained in the software and documentation are those of the
24
- authors and should not be interpreted as representing official policies, either expressed
25
- or implied, of the copyright holder.
@@ -1,31 +0,0 @@
1
- # TODO
2
-
3
- ## Satoshi code
4
-
5
- * Investigate `read_compact_size`
6
-
7
- ## Features
8
-
9
- * Flags to `rbcoin satoshi-wallet show-addresses`: --all, --sending --receiving
10
-
11
- ## Usability
12
-
13
- * Berkeley DB error handling
14
- * Character encoding (assuming UTF8 everywhere)
15
- * Zsh command completion
16
- * Handle mismatched wallet versions
17
- * Offer a read-only mode for satoshi-wallet commands
18
- * Subcommand help for `rbcoin satoshi-wallet`
19
-
20
- ## Design
21
-
22
- * OCP-compliant command system
23
-
24
- ## Specs
25
-
26
- * A contract that commands return 0/1 on success/failure
27
- * A contract that commands terminate with a newline
28
-
29
- ## Security
30
-
31
- * Prevent data being written to swap
@@ -1,15 +0,0 @@
1
- # RbCoin Ubiquitous Language
2
-
3
- ## Bitcoin
4
-
5
- Terms defined here should be used consistently throughout the application user
6
- interface, documentation and code
7
-
8
- * Satoshi Client: The original Bitcoin client, referred to as the "Satoshi client" for clarity
9
- * Satoshi Wallet: The wallet.dat file used by the Satoshi Client (a Berkeley DB file)
10
- * Address: A Bitcoin address
11
- * Tip Jar: A Bitcoin address published onymously, usually to collect anonymous tips
12
-
13
- ## Technical
14
-
15
- * Value Object: an immutable object (Domain Driven Design sense)
@@ -1,31 +0,0 @@
1
- Feature: Command help
2
- In order to avoid being frustrated by being unable to interact with the application
3
- As a user
4
- I want to be told when I make a mistake
5
-
6
- Scenario: `rbcoin`
7
- When I successfully run `rbcoin`
8
- Then the output should contain:
9
- """
10
- Usage: rbcoin COMMAND ...
11
-
12
- Commands:
13
- help Display help about rbcoin and rbcoin commands
14
- satoshi-wallet Manipulate the wallet.dat file of the original client
15
-
16
- Use "rbcoin COMMAND --help" or "rbcoin help COMMAND" for help on a single command
17
- Use "rbcoin --version" to see the rbcoin version number
18
- Use "rbcoin --exact-version" to see the all version details (with dependencies)
19
- """
20
-
21
- Scenario: `rbcoin help`
22
- When I successfully run `rbcoin help`
23
- Then the output should contain "Usage: rbcoin COMMAND ..."
24
-
25
- Scenario: Invalid command
26
- When I run `rbcoin thiscommanddoesnotexist`
27
- Then it should fail with:
28
- """
29
- rbcoin failed: No such command "thiscommanddoesnotexist"
30
- Try: `rbcoin help`
31
- """
@@ -1,49 +0,0 @@
1
- Feature: satoshi-wallet add-address
2
- In order to reduce the risk of using RbCoin
3
- As a Bitcoin owner
4
- I want to be able to add new Addresses into a Satoshi Wallet
5
-
6
- Scenario: Add new address
7
- Given a new Satoshi Wallet "new_wallet.dat"
8
- When I successfully run `rbcoin satoshi-wallet add-address new_wallet.dat 14Z1mazY4HfysZyMaKudFr63EwHqQT2njz "Bitcoin Monitor"`
9
- Then the output should contain "Address added successfully"
10
- When I successfully run `rbcoin satoshi-wallet show-addresses new_wallet.dat`
11
- Then the output should contain:
12
- """
13
- # All addresses in new_wallet.dat
14
- 14Z1mazY4HfysZyMaKudFr63EwHqQT2njz Bitcoin Monitor
15
- """
16
-
17
- Scenario: Invalid address
18
- Given a new Satoshi Wallet "new_wallet.dat"
19
- When I run `rbcoin satoshi-wallet add-address new_wallet.dat 1thisisaninvalidaddress "Bitcoin Monitor"`
20
- Then the command should fail
21
- And the stderr should contain:
22
- """
23
- The address "1thisisaninvalidaddress" is not a valid Bitcoin address
24
- The address was not added to the wallet
25
- """
26
-
27
- Scenario: Missing arguments
28
- Given a new Satoshi Wallet "new_wallet.dat"
29
- When I run `rbcoin satoshi-wallet add-address new_wallet.dat 14Z1mazY4HfysZyMaKudFr63EwHqQT2njz`
30
- Then the command should fail
31
- And the stderr should contain:
32
- """
33
- You must provide both a Bitcoin address and a name to add to a wallet
34
- No changes were made to the wallet
35
- """
36
-
37
- Scenario: Too many arguments
38
- Given a new Satoshi Wallet "new_wallet.dat"
39
- When I run `rbcoin satoshi-wallet add-address new_wallet.dat 14Z1mazY4HfysZyMaKudFr63EwHqQT2njz My name without quotes`
40
- Then the command should fail
41
- And the stderr should contain:
42
- """
43
- Received too many arguments
44
-
45
- To make sure the name is formatted correctly we ask you to use use quotes
46
- around the name, e.g.: "My name without quotes"
47
-
48
- No changes were made to the wallet
49
- """
@@ -1,18 +0,0 @@
1
- Feature: satoshi-wallet show-addresses
2
- In order to enable easily transitioning from the Satoshi Client
3
- As a Bitcoin owner
4
- I want to inspect the contents of my Satoshi Wallet
5
-
6
- Scenario: Viewing all addresses
7
- # addressbook_wallet.dat is a wallet with some known addresses but no transactions
8
- Given a new Satoshi Wallet "addressbook_wallet.dat"
9
- When I successfully run `rbcoin satoshi-wallet show-addresses addressbook_wallet.dat`
10
- # I don't know what drives the address book order yet - I think it's the address itself
11
- Then the output should contain:
12
- """
13
- # All addresses in addressbook_wallet.dat
14
- 13f2t2WKnCZh1rZbDhdUKB6fY1rZNWZVzd Receiving address 2
15
- 14Z1mazY4HfysZyMaKudFr63EwHqQT2njz Bitcoin Monitor
16
- 16kzGRdP8LToECecna3EynghiApUM9duLw Receiving address 1
17
- 1Nqr3MqVyUp6k3o3QPePAdn4Yg4tzgB9kw Bitcoincharts
18
- """
@@ -1,17 +0,0 @@
1
- Feature: satoshi-wallet show-version
2
- In order to enable easily transitioning from the Satoshi Client
3
- As a Bitcoin owner
4
- I want to inspect the contents of my Satoshi Wallet
5
-
6
- Scenario: Valid wallet file
7
- # Which just so happens to be a 0.3.24 file...
8
- Given a new Satoshi Wallet "new_wallet.dat"
9
- When I successfully run `rbcoin satoshi-wallet show-version new_wallet.dat`
10
- Then the output should contain "0.3.24"
11
-
12
- Scenario: Missing wallet file
13
- When I run `rbcoin satoshi-wallet show-version this_wallet_does_not_exist.dat`
14
- Then it should fail with:
15
- """
16
- Couldn't find wallet file: this_wallet_does_not_exist.dat
17
- """
@@ -1,20 +0,0 @@
1
- Feature: Subcommand help for `rbcoin satoshi-wallet`
2
- In order to avoid being frustrated by being unable to interact with the application
3
- As a user
4
- I want to be told when I make a mistake
5
-
6
- Scenario: `rbcoin satoshi-wallet unknown-subcommand`
7
- When I run `rbcoin satoshi-wallet unknown-subcommand`
8
- Then the command should fail
9
- And the stderr should contain:
10
- """
11
- Unknown satoshi-wallet subcommand: "unknown-subcommand"
12
- """
13
-
14
- # Scenario: `rbcoin help satoshi-wallet`
15
- # When I successfully run `rbcoin satoshi-wallet help`
16
- # Then the output should contain "Usage: TODO"
17
- #
18
- # Scenario: `rbcoin satoshi-wallet --help`
19
- # When I successfully run `rbcoin satoshi-wallet --help`
20
- # Then the output should contain "Usage: TODO"