openassets-ruby 0.2.1 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d8052b1dcdf76bb4c36271aa86d543135b110b6
4
- data.tar.gz: 0300e7f511a0365192bcc3138dea33510d0dcdf1
3
+ metadata.gz: 162e453da0e910ff8ed1b9a6b18236b8ceb06c34
4
+ data.tar.gz: 2c6da11a79ce5a7bacf9818f6698bbe76423588d
5
5
  SHA512:
6
- metadata.gz: 1eb24f346b31042c16065aaed4224bc548cc3b5da06b73e7b4bda240783a772fbfd13ae8383cc096d2324e5c927f2b365813286a6225d7d1e7a29aca1dfa6bfc
7
- data.tar.gz: cc4c9597c8b4d0b70108334ada063ac3142a91e9ea29d3ccb7f723fb4273f07844d667f1d54534e9a8218af2222bb0bfef87d5a155624fd3716be33693382e19
6
+ metadata.gz: 09400c1d32f9349b61f5b682c7af2f39c82af361fe8aa549be3600f7e6a46bf29da7bd6117cf458560c8e9a6fcdc529403314e8eb4c40f1ce1642580ed506239
7
+ data.tar.gz: e09e86b7d3ab64d94b09d0b3d956ad65d364ba1344a870824318b659b143b26c270e39143d7f195780e277468495baac0742f0821e5f3f2c70022871acdd7772
data/README.md CHANGED
@@ -11,6 +11,7 @@ gem install openassets-ruby
11
11
 
12
12
  Initialize the connection information to the Bitcoin Core server.
13
13
 
14
+ * **use mainnet**
14
15
  ```ruby
15
16
  require 'openassets'
16
17
 
@@ -20,6 +21,17 @@ api = OpenAssets::Api.new({:network => 'mainnet',
20
21
  :rpc => {:user => 'xxx', :password => 'xxx', :schema => 'http', :port => 8332, :host => 'localhost'}})
21
22
  ```
22
23
 
24
+ * **use testnet**
25
+ change :network and :port(depends on your server setting).
26
+ ```ruby
27
+ require 'openassets'
28
+
29
+ api = OpenAssets::Api.new({:network => 'testnet',
30
+ :provider => 'bitcoind',
31
+ :dust_limit => 600,
32
+ :rpc => {:user => 'xxx', :password => 'xxx', :schema => 'http', :port => 18332, :host => 'localhost'}})
33
+ ```
34
+
23
35
  ## API
24
36
 
25
37
  Currently openassets-ruby support the following API.
data/lib/openassets.rb CHANGED
@@ -5,7 +5,9 @@ module OpenAssets
5
5
  autoload :Transaction, 'openassets/transaction'
6
6
  autoload :VERSION, 'openassets/version'
7
7
  autoload :Util, 'openassets/util'
8
+ autoload :MethodFilter, 'openassets/medhod_filter'
8
9
  autoload :Api, 'openassets/api'
9
10
  autoload :Provider, 'openassets/provider'
10
11
  autoload :Error, 'openassets/error'
12
+
11
13
  end
@@ -4,7 +4,10 @@ module OpenAssets
4
4
 
5
5
  class Api
6
6
 
7
- include OpenAssets::Util
7
+ include Util
8
+ include MethodFilter
9
+
10
+ before_filter :change_network, {:include => [:list_unspent, :get_balance, :issue_asset, :send_asset]}
8
11
 
9
12
  attr_reader :config
10
13
  attr_reader :provider
@@ -283,6 +286,14 @@ module OpenAssets
283
286
  end
284
287
  end
285
288
 
289
+ def change_network
290
+ if is_testnet?
291
+ Bitcoin.network = :testnet
292
+ else
293
+ Bitcoin.network = :bitcoin
294
+ end
295
+ end
296
+
286
297
  end
287
298
 
288
299
  end
@@ -0,0 +1,55 @@
1
+ module OpenAssets
2
+ module MethodFilter
3
+
4
+ module Filters
5
+
6
+ def before_filter(method, options = {})
7
+ @before_filters ||= {}
8
+ @before_filters[method] = options
9
+ end
10
+
11
+ def filtered_method?(method, options)
12
+ if options.has_key? :include
13
+ return true if options[:include].include? method.intern
14
+ false
15
+ elsif options.has_key? :exclude
16
+ return false if options[:exclude].include? method.intern
17
+ true
18
+ else
19
+ true
20
+ end
21
+ end
22
+
23
+ private
24
+ def method_added(name)
25
+ @before_filters ||= {}
26
+ @modified_methods ||= []
27
+ return if @modified_methods.include?(name)
28
+ return if @before_filters.include?(name)
29
+ return if /with_filters$/ =~ name.to_s
30
+ return if /without_filters$/ =~ name.to_s
31
+ @modified_methods << name
32
+
33
+ name = name.to_s
34
+ alias_method( "#{name}_without_filters", name)
35
+ before_filters = @before_filters
36
+
37
+ define_method("#{name}_with_filters") do |*args|
38
+ before_filters.each do |filter_name, options|
39
+ method(filter_name).call if self.class.filtered_method?(name, options)
40
+ end
41
+ result = method("#{name}_without_filters").call(*args)
42
+ result
43
+ end
44
+
45
+ alias_method(name, "#{name}_with_filters")
46
+ @modified_methods.delete_if { |x| name == x }
47
+ end
48
+ end
49
+
50
+ def self.included(receiver)
51
+ receiver.extend(Filters)
52
+ end
53
+
54
+ end
55
+ end
@@ -8,6 +8,7 @@ module OpenAssets
8
8
 
9
9
  # version byte for Open Assets Address
10
10
  OA_VERSION_BYTE = 23
11
+ OA_VERSION_BYTE_TESTNET = 115
11
12
 
12
13
  # convert bitcoin address to open assets address
13
14
  # @param [String] btc_address The Bitcoin address.
@@ -41,7 +42,7 @@ module OpenAssets
41
42
  # P2PKH script = OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
42
43
  # (76=OP_DUP, a9=OP_HASH160, 14=Bytes to push, 88=OP_EQUALVERIFY, ac=OP_CHECKSIG)
43
44
  script = hash160(["76", "a9", "14", hash, "88", "ac"].join)
44
- script = OA_VERSION_BYTE.to_s(16) + script # add version byte to script hash
45
+ script = oa_version_byte.to_s(16) + script # add version byte to script hash
45
46
  encode_base58(script + checksum(script)) # add checksum & encode
46
47
  end
47
48
 
@@ -89,5 +90,10 @@ module OpenAssets
89
90
  raise ArgumentError, "#{a} is invalid bitcoin address. " unless valid_address?(a)
90
91
  }
91
92
  end
93
+
94
+ private
95
+ def oa_version_byte
96
+ Bitcoin.network[:address_version] == "6f" ? OA_VERSION_BYTE_TESTNET : OA_VERSION_BYTE
97
+ end
92
98
  end
93
99
  end
@@ -1,3 +1,3 @@
1
1
  module OpenAssets
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openassets-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-07 00:00:00.000000000 Z
11
+ date: 2015-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitcoin-ruby
@@ -116,6 +116,7 @@ files:
116
116
  - lib/openassets.rb
117
117
  - lib/openassets/api.rb
118
118
  - lib/openassets/error.rb
119
+ - lib/openassets/medhod_filter.rb
119
120
  - lib/openassets/protocol.rb
120
121
  - lib/openassets/protocol/asset_definition.rb
121
122
  - lib/openassets/protocol/marker_output.rb