bit_wallet 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +18 -0
- data/.gitmodules +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +37 -0
- data/Rakefile +1 -0
- data/bit_wallet.gemspec +25 -0
- data/lib/bit_wallet/account.rb +36 -0
- data/lib/bit_wallet/accounts.rb +36 -0
- data/lib/bit_wallet/address.rb +22 -0
- data/lib/bit_wallet/addresses.rb +17 -0
- data/lib/bit_wallet/version.rb +3 -0
- data/lib/bit_wallet/wallet.rb +21 -0
- data/lib/bit_wallet.rb +23 -0
- data/rvmrc.sample +1 -0
- data/spec/bit_wallet/account_spec.rb +80 -0
- data/spec/bit_wallet/accounts_spec.rb +30 -0
- data/spec/bit_wallet/address_spec.rb +37 -0
- data/spec/bit_wallet/addresses_spec.rb +25 -0
- data/spec/bit_wallet/wallet_spec.rb +12 -0
- data/spec/bit_wallet_spec.rb +20 -0
- data/spec/config.yml +3 -0
- data/spec/factories.rb +24 -0
- data/spec/spec_helper.rb +37 -0
- metadata +159 -0
data/.gitignore
ADDED
data/.gitmodules
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 TODO: Write your name
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# BitWallet
|
2
|
+
|
3
|
+
BitWallet is a Ruby-esque interface to a bitcoin daemon. It uses the [bitcoin-client](https://github.com/sinisterchipmunk/bitcoin-client) gem to execute the RPC calls to the daemon.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'bit_wallet'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install bit_wallet
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
wallet = BitWallet.new(:username => 'username', :password => 'password')
|
22
|
+
account = wallet.accounts.new('account name')
|
23
|
+
account.addresses.count # 1, as it already comes with an address
|
24
|
+
account.balance # returns the balance of the account
|
25
|
+
address = account.addresses.new
|
26
|
+
address.address # 8hdsakdjh82d9327ccb64642c - the address hash
|
27
|
+
account.send_amount 5.5, to: '8hdsakdjh82d9327ccb64642c' # sends 5.5 bitcoin to the address
|
28
|
+
account.total_received # returns the total amount received by the account
|
29
|
+
address.total_received # returns the total amount received by the address
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
1. Fork it
|
34
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
35
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
36
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
37
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bit_wallet.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bit_wallet/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "bit_wallet"
|
8
|
+
gem.version = BitWallet::VERSION
|
9
|
+
gem.authors = ["Ramon Tayag"]
|
10
|
+
gem.email = ["ramon.tayag@gmail.com"]
|
11
|
+
gem.description = %q{Ruby-esque handling of Bitcoin wallet}
|
12
|
+
gem.summary = %q{Ruby-esque handling of Bitcoin wallet.}
|
13
|
+
gem.homepage = ""
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_dependency 'bitcoin-client', '0.0.1'
|
21
|
+
gem.add_dependency 'activesupport', '3.2.11'
|
22
|
+
gem.add_development_dependency 'rspec', '2.12.0'
|
23
|
+
gem.add_development_dependency 'pry'
|
24
|
+
gem.add_development_dependency 'factory_girl', '4.2.0'
|
25
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module BitWallet
|
2
|
+
class Account
|
3
|
+
|
4
|
+
attr_reader :wallet, :name
|
5
|
+
delegate :client, to: :wallet
|
6
|
+
|
7
|
+
def initialize(wallet, name)
|
8
|
+
@wallet = wallet
|
9
|
+
@name = name
|
10
|
+
self.addresses.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def addresses
|
14
|
+
@addresses ||= Addresses.new(self)
|
15
|
+
end
|
16
|
+
|
17
|
+
def balance(min_conf=BitWallet.config.min_conf)
|
18
|
+
client.getbalance(self.name, min_conf)
|
19
|
+
end
|
20
|
+
|
21
|
+
def send_amount(amount, options={})
|
22
|
+
unless options[:to]
|
23
|
+
fail ArgumentError, 'address must be specified'
|
24
|
+
end
|
25
|
+
client.sendfrom(self.name,
|
26
|
+
options[:to],
|
27
|
+
amount,
|
28
|
+
BitWallet.config.min_conf)
|
29
|
+
end
|
30
|
+
|
31
|
+
def total_received
|
32
|
+
client.getreceivedbyaccount(self.name, BitWallet.config.min_conf)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module BitWallet
|
2
|
+
class Accounts < Array
|
3
|
+
|
4
|
+
attr_reader :wallet
|
5
|
+
delegate :client, to: :wallet
|
6
|
+
|
7
|
+
def initialize(wallet)
|
8
|
+
@wallet = wallet
|
9
|
+
|
10
|
+
existing_accounts.each do |name|
|
11
|
+
self.new(name)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def new(name)
|
16
|
+
if self.includes_account_name?(name)
|
17
|
+
account = self.find {|a| a.name == name}
|
18
|
+
else
|
19
|
+
account = BitWallet::Account.new(wallet, name)
|
20
|
+
self << account
|
21
|
+
end
|
22
|
+
account
|
23
|
+
end
|
24
|
+
|
25
|
+
def includes_account_name?(account_name)
|
26
|
+
self.find {|a| a.name == account_name}.present?
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def existing_accounts
|
32
|
+
client.listaccounts.keys
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module BitWallet
|
2
|
+
class Address
|
3
|
+
|
4
|
+
attr_reader :account, :address
|
5
|
+
delegate :wallet, to: :account
|
6
|
+
delegate :client, to: :wallet
|
7
|
+
|
8
|
+
def initialize(account, address=nil)
|
9
|
+
@account = account
|
10
|
+
@address = if address
|
11
|
+
address
|
12
|
+
else
|
13
|
+
client.getnewaddress(@account.name)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def total_received
|
18
|
+
client.getreceivedbyaddress(self.address, BitWallet.config.min_conf)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module BitWallet
|
2
|
+
class Addresses < Array
|
3
|
+
|
4
|
+
attr_reader :account
|
5
|
+
|
6
|
+
def initialize(account)
|
7
|
+
@account = account
|
8
|
+
end
|
9
|
+
|
10
|
+
def new(address_str=nil)
|
11
|
+
address = Address.new(@account, address_str)
|
12
|
+
self << address
|
13
|
+
address
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module BitWallet
|
2
|
+
class Wallet
|
3
|
+
|
4
|
+
def initialize(config={})
|
5
|
+
@config = config
|
6
|
+
end
|
7
|
+
|
8
|
+
def accounts
|
9
|
+
@accounts ||= Accounts.new(self)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def client
|
15
|
+
@client ||= Bitcoin::Client.new(@config[:username],
|
16
|
+
@config[:password],
|
17
|
+
@config.slice(:port))
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
data/lib/bit_wallet.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "bit_wallet/version"
|
2
|
+
require 'ostruct'
|
3
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
4
|
+
require 'active_support/core_ext/module/delegation'
|
5
|
+
require 'active_support/core_ext/string'
|
6
|
+
require 'bitcoin'
|
7
|
+
|
8
|
+
require 'bit_wallet/wallet'
|
9
|
+
require 'bit_wallet/account'
|
10
|
+
require 'bit_wallet/accounts'
|
11
|
+
require 'bit_wallet/addresses'
|
12
|
+
require 'bit_wallet/address'
|
13
|
+
|
14
|
+
module BitWallet
|
15
|
+
|
16
|
+
mattr_accessor :config
|
17
|
+
@@config = OpenStruct.new
|
18
|
+
|
19
|
+
def self.at(*args)
|
20
|
+
Wallet.new(*args)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/rvmrc.sample
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use ruby-1.9.3-p286
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitWallet::Account do
|
4
|
+
|
5
|
+
let(:wallet) { build(:wallet) }
|
6
|
+
subject { described_class.new(wallet, 'name') }
|
7
|
+
|
8
|
+
its(:wallet) {should == wallet}
|
9
|
+
its(:addresses) { should be_kind_of(BitWallet::Addresses) }
|
10
|
+
|
11
|
+
describe 'on initialization' do
|
12
|
+
it 'should have a default name' do
|
13
|
+
subject.name.should_not be_blank
|
14
|
+
subject.name.should be_kind_of(String)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should be assigned that name' do
|
18
|
+
wallet = BitWallet::Wallet.new(Config.slice(:username,
|
19
|
+
:port,
|
20
|
+
:password))
|
21
|
+
account = wallet.accounts.new('nona')
|
22
|
+
|
23
|
+
wallet.accounts.includes_account_name?('nona').should be_true
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when the account name already exists' do
|
27
|
+
it 'should return that same address' do
|
28
|
+
wallet = BitWallet::Wallet.new(Config.slice(:username,
|
29
|
+
:port,
|
30
|
+
:password))
|
31
|
+
account = wallet.accounts.new('nona')
|
32
|
+
|
33
|
+
expect {
|
34
|
+
wallet.accounts.new('nona')
|
35
|
+
}.to_not change(wallet.accounts, :size)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#balance' do
|
41
|
+
subject { wallet.accounts.new('nona') }
|
42
|
+
|
43
|
+
it 'should return the balance of the account' do
|
44
|
+
subject.balance.should ==
|
45
|
+
subject.client.getbalance(subject.name, BitWallet.config.min_conf)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should default to the config min_conf' do
|
49
|
+
BitWallet.config.min_conf = 2
|
50
|
+
subject.client.should_receive(:getbalance).with(subject.name, 2)
|
51
|
+
subject.balance(2)
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should be able to override the min_conf' do
|
55
|
+
subject.client.should_receive(:getbalance).with(subject.name, 'min_conf')
|
56
|
+
subject.balance('min_conf')
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe '#send_amount' do
|
61
|
+
it 'should send money to the given address' do
|
62
|
+
default_account = wallet.accounts.new('')
|
63
|
+
nona_account = wallet.accounts.new('nona')
|
64
|
+
nona_address_str = nona_account.addresses.first.address
|
65
|
+
expected_balance = nona_account.balance + 5.5
|
66
|
+
default_account.send_amount 5.5, to: nona_address_str
|
67
|
+
nona_account.balance.should == expected_balance
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe '#total_received' do
|
72
|
+
it 'should return the total amount received by the address' do
|
73
|
+
subject.client.stub(:getreceivedbyaccount).
|
74
|
+
with(subject.name, BitWallet.config.min_conf).
|
75
|
+
and_return(2.1)
|
76
|
+
subject.total_received.should == 2.1
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitWallet::Accounts do
|
4
|
+
|
5
|
+
let(:wallet) do
|
6
|
+
build(:wallet)
|
7
|
+
end
|
8
|
+
|
9
|
+
subject do
|
10
|
+
BitWallet::Accounts.new(wallet)
|
11
|
+
end
|
12
|
+
|
13
|
+
its(:wallet) { should == wallet }
|
14
|
+
|
15
|
+
describe '#new' do
|
16
|
+
it 'should create a new BitWallet::Account with a default address' do
|
17
|
+
account = wallet.accounts.new('accountname')
|
18
|
+
account.should be_kind_of(BitWallet::Account)
|
19
|
+
account.addresses.count.should == 1
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#includes_account_name?(account)' do
|
24
|
+
it 'should return true if the array includes the account' do
|
25
|
+
account = subject.new('accountname')
|
26
|
+
subject.includes_account_name?('accountname').should == true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitWallet::Address do
|
4
|
+
|
5
|
+
let(:account) { build(:account) }
|
6
|
+
subject { build(:address, account: account) }
|
7
|
+
|
8
|
+
its(:account) { should == account }
|
9
|
+
|
10
|
+
describe 'on initialization' do
|
11
|
+
context 'no address is given' do
|
12
|
+
it 'should create an address' do
|
13
|
+
address = described_class.new(account)
|
14
|
+
address.address.should_not be_blank
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'address given already exists' do
|
19
|
+
it 'should not create an address' do
|
20
|
+
described_class.new(account, 'addr')
|
21
|
+
expect {
|
22
|
+
described_class.new(account, 'addr')
|
23
|
+
}.to_not change(account.addresses, :count)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#total_received' do
|
29
|
+
it 'should return the total amount received by the address' do
|
30
|
+
subject.client.stub(:getreceivedbyaddress).
|
31
|
+
with(subject.address, BitWallet.config.min_conf).
|
32
|
+
and_return(2.1)
|
33
|
+
subject.total_received.should == 2.1
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitWallet::Addresses do
|
4
|
+
|
5
|
+
let(:account) { build(:account) }
|
6
|
+
subject { BitWallet::Addresses.new(account) }
|
7
|
+
|
8
|
+
its(:account) { should == account }
|
9
|
+
its(:new) { should be_kind_of(BitWallet::Address) }
|
10
|
+
|
11
|
+
describe '#new' do
|
12
|
+
context 'without any address string given' do
|
13
|
+
it 'should return an Address that points to the same account' do
|
14
|
+
subject.new.account.should == account
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with address string given' do
|
19
|
+
it 'should return an Address with the given address string' do
|
20
|
+
subject.new('myaddress').address.should == 'myaddress'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BitWallet do
|
4
|
+
|
5
|
+
describe '.config' do
|
6
|
+
it 'should be a configurable object' do
|
7
|
+
described_class.config.min_conf = 22
|
8
|
+
described_class.config.min_conf.should == 22
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '.at' do
|
13
|
+
it 'should wrap the a wallet wrapping the Bitcoin client' do
|
14
|
+
wallet = double
|
15
|
+
BitWallet::Wallet.should_receive(:new).with(args: 'a').and_return(wallet)
|
16
|
+
described_class.at(args: 'a').should == wallet
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/spec/config.yml
ADDED
data/spec/factories.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
|
3
|
+
factory :wallet, class: BitWallet::Wallet do
|
4
|
+
initialize_with { BitWallet::Wallet.new(Config.slice(:username,
|
5
|
+
:password,
|
6
|
+
:port)) }
|
7
|
+
end
|
8
|
+
|
9
|
+
factory :account, class: BitWallet::Account do
|
10
|
+
ignore do
|
11
|
+
wallet { build(:wallet) }
|
12
|
+
name { 'name' }
|
13
|
+
end
|
14
|
+
initialize_with { BitWallet::Account.new(wallet, name) }
|
15
|
+
end
|
16
|
+
|
17
|
+
factory :address, class: BitWallet::Address do
|
18
|
+
ignore do
|
19
|
+
account { build(:account) }
|
20
|
+
end
|
21
|
+
initialize_with { BitWallet::Address.new(account) }
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
APP_ENV = 'test'
|
3
|
+
Bundler.require(APP_ENV)
|
4
|
+
|
5
|
+
require 'bit_wallet'
|
6
|
+
require 'ostruct'
|
7
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
8
|
+
require 'active_support/core_ext/hash/slice'
|
9
|
+
require 'pry'
|
10
|
+
require 'factory_girl'
|
11
|
+
require_relative 'factories'
|
12
|
+
|
13
|
+
Config = {}
|
14
|
+
yaml_config_file = File.open(File.join(File.dirname(__FILE__), 'config.yml'))
|
15
|
+
yaml_config = YAML.load(yaml_config_file).with_indifferent_access
|
16
|
+
Config[:username] = yaml_config[:rpcuser]
|
17
|
+
Config[:port] = yaml_config[:rpcport]
|
18
|
+
Config[:password] = yaml_config[:rpcpassword]
|
19
|
+
TESTNET_DIR = File.join(File.dirname(__FILE__), 'testnet')
|
20
|
+
|
21
|
+
RSpec.configure do |config|
|
22
|
+
config.include FactoryGirl::Syntax::Methods
|
23
|
+
config.before(:suite) do
|
24
|
+
# Ensure that the testnet is running.
|
25
|
+
bitcoin_processes = `ps -ef | grep bitcoin | grep -v grep`.split("\n")
|
26
|
+
unless bitcoin_processes.size == 2
|
27
|
+
fail "Please make sure the testnet has started. Run `cd #{TESTNET_DIR} && make start`"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
config.before(:each) do
|
32
|
+
system("cd #{TESTNET_DIR} && make clean > /dev/null")
|
33
|
+
|
34
|
+
# Do not wait for confirmations in tests -- too long!
|
35
|
+
BitWallet.config.min_conf = 0
|
36
|
+
end
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bit_wallet
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Ramon Tayag
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bitcoin-client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.0.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - '='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.0.1
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activesupport
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - '='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 3.2.11
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - '='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.2.11
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - '='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.12.0
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.12.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: pry
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: factory_girl
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - '='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 4.2.0
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - '='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 4.2.0
|
94
|
+
description: Ruby-esque handling of Bitcoin wallet
|
95
|
+
email:
|
96
|
+
- ramon.tayag@gmail.com
|
97
|
+
executables: []
|
98
|
+
extensions: []
|
99
|
+
extra_rdoc_files: []
|
100
|
+
files:
|
101
|
+
- .gitignore
|
102
|
+
- .gitmodules
|
103
|
+
- Gemfile
|
104
|
+
- LICENSE.txt
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- bit_wallet.gemspec
|
108
|
+
- lib/bit_wallet.rb
|
109
|
+
- lib/bit_wallet/account.rb
|
110
|
+
- lib/bit_wallet/accounts.rb
|
111
|
+
- lib/bit_wallet/address.rb
|
112
|
+
- lib/bit_wallet/addresses.rb
|
113
|
+
- lib/bit_wallet/version.rb
|
114
|
+
- lib/bit_wallet/wallet.rb
|
115
|
+
- rvmrc.sample
|
116
|
+
- spec/bit_wallet/account_spec.rb
|
117
|
+
- spec/bit_wallet/accounts_spec.rb
|
118
|
+
- spec/bit_wallet/address_spec.rb
|
119
|
+
- spec/bit_wallet/addresses_spec.rb
|
120
|
+
- spec/bit_wallet/wallet_spec.rb
|
121
|
+
- spec/bit_wallet_spec.rb
|
122
|
+
- spec/config.yml
|
123
|
+
- spec/factories.rb
|
124
|
+
- spec/spec_helper.rb
|
125
|
+
homepage: ''
|
126
|
+
licenses: []
|
127
|
+
post_install_message:
|
128
|
+
rdoc_options: []
|
129
|
+
require_paths:
|
130
|
+
- lib
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
133
|
+
requirements:
|
134
|
+
- - ! '>='
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>='
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: '0'
|
143
|
+
requirements: []
|
144
|
+
rubyforge_project:
|
145
|
+
rubygems_version: 1.8.24
|
146
|
+
signing_key:
|
147
|
+
specification_version: 3
|
148
|
+
summary: Ruby-esque handling of Bitcoin wallet.
|
149
|
+
test_files:
|
150
|
+
- spec/bit_wallet/account_spec.rb
|
151
|
+
- spec/bit_wallet/accounts_spec.rb
|
152
|
+
- spec/bit_wallet/address_spec.rb
|
153
|
+
- spec/bit_wallet/addresses_spec.rb
|
154
|
+
- spec/bit_wallet/wallet_spec.rb
|
155
|
+
- spec/bit_wallet_spec.rb
|
156
|
+
- spec/config.yml
|
157
|
+
- spec/factories.rb
|
158
|
+
- spec/spec_helper.rb
|
159
|
+
has_rdoc:
|