bitcoin2graphdb 0.1.5 → 0.1.6
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.
- checksums.yaml +4 -4
- data/Rakefile +34 -2
- data/bitcoin2graphdb.gemspec +1 -1
- data/lib/bitcoin2graphdb/migration.rb +4 -4
- data/lib/bitcoin2graphdb/version.rb +1 -1
- data/lib/graphdb/model/address.rb +4 -2
- data/lib/graphdb/model/block.rb +3 -2
- data/lib/graphdb/model/transaction.rb +3 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3abd39596fb30ef8f52ff0387fbcc0adcd18efc1
|
4
|
+
data.tar.gz: 73c24c9bf6fbfd0821fa1916709cafba35487118
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5bb775614cc38d5984bd180bb752fc4de6f7eb3605bccff9d95674792e2b3d02999be1ff3a80357a00f2476ce05951e921e8ef5865b9a37db36b17cb91c761a
|
7
|
+
data.tar.gz: 771e9ee594c438532fd41ff59b3e43ad6534c8ec16316d96c919a1ae0a14e8ce749393bc96212edf4ef1715a4cffb76eb73743292b2a4f06626586df1fd481a1
|
data/Rakefile
CHANGED
@@ -11,8 +11,40 @@ task :default => :spec
|
|
11
11
|
namespace :b2g do
|
12
12
|
desc 'Import specified block to neo4j database.'
|
13
13
|
task :import_block, [:block_height,:config_path] do |task, args|
|
14
|
-
config = YAML.load(File.read(args.config_path)).deep_symbolize_keys
|
15
14
|
puts "import #{args.block_height} block."
|
16
|
-
Bitcoin2Graphdb::Migration.new(
|
15
|
+
Bitcoin2Graphdb::Migration.new(load_config(args.config_path)).run_with_height(args.block_height.to_i)
|
16
|
+
end
|
17
|
+
|
18
|
+
desc 'Remove specified block from neo4j database.'
|
19
|
+
task :remove_block, [:block_height,:config_path] do |task, args|
|
20
|
+
load_neo4j_session(args.config_path)
|
21
|
+
block = Graphdb::Model::Block.with_height(args.block_height.to_i).first
|
22
|
+
if block.nil?
|
23
|
+
puts "block height #{args.block_height} does not exist."
|
24
|
+
else
|
25
|
+
block.destroy
|
26
|
+
puts "block height #{args.block_height} is deleted."
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
desc 'Remove specified transaction from neo4j database.'
|
31
|
+
task :remove_tx, [:txid,:config_path] do |task, args|
|
32
|
+
load_neo4j_session(args.config_path)
|
33
|
+
tx = Graphdb::Model::Transaction.with_txid(args.txid).first
|
34
|
+
if tx.nil?
|
35
|
+
puts "txid #{args.txid} does not exist."
|
36
|
+
else
|
37
|
+
tx.destroy
|
38
|
+
puts "tixd #{args.txid} is deleted."
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def load_neo4j_session(config_path)
|
43
|
+
config = load_config(config_path)
|
44
|
+
Neo4j::Session.open(:server_db, config[:neo4j][:server], {basic_auth: config[:neo4j][:basic_auth]})
|
45
|
+
end
|
46
|
+
|
47
|
+
def load_config(config_path)
|
48
|
+
YAML.load(File.read(config_path)).deep_symbolize_keys[:bitcoin2graphdb]
|
17
49
|
end
|
18
50
|
end
|
data/bitcoin2graphdb.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_runtime_dependency "openassets-ruby", ">= 0.
|
22
|
+
spec.add_runtime_dependency "openassets-ruby", ">= 0.4.1"
|
23
23
|
spec.add_runtime_dependency "daemon-spawn"
|
24
24
|
spec.add_runtime_dependency 'neo4j', '~> 5.0.0'
|
25
25
|
spec.add_runtime_dependency "activesupport", ">= 4.0.2"
|
@@ -19,7 +19,7 @@ module Bitcoin2Graphdb
|
|
19
19
|
|
20
20
|
def run_with_height(block_height)
|
21
21
|
puts "start migration for block height = #{block_height}. #{Time.now}"
|
22
|
-
|
22
|
+
Neo4j::Transaction.run do |tx|
|
23
23
|
begin
|
24
24
|
Graphdb::Model::Block.create_from_block_height(block_height)
|
25
25
|
@block_height = block_height
|
@@ -28,18 +28,18 @@ module Bitcoin2Graphdb
|
|
28
28
|
puts "Block height out of range. sleep 10 min."
|
29
29
|
sleep 600
|
30
30
|
else
|
31
|
-
|
31
|
+
tx.failure
|
32
32
|
raise e
|
33
33
|
end
|
34
34
|
end
|
35
|
-
|
35
|
+
end
|
36
36
|
puts "end migration for block height #{block_height}. #{Time.now}"
|
37
37
|
end
|
38
38
|
|
39
39
|
private
|
40
40
|
def current_block_height
|
41
41
|
return @block_height if @block_height
|
42
|
-
block = Graphdb::Model::Block.latest
|
42
|
+
block = Graphdb::Model::Block.latest.first
|
43
43
|
@block_height = block.nil? ? -1 : block.height
|
44
44
|
end
|
45
45
|
|
@@ -3,12 +3,14 @@ module Graphdb
|
|
3
3
|
class Address < ActiveNodeBase
|
4
4
|
property :address, index: :exact, constraint: :unique
|
5
5
|
|
6
|
+
has_many :in, :outputs, origin: :addresses, model_class: TxOut
|
7
|
+
|
6
8
|
validates :address, presence: true
|
7
9
|
|
8
|
-
scope :with_address, -> (address){where(address: address)
|
10
|
+
scope :with_address, -> (address){where(address: address)}
|
9
11
|
|
10
12
|
def self.find_or_create(address)
|
11
|
-
a = with_address(address)
|
13
|
+
a = with_address(address).first
|
12
14
|
unless a
|
13
15
|
a = new
|
14
16
|
a.address = address
|
data/lib/graphdb/model/block.rb
CHANGED
@@ -18,7 +18,7 @@ module Graphdb
|
|
18
18
|
property :created_at
|
19
19
|
property :updated_at
|
20
20
|
|
21
|
-
has_many :in, :transactions, origin: :block, model_class: Transaction
|
21
|
+
has_many :in, :transactions, origin: :block, model_class: Transaction, dependent: :destroy
|
22
22
|
has_one :out, :previous_block, type: :previous_block, model_class: Block
|
23
23
|
|
24
24
|
validates :block_hash, :presence => true
|
@@ -31,8 +31,9 @@ module Graphdb
|
|
31
31
|
|
32
32
|
after_create :chain_previous_block
|
33
33
|
|
34
|
-
scope :latest, -> {order(height: 'DESC')
|
34
|
+
scope :latest, -> {order(height: 'DESC')}
|
35
35
|
scope :with_block_hash, -> (block_hash){where(block_hash: block_hash)}
|
36
|
+
scope :with_height, -> (height){where(height: height)}
|
36
37
|
|
37
38
|
def self.create_from_block_height(block_height)
|
38
39
|
block = new
|
@@ -12,8 +12,8 @@ module Graphdb
|
|
12
12
|
property :confirmations, type: Integer
|
13
13
|
|
14
14
|
has_one :out, :block, type: :block
|
15
|
-
has_many :in, :inputs, origin: :transaction, model_class: TxIn
|
16
|
-
has_many :in, :outputs, origin: :transaction, model_class: TxOut
|
15
|
+
has_many :in, :inputs, origin: :transaction, model_class: TxIn, dependent: :destroy
|
16
|
+
has_many :in, :outputs, origin: :transaction, model_class: TxOut, dependent: :destroy
|
17
17
|
|
18
18
|
validates :hex, :presence => true
|
19
19
|
validates :txid, :presence => true
|
@@ -23,6 +23,7 @@ module Graphdb
|
|
23
23
|
scope :with_txid, ->(txid){where(txid: txid)}
|
24
24
|
|
25
25
|
def self.create_from_txid(txid)
|
26
|
+
puts "create tx #{txid}"
|
26
27
|
tx = new
|
27
28
|
hash = load_tx(txid)
|
28
29
|
tx.hex = hash['hex']
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitcoin2graphdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- azuchi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: openassets-ruby
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.4.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.4.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: daemon-spawn
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|