bitcoin_testnet 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.gitmodules +9 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +69 -0
- data/Rakefile +1 -0
- data/bitcoin_testnet.gemspec +22 -0
- data/lib/bitcoin_testnet.rb +36 -0
- data/lib/bitcoin_testnet/booter.rb +40 -0
- data/lib/bitcoin_testnet/cleaner.rb +14 -0
- data/lib/bitcoin_testnet/detector.rb +21 -0
- data/lib/bitcoin_testnet/executor.rb +18 -0
- data/lib/bitcoin_testnet/janitor.rb +20 -0
- data/lib/bitcoin_testnet/version.rb +3 -0
- data/testnet/1/bitcoin.conf +11 -0
- data/testnet/1/testnet3/blk0001.dat +0 -0
- data/testnet/1/testnet3/blkindex.dat +0 -0
- data/testnet/1/testnet3/server.cert +21 -0
- data/testnet/1/testnet3/server.pem +27 -0
- data/testnet/1/testnet3/wallet.dat +0 -0
- data/testnet/2/bitcoin.conf +13 -0
- data/testnet/2/testnet3/blk0001.dat +0 -0
- data/testnet/2/testnet3/blkindex.dat +0 -0
- data/testnet/2/testnet3/server.cert +21 -0
- data/testnet/2/testnet3/server.pem +27 -0
- data/testnet/2/testnet3/wallet.dat +0 -0
- data/testnet/Makefile +29 -0
- data/testnet/README.txt +63 -0
- metadata +91 -0
data/.gitignore
ADDED
data/.gitmodules
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
[submodule "git:/github.com/freewil/bitcoin-testnet-box.git"]
|
2
|
+
path = git:/github.com/freewil/bitcoin-testnet-box.git
|
3
|
+
url = ./testnet
|
4
|
+
[submodule "git@github.com:freewil/bitcoin-testnet-box.git"]
|
5
|
+
path = git@github.com:freewil/bitcoin-testnet-box.git
|
6
|
+
url = ./testnet
|
7
|
+
[submodule "testnet"]
|
8
|
+
path = testnet
|
9
|
+
url = git://github.com/freewil/bitcoin-testnet-box.git
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Ramon Tayag
|
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,69 @@
|
|
1
|
+
# BitcoinTestnet
|
2
|
+
|
3
|
+
Makes development with Bitcoin a little easier. It has helpers that can be used to start, stop, clean the testnet.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
First, require the library in your `test_helper`/`spec_helper`:
|
8
|
+
|
9
|
+
require 'bitcoin_testnet'
|
10
|
+
|
11
|
+
Now, you have access to `BitcoinTestnet`.
|
12
|
+
|
13
|
+
Second, you have to tell BitcoinTestnet where the testnet in a box directory is. I prefer to keep it in the test folder of my project. For example, with RSpec:
|
14
|
+
|
15
|
+
git submodule add https://github.com/freewil/bitcoin-testnet-box testnet
|
16
|
+
|
17
|
+
Then, in your `test_helper`/`spec_helper`:
|
18
|
+
|
19
|
+
BitcoinTestnet.dir = "spec/testnet"
|
20
|
+
|
21
|
+
Third, tell `BitcoinTestnet` when to do its work:
|
22
|
+
|
23
|
+
- Before the test suite starts, call `BitcoinTestnet.start`. This will start the Testnet and clean it. If you have already started the Testnet yourself manually, it will just clean it.
|
24
|
+
- Before each spec, call `BitcoinTestnet.clean`. This will reset the Testnet, so it looks like it did the first time you started the Testnet.
|
25
|
+
- After the test suite is finished, call `BitcoinTestnet.stop`. This turns off the Testnet and cleans if. If you started the Testnet manually, then it just cleans it.
|
26
|
+
|
27
|
+
Sample with RSpec:
|
28
|
+
|
29
|
+
RSpec.configure do |config|
|
30
|
+
config.before(:suite) { BitcoinTestnet.start }
|
31
|
+
config.before(:each) { BitcoinTestnet.clean }
|
32
|
+
config.after(:suite) { BitcoinTestnet.stop }
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
**Tip**: If you'll just use the above, you can configure it automatically by calling `BitcoinTestnet.configure_rspec!`.
|
37
|
+
|
38
|
+
## TL;DR
|
39
|
+
|
40
|
+
require 'bitcoin_testnet'
|
41
|
+
|
42
|
+
BitcoinTestnet.dir = "path/to/testnet"
|
43
|
+
BitcoinTestnet.configure_rspec!
|
44
|
+
|
45
|
+
## Installation
|
46
|
+
|
47
|
+
Add this line to your application's Gemfile:
|
48
|
+
|
49
|
+
gem 'bitcoin_testnet'
|
50
|
+
|
51
|
+
And then execute:
|
52
|
+
|
53
|
+
$ bundle
|
54
|
+
|
55
|
+
Or install it yourself as:
|
56
|
+
|
57
|
+
$ gem install bitcoin_testnet
|
58
|
+
|
59
|
+
## Tip
|
60
|
+
|
61
|
+
To make integration tests faster, use something like [VCR](https://github.com/vcr/vcr) to record the communication between your project and the Testnet.
|
62
|
+
|
63
|
+
## Contributing
|
64
|
+
|
65
|
+
1. Fork it
|
66
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
67
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
68
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
69
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'bitcoin_testnet/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "bitcoin_testnet"
|
8
|
+
gem.version = BitcoinTestnet::VERSION
|
9
|
+
gem.authors = ["Ramon Tayag"]
|
10
|
+
gem.email = ["ramon.tayag@gmail.com"]
|
11
|
+
gem.description = %q{A gem of helpers for making integration tests with the Bitcoin testnet a little easier.}
|
12
|
+
gem.summary = %q{A gem of helpers for making integration tests with the Bitcoin testnet a little easier.}
|
13
|
+
gem.homepage = ""
|
14
|
+
|
15
|
+
testnet_files = `cd #{File.join(File.dirname(__FILE__), 'testnet')} && git ls-files`.split($/).map {|file| File.join('testnet', file)}
|
16
|
+
gem.files = `git ls-files`.split($/) + testnet_files
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
18
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
+
gem.require_paths = ["lib"]
|
20
|
+
|
21
|
+
gem.add_dependency 'activesupport', '~> 3.0'
|
22
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "bitcoin_testnet/version"
|
2
|
+
require 'active_support/core_ext/module'
|
3
|
+
|
4
|
+
require 'bitcoin_testnet/detector'
|
5
|
+
require 'bitcoin_testnet/booter'
|
6
|
+
require 'bitcoin_testnet/cleaner'
|
7
|
+
require 'bitcoin_testnet/executor'
|
8
|
+
require 'bitcoin_testnet/janitor'
|
9
|
+
|
10
|
+
module BitcoinTestnet
|
11
|
+
mattr_accessor :started_manually
|
12
|
+
@@started_manually = false
|
13
|
+
|
14
|
+
mattr_accessor :dir
|
15
|
+
@@dir = nil
|
16
|
+
|
17
|
+
def self.start
|
18
|
+
Booter.boot
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.clean
|
22
|
+
Cleaner.clean
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.stop
|
26
|
+
Janitor.sweep
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.configure_rspec!
|
30
|
+
RSpec.configure do |c|
|
31
|
+
c.before(:suite) { BitcoinTestnet.start }
|
32
|
+
c.before(:each) { BitcoinTestnet.clean }
|
33
|
+
c.after(:suite) { BitcoinTestnet.stop }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module BitcoinTestnet
|
2
|
+
class Booter
|
3
|
+
|
4
|
+
def self.boot(*args)
|
5
|
+
self.new(*args).boot
|
6
|
+
end
|
7
|
+
|
8
|
+
def boot
|
9
|
+
if Detector.exists?
|
10
|
+
puts "***** Testnet started manually; cleaning only"
|
11
|
+
BitcoinTestnet.started_manually = true
|
12
|
+
Cleaner.clean
|
13
|
+
else
|
14
|
+
puts "***** Starting Testnet. To make boot up faster, start the Testnet manually: `cd #{BitcoinTestnet.dir} && make start`"
|
15
|
+
thread = Thread.new do
|
16
|
+
Cleaner.clean
|
17
|
+
Executor.execute "make start > /dev/null"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Wait until the bitcoind servers have started and ready to accept. I've
|
21
|
+
# found that the sweet spot was 2 seconds after the thread's status is
|
22
|
+
# false
|
23
|
+
wait_time = 0
|
24
|
+
until wait_time == 5
|
25
|
+
if thread.status == false
|
26
|
+
sleep 2
|
27
|
+
return
|
28
|
+
end
|
29
|
+
sleep 0.1
|
30
|
+
wait_time += 0.1
|
31
|
+
end
|
32
|
+
|
33
|
+
unless Detector.exists?
|
34
|
+
fail "The bitcoin processes didn't seem to start. Please ensure that the bitcoin testnet servers started at `#{BitcoinTestnet.dir}`"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module BitcoinTestnet
|
2
|
+
class Detector
|
3
|
+
|
4
|
+
def self.processes
|
5
|
+
self.new.processes
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.exists?
|
9
|
+
self.new.exists?
|
10
|
+
end
|
11
|
+
|
12
|
+
def processes
|
13
|
+
`ps -ef | grep bitcoin | grep -v grep`.split("\n")
|
14
|
+
end
|
15
|
+
|
16
|
+
def exists?
|
17
|
+
processes.size == 2
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module BitcoinTestnet
|
2
|
+
class Executor
|
3
|
+
|
4
|
+
def self.execute(*args)
|
5
|
+
self.new(*args).execute
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(*commands)
|
9
|
+
@commands = commands
|
10
|
+
end
|
11
|
+
|
12
|
+
def execute
|
13
|
+
commands = ["cd #{BitcoinTestnet.dir}"] + @commands
|
14
|
+
system commands.join(' && ')
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module BitcoinTestnet
|
2
|
+
class Janitor
|
3
|
+
|
4
|
+
def self.sweep(*args)
|
5
|
+
self.new(*args).sweep
|
6
|
+
end
|
7
|
+
|
8
|
+
def sweep
|
9
|
+
if BitcoinTestnet.started_manually
|
10
|
+
puts "\n***** Since Testnet started manually; cleaning only. If you want to stop it, run: `cd #{BitcoinTestnet.dir} && make stop`"
|
11
|
+
Cleaner.clean
|
12
|
+
else
|
13
|
+
puts "\n***** Since the BitcoinTestnet started the Testnet, stop and clean"
|
14
|
+
Executor.execute "make stop > /dev/null"
|
15
|
+
Cleaner.clean
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDdzCCAl+gAwIBAgIJALRvS2rwgZbGMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV
|
3
|
+
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
|
4
|
+
aWRnaXRzIFB0eSBMdGQxCzAJBgNVBAMMAkIxMB4XDTEyMTEyNjEwMTEwMFoXDTIy
|
5
|
+
MTEyNDEwMTEwMFowUjELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
|
6
|
+
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDELMAkGA1UEAwwCQjEw
|
7
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRqRUX3ZWsz+dHeXW1GsUv
|
8
|
+
DjtEZ50D6W7hADs37J/7AFIjS6lBz6gsyHyFTsLQMl1aXl9PieM7n0gZFu10EtMZ
|
9
|
+
4Oavm/4D9oR3RlfYBBtT5EAIIjMMsCbu1aDSDcaFO0EZtcjWLRtKRgr9vQqbb7gq
|
10
|
+
m8h4QFA0ulrs5zhh3qGU4VI16BIzawJKPBn7hCe0UMrRehkqfMH/TFQ0U0bMUnee
|
11
|
+
CdwwpBeYK0k5GNfNNglaisQDtlwY3ZLq2lputWSeSFO9M63nG1VDeqgHJHzxTSCc
|
12
|
+
blUcLRQ/XBKWfxA4KrsRHCPvaMkQbKEGwlRPB9aSWLTRU9/zE3duNclp2XNzmigX
|
13
|
+
AgMBAAGjUDBOMB0GA1UdDgQWBBQXx0y+GgFd2mLy7MPRIZ5L7NF0zTAfBgNVHSME
|
14
|
+
GDAWgBQXx0y+GgFd2mLy7MPRIZ5L7NF0zTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3
|
15
|
+
DQEBBQUAA4IBAQAquddHtI6U5y/IQomF/WL6FvOGQ7AUKoJk7kHMkZfqGXmlu9Bd
|
16
|
+
q8L3YpJrXxqTf4vF9wiwFKlAJARD37P0Lh7M6TMxkcXQNgvZE7XDwUM9fgM+gB6G
|
17
|
+
Fi2k8UeA9Nr05NPsgs7zHZjEofU9bqA48wwNRZrdlCaiH7Jd1RsdspVcYhIp8PH2
|
18
|
+
k73NjuevZRo7DsHMIdmJRKKyHxdjJF6NG8D085XSzcDdk15EZNbAkXiyXDZxVX/o
|
19
|
+
L6Z+X0MG5yA/YCIJ/FsgzlDGR4YzrIV2z9oxbAv/8yzX48n+q4txAy7WdCX+4X/a
|
20
|
+
L9hbVud8qDg8/m2cYa4ZOtdLTQURmOFIBE9b
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpQIBAAKCAQEA0akVF92VrM/nR3l1tRrFLw47RGedA+lu4QA7N+yf+wBSI0up
|
3
|
+
Qc+oLMh8hU7C0DJdWl5fT4njO59IGRbtdBLTGeDmr5v+A/aEd0ZX2AQbU+RACCIz
|
4
|
+
DLAm7tWg0g3GhTtBGbXI1i0bSkYK/b0Km2+4KpvIeEBQNLpa7Oc4Yd6hlOFSNegS
|
5
|
+
M2sCSjwZ+4QntFDK0XoZKnzB/0xUNFNGzFJ3ngncMKQXmCtJORjXzTYJWorEA7Zc
|
6
|
+
GN2S6tpabrVknkhTvTOt5xtVQ3qoByR88U0gnG5VHC0UP1wSln8QOCq7ERwj72jJ
|
7
|
+
EGyhBsJUTwfWkli00VPf8xN3bjXJadlzc5ooFwIDAQABAoIBAQCMrzCAOyfcNgWz
|
8
|
+
aEUbqUL3OE18sSojHdhREp6qABW5j5WOKY8Boh3vLvifWyJOIf2SThEWhif8Mf1n
|
9
|
+
GINth9QvYUJqQ/pHHnv0rTb0tIzB1j9BNfGbafg1+xNW3/d+Hyyn29tQHCRbynRF
|
10
|
+
nzwm4Ohrbu0uA7nOJ94raVvkEEfMZc6DMwnL8jqwGHXl41Nnky9dMJfKJ1v9lTVv
|
11
|
+
GJTwMA9VWMVA8e8vR4Ms3cwyONPz5Am4VFsc33XL2LuZvMaq3aYPT3PiQ7zsabFM
|
12
|
+
R9Iwn5pBu2ziDYuzTiGGotvSd5CS65g+I3yQYWodUc1CFO9F+vBSqsnA2WoET1UR
|
13
|
+
254n0evBAoGBAO4u4dFCFi3et0d1yKndQ6o4vnxiBMe30zhapWmElZ8LTKpLBPqG
|
14
|
+
EmLGYG6CfzNcrvR/Hd5Ro4X7z5yt3iJ4ofuYMeVtiytZa9Mec+7y45PgDgVhGc14
|
15
|
+
IZkAiYe2kct5+gRLlp+Ro9fW1uSnfKI0+LAI4E80h7GcqS3+V9xnRAUdAoGBAOFY
|
16
|
+
AIr/C9x2lZl7kqQykjum7+3Y0eqyHQVI8s/02+lakvCkJcu0T6c52gd+MTwYE/0t
|
17
|
+
tKWK5wu0I21Pn/n23hWQ4So3kw5MASc2IWed6DSpnyTCsuNMRUw+nPzbFj2JF1jp
|
18
|
+
eB/456XY5wshx41wFWwLZvct1PcmfJQl4PeRzt/DAoGBAJ2wokbFhyOVSShhfZmg
|
19
|
+
aRUAfnSg/GMxfADaWpsScXCbrYUtJ72pF/EXP27KrOZXXWl341F2IVoqTdiAcAnI
|
20
|
+
bg3BRH+N1866ZB2hEsZHPo5/jyjWkZusBipi5arZH4tkVTeUx8MbTCsxDJLTpDtL
|
21
|
+
8L2zEra9o3zeqE9QDeFY6PqtAoGAUzvdH3orWGhYw5NYS9v+FZiIwNK4XrchbwVN
|
22
|
+
4rAv1lbFNat75m0Yis0ckm3zI55FK9wJAKh4xOLpvwONNJgR2edks+JJKBu8xU4C
|
23
|
+
MrKpxWHtzXc4+in+4rWx6NfHtD0B6a5611xpu+GNHZiBi+WdlAX2J1C/e/a0R0hi
|
24
|
+
ey9ZOV8CgYEA1IL9inDBzA+UKfjA5MaufL8JpBQX1u/8y7TigHxRujURVRTuAMyR
|
25
|
+
tL+YFJ6heMzUpleJnasSnfu7zN/15aPOYZnyr0qoRn/PUTRBw7Foe+2VWu73IMYx
|
26
|
+
A8f7RvrpmPmdVco8CSJWPjGIvsWJm44DJwwDS3DPikWvvBJ7BH8Quhw=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDdzCCAl+gAwIBAgIJAMY+8OceeojLMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNV
|
3
|
+
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
|
4
|
+
aWRnaXRzIFB0eSBMdGQxCzAJBgNVBAMMAkIyMB4XDTEyMTEyNjEwMTEyMVoXDTIy
|
5
|
+
MTEyNDEwMTEyMVowUjELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx
|
6
|
+
ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDELMAkGA1UEAwwCQjIw
|
7
|
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTFDxL5aMTQjdDo9B7DTF7
|
8
|
+
uUw+6nIc1pIhE5x/00Np1GQAYmCVhELrZXxvaNW/HN+lc+vMbYNWbWlrCif58Ary
|
9
|
+
xq88Af/ZTGdkUNquVrf5X4DNN+xXMrODSrbEBxUsQ1GVWgiRbQAMlThwf4EckAHK
|
10
|
+
3Wk3vjradh0br4ubgmn97lOlD7qcTU/vkHsbZbZqQ1qW8swqawdML96mf0MvNzkb
|
11
|
+
lP9ZL4/sqeC3PmS1NQxjO5fTIM0WepJQHpZwRMyjX3NZIBpvgKH6KxFDM6/BK5N8
|
12
|
+
nJIXymk+MzP0RfaI+1XFiAzhPYxbYm4g1An+ptQNYliZAgxqoDmaZB/qkq+qdfxX
|
13
|
+
AgMBAAGjUDBOMB0GA1UdDgQWBBS7NsClzei2aH2IBmRVK1ddjSY0FDAfBgNVHSME
|
14
|
+
GDAWgBS7NsClzei2aH2IBmRVK1ddjSY0FDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3
|
15
|
+
DQEBBQUAA4IBAQA0aTKwW9dkkvsQYg/KpoMSWJxRgzAQc5WPrGpehiAK4FMKDQQA
|
16
|
+
ycqDvRy9W8KsUnVE6ocphj2Wt/tbCV7rjVa1Qt6F5hSH9IO3e2LquuicT5/BKOJ9
|
17
|
+
VyePcpgoxeCvtbh7C2NQBwTW1pWs9toxhDTKh56tKAuDRwV0DxqVgUrmAllucQUu
|
18
|
+
t/IYLSr59o0mfi0rLN6SQnm9r4JU36899wcc5Xw6pvK4/z5lsyfnofrbI8ypmnb5
|
19
|
+
08RlmquzrEOQg91X409l4z6J3cpF3S/RlGPKsHsXAYkWPhJO4dz0K0GUNdowbFVg
|
20
|
+
HXDafdym5e4G3wMZ0vzMEl0Vl9c7xvClU2eU
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpAIBAAKCAQEA0xQ8S+WjE0I3Q6PQew0xe7lMPupyHNaSIROcf9NDadRkAGJg
|
3
|
+
lYRC62V8b2jVvxzfpXPrzG2DVm1pawon+fAK8savPAH/2UxnZFDarla3+V+AzTfs
|
4
|
+
VzKzg0q2xAcVLENRlVoIkW0ADJU4cH+BHJAByt1pN7462nYdG6+Lm4Jp/e5TpQ+6
|
5
|
+
nE1P75B7G2W2akNalvLMKmsHTC/epn9DLzc5G5T/WS+P7Kngtz5ktTUMYzuX0yDN
|
6
|
+
FnqSUB6WcETMo19zWSAab4Ch+isRQzOvwSuTfJySF8ppPjMz9EX2iPtVxYgM4T2M
|
7
|
+
W2JuINQJ/qbUDWJYmQIMaqA5mmQf6pKvqnX8VwIDAQABAoIBADBq7t3WAg8z3Ctm
|
8
|
+
0za2swgXXBb+fkiBK6nsrrRfiJIpBvtTlaYWXadTczS3Dni1LdPtAES3Ri44ELtd
|
9
|
+
7AeX+VrxGlcgekilDv5i0Za2C6NnNctdLZhe5/CQ3dWfbkrl8jvZGCgLobxBKl4b
|
10
|
+
0Uj0+4RGP5Fq0GM2Pr0QCm0UgC2f597lnr6L1ckdxOKu8kKyRsImk3A3HDjzPVQb
|
11
|
+
xvWF5olQghVgmTINOIu8V3P8JNprYpq2IewvTMbpOFj+6ZlQS2pjY5whwLpUbNwW
|
12
|
+
dZvqhVfVC7oLyqbojECS7YXa097NV0u6T74MjnLkz9oV4cy2ADVfKEVcOC+PMuJ/
|
13
|
+
74SFswkCgYEA7tqgijqY2stBIOfygqBzGRgyh4BLFGIGxRKOsh33V/LkbSffx+lu
|
14
|
+
8j6ESZ2EhDEmHSVcQaPJBO8VkWcsCiTeb1oLxT4mqNTF684WETflNhpzgMYr+pZs
|
15
|
+
WnI2L20EI7+GJq9gzPXxX2Sh0cmTO8T2Gt4/ZYS1owCA7l/1QylocFsCgYEA4jsx
|
16
|
+
f5CK2X7ptHtrFJAXpstpK7zDLvEMrGXSpSx7SxxpMeT5o0ldzBLGaiur9DPIYzpZ
|
17
|
+
KjBYEIAUW1GeohnLij41wtoazBo4qa41jOvwme7qzKNz0DQpf0BPDn/V/j50o+p7
|
18
|
+
iXVo8XRLYEMCzlcsasPzLJpDqKOJVwLGqxQhZLUCgYEAox6x5tTv0PRgbS2ao/UZ
|
19
|
+
xbiNwZYvMCNmBi6PPztR0UFzGMzTej6EY3GofHHTr0e1hNAf+j/1p6Xz79Iq9F6L
|
20
|
+
fjZbtX+lfUWaSVj8HxQyOEnGOdqc7EzQgNBhCvCDlDpXTpIVJMSN7BzYmmH0aCwx
|
21
|
+
+tVvLFB+j2xnoOPtpslfpuMCgYEAhq9o+6IpF+1344xqprZWbmXBelmJ9mNqASUp
|
22
|
+
sE54JLKIaj0A5laicgFngQP4/ozpqzGsrfJUK5alB+zivW0QAYCh7xx8QbEGtPZT
|
23
|
+
SU+aUXqs7SIOrBCx9+Fob6Bp3VB/jqrl22M8FCwBSBD9Fa1Oc02vc4lv6HFcLaIo
|
24
|
+
dueoLdUCgYBhyjhT4TUrFqN58B6fZA1KLTsleAz9CNSgU4OGb1n9g/cyfsjvYD3i
|
25
|
+
3I0NCV7iUuqFvu+fZYvO724hfEpMF+owGuku8BLdPW+J4V/V57FnaxmRaeOEnsSi
|
26
|
+
YgS7jBiWsr1eko6ccecTaLeY2isoYjSZV3VfCGitav8DiuBjA4t5Jw==
|
27
|
+
-----END RSA PRIVATE KEY-----
|
Binary file
|
data/testnet/Makefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
BITCOIND=bitcoind
|
2
|
+
B1_FLAGS=
|
3
|
+
B2_FLAGS=
|
4
|
+
B1=$(BITCOIND) -datadir=1 $(B1_FLAGS)
|
5
|
+
B2=$(BITCOIND) -datadir=2 $(B2_FLAGS)
|
6
|
+
|
7
|
+
start:
|
8
|
+
$(B1) -daemon
|
9
|
+
$(B2) -daemon
|
10
|
+
|
11
|
+
generate-true:
|
12
|
+
$(B1) setgenerate true
|
13
|
+
|
14
|
+
generate-false:
|
15
|
+
$(B1) setgenerate false
|
16
|
+
|
17
|
+
getinfo:
|
18
|
+
$(B1) getinfo
|
19
|
+
$(B2) getinfo
|
20
|
+
|
21
|
+
stop:
|
22
|
+
$(B1) stop
|
23
|
+
$(B2) stop
|
24
|
+
|
25
|
+
clean:
|
26
|
+
git clean -fd 1/testnet3
|
27
|
+
git clean -fd 2/testnet3
|
28
|
+
git checkout -- 1/testnet3
|
29
|
+
git checkout -- 2/testnet3
|
data/testnet/README.txt
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
This is a private, difficulty 1 testnet in a box.
|
2
|
+
|
3
|
+
You must have bitcoind installed on your system and in the path. This has only been tested against version 0.7.2.
|
4
|
+
|
5
|
+
Use it as follows:
|
6
|
+
|
7
|
+
$ make start
|
8
|
+
|
9
|
+
This will start two nodes. You need two because otherwise the node won't
|
10
|
+
generate blocks. You now have a private testnet:
|
11
|
+
|
12
|
+
$ make getinfo
|
13
|
+
bitcoind -datadir=1 getinfo
|
14
|
+
{
|
15
|
+
"version" : 60006,
|
16
|
+
"protocolversion" : 60000,
|
17
|
+
"walletversion" : 60000,
|
18
|
+
"balance" : 550.00000000,
|
19
|
+
"blocks" : 130,
|
20
|
+
"connections" : 1,
|
21
|
+
"proxy" : "",
|
22
|
+
"difficulty" : 0.12500000,
|
23
|
+
"testnet" : true,
|
24
|
+
"keypoololdest" : 1335827404,
|
25
|
+
"keypoolsize" : 101,
|
26
|
+
"paytxfee" : 0.00000000,
|
27
|
+
"errors" : ""
|
28
|
+
}
|
29
|
+
bitcoind -datadir=2 getinfo
|
30
|
+
{
|
31
|
+
"version" : 60006,
|
32
|
+
"protocolversion" : 60000,
|
33
|
+
"walletversion" : 60000,
|
34
|
+
"balance" : 0.00000000,
|
35
|
+
"blocks" : 130,
|
36
|
+
"connections" : 1,
|
37
|
+
"proxy" : "",
|
38
|
+
"difficulty" : 0.12500000,
|
39
|
+
"testnet" : true,
|
40
|
+
"keypoololdest" : 1335826149,
|
41
|
+
"keypoolsize" : 101,
|
42
|
+
"paytxfee" : 0.00000000,
|
43
|
+
"errors" : ""
|
44
|
+
}
|
45
|
+
|
46
|
+
To start generating blocks:
|
47
|
+
|
48
|
+
$ make generate-true
|
49
|
+
|
50
|
+
To stop generating blocks:
|
51
|
+
|
52
|
+
$ make generate-false
|
53
|
+
|
54
|
+
To stop the two nodes:
|
55
|
+
|
56
|
+
$ make stop
|
57
|
+
|
58
|
+
To clean up any files created while running the testnet
|
59
|
+
(and restore to the original state of 130 blocks)
|
60
|
+
|
61
|
+
$ make clean
|
62
|
+
|
63
|
+
Like all testnet nodes, it is listening on port 18333.
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bitcoin_testnet
|
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-03-03 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.0'
|
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: '3.0'
|
30
|
+
description: A gem of helpers for making integration tests with the Bitcoin testnet
|
31
|
+
a little easier.
|
32
|
+
email:
|
33
|
+
- ramon.tayag@gmail.com
|
34
|
+
executables: []
|
35
|
+
extensions: []
|
36
|
+
extra_rdoc_files: []
|
37
|
+
files:
|
38
|
+
- .gitignore
|
39
|
+
- .gitmodules
|
40
|
+
- Gemfile
|
41
|
+
- LICENSE.txt
|
42
|
+
- README.md
|
43
|
+
- Rakefile
|
44
|
+
- bitcoin_testnet.gemspec
|
45
|
+
- lib/bitcoin_testnet.rb
|
46
|
+
- lib/bitcoin_testnet/booter.rb
|
47
|
+
- lib/bitcoin_testnet/cleaner.rb
|
48
|
+
- lib/bitcoin_testnet/detector.rb
|
49
|
+
- lib/bitcoin_testnet/executor.rb
|
50
|
+
- lib/bitcoin_testnet/janitor.rb
|
51
|
+
- lib/bitcoin_testnet/version.rb
|
52
|
+
- testnet/1/bitcoin.conf
|
53
|
+
- testnet/1/testnet3/blk0001.dat
|
54
|
+
- testnet/1/testnet3/blkindex.dat
|
55
|
+
- testnet/1/testnet3/server.cert
|
56
|
+
- testnet/1/testnet3/server.pem
|
57
|
+
- testnet/1/testnet3/wallet.dat
|
58
|
+
- testnet/2/bitcoin.conf
|
59
|
+
- testnet/2/testnet3/blk0001.dat
|
60
|
+
- testnet/2/testnet3/blkindex.dat
|
61
|
+
- testnet/2/testnet3/server.cert
|
62
|
+
- testnet/2/testnet3/server.pem
|
63
|
+
- testnet/2/testnet3/wallet.dat
|
64
|
+
- testnet/Makefile
|
65
|
+
- testnet/README.txt
|
66
|
+
homepage: ''
|
67
|
+
licenses: []
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
requirements: []
|
85
|
+
rubyforge_project:
|
86
|
+
rubygems_version: 1.8.25
|
87
|
+
signing_key:
|
88
|
+
specification_version: 3
|
89
|
+
summary: A gem of helpers for making integration tests with the Bitcoin testnet a
|
90
|
+
little easier.
|
91
|
+
test_files: []
|