openassets-ruby 0.3.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: df555d501074ff3123dd20893a71c026c753e2a1
4
- data.tar.gz: a5f587c0e401e37786ea6a64e6b3174de48c15a3
3
+ metadata.gz: 8d4b61f5231ce9ddde842d4269de8a9b683c7d0e
4
+ data.tar.gz: a8231c78393699625f5a7c03be616d0586c18b0f
5
5
  SHA512:
6
- metadata.gz: 65ddfb8975cff61316d66156f47504e9c3347328003ca9cf444a6c195327eb3177b1cd8c83ac1229640028ae17d7da8b2881d31ee04355e4fe11a1d3fc14fdb8
7
- data.tar.gz: 180b5d0a683c19dc0546e5f492dbc6acbde091f0e9aa3a872411634b90805c96447d831ef724fca64095d815b34da32f239543de58dcbecad1ec0fb8dd745924
6
+ metadata.gz: 6e54c5aa9436b2528065b9a77da06cae8a123dd8b38478561ca4f4df9d89dabce2a41bd0020e6326ccd290c03292f8fccdb3c309a6c8b657aa85e48ad21c7c88
7
+ data.tar.gz: a49134f3c11dd99c874f1578dd4864d1e1b700309c5c30058991a2a4fe98b2c13d5b153dca0df8f0e524345f80753cd30ff7f13bd4d2276ba3c08b00417bf599
data/README.md CHANGED
@@ -17,7 +17,7 @@ require 'openassets'
17
17
 
18
18
  api = OpenAssets::Api.new({:network => 'mainnet',
19
19
  :provider => 'bitcoind',
20
- :dust_limit => 600, :default_fees => 10000,
20
+ :dust_limit => 600, :default_fees => 10000, :min_confirmation => 1, :max_confirmation => 9999999,
21
21
  :rpc => {:user => 'xxx', :password => 'xxx', :schema => 'http', :port => 8332, :host => 'localhost'}})
22
22
  ```
23
23
 
@@ -28,7 +28,7 @@ require 'openassets'
28
28
 
29
29
  api = OpenAssets::Api.new({:network => 'testnet',
30
30
  :provider => 'bitcoind',
31
- :dust_limit => 600, :default_fees => 10000,
31
+ :dust_limit => 600, :default_fees => 10000, :min_confirmation => 1, :max_confirmation => 9999999,
32
32
  :rpc => {:user => 'xxx', :password => 'xxx', :schema => 'http', :port => 18332, :host => 'localhost'}})
33
33
  ```
34
34
 
@@ -40,6 +40,8 @@ The configuration options are as follows:
40
40
  |**provider**|The RPC server. Specify possible now only "bitcoind".|bitcoind|
41
41
  |**dust_limit**|The amount of Bitcoin, which is set to the each output of the Open Assets Protocol(issue or transfer).|600 (satoshi)|
42
42
  |**default_fees**|The transaction fee. (used by issue_asset and send_asset, send_bitcoin )|10000 (satoshi)|
43
+ |**min_confirmation**|The minimum number of confirmations the transaction containing an output that used to get UTXO.|1|
44
+ |**max_confirmation**|The maximum number of confirmations the transaction containing an output that used to get UTXO.|9999999|
43
45
  |**rpc**|The access information to the RPC server of Bitcoin Core.|N/A|
44
46
 
45
47
  ## API
@@ -68,7 +70,8 @@ Returns an array of unspent transaction outputs, argument with the asset ID and
68
70
  "account": "openassets-ruby",
69
71
  "asset_quantity": "67",
70
72
  "asset_amount": "6.7",
71
- "asset_definition_url": "http://goo.gl/fS4mEj"
73
+ "asset_definition_url": "http://goo.gl/fS4mEj",
74
+ "proof_of_authenticity": false
72
75
  },
73
76
  ...
74
77
  ```
@@ -87,6 +90,7 @@ Returns an array of unspent transaction outputs, argument with the asset ID and
87
90
  |asset_quantity|The asset quantity is an unsigned integer representing how many units of that asset are stored on the output.|
88
91
  |asset_amount| The asset amount is the value obtained by converting the asset quantity to the unit of divisibility that are defined in the Asset definition file. |
89
92
  |asset_definition_url|The url of asset definition file.|
93
+ |proof_of_authenticity|The result of [Proof of Authenticity](https://github.com/OpenAssets/open-assets-protocol/blob/master/asset-definition-protocol.mediawiki#Proof_of_Authenticity) that is checked consistent with the subject in the SSL certificate. If the result is true, issuer is verified. If the result is false, issuer is not verified.||
90
94
 
91
95
  * **get_balance**
92
96
  Returns the balance in both bitcoin and colored coin assets for all of the addresses available in your Bitcoin Core wallet.
@@ -106,13 +110,15 @@ Returns the balance in both bitcoin and colored coin assets for all of the addre
106
110
  "asset_id": "AWo3R89p5REmoSyMWB8AeUmud8456bRxZL",
107
111
  "quantity": "81",
108
112
  "amount": "20.7",
109
- "asset_definition_url": "http://goo.gl/fS4mEj"
113
+ "asset_definition_url": "http://goo.gl/fS4mEj",
114
+ "proof_of_authenticity": false
110
115
  },
111
116
  {
112
117
  "asset_id": "AJk2Gx5V67S2wNuwTK5hef3TpHunfbjcmX",
113
118
  "quantity": "67",
114
119
  "amount": "6.7",
115
- "asset_definition_url": ""
120
+ "asset_definition_url": "",
121
+ "proof_of_authenticity": false
116
122
  }
117
123
  ],
118
124
  "account": "openassets-ruby"
@@ -130,6 +136,7 @@ Returns the balance in both bitcoin and colored coin assets for all of the addre
130
136
  |asset_quantity|The asset quantity is an unsigned integer representing how many units of that asset are stored on the output.|
131
137
  |asset_amount| The asset amount is the value obtained by converting the asset quantity to the unit of divisibility that are defined in the Asset definition file. |
132
138
  |asset_definition_url|The url of asset definition file.|
139
+ |proof_of_authenticity|The result of [Proof of Authenticity](https://github.com/OpenAssets/open-assets-protocol/blob/master/asset-definition-protocol.mediawiki#Proof_of_Authenticity) that is checked consistent with the subject in the SSL certificate. If the result is true, issuer is verified. If the result is false, issuer is not verified.|
133
140
  |account|The name of an account.|
134
141
 
135
142
  * **issue_asset**
@@ -63,7 +63,8 @@ module OpenAssets
63
63
  'asset_id' => asset_id,
64
64
  'quantity' => outputs.inject(0) { |sum, o| sum + o.asset_quantity }.to_s,
65
65
  'amount' => outputs.inject(0) { |sum, o| sum + o.asset_amount }.to_s,
66
- 'asset_definition_url' => outputs[0].asset_definition_url
66
+ 'asset_definition_url' => outputs[0].asset_definition_url,
67
+ 'proof_of_authenticity' => outputs[0].proof_of_authenticity
67
68
  }
68
69
  }
69
70
  {
@@ -1,11 +1,13 @@
1
1
  require 'rest-client'
2
-
2
+ require 'httpclient'
3
3
  module OpenAssets
4
4
  module Protocol
5
5
 
6
6
  # The Definition of Open Asset
7
7
  class AssetDefinition
8
8
 
9
+ attr_accessor :asset_definition_url
10
+
9
11
  attr_accessor :asset_ids
10
12
  attr_accessor :name_short
11
13
  attr_accessor :name
@@ -51,7 +53,9 @@ module OpenAssets
51
53
  # @param[String] url The URL of Asset Definition.
52
54
  def self.parse_url(url)
53
55
  begin
54
- parse_json(RestClient.get url, :accept => :json)
56
+ definition = parse_json(RestClient.get url, :accept => :json)
57
+ definition.asset_definition_url = url
58
+ definition
55
59
  rescue => e
56
60
  puts e
57
61
  nil
@@ -75,6 +79,28 @@ module OpenAssets
75
79
  result.update(key => instance_variable_get(var))
76
80
  end
77
81
  end
82
+
83
+ # Check Proof of authenticity.
84
+ # SSL certificate subject matches issuer.
85
+ def proof_of_authenticity
86
+ @proof_of_authenticity ||= calc_proof_of_authenticity
87
+ end
88
+
89
+ private
90
+ def calc_proof_of_authenticity
91
+ result = false
92
+ unless asset_definition_url.nil?
93
+ client = HTTPClient.new
94
+ response = client.get(asset_definition_url, :follow_redirect => true)
95
+ cert = response.peer_cert
96
+ unless cert.nil?
97
+ subject = response.peer_cert.subject.to_a
98
+ o = subject.find{|x|x[0] == 'O'}
99
+ result = true if !o.nil? && o.length > 2 && o[1] == issuer
100
+ end
101
+ end
102
+ result
103
+ end
78
104
  end
79
105
 
80
106
  end
@@ -48,6 +48,10 @@ module OpenAssets
48
48
  @asset_definition.divisibility
49
49
  end
50
50
 
51
+ def proof_of_authenticity
52
+ valid_asset_definition? ? @asset_definition.proof_of_authenticity : false
53
+ end
54
+
51
55
  # convert to hash object.
52
56
  def to_hash
53
57
  address = script_to_address(@script)
@@ -60,7 +64,8 @@ module OpenAssets
60
64
  'asset_quantity' => @asset_quantity.to_s,
61
65
  'asset_amount' => asset_amount.to_s,
62
66
  'account' => @account,
63
- 'asset_definition_url' => @asset_definition_url
67
+ 'asset_definition_url' => @asset_definition_url,
68
+ 'proof_of_authenticity' => proof_of_authenticity
64
69
  }
65
70
  end
66
71
 
@@ -1,3 +1,3 @@
1
1
  module OpenAssets
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency "bitcoin-ruby", "~> 0.0.7"
22
22
  spec.add_runtime_dependency "ffi", "~>1.9.8"
23
23
  spec.add_runtime_dependency "rest-client", "~>1.8.0"
24
+ spec.add_runtime_dependency "httpclient"
24
25
  spec.add_development_dependency "bundler", "~> 1.9"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
26
27
  spec.add_development_dependency "rspec"
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.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-25 00:00:00.000000000 Z
11
+ date: 2016-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitcoin-ruby
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.8.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: httpclient
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement