ruby-client 1.1.5 → 1.2.3

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: d72ff7046a39a0d60c6c9df7ac3ef3601b39c59d1a1c4f4ff6294f0bb4501fa3
4
- data.tar.gz: d48f8b55d873cc6ef82e6a7ec0e01265468c5dd5016bafb11b81aed227e2fa2c
3
+ metadata.gz: 4a137cb7c34ec19c512aeba486576004f912971dc22a7ccbba363c20f2151bb7
4
+ data.tar.gz: 3852d552b5fb140c2c09f54367b6ff0b971e39760da206ea5c2a5c1498ef3fcd
5
5
  SHA512:
6
- metadata.gz: ac27c100095e7535901bf1e404d9ce36da359cf8586617cf88a4bba6ed1a38718a7d60020593adbe490385b072228f1acb07e2797a40df1b9188e3ce66c6eb7a
7
- data.tar.gz: 7936c9d61636c3d9e2c0a68c08c32e747dc2317456f61f0fcafe71c90433ab18e263cf997167dbbb0a06f21dde10814eaaeabf53598bfaddb659c9d73c139cdf
6
+ metadata.gz: 5afd35c9c9955d3900fb07f938c6e6301220175f11743ea1d9929f5a81f424372319e8a5f8d47ca1c30510ef6cb37b195e29a230467476fbd316f98008d81e54
7
+ data.tar.gz: 43b2d1cf3f0523b4a975edfe486df8786e1fb8497dab245a008f8adbf381cff24e0c2981e960f7713d379c3f0561c49dc37c058f5dbff80d294fae267d1d5df9
data/lib/api.rb CHANGED
@@ -14,22 +14,32 @@
14
14
  limitations under the License.
15
15
  =end
16
16
 
17
+ require "sorbet-runtime"
18
+ require_relative "types"
19
+
17
20
  module Api
18
21
  attr_accessor :rpc
22
+ extend T::Sig
19
23
 
20
24
  # accounts - Returns a list of addresses owned by client.
25
+ sig { returns(T::Array[Types::Account]) }
26
+
21
27
  def accounts
22
28
  result = @rpc.request("accounts")
23
29
  return result
24
30
  end
25
31
 
26
32
  # block_number - Returns the height of most recent block.
33
+ sig { returns(Integer) }
34
+
27
35
  def block_number
28
36
  result = @rpc.request("blockNumber")
29
37
  return result
30
38
  end
31
39
 
32
40
  # consensus - Returns information on the current consensus state.
41
+ sig { returns(String) }
42
+
33
43
  def consensus
34
44
  result = @rpc.request("consensus")
35
45
  return result
@@ -41,6 +51,8 @@ module Api
41
51
  # To reset the constant to the default value, the parameter "reset" should be used.
42
52
  # - @param [String] name - The class and name of the constant. (format should be Class.CONSTANT)
43
53
  # - @param [Integer] value - The new value of the constant or "reset". (optional)
54
+ sig { params(name: String, value: T.nilable(Integer)).returns(Integer) }
55
+
44
56
  def constant(name, value = nil)
45
57
  if value
46
58
  result = @rpc.request("constant", name, value)
@@ -51,6 +63,8 @@ module Api
51
63
  end
52
64
 
53
65
  # create_account - Creates a new account and stores its private key in the client store.
66
+ sig { returns(Types::Wallet) }
67
+
54
68
  def create_account
55
69
  result = @rpc.request("createAccount")
56
70
  return result
@@ -59,21 +73,27 @@ module Api
59
73
  # create_raw_transaction - Creates and signs a transaction without sending it.
60
74
  # The transaction can then be send via `send_raw_transaction` without accidentally replaying it.
61
75
  # - @param [TransactionObject] transaction - The transaction object.
76
+ sig { params(transaction: Types::TransactionOutgoing).returns(String) }
77
+
62
78
  def create_raw_transaction(transaction)
63
79
  result = @rpc.request("createRawTransaction", transaction)
64
80
  return result
65
81
  end
66
82
 
67
- # # new: update with more info
68
- # # get_raw_transaction_info - Checks signed_transaction raw information.
69
- # # - @param [String] signed_transaction - The hex encoded signed transaction.
70
- # def get_raw_transaction_info(signed_transaction)
71
- # result = @rpc.request("getRawTransactionInfo", signed_transaction)
72
- # return result
73
- # end
83
+ # NEW
84
+ # get_raw_transaction_info - Checks signed_transaction raw information.
85
+ # - @param [String] signed_transaction - The hex encoded signed transaction.
86
+ sig { params(signed_transaction: String).returns(Object) }
87
+
88
+ def get_raw_transaction_info(signed_transaction)
89
+ result = @rpc.request("getRawTransactionInfo", signed_transaction)
90
+ return result
91
+ end
74
92
 
75
93
  # get_account - Returns details for the account of given address.
76
94
  # - @param [String] address - Address to get account details.
95
+ sig { params(address: String).returns(Types::Account) }
96
+
77
97
  def get_account(address)
78
98
  result = @rpc.request("getAccount", address)
79
99
  return result
@@ -81,6 +101,8 @@ module Api
81
101
 
82
102
  # get_balance - Returns the balance of the account of given address.
83
103
  # - @param [String] address - Address to check for balance.
104
+ sig { params(address: String).returns(Integer) }
105
+
84
106
  def get_balance(address)
85
107
  result = @rpc.request("getBalance", address)
86
108
  return result
@@ -89,6 +111,8 @@ module Api
89
111
  # get_block_by_hash - Returns information about a block by hash.
90
112
  # - @param [String] block_hash - Hash of the block to gather information on.
91
113
  # - @param [Boolean] full_transactions (optional) - If true it returns the full transaction objects, if false only the hashes of the transactions. (default false)
114
+ sig { params(block_hash: String, full_transactions: T.nilable(T::Boolean)).returns(Types::Block) }
115
+
92
116
  def get_block_by_hash(block_hash, full_transactions = nil)
93
117
  if full_transactions
94
118
  result = @rpc.request("getBlockByHash", block_hash, full_transactions)
@@ -101,6 +125,8 @@ module Api
101
125
  # get_block_by_number - Returns information about a block by block number.
102
126
  # - @param [Integer] block_number - The height of the block to gather information on.
103
127
  # - @param [Boolean] full_transactions (optional) - If true it returns the full transaction objects, if false only the hashes of the transactions. (default false)
128
+ sig { params(block_number: Integer, full_transactions: T.nilable(T::Boolean)).returns(Types::Block) }
129
+
104
130
  def get_block_by_number(block_number, full_transactions = nil)
105
131
  if full_transactions
106
132
  result = @rpc.request("getBlockByNumber", block_number, full_transactions)
@@ -113,14 +139,18 @@ module Api
113
139
  # get_block_template - Returns a template to build the next block for mining.
114
140
  # This will consider pool instructions when connected to a pool.
115
141
  # - @param [String] address (optional) - Address to use as a miner for this block. This overrides the address provided during startup or from the pool.
116
- # - @param [String] dada_field (optional) - Hex-encoded value for the extra data field. This overrides the address provided during startup or from the pool.
117
- def get_block_template(address = nil, dada_field = nil)
142
+ # - @param [String] data_field (optional) - Hex-encoded value for the extra data field. This overrides the address provided during startup or from the pool.
143
+ sig { params(address: T.nilable(Integer), data_field: T.nilable(String)).returns(Types::BlockTemplate) }
144
+
145
+ def get_block_template(address = nil, data_field = nil)
118
146
  result = @rpc.request("getBlockTemplate")
119
147
  return result
120
148
  end
121
149
 
122
150
  # get_block_transaction_count_by_hash - Returns the number of transactions in a block from a block matching the given block hash.
123
151
  # - @param [String] block_hash - Hash of the block.
152
+ sig { params(block_hash: String).returns(Integer) }
153
+
124
154
  def get_block_transaction_count_by_hash(block_hash)
125
155
  result = @rpc.request("getBlockTransactionCountByHash", block_hash)
126
156
  return result
@@ -128,29 +158,37 @@ module Api
128
158
 
129
159
  # get_block_transaction_count_by_number - Returns the number of transactions in a block matching the given block number.
130
160
  # - @param [Integer] block_number - Height of the block.
161
+ sig { params(block_number: Integer).returns(Integer) }
162
+
131
163
  def get_block_transaction_count_by_number(block_number)
132
164
  result = @rpc.request("getBlockTransactionCountByNumber", block_number)
133
165
  return result
134
166
  end
135
167
 
136
168
  # get_transaction_by_block_hash_and_index - Returns information about a transaction by block hash and transaction index position.
137
- # - @param [Integer] block_hash - Hash of the block containing the transaction.
169
+ # - @param [String] block_hash - Hash of the block containing the transaction.
138
170
  # - @param [Integer] transaction_index - Index of the transaction in the block.
171
+ sig { params(block_hash: String, transaction_index: Integer).returns(T.nilable(Types::Transaction)) }
172
+
139
173
  def get_transaction_by_block_hash_and_index(block_hash, transaction_index)
140
174
  result = @rpc.request("getTransactionByBlockHashAndIndex", block_hash, transaction_index)
141
175
  return result
142
176
  end
143
177
 
144
178
  # get_transaction_by_block_number_and_index - Returns information about a transaction by block number and transaction index position.
145
- # - @param [Integer] block_height - Height of the block containing the transaction.
179
+ # - @param [Integer] block_hash_index - Height of the block containing the transaction.
146
180
  # - @param [Integer] transaction_index - Index of the transaction in the block.
147
- def get_transaction_by_block_number_and_index(block_height, transaction_index)
148
- result = @rpc.request("getTransactionByBlockNumberAndIndex", block_height, transaction_index)
181
+ sig { params(block_hash_index: Integer, transaction_index: Integer).returns(T.nilable(Types::Transaction)) }
182
+
183
+ def get_transaction_by_block_number_and_index(block_hash_index, transaction_index)
184
+ result = @rpc.request("getTransactionByBlockNumberAndIndex", block_hash_index, transaction_index)
149
185
  return result
150
186
  end
151
187
 
152
188
  # get_transaction_by_hash - Returns the information about a transaction requested by transaction hash.
153
189
  # - @param [String] transaction_hash - Hash of a transaction.
190
+ sig { params(transaction_hash: String).returns(T.nilable(Types::Transaction)) }
191
+
154
192
  def get_transaction_by_hash(transaction_hash)
155
193
  result = @rpc.request("getTransactionByHash", transaction_hash)
156
194
  return result
@@ -159,6 +197,8 @@ module Api
159
197
  # get_transaction_receipt - Returns the receipt of a transaction by transaction hash.
160
198
  # Note That the receipt is not available for pending transactions.
161
199
  # - @param [String] transaction_hash - Hash of a transaction.
200
+ sig { params(transaction_hash: String).returns(T.nilable(Types::TransactionReceipt)) }
201
+
162
202
  def get_transaction_receipt(transaction_hash)
163
203
  result = @rpc.request("getTransactionReceipt", transaction_hash)
164
204
  return result
@@ -167,6 +207,8 @@ module Api
167
207
  # get_transactions_by_address - Returns the latest transactions successfully performed by or for an address.
168
208
  # - @param [String] address - Address of which transactions should be gathered.
169
209
  # - @param [Integer] transactions_number (optional) - Number of transactions that shall be returned. (default 1000)
210
+ sig { params(address: String, transactions_number: T.nilable(Integer)).returns(T.nilable(T::Array[Types::Transaction])) }
211
+
170
212
  def get_transactions_by_address(address, transactions_number = nil)
171
213
  if transactions_number
172
214
  result = @rpc.request("getTransactionsByAddress", address, transactions_number)
@@ -178,13 +220,17 @@ module Api
178
220
 
179
221
  # get_work - Returns instructions to mine the next block. This will consider pool instructions when connected to a pool.
180
222
  # - @param [String] address (optional) - Address to use as a miner for this block. This overrides the address provided during startup or from the pool.
181
- # - @param [String] dada_field (optional) - Hex-encoded value for the extra data field. This overrides the address provided during startup or from the pool.
182
- def get_work(address = nil, dada_field = nil)
183
- result = @rpc.request("getWork", address, dada_field)
223
+ # - @param [String] data_field (optional) - Hex-encoded value for the extra data field. This overrides the address provided during startup or from the pool.
224
+ sig { params(address: T.nilable(String), data_field: T.nilable(String)).returns(Types::MiningWork) }
225
+
226
+ def get_work(address = nil, data_field = nil)
227
+ result = @rpc.request("getWork", address, data_field)
184
228
  return result
185
229
  end
186
230
 
187
231
  # hashrate - Returns the number of hashes per second that the node is mining with.
232
+ sig { returns(T.any(Integer, Float)) }
233
+
188
234
  def hashrate
189
235
  result = @rpc.request("hashrate")
190
236
  return result
@@ -193,24 +239,32 @@ module Api
193
239
  # log - Sets the log level of the node.
194
240
  # - @param [String] tag - If the tag is '*' the log level will be set globally, otherwise the log level is applied only on this tag.
195
241
  # - @param [String] log_level - Log levels valid options: `trace`, `verbose`, `debug`, `info`, `warn`, `error`, `assert`.
242
+ sig { params(tag: String, log_level: String).returns(T::Boolean) }
243
+
196
244
  def log(tag, log_level)
197
245
  result = @rpc.request("log", tag, log_level)
198
246
  return result
199
247
  end
200
248
 
201
249
  # mempool - Returns information on the current mempool situation. This will provide an overview of the number of transactions sorted into buckets based on their fee per byte (in smallest unit).
250
+ sig { returns(Object) }
251
+
202
252
  def mempool
203
253
  result = @rpc.request("mempool")
204
254
  return result
205
255
  end
206
256
 
207
257
  # mempool_content - Returns transactions that are currently in the mempool.
208
- def mempool_content
258
+ sig { params(include_full_transactions: T.nilable(T::Boolean)).returns(T.any(T.nilable(T::Array[Types::Transaction]), T.nilable(T::Array))) }
259
+
260
+ def mempool_content(include_full_transactions = nil)
209
261
  result = @rpc.request("mempoolContent")
210
262
  return result
211
263
  end
212
264
 
213
265
  # miner_address - Returns the miner address.
266
+ sig { returns(String) }
267
+
214
268
  def miner_address
215
269
  result = @rpc.request("minerAddress")
216
270
  return result
@@ -218,6 +272,8 @@ module Api
218
272
 
219
273
  # miner_threads - Returns or sets the number of CPU threads for the miner.
220
274
  # - @param [Integer] set_threads (optional) - The number of threads to allocate for mining.
275
+ sig { params(set_threads: T.nilable(Integer)).returns(Integer) }
276
+
221
277
  def miner_threads(set_threads = nil)
222
278
  if set_threads
223
279
  result = @rpc.request("minerThreads", set_threads)
@@ -229,6 +285,8 @@ module Api
229
285
 
230
286
  # min_fee_per_byte - Returns or sets the minimum fee per byte.
231
287
  # - @param [Integer] set_min_fee (optional) - The new minimum fee per byte.
288
+ sig { params(set_min_fee: T.nilable(Integer)).returns(Integer) }
289
+
232
290
  def min_fee_per_byte(set_min_fee = nil)
233
291
  if set_min_fee
234
292
  result = @rpc.request("minFeePerByte", set_min_fee)
@@ -239,18 +297,24 @@ module Api
239
297
  end
240
298
 
241
299
  # mining - Returns `true` if client is actively mining new blocks.
300
+ sig { returns(T::Boolean) }
301
+
242
302
  def mining
243
303
  result = @rpc.request("mining")
244
304
  return result
245
305
  end
246
306
 
247
307
  # peer_count - Returns number of peers currently connected to the client.
308
+ sig { returns(Integer) }
309
+
248
310
  def peer_count
249
311
  result = @rpc.request("peerCount")
250
312
  return result
251
313
  end
252
314
 
253
315
  # peer_list - Returns list of peers known to the client.
316
+ sig { returns(T::Array[Types::Peer]) }
317
+
254
318
  def peer_list
255
319
  result = @rpc.request("peerList")
256
320
  return result
@@ -258,6 +322,8 @@ module Api
258
322
 
259
323
  # peer_state - Returns the state of the peer.
260
324
  # - @param [String] peer_address - The address of the peer.
325
+ sig { params(peer_address: String).returns(Types::Peer) }
326
+
261
327
  def peer_state(peer_address)
262
328
  result = @rpc.request("peerState", peer_address)
263
329
  return result
@@ -266,9 +332,11 @@ module Api
266
332
  # pool - Returns or sets the mining pool.
267
333
  # When no parameter is given, it returns the current mining pool. When a value is given as parameter, it sets the mining pool to that value.
268
334
  # - @param [String/Boolean] pool_address (optional) - The mining pool connection string (url:port) or boolean to enable/disable pool mining.
269
- def pool(pool_address = nil)
270
- if pool_address
271
- result = @rpc.request("pool", pool_address)
335
+ sig { params(pool_address_or_action: T.nilable(T.any(String, T::Boolean))).returns(T.nilable(String)) }
336
+
337
+ def pool(pool_address_or_action = nil)
338
+ if pool_address_or_action
339
+ result = @rpc.request("pool", pool_address_or_action)
272
340
  else
273
341
  result = @rpc.request("pool")
274
342
  end
@@ -276,12 +344,16 @@ module Api
276
344
  end
277
345
 
278
346
  # pool_confirmed_balance - Returns the confirmed mining pool balance.
347
+ sig { returns(Integer) }
348
+
279
349
  def pool_confirmed_balance
280
350
  result = @rpc.request("poolConfirmedBalance")
281
351
  return result
282
352
  end
283
353
 
284
354
  # pool_connection_state - Returns the connection state to mining pool.
355
+ sig { returns(Integer) }
356
+
285
357
  def pool_connection_state
286
358
  result = @rpc.request("poolConnectionState")
287
359
  return result
@@ -289,6 +361,8 @@ module Api
289
361
 
290
362
  # send_raw_transaction - Sends a signed message call transaction or a contract creation, if the data field contains code.
291
363
  # - @param [String] signed_transaction - The hex encoded signed transaction.
364
+ sig { params(signed_transaction: String).returns(Object) }
365
+
292
366
  def send_raw_transaction(signed_transaction)
293
367
  result = @rpc.request("sendRawTransaction", signed_transaction)
294
368
  return result
@@ -296,6 +370,8 @@ module Api
296
370
 
297
371
  # send_transaction - Creates new message call transaction or a contract creation, if the data field contains code.
298
372
  # - @param [TransactionObject] transaction - The transaction object.
373
+ sig { params(transaction: Types::TransactionOutgoing).returns(String) }
374
+
299
375
  def send_transaction(transaction)
300
376
  result = @rpc.request("sendTransaction", transaction)
301
377
  return result
@@ -304,12 +380,16 @@ module Api
304
380
  # submit_block - Submits a block to the node. When the block is valid, the node will forward it to other nodes in the network.
305
381
  # When submitting work from getWork, remember to include the suffix.
306
382
  # - @param [String] block - Hex-encoded full block (including header, interlink and body).
383
+ sig { params(block: String) }
384
+
307
385
  def submit_block(block)
308
386
  result = @rpc.request("submitBlock", block)
309
387
  return result
310
388
  end
311
389
 
312
390
  # syncing - Returns an object with data about the sync status or `false`.
391
+ sig { returns(T.any(Object, T::Boolean)) }
392
+
313
393
  def syncing
314
394
  result = @rpc.request("syncing")
315
395
  return result
@@ -1,3 +1,3 @@
1
1
  module Nimiq # :nodoc: all
2
- VERSION = "1.1.5"
2
+ VERSION = "1.2.3"
3
3
  end
@@ -20,7 +20,7 @@ require "net/http"
20
20
  # :nodoc: all
21
21
  module ClientRPC
22
22
  class Connect
23
- attr_accessor :options, :uri
23
+ attr_accessor :options, :uri, :ssl
24
24
 
25
25
  DEFAULTS = {
26
26
  host: "localhost",
@@ -54,6 +54,7 @@ module ClientRPC
54
54
  user = uri.user
55
55
  pass = uri.password
56
56
  http = Net::HTTP.new(uri.host, uri.port)
57
+ http.use_ssl = true if @ssl
57
58
  request = Net::HTTP::Get.new(uri.request_uri)
58
59
  request.basic_auth(user, pass)
59
60
  request.body = request_body("", nil)
@@ -68,6 +69,7 @@ module ClientRPC
68
69
  user = uri.user
69
70
  pass = uri.password
70
71
  http = Net::HTTP.new(uri.host, uri.port)
72
+ http.use_ssl = true if @ssl
71
73
  request = Net::HTTP::Post.new(uri.request_uri)
72
74
  request.basic_auth(user, pass)
73
75
  request.body = request_body(name, params)
@@ -89,6 +91,7 @@ module ClientRPC
89
91
  host = options[:host]
90
92
  newhost = url_strip(host.dup)
91
93
  if (options[:host].include? "https")
94
+ @ssl = true
92
95
  return "https://#{options[:user]}:#{options[:pass]}@#{newhost}:#{options[:port]}"
93
96
  else
94
97
  return "http://#{options[:user]}:#{options[:pass]}@#{newhost}:#{options[:port]}"
@@ -15,7 +15,7 @@
15
15
  =end
16
16
 
17
17
  require_relative "nimiq/version"
18
- require_relative "rpcclient"
18
+ require_relative "rpc"
19
19
  require_relative "api"
20
20
  require "json"
21
21
 
@@ -0,0 +1,111 @@
1
+ require "sorbet-runtime"
2
+
3
+ # :nodoc: all
4
+ module Types
5
+ extend T::Sig
6
+
7
+ Block = {
8
+ number: Integer,
9
+ hash: String,
10
+ pow: String,
11
+ parentHash: String,
12
+ nonce: Integer,
13
+ bodyHash: String,
14
+ accountsHash: String,
15
+ miner: String,
16
+ minerAddress: String,
17
+ difficulty: String,
18
+ extraData: String,
19
+ size: Integer,
20
+ timestamp: Integer,
21
+ transactions: Array,
22
+ confirmations: T.nilable(Integer),
23
+ }
24
+
25
+ BlockTemplate = {
26
+ header: {
27
+ version: Integer,
28
+ prevHash: String,
29
+ interlinkHash: String,
30
+ accountsHash: String,
31
+ nBits: Integer,
32
+ height: Integer,
33
+ },
34
+ interlink: String,
35
+ body: {
36
+ hash: String,
37
+ minerAddr: String,
38
+ extraData: String,
39
+ transactions: T::Array[String],
40
+ prunedAccounts: T::Array[String],
41
+ merkleHashes: T::Array[String],
42
+ },
43
+ target: Integer,
44
+ }
45
+
46
+ Wallet = {
47
+ id: String,
48
+ address: String,
49
+ publicKey: String,
50
+ }
51
+
52
+ Account = {
53
+ id: String,
54
+ address: String,
55
+ balance: Integer,
56
+ type: Integer,
57
+ }
58
+
59
+ Transaction = {
60
+ hash: String,
61
+ blockHash: T.nilable(String),
62
+ blockNumber: T.nilable(Integer),
63
+ timestamp: T.nilable(Integer),
64
+ confirmations: T.nilable(Integer),
65
+ transactionIndex: T.nilable(Integer),
66
+ from: String,
67
+ fromAddress: String,
68
+ to: String,
69
+ toAddress: String,
70
+ value: Integer,
71
+ fee: Integer,
72
+ data: T.nilable(String),
73
+ flags: Integer,
74
+ }
75
+
76
+ TransactionOutgoing = {
77
+ from: String,
78
+ to: String,
79
+ value: Integer,
80
+ fee: Integer,
81
+ }
82
+
83
+ TransactionReceipt = {
84
+ transactionHash: String,
85
+ transactionIndex: Integer,
86
+ blockNumber: Integer,
87
+ blockHash: String,
88
+ confirmations: Integer,
89
+ timestamp: Integer,
90
+ }
91
+
92
+ MiningWork = {
93
+ data: String,
94
+ suffix: String,
95
+ target: Integer,
96
+ algorithm: String,
97
+ }
98
+
99
+ Peer = {
100
+ id: String,
101
+ address: String,
102
+ addressState: Integer,
103
+ connectionState: T.nilable(Integer),
104
+ version: T.nilable(Integer),
105
+ timeOffset: T.nilable(Integer),
106
+ headHash: T.nilable(String),
107
+ latency: T.nilable(Integer),
108
+ rx: T.nilable(Integer),
109
+ tx: T.nilable(Integer),
110
+ }
111
+ end