filecoin 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: d03183ddc001622fb243e928ca9258cb3c8771439b9dbfdb745146e3d5197b31
4
- data.tar.gz: 3f3e4cc8ca7a6bd4eef92dcb0055849147bd8c67ba730648a72a13b51f0410e5
3
+ metadata.gz: ef27efff91c40a5b52704f6a8aa63f2ede88e1d88e495444e8660e7746483538
4
+ data.tar.gz: 2ee28c49341b368e2cbab1dc872f72fb156da4217335a6a8e680ed0797a25992
5
5
  SHA512:
6
- metadata.gz: ccd108d4b698c768f773c912cce6b14802ccd7b3d21e084b75c4ba0ff394b43329c21d7c1c48576ceec70ffee11727dd8debd9413343f1224716415fed3083c8
7
- data.tar.gz: 1b736355b8757696ab368d4815bdf263d0a3414c04cbc2c6453a686bf0f1aa1deca77756a8b9f184adee877a5872ecac26bbf52163dbc37d52811fde563b5099
6
+ metadata.gz: e603609b41f74c9cfa5fd06072ef859036f3d6fb8644283dd4b824098c05db1dc0cfec23e6b140f661629ee84ee04fc4203449e00757172cc48d8725eee4ca10
7
+ data.tar.gz: d50ba2023ebb16ebc76c03cc064eca582fb1cd40318d594d5d0e567bb535940f0a2a893dc80c3390274b1930f1b04766c324e0a5ffc583c7670147a38989a39d
@@ -30,6 +30,9 @@ Metrics/BlockLength:
30
30
  Exclude:
31
31
  - spec/**/*.rb
32
32
 
33
+ Metrics/ParameterLists:
34
+ CountKeywordArgs: false
35
+
33
36
  Naming/PredicateName:
34
37
  ForbiddenPrefixes:
35
38
  - is_
@@ -10,6 +10,28 @@ The format is based on [Keep a Changelog], and this project adheres to
10
10
  Unreleased
11
11
  ----------
12
12
 
13
+ _Coming soon_
14
+
15
+
16
+ v0.2.0 - 2020-06-12
17
+ -------------------
18
+
19
+ - Expose the methods of `Filecoin::Client::Node` in `Filecoin` using its
20
+ default constructor (loads from environment variables);
21
+ - Add support for `Filecoin.ClientGetDealInfo` through
22
+ `Filecoin::Client#client_get_deal_info`;
23
+ - Add support for token authenticated API interaction;
24
+ - Add support for `Filecoin.ClientStartDeal` through
25
+ `Filecoin::Client#client_start_deal`;
26
+ - Add types for storage deal creation;
27
+ - Add support for `Filecoin.ClientQueryAsk` through
28
+ `Filecoin::Client#client_query_ask`;
29
+ - Add support for `Filecoin.NetPeers` through `Filecoin::Client#net_peers`.
30
+
31
+
32
+ v0.1.0 - 2020-06-04
33
+ -------------------
34
+
13
35
  - Add `Filecoin::Client` with `#chain_head` matching the `Filecoin.ChainHead`
14
36
  method in the Filecoin Lotus Node API.
15
37
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- filecoin (0.1.0)
4
+ filecoin (0.2.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -10,7 +10,7 @@ Installation
10
10
  Add this line to your application's Gemfile:
11
11
 
12
12
  ```ruby
13
- gem "filecoin", "~> 0.1.0"
13
+ gem "filecoin", "~> 0.2.0"
14
14
  ```
15
15
 
16
16
  And then execute:
@@ -25,6 +25,19 @@ Or install it yourself as:
25
25
  Usage
26
26
  -----
27
27
 
28
+ ```ruby
29
+ # FILECOIN_URL="https://filecoin.example.com:1234"
30
+ # FILECOIN_TOKEN="asdfghjkl"
31
+ Filecoin.chain_head
32
+ ```
33
+
34
+ `Filecoin` exposes all the API methods for applications that prefer to load
35
+ configuration from environment variables. These methods are implemented by
36
+ `Filecoin::Client` which is abstracted away in this case.
37
+
38
+
39
+ ### Client
40
+
28
41
  Clients are initialized with the URI to the target API server. This URI can be
29
42
  provided as a `URI` object, or as a `String`. If omitted, `Filecoin::Client`
30
43
  defaults to the value of the `FILECOIN_URL` environment variable.
@@ -40,18 +53,268 @@ Filecoin::Client.new(uri: "https://filecoin.example.com:1234")
40
53
  Filecoin::Client.new
41
54
  ```
42
55
 
43
- For each available method in the [Filecoin Node API] use the respective method
44
- in `Filecoin::Client`. For instance, to call `Filecoin.ChainHead` use
45
- `Filecoin::Client#chain_head`.
56
+ Some methods in the [Filecoin Node API] require special [permissions]. To use
57
+ any such method, you'll have to provide your authentication token to the
58
+ client, either on initialization or through the `FILECOIN_TOKEN` environment
59
+ variable.
46
60
 
47
61
  ```ruby
48
- client = Filecoin::Client.new
49
- client.chain_head # => => {"jsonrpc"=>"2.0", "result"=>{...}, ...}
62
+ # with a token String
63
+ Filecoin::Client.new(token: "asdfghjkl")
64
+
65
+ # from the FILECOIN_TOKEN environment variable
66
+ Filecoin::Client.new
50
67
  ```
51
68
 
69
+ For each supported method of the [Filecoin Node API] there is a respective
70
+ method in `Filecoin::Client`. For instance, to call `Filecoin.ChainHead` use
71
+ `Filecoin::Client#chain_head`.
72
+
73
+ Some methods require their parameters to follow a hard-to-describe structure.
74
+ In such cases, use the respective type class to make things simpler.
75
+
52
76
  All methods return the server's JSON parsed response as a plain `Hash`.
53
77
 
54
78
 
79
+ ### Supported Filecoin Node API methods
80
+
81
+ - [x] `Filecoin.ChainHead`
82
+ - [x] `Filecoin.ClientGetDealInfo`
83
+ - [x] `Filecoin.ClientQueryAsk`
84
+ - [x] `Filecoin.ClientStartDeal`
85
+ - [x] `Filecoin.NetPeers`
86
+
87
+
88
+ ### Filecoin.ChainHead
89
+
90
+ Returns the current head of the chain.
91
+
92
+ ```ruby
93
+ Filecoin.chain_head
94
+ ```
95
+
96
+ ```json
97
+ {
98
+ "jsonrpc": "2.0",
99
+ "result": {
100
+ "Cids": [
101
+ {
102
+ "/": "bafy2bzaceabs2fnv5xehoibdik3bp3flze3v3mbxdprsu2yt5urpz3sd4sysk"
103
+ }
104
+ ],
105
+ "Blocks": [
106
+ {
107
+ "Miner": "t01100",
108
+ "Ticket": {
109
+ "VRFProof": "koRyPdBso5iROYfkkLLS8BbkYkziPmao/DJsVTGWRC7gHz/RPSKG/LCjvcOylI+IEzCghQAHantaG96rUAwc5m08FBhYp9/zx/eZSce42ktfIGfO6lF1ymya3Tlzn2Xd"
110
+ },
111
+ "ElectionProof": {
112
+ "VRFProof": "qMwlLzao8BJn38wJ5/kxcorBNr1IGMpOedLYHV7y7g71vK5suKHIZsC66jtxvCLdFlqWKGsgBifbJkAo38NIPCD4cTiDBz5J3PzDLVAy8f0x3JV7BoaQVmmUr57BCiG+"
113
+ },
114
+ "BeaconEntries": [
115
+ {
116
+ "Round": 125398,
117
+ "Data": "hRPhxVhoujTf7wZoZ4zk/bucunZeEpF5Oi7O1Es1gnnYNBzHlesNhZ8GHfjsULTHFvOVngrawT5Y3P5u7sx2f7ysVfuh16jo1CFJu3KSFfilBXCmjRCKG6rC6KRhQVMO"
118
+ }
119
+ ],
120
+ "WinPoStProof": [
121
+ {
122
+ "RegisteredProof": 15,
123
+ "ProofBytes": "srmO6BOqe4lEh4RbVybhkEtH3wDV4QFl/h599QG3K5DZN2yZF77gy0Apaybjr/UgqUVoPPELOkW7HcZLLgSRXwbQ6dmKPnb5rC58ucK4tcab5tKbz6xk3jjoYkHC8tbjEETOmRYlOyvYFSmkkRbdT0aixosSRiecQv94SyiSTWwZ2hNrnDW6tsbqNd8WGTqCjbhvMvHFxFATXv2xu8ndQ+YjYrpuaY/HRz3NfLq0Gj1niqXawkAw2UgKh4aod79A"
124
+ }
125
+ ],
126
+ "Parents": [
127
+ {
128
+ "/": "bafy2bzacec6osar3i62fr3u4dlw4bxns3sc4ycipjbo4u6u4tbgh6f7hwhypi"
129
+ },
130
+ {
131
+ "/": "bafy2bzaceblqc4nzzneqg5sd5ik23jnt77fhizm7mqj5ulcyxwlu6p7cftoam"
132
+ }
133
+ ],
134
+ "ParentWeight": "1584010805",
135
+ "Height": 99565,
136
+ "ParentStateRoot": {
137
+ "/": "bafy2bzacecolsvk4s2pn7eeso7eobseqxs2x6vkkcenjyd6ikbk4hanmmr6oe"
138
+ },
139
+ "ParentMessageReceipts": {
140
+ "/": "bafy2bzaced3qvpgmcwl4qyxq2rwgmeduqhtnhdunwdisvyejup7vcqxi5cor2"
141
+ },
142
+ "Messages": {
143
+ "/": "bafy2bzaceavnr75wltzlp5eqi4er7u2f5c4halukuetqk2vmbqd7ltcms5cjs"
144
+ },
145
+ "BLSAggregate": {
146
+ "Type": 2,
147
+ "Data": "sXWOH7SeDDQeMTKIBewRGdNYlRGPchtj2iJlXNwZrRV/ukmlcl2yLA24fQhNy1lDDlKNZ+juGq6TyhYGimRMLCaAjCc50jfxOGEk1+uTpxb3QzxknpopWoDHEhCpPz59"
148
+ },
149
+ "Timestamp": 1591983325,
150
+ "BlockSig": {
151
+ "Type": 2,
152
+ "Data": "krAlrTcpd3QFNETCn2sTsXuqlIHCsmwss+iUziCE/F6mVs6UxZ/f43uyHjKRBojwFZRJKsdZV3JWfg+HrWcj51x5qBAwNwReCCOpJUBwEbLcdrUDyrGIzJ203g6r6YS7"
153
+ },
154
+ "ForkSignaling": 0
155
+ }
156
+ ],
157
+ "Height": 99565
158
+ },
159
+ "id": 3
160
+ }
161
+ ```
162
+
163
+
164
+ ### Filecoin.ClientGetDealInfo
165
+
166
+ Get the information on a specific deal.
167
+
168
+ ```ruby
169
+ Filecoin.client_get_deal_info("bafyreigc4b4fqsval4pjmfncaqdezhe5y3anwavjyzpj4mar73e6n7mvj4")
170
+ ```
171
+
172
+ ```json
173
+ {
174
+ "jsonrpc": "2.0",
175
+ "result": {
176
+ "ProposalCid": {
177
+ "/": "bafyreigc4b4fqsval4pjmfncaqdezhe5y3anwavjyzpj4mar73e6n7mvj4"
178
+ },
179
+ "State": 5,
180
+ "Message": "",
181
+ "Provider": "t0239463",
182
+ "PieceCID": {
183
+ "/": "bafk4chzaw4zjxdl3d6vd7shbr23ps4nygl77ywogasvzskvn7jszur3tpetq"
184
+ },
185
+ "Size": 2080768,
186
+ "PricePerEpoch": "500000000",
187
+ "Duration": 1492,
188
+ "DealID": 2725
189
+ },
190
+ "id": 3
191
+ }
192
+ ```
193
+
194
+
195
+ #### Understanding Deal State
196
+
197
+ The state of a deal has a numerical value which links it to a constant in the
198
+ Filecoin Lotus client. At the time of writing, these states are
199
+ ([source][states]):
200
+
201
+ 1. Unknown;
202
+ 2. Proposal not found;
203
+ 3. Proposal rejected;
204
+ 4. Proposal accepted;
205
+ 5. Deal staged;
206
+ 6. Deal sealing;
207
+ 7. Deal is active;
208
+ 8. Deal is failing;
209
+ 9. Deal not found;
210
+ 10. Deal funds ensured — deposited funds as necessary to create a deal,
211
+ ready to move forward;
212
+ 11. Waiting for data request — client is waiting for a request for the
213
+ deal data;
214
+ 12. Deal validating — verifying that deal parameters are good;
215
+ 13. Waiting for deal acceptance — deciding whether or not to accept the
216
+ deal;
217
+ 14. Deal transferring — transferring data to the miner;
218
+ 15. Waiting for data — for manual transfers;
219
+ 16. Verifying transferred data — generate CAR / piece data;
220
+ 17. Ensuring provider funds — checking collateral is sufficient;
221
+ 18. Ensuring client funds — checking client funds are sufficient;
222
+ 19. Waiting for funds to appear in provider balance;
223
+ 20. Waiting for funds to appear in client balance;
224
+ 21. Publishing deal to chain;
225
+ 22. Waiting for deal to appear on chain;
226
+ 23. Deal failed with an unexpected error;
227
+ 24. Deal completed — the deal has reached the end of its duration.
228
+
229
+
230
+ ### Filecoin.ClientQueryAsk
231
+
232
+ ```ruby
233
+ Filecoin.client_query_ask(
234
+ # ID of the peer to query
235
+ "0003KooWBhDJkzmK1QKQqp7hRDAA9cLBNsneaYn2TBGdUSKXzoc8",
236
+ # ID of the miner to query about
237
+ "t1234567",
238
+ )
239
+ ```
240
+
241
+
242
+ ### Filecoin.ClientStartDeal
243
+
244
+ This method requires the aid of some type classes due to the complex structure
245
+ of the payload. Make use of `Filecoin::Types::DataRef` to represent the data to
246
+ transfer for this deal, and then pass it on to
247
+ `Filecoin::Types::StartDealParams` to describe the deal to propose.
248
+
249
+ If successful, the response contains the CID of the proposed deal. Use
250
+ `Filecoin.ClientGetDealInfo` to query the network about its evolution.
251
+
252
+ ```ruby
253
+ data_ref = Filecoin::Types::DataRef.new(
254
+ # (Optional) Define how the data will be transferred. Must be "graphsync" or
255
+ # "manual". Defaults to "graphsync".
256
+ transfer_type: "manual",
257
+ # CID of the file to transfer
258
+ root: "bafkreicomazccnbsql4nvtp6jfrk5qwys63ktakp4hkdt3ncl2hvhemwde",
259
+ # (Optional) Piece CID. Required for "manual" transfer deals.
260
+ piece_cid: "bafk4chzak7ieup5a3aup2vzavfzlnmbxxx4bpi3kpykhbkn4cdemdmk3aeaa",
261
+ # (Optional) Piece size. Required for "manual" transfer deals.
262
+ piece_size: 532_676_608,ClientGetDealInfo
263
+ )
264
+
265
+ start_deal_params = Filecoin::Types::StartDealParams.new(
266
+ # Description of the data the deal refers to
267
+ data: data_ref,
268
+ # Address of the wallet in the node to use to pay for the deal
269
+ wallet: "t13nqjc55m3h327646cwcu4lchdx4lkw7ccxnx4ca",
270
+ # Address ot the miner to whom this deal is to be proposed
271
+ miner: "t1234567",
272
+ # Price per block in attoFIL to propose for this deal
273
+ epoch_price: 500_000_000,
274
+ # (Optional) Duration of the deal in blocks
275
+ min_blocks_duration: 1572,
276
+ # (Optional) Unix timestamp stating the moment the deal starts
277
+ deal_start_epoch: 1591979600,
278
+ )
279
+
280
+ Filecoin.client_start_deal(start_deal_params)
281
+ ```
282
+
283
+ ```json
284
+ {
285
+ "jsonrpc": "2.0",
286
+ "result": {
287
+ "/": "bafyreihdss5rlzmft3lzez2n5jyxqo5znhewdvpbcnhbnairkc2yl6zk6e"
288
+ },
289
+ "id": 3
290
+ }
291
+ ```
292
+
293
+
294
+ ### Filecoin.NetPeers
295
+
296
+ Get the peers the node is connected to.
297
+
298
+ ```ruby
299
+ Filecoin.net_peers
300
+ ```
301
+
302
+ ```json
303
+ {
304
+ "jsonrpc": "2.0",
305
+ "result": [
306
+ {
307
+ "Addrs": [
308
+ "/ip4/54.212.151.167/tcp/40817"
309
+ ],
310
+ "ID": "12D3KooWGBxkba5Havy4wiGvLVmqPBCPjs7xPQPtqNr1HRq6RaVM"
311
+ }
312
+ ],
313
+ "id": 3
314
+ }
315
+ ```
316
+
317
+
55
318
  Development
56
319
  -----------
57
320
 
@@ -71,6 +334,15 @@ Contributing
71
334
  Bug reports and pull requests are welcome on GitHub at
72
335
  https://github.com/subvisual/filecoin-ruby.
73
336
 
337
+ This project was created to provide a Ruby interface for projects we at
338
+ Subvisual are actively working on. We are not aiming to provide an exaustive
339
+ interface for the time being, and will focus our development efforts as needed.
340
+
341
+ We welcome anyone interested in helping the development of this project to
342
+ contribute directly with a pull request. Otherwise, please feel free to request
343
+ any features you feel are missing in an issue. We will do our best to comply,
344
+ within reason and the limits of our own availability.
345
+
74
346
 
75
347
  License
76
348
  -----
@@ -90,6 +362,9 @@ filecoin-ruby was created and is maintained with :heart: by
90
362
  [![Subvisual][subvisual-logo]][subvisual]
91
363
 
92
364
 
365
+ [Filecoin Node API]: https://github.com/filecoin-project/lotus/blob/master/api/api_full.go
366
+ [permissions]: https://lotu.sh/en+api#what-authorization-level-should-i-use-21853
367
+ [states]: https://github.com/filecoin-project/go-fil-markets/blob/095b388f830be66ceedc0965e5c7afcb1b96ad60/storagemarket/types.go#L30-L60
93
368
  [license]: ./LICENSE.txt
94
369
  [rubygems.org]: https://rubygems.org
95
370
  [subvisual]: http://subvisual.com
@@ -1,4 +1,16 @@
1
+ require "filecoin/client"
2
+ require "filecoin/types"
1
3
  require "filecoin/version"
4
+ require "forwardable"
2
5
 
3
6
  module Filecoin
7
+ class << self
8
+ extend Forwardable
9
+
10
+ def_delegators :client, *Client::Node.public_instance_methods
11
+
12
+ def client
13
+ Client.new
14
+ end
15
+ end
4
16
  end
@@ -5,10 +5,11 @@ module Filecoin
5
5
  class Client
6
6
  include Filecoin::Client::Node
7
7
 
8
- attr_reader :uri
8
+ attr_reader :uri, :token
9
9
 
10
- def initialize(uri: nil)
10
+ def initialize(uri: nil, token: nil)
11
11
  @uri = initialize_uri(uri)
12
+ @token = initialize_token(token)
12
13
  end
13
14
 
14
15
  private
@@ -21,6 +22,10 @@ module Filecoin
21
22
  URI(uri)
22
23
  end
23
24
 
25
+ def initialize_token(token)
26
+ token || ENV["FILECOIN_TOKEN"]
27
+ end
28
+
24
29
  def json_rpc_call(method, *params)
25
30
  @json_rpc_call_id ||= 0
26
31
  @json_rpc_call_id += 1
@@ -32,7 +37,7 @@ module Filecoin
32
37
  id: @json_rpc_call_id,
33
38
  }
34
39
 
35
- Http.post(uri, body)
40
+ Http.post(uri, token, body)
36
41
  end
37
42
  end
38
43
  end
@@ -1,9 +1,35 @@
1
+ require "filecoin/types/cid"
2
+
1
3
  module Filecoin
2
4
  class Client
3
5
  module Node
4
6
  def chain_head
5
7
  json_rpc_call "Filecoin.ChainHead"
6
8
  end
9
+
10
+ def client_get_deal_info(deal_id)
11
+ params = Types::Cid.new(deal_id).as_json
12
+
13
+ json_rpc_call "Filecoin.ClientGetDealInfo", params
14
+ end
15
+
16
+ def client_query_ask(peer_id, miner_id)
17
+ json_rpc_call "Filecoin.ClientQueryAsk", peer_id, miner_id
18
+ end
19
+
20
+ def client_start_deal(start_deal_params)
21
+ params = if start_deal_params.is_a?(Hash)
22
+ start_deal_params
23
+ else
24
+ start_deal_params.as_json
25
+ end
26
+
27
+ json_rpc_call("Filecoin.ClientStartDeal", params)
28
+ end
29
+
30
+ def net_peers
31
+ json_rpc_call "Filecoin.NetPeers"
32
+ end
7
33
  end
8
34
  end
9
35
  end
@@ -4,11 +4,12 @@ require "net/http"
4
4
  module Filecoin
5
5
  module Http
6
6
  module ClassMethods
7
- def post(uri, data)
7
+ def post(uri, token, data)
8
8
  return if uri.nil?
9
9
 
10
10
  req = Net::HTTP::Post.new(uri)
11
11
  req["Content-Type"] = "application/json"
12
+ req["Authorization"] = "Bearer #{token}" unless token.nil?
12
13
  req.body = data.to_json
13
14
 
14
15
  response = request(req)
@@ -0,0 +1,3 @@
1
+ require "filecoin/types/cid"
2
+ require "filecoin/types/data_ref"
3
+ require "filecoin/types/start_deal_params"
@@ -0,0 +1,28 @@
1
+ module Filecoin
2
+ module Types
3
+ class Cid
4
+ attr_reader :target
5
+
6
+ def self.new(target)
7
+ return nil if target.nil?
8
+ return target if target.is_a?(Cid)
9
+
10
+ super
11
+ end
12
+
13
+ def initialize(target)
14
+ @target = target
15
+ end
16
+
17
+ def valid?
18
+ !target.nil? && !target.empty?
19
+ end
20
+
21
+ def as_json
22
+ {
23
+ "/" => target,
24
+ }
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ require "filecoin/types/cid"
2
+
3
+ module Filecoin
4
+ module Types
5
+ class DataRef
6
+ attr_reader :transfer_type, :root, :piece_cid, :piece_size
7
+
8
+ def initialize(transfer_type: nil, root:, piece_cid: nil, piece_size: nil)
9
+ @transfer_type = transfer_type
10
+ @root = Cid.new(root)
11
+ @piece_cid = Cid.new(piece_cid)
12
+ @piece_size = piece_size
13
+ end
14
+
15
+ def as_json
16
+ hash = {
17
+ "Root" => root.as_json,
18
+ }
19
+
20
+ hash["TransferType"] = transfer_type unless transfer_type.nil?
21
+ hash["PieceCID"] = piece_cid.as_json unless piece_cid.nil?
22
+ hash["PieceSize"] = piece_size unless piece_size.nil?
23
+
24
+ hash
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,30 @@
1
+ module Filecoin
2
+ module Types
3
+ class StartDealParams
4
+ attr_reader :data, :wallet, :miner, :epoch_price, :min_blocks_duration, :deal_start_epoch
5
+
6
+ def initialize(data:, wallet:, miner:, epoch_price:, min_blocks_duration: nil, deal_start_epoch: nil)
7
+ @data = data
8
+ @wallet = wallet
9
+ @miner = miner
10
+ @epoch_price = epoch_price
11
+ @min_blocks_duration = min_blocks_duration
12
+ @deal_start_epoch = deal_start_epoch
13
+ end
14
+
15
+ def as_json
16
+ hash = {
17
+ "Data" => data.as_json,
18
+ "Wallet" => wallet,
19
+ "Miner" => miner,
20
+ "EpochPrice" => epoch_price.to_s,
21
+ }
22
+
23
+ hash["MinBlocksDuration"] = min_blocks_duration unless min_blocks_duration.nil?
24
+ hash["DealStartEpoch"] = deal_start_epoch unless deal_start_epoch.nil?
25
+
26
+ hash
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module Filecoin
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.2.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filecoin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pedro Costa
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-04 00:00:00.000000000 Z
11
+ date: 2020-06-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  Filecoin (https://filecoin.io/) is a distributed storage network based on a
@@ -47,6 +47,10 @@ files:
47
47
  - lib/filecoin/client.rb
48
48
  - lib/filecoin/client/node.rb
49
49
  - lib/filecoin/http.rb
50
+ - lib/filecoin/types.rb
51
+ - lib/filecoin/types/cid.rb
52
+ - lib/filecoin/types/data_ref.rb
53
+ - lib/filecoin/types/start_deal_params.rb
50
54
  - lib/filecoin/version.rb
51
55
  homepage: https://github.com/subvisual/filecoin-ruby
52
56
  licenses: []
@@ -54,7 +58,7 @@ metadata:
54
58
  homepage_uri: https://github.com/subvisual/filecoin-ruby
55
59
  source_code_uri: https://github.com/subvisual/filecoin-ruby
56
60
  changelog_uri: https://github.com/subvisual/filecoin-ruby/blob/master/CHANGELOG.md
57
- post_install_message:
61
+ post_install_message:
58
62
  rdoc_options: []
59
63
  require_paths:
60
64
  - lib
@@ -70,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
74
  version: '0'
71
75
  requirements: []
72
76
  rubygems_version: 3.1.2
73
- signing_key:
77
+ signing_key:
74
78
  specification_version: 4
75
79
  summary: Interact with the Filecoin network
76
80
  test_files: []