openassets-ruby 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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