filecoin 0.3.0 → 0.4.0
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/CHANGELOG.md +13 -0
- data/Gemfile.lock +2 -2
- data/README.md +3 -310
- data/lib/filecoin/client/node.rb +11 -0
- data/lib/filecoin/types/power_claim.rb +23 -0
- data/lib/filecoin/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7159b291af21ca88add75488b10ac6700be6abbbde528b04aa880efa208ba480
|
|
4
|
+
data.tar.gz: 21f88799b03a576802cb03bd00b1680615c86b5fb2557b68bbe1fb729c0f8fc2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5d719cd23a5178285a70ffc2589fa14fe56c39aefed45cef6398faa5a7d7b6271ea7e2d6bac21ed89b1234f48bcdabe293dbce1b7d540f3863e221ccaeefb102
|
|
7
|
+
data.tar.gz: 5d6d6a5e5c81ce3fab7373edf35c9d2a2e69784f7f512043a8508ea1e3c501fafb5fdff5e8565dc63f43689c8524bb52936af98f85c18c2816c4d71e0599b66f
|
data/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,19 @@ 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.4.0 - 2020-09-18
|
|
17
|
+
-------------------
|
|
18
|
+
|
|
19
|
+
- Add support `Filecoin.StateMinerPower` without any miner information, to
|
|
20
|
+
obtain the network's aggregate mining power.
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
v0.3.0 - 2020-07-07
|
|
24
|
+
-------------------
|
|
25
|
+
|
|
13
26
|
- Add optional argument to extract the deal CID automatically from the response
|
|
14
27
|
when submitting a proposal;
|
|
15
28
|
- Make wallet for deal proposals optional, falling back on the configured
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
filecoin (0.
|
|
4
|
+
filecoin (0.4.0)
|
|
5
5
|
dry-struct (~> 1.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
@@ -25,7 +25,7 @@ GEM
|
|
|
25
25
|
concurrent-ruby (~> 1.0)
|
|
26
26
|
dry-equalizer (0.3.0)
|
|
27
27
|
dry-inflector (0.2.0)
|
|
28
|
-
dry-logic (1.0.
|
|
28
|
+
dry-logic (1.0.7)
|
|
29
29
|
concurrent-ruby (~> 1.0)
|
|
30
30
|
dry-core (~> 0.2)
|
|
31
31
|
dry-equalizer (~> 0.2)
|
data/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Installation
|
|
|
12
12
|
Add this line to your application's Gemfile:
|
|
13
13
|
|
|
14
14
|
```ruby
|
|
15
|
-
gem "filecoin", "~> 0.
|
|
15
|
+
gem "filecoin", "~> 0.3.0"
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
And then execute:
|
|
@@ -86,313 +86,8 @@ All methods return the server's JSON parsed response as a plain `Hash`.
|
|
|
86
86
|
- [x] `Filecoin.ClientStartDeal`
|
|
87
87
|
- [x] `Filecoin.NetPeers`
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
Returns the current head of the chain.
|
|
93
|
-
|
|
94
|
-
```ruby
|
|
95
|
-
Filecoin.chain_head
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
```json
|
|
99
|
-
{
|
|
100
|
-
"jsonrpc": "2.0",
|
|
101
|
-
"result": {
|
|
102
|
-
"Cids": [
|
|
103
|
-
{
|
|
104
|
-
"/": "bafy2bzaceabs2fnv5xehoibdik3bp3flze3v3mbxdprsu2yt5urpz3sd4sysk"
|
|
105
|
-
}
|
|
106
|
-
],
|
|
107
|
-
"Blocks": [
|
|
108
|
-
{
|
|
109
|
-
"Miner": "t01100",
|
|
110
|
-
"Ticket": {
|
|
111
|
-
"VRFProof": "koRyPdBso5iROYfkkLLS8BbkYkziPmao/DJsVTGWRC7gHz/RPSKG/LCjvcOylI+IEzCghQAHantaG96rUAwc5m08FBhYp9/zx/eZSce42ktfIGfO6lF1ymya3Tlzn2Xd"
|
|
112
|
-
},
|
|
113
|
-
"ElectionProof": {
|
|
114
|
-
"VRFProof": "qMwlLzao8BJn38wJ5/kxcorBNr1IGMpOedLYHV7y7g71vK5suKHIZsC66jtxvCLdFlqWKGsgBifbJkAo38NIPCD4cTiDBz5J3PzDLVAy8f0x3JV7BoaQVmmUr57BCiG+"
|
|
115
|
-
},
|
|
116
|
-
"BeaconEntries": [
|
|
117
|
-
{
|
|
118
|
-
"Round": 125398,
|
|
119
|
-
"Data": "hRPhxVhoujTf7wZoZ4zk/bucunZeEpF5Oi7O1Es1gnnYNBzHlesNhZ8GHfjsULTHFvOVngrawT5Y3P5u7sx2f7ysVfuh16jo1CFJu3KSFfilBXCmjRCKG6rC6KRhQVMO"
|
|
120
|
-
}
|
|
121
|
-
],
|
|
122
|
-
"WinPoStProof": [
|
|
123
|
-
{
|
|
124
|
-
"RegisteredProof": 15,
|
|
125
|
-
"ProofBytes": "srmO6BOqe4lEh4RbVybhkEtH3wDV4QFl/h599QG3K5DZN2yZF77gy0Apaybjr/UgqUVoPPELOkW7HcZLLgSRXwbQ6dmKPnb5rC58ucK4tcab5tKbz6xk3jjoYkHC8tbjEETOmRYlOyvYFSmkkRbdT0aixosSRiecQv94SyiSTWwZ2hNrnDW6tsbqNd8WGTqCjbhvMvHFxFATXv2xu8ndQ+YjYrpuaY/HRz3NfLq0Gj1niqXawkAw2UgKh4aod79A"
|
|
126
|
-
}
|
|
127
|
-
],
|
|
128
|
-
"Parents": [
|
|
129
|
-
{
|
|
130
|
-
"/": "bafy2bzacec6osar3i62fr3u4dlw4bxns3sc4ycipjbo4u6u4tbgh6f7hwhypi"
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"/": "bafy2bzaceblqc4nzzneqg5sd5ik23jnt77fhizm7mqj5ulcyxwlu6p7cftoam"
|
|
134
|
-
}
|
|
135
|
-
],
|
|
136
|
-
"ParentWeight": "1584010805",
|
|
137
|
-
"Height": 99565,
|
|
138
|
-
"ParentStateRoot": {
|
|
139
|
-
"/": "bafy2bzacecolsvk4s2pn7eeso7eobseqxs2x6vkkcenjyd6ikbk4hanmmr6oe"
|
|
140
|
-
},
|
|
141
|
-
"ParentMessageReceipts": {
|
|
142
|
-
"/": "bafy2bzaced3qvpgmcwl4qyxq2rwgmeduqhtnhdunwdisvyejup7vcqxi5cor2"
|
|
143
|
-
},
|
|
144
|
-
"Messages": {
|
|
145
|
-
"/": "bafy2bzaceavnr75wltzlp5eqi4er7u2f5c4halukuetqk2vmbqd7ltcms5cjs"
|
|
146
|
-
},
|
|
147
|
-
"BLSAggregate": {
|
|
148
|
-
"Type": 2,
|
|
149
|
-
"Data": "sXWOH7SeDDQeMTKIBewRGdNYlRGPchtj2iJlXNwZrRV/ukmlcl2yLA24fQhNy1lDDlKNZ+juGq6TyhYGimRMLCaAjCc50jfxOGEk1+uTpxb3QzxknpopWoDHEhCpPz59"
|
|
150
|
-
},
|
|
151
|
-
"Timestamp": 1591983325,
|
|
152
|
-
"BlockSig": {
|
|
153
|
-
"Type": 2,
|
|
154
|
-
"Data": "krAlrTcpd3QFNETCn2sTsXuqlIHCsmwss+iUziCE/F6mVs6UxZ/f43uyHjKRBojwFZRJKsdZV3JWfg+HrWcj51x5qBAwNwReCCOpJUBwEbLcdrUDyrGIzJ203g6r6YS7"
|
|
155
|
-
},
|
|
156
|
-
"ForkSignaling": 0
|
|
157
|
-
}
|
|
158
|
-
],
|
|
159
|
-
"Height": 99565
|
|
160
|
-
},
|
|
161
|
-
"id": 3
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
### Filecoin.ClientGetDealInfo
|
|
167
|
-
|
|
168
|
-
Get the information on a specific deal.
|
|
169
|
-
|
|
170
|
-
```ruby
|
|
171
|
-
Filecoin.client_get_deal_info("bafyreigc4b4fqsval4pjmfncaqdezhe5y3anwavjyzpj4mar73e6n7mvj4")
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
```json
|
|
175
|
-
{
|
|
176
|
-
"jsonrpc": "2.0",
|
|
177
|
-
"result": {
|
|
178
|
-
"ProposalCid": {
|
|
179
|
-
"/": "bafyreigc4b4fqsval4pjmfncaqdezhe5y3anwavjyzpj4mar73e6n7mvj4"
|
|
180
|
-
},
|
|
181
|
-
"State": 5,
|
|
182
|
-
"Message": "",
|
|
183
|
-
"Provider": "t0239463",
|
|
184
|
-
"PieceCID": {
|
|
185
|
-
"/": "bafk4chzaw4zjxdl3d6vd7shbr23ps4nygl77ywogasvzskvn7jszur3tpetq"
|
|
186
|
-
},
|
|
187
|
-
"Size": 2080768,
|
|
188
|
-
"PricePerEpoch": "500000000",
|
|
189
|
-
"Duration": 1492,
|
|
190
|
-
"DealID": 2725
|
|
191
|
-
},
|
|
192
|
-
"id": 3
|
|
193
|
-
}
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
#### Understanding Deal State
|
|
198
|
-
|
|
199
|
-
The state of a deal has a numerical value which links it to a constant in the
|
|
200
|
-
Filecoin Lotus client. At the time of writing, these states are
|
|
201
|
-
([source][states]):
|
|
202
|
-
|
|
203
|
-
| Value | State | Description |
|
|
204
|
-
| :---: | :--- | :--- |
|
|
205
|
-
| 0 | Unknown | Status of the deal is undefined. |
|
|
206
|
-
| 1 | Not found | Deal can not be located. |
|
|
207
|
-
| 2 | Proposal rejected | Storage miner chose not to accept this deal proposal. |
|
|
208
|
-
| 3 | Proposal accepted | Storage miner chose to accept this deal proposal. |
|
|
209
|
-
| 4 | Staged | Deal has been published and data is ready to be put into a sector. |
|
|
210
|
-
| 5 | Sealing | Deal is in sector that's being sealed. |
|
|
211
|
-
| 6 | Active | Deal is in a sealed sector and the miner is providing proofs for this deal. |
|
|
212
|
-
| 7 | Expired | Deal has passed its final epoch and is expired. |
|
|
213
|
-
| 8 | Slashed | Deal was in a sector that got slashed from failing to produce proofs. |
|
|
214
|
-
| 9 | Failing | Something has gone wrong in the deal. Data is being cleaned. |
|
|
215
|
-
| 10 | Funds ensured | The funds necessary to create the deal have been deposited. |
|
|
216
|
-
| 11 | Waiting for data request | Client is waiting for provider to request the deal data. |
|
|
217
|
-
| 12 | Validating | Storage provider is validating whether the deal parameters are good for a proposal. |
|
|
218
|
-
| 13 | Waiting for acceptance | Storage provider is running some custom decision logic to decide whether to accept the deal. |
|
|
219
|
-
| 14 | Transferring | Data is being sent from the client to the storage provider. |
|
|
220
|
-
| 15 | Waiting for data | Deal is for a manual data transfer, or the storage provider has not yet received a request to transfer data from the client. |
|
|
221
|
-
| 16 | Verifying data | Data has been transferred and the storage provider is verifying it against the provided piece CID. |
|
|
222
|
-
| 17 | Ensure provider funds | Storage provider is making sure it has adequate funds for the deal. |
|
|
223
|
-
| 18 | Ensure client funds | Client is making sure it has adequate funds for the deal. |
|
|
224
|
-
| 19 | Provider is funding | Storage provider has deposited funds and is waiting for funds to show up in balance. |
|
|
225
|
-
| 20 | Client is funding | Client has deposited funds and is waiting for funds to show up in balance. |
|
|
226
|
-
| 21 | Publish | Deal is ready to be published on chain. |
|
|
227
|
-
| 22 | Publishing | Deal has been published, currently waiting for it to appear on chain. |
|
|
228
|
-
| 23 | Error | Deal has failed due to an error, no further updates will occur. |
|
|
229
|
-
| 24 | Completed | Deal is active and information for retrieval is recorded. |
|
|
230
|
-
|
|
231
|
-
The lifecycle of a deal is slightly different from the point-of-view of the
|
|
232
|
-
client (the node proposing a deal) and the miner. Please refer to [the
|
|
233
|
-
storage market technical documentation] for up-to-date diagrams.
|
|
234
|
-
|
|
235
|
-
This gem provides an abstraction in `Filecoin::Deals::State` of the **client
|
|
236
|
-
deal lifecycle** reducing them to 4 general states for general deal
|
|
237
|
-
health-checks and tracking.
|
|
238
|
-
|
|
239
|
-
<table>
|
|
240
|
-
<thead>
|
|
241
|
-
<tr>
|
|
242
|
-
<th>Abstract State</th>
|
|
243
|
-
<th>Description</th>
|
|
244
|
-
<th>Positive States</th>
|
|
245
|
-
</tr>
|
|
246
|
-
</thead>
|
|
247
|
-
<tbody>
|
|
248
|
-
<tr>
|
|
249
|
-
<td>Pending</td>
|
|
250
|
-
<td>Deal has been proposed and is pending acceptance or rejection.</td>
|
|
251
|
-
<td>
|
|
252
|
-
<ul>
|
|
253
|
-
<li>Ensure client funds</li>
|
|
254
|
-
<li>Client is funding</li>
|
|
255
|
-
<li>Funds ensured</li>
|
|
256
|
-
<li>Waiting for data</li>
|
|
257
|
-
<li>Transferring</li>
|
|
258
|
-
<li>Validating</li>
|
|
259
|
-
</ul>
|
|
260
|
-
</td>
|
|
261
|
-
</tr>
|
|
262
|
-
<tr>
|
|
263
|
-
<td>Good</td>
|
|
264
|
-
<td>Deal has been accepted and is active or on its way to become active.</td>
|
|
265
|
-
<td>
|
|
266
|
-
<ul>
|
|
267
|
-
<li>Proposal accepted</li>
|
|
268
|
-
<li>Sealing</li>
|
|
269
|
-
<li>Active</li>
|
|
270
|
-
</ul>
|
|
271
|
-
</td>
|
|
272
|
-
</tr>
|
|
273
|
-
<tr>
|
|
274
|
-
<td>Bad</td>
|
|
275
|
-
<td>Something has gone wrong with the deal and it is now invalid.</td>
|
|
276
|
-
<td>
|
|
277
|
-
<ul>
|
|
278
|
-
<li>Failing</li>
|
|
279
|
-
<li>Error</li>
|
|
280
|
-
</ul>
|
|
281
|
-
</td>
|
|
282
|
-
</tr>
|
|
283
|
-
<tr>
|
|
284
|
-
<td>Finished</td>
|
|
285
|
-
<td>The deal has followed its natural course and is no longer active.</td>
|
|
286
|
-
<td>
|
|
287
|
-
<ul>
|
|
288
|
-
<li>Slashed</li>
|
|
289
|
-
<li>Expired</li>
|
|
290
|
-
</ul>
|
|
291
|
-
</td>
|
|
292
|
-
</tr>
|
|
293
|
-
</tbody>
|
|
294
|
-
</table>
|
|
295
|
-
|
|
296
|
-
To make use of this abstraction, initialize `Filecoin::Deal` with the result
|
|
297
|
-
of `Filecoin.ClientGetDealInfo`.
|
|
298
|
-
|
|
299
|
-
```ruby
|
|
300
|
-
response = Filecoin.client_get_deal_info("bafyreigc4b4fqsval4pjmfncaqdezhe5y3anwavjyzpj4mar73e6n7mvj4")
|
|
301
|
-
deal = Filecoin::Deal.new(response["result"])
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
### Filecoin.ClientQueryAsk
|
|
306
|
-
|
|
307
|
-
```ruby
|
|
308
|
-
Filecoin.client_query_ask(
|
|
309
|
-
# ID of the peer to query
|
|
310
|
-
"0003KooWBhDJkzmK1QKQqp7hRDAA9cLBNsneaYn2TBGdUSKXzoc8",
|
|
311
|
-
# ID of the miner to query about
|
|
312
|
-
"t1234567",
|
|
313
|
-
)
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
### Filecoin.ClientStartDeal
|
|
318
|
-
|
|
319
|
-
This method requires the aid of some type classes due to the complex structure
|
|
320
|
-
of the payload. Make use of `Filecoin::Types::DataRef` to represent the data to
|
|
321
|
-
transfer for this deal, and then pass it on to
|
|
322
|
-
`Filecoin::Types::StartDealParams` to describe the deal to propose.
|
|
323
|
-
|
|
324
|
-
If successful, the response contains the CID of the proposed deal. Use
|
|
325
|
-
`Filecoin.ClientGetDealInfo` to query the network about its evolution.
|
|
326
|
-
|
|
327
|
-
```ruby
|
|
328
|
-
data_ref = Filecoin::Types::DataRef.new(
|
|
329
|
-
# (Optional) Define how the data will be transferred. Must be "graphsync" or
|
|
330
|
-
# "manual". Defaults to "graphsync".
|
|
331
|
-
transfer_type: "manual",
|
|
332
|
-
# CID of the file to transfer
|
|
333
|
-
root: "bafkreicomazccnbsql4nvtp6jfrk5qwys63ktakp4hkdt3ncl2hvhemwde",
|
|
334
|
-
# (Optional) Piece CID. Required for "manual" transfer deals.
|
|
335
|
-
piece_cid: "bafk4chzak7ieup5a3aup2vzavfzlnmbxxx4bpi3kpykhbkn4cdemdmk3aeaa",
|
|
336
|
-
# (Optional) Piece size. Required for "manual" transfer deals.
|
|
337
|
-
piece_size: 532_676_608,ClientGetDealInfo
|
|
338
|
-
)
|
|
339
|
-
|
|
340
|
-
start_deal_params = Filecoin::Types::StartDealParams.new(
|
|
341
|
-
# Description of the data the deal refers to
|
|
342
|
-
data: data_ref,
|
|
343
|
-
# Address of the wallet in the node to use to pay for the deal
|
|
344
|
-
# (optional if `Filecoin.config.default_wallet` is set)
|
|
345
|
-
wallet: "t13nqjc55m3h327646cwcu4lchdx4lkw7ccxnx4ca",
|
|
346
|
-
# Address ot the miner to whom this deal is to be proposed
|
|
347
|
-
miner: "t1234567",
|
|
348
|
-
# Price per block in attoFIL to propose for this deal
|
|
349
|
-
epoch_price: 500_000_000,
|
|
350
|
-
# (Optional) Duration of the deal in blocks
|
|
351
|
-
min_blocks_duration: 1572,
|
|
352
|
-
# (Optional) Unix timestamp stating the moment the deal starts
|
|
353
|
-
deal_start_epoch: 1591979600,
|
|
354
|
-
)
|
|
355
|
-
|
|
356
|
-
Filecoin.client_start_deal(start_deal_params, extract_response: false)
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
```json
|
|
360
|
-
{
|
|
361
|
-
"jsonrpc": "2.0",
|
|
362
|
-
"result": {
|
|
363
|
-
"/": "bafyreihdss5rlzmft3lzez2n5jyxqo5znhewdvpbcnhbnairkc2yl6zk6e"
|
|
364
|
-
},
|
|
365
|
-
"id": 3
|
|
366
|
-
}
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
This method accepts an optional keyword argument `extract_response`. If truthy,
|
|
370
|
-
the method returns the deal CID directly, or `nil`, instead of the JSON RPC
|
|
371
|
-
full response. Defaults to `false`.
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
### Filecoin.NetPeers
|
|
375
|
-
|
|
376
|
-
Get the peers the node is connected to.
|
|
377
|
-
|
|
378
|
-
```ruby
|
|
379
|
-
Filecoin.net_peers
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
```json
|
|
383
|
-
{
|
|
384
|
-
"jsonrpc": "2.0",
|
|
385
|
-
"result": [
|
|
386
|
-
{
|
|
387
|
-
"Addrs": [
|
|
388
|
-
"/ip4/54.212.151.167/tcp/40817"
|
|
389
|
-
],
|
|
390
|
-
"ID": "12D3KooWGBxkba5Havy4wiGvLVmqPBCPjs7xPQPtqNr1HRq6RaVM"
|
|
391
|
-
}
|
|
392
|
-
],
|
|
393
|
-
"id": 3
|
|
394
|
-
}
|
|
395
|
-
```
|
|
89
|
+
For more information on each supported method, check
|
|
90
|
+
[the wiki](https://github.com/subvisual/filecoin-ruby/wiki/Supported-Methods).
|
|
396
91
|
|
|
397
92
|
|
|
398
93
|
Development
|
|
@@ -444,8 +139,6 @@ filecoin-ruby was created and is maintained with :heart: by
|
|
|
444
139
|
|
|
445
140
|
[Filecoin Node API]: https://github.com/filecoin-project/lotus/blob/master/api/api_full.go
|
|
446
141
|
[permissions]: https://lotu.sh/en+api#what-authorization-level-should-i-use-21853
|
|
447
|
-
[states]: https://github.com/filecoin-project/go-fil-markets/blob/master/storagemarket/dealstatus.go
|
|
448
|
-
[the storage market technical documentation]: https://github.com/filecoin-project/go-fil-markets/tree/master/storagemarket#technical-documentation
|
|
449
142
|
[license]: ./LICENSE.txt
|
|
450
143
|
[rubygems.org]: https://rubygems.org
|
|
451
144
|
[subvisual]: http://subvisual.com
|
data/lib/filecoin/client/node.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require "filecoin/types/cid"
|
|
2
|
+
require "filecoin/types/power_claim"
|
|
2
3
|
|
|
3
4
|
module Filecoin
|
|
4
5
|
class Client
|
|
@@ -32,6 +33,16 @@ module Filecoin
|
|
|
32
33
|
def net_peers
|
|
33
34
|
json_rpc_call "Filecoin.NetPeers"
|
|
34
35
|
end
|
|
36
|
+
|
|
37
|
+
def state_power(extract_response: false)
|
|
38
|
+
response = json_rpc_call "Filecoin.StateMinerPower", nil, nil
|
|
39
|
+
|
|
40
|
+
if extract_response
|
|
41
|
+
Types::PowerClaim.from_as_json(response.dig("result", "TotalPower"))
|
|
42
|
+
else
|
|
43
|
+
response
|
|
44
|
+
end
|
|
45
|
+
end
|
|
35
46
|
end
|
|
36
47
|
end
|
|
37
48
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Filecoin
|
|
2
|
+
module Types
|
|
3
|
+
class PowerClaim
|
|
4
|
+
module ClassMethods
|
|
5
|
+
def from_as_json(as_json)
|
|
6
|
+
new(
|
|
7
|
+
quality_adjusted_power: Integer(as_json["QualityAdjPower"]),
|
|
8
|
+
raw_byte_power: Integer(as_json["RawBytePower"]),
|
|
9
|
+
)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
extend ClassMethods
|
|
14
|
+
|
|
15
|
+
# raw_byte_power: Sum of raw byte power for a miner's (or of all miners') sectors
|
|
16
|
+
# quality_adjusted_power: Sum of quality adjusted power for a miner's (or of all miners') sectors.
|
|
17
|
+
def initialize(quality_adjusted_power:, raw_byte_power:)
|
|
18
|
+
@quality_adjusted_power = quality_adjusted_power
|
|
19
|
+
@raw_byte_power = raw_byte_power
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
data/lib/filecoin/version.rb
CHANGED
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.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pedro Costa
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-09-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: dry-struct
|
|
@@ -68,6 +68,7 @@ files:
|
|
|
68
68
|
- lib/filecoin/types.rb
|
|
69
69
|
- lib/filecoin/types/cid.rb
|
|
70
70
|
- lib/filecoin/types/data_ref.rb
|
|
71
|
+
- lib/filecoin/types/power_claim.rb
|
|
71
72
|
- lib/filecoin/types/start_deal_params.rb
|
|
72
73
|
- lib/filecoin/version.rb
|
|
73
74
|
homepage: https://github.com/subvisual/filecoin-ruby
|