solana_rpc_ruby 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,7 +29,7 @@ module SolanaRpcRuby
29
29
  # @param cluster [String] cluster where requests will be sent.
30
30
  # @param id [Integer] unique client-generated identifying integer.
31
31
  def initialize(
32
- api_client: ApiClient,
32
+ api_client: ApiClient,
33
33
  cluster: SolanaRpcRuby.cluster,
34
34
  id: rand(1...99_999)
35
35
  )
@@ -40,16 +40,18 @@ module SolanaRpcRuby
40
40
  end
41
41
 
42
42
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getaccountinfo
43
+ #
43
44
  # Returns all information associated with the account of provided Pubkey
44
45
  #
45
46
  # @param account_pubkey [String]
46
47
  # @param encoding [String]
48
+ # @param commitment [String]
47
49
  # @param data_slice [Hash]
48
50
  # @option data_slice [Integer] :offset
49
51
  # @option data_slice [Integer] :length
50
52
  #
51
53
  # @return [Response, ApiError] Response when success, ApiError on failure.
52
- def get_account_info(account_pubkey, encoding: '', data_slice: {})
54
+ def get_account_info(account_pubkey, encoding: '', data_slice: {}, commitment: '')
53
55
  http_method = :post
54
56
  method = create_method_name(__method__)
55
57
 
@@ -58,6 +60,7 @@ module SolanaRpcRuby
58
60
 
59
61
  params_hash['encoding'] = encoding unless blank?(encoding)
60
62
  params_hash['dataSlice'] = data_slice unless data_slice.empty?
63
+ params_hash['commitment'] = commitment unless blank?(commitment)
61
64
 
62
65
  params << account_pubkey
63
66
  params << params_hash unless params_hash.empty?
@@ -68,6 +71,7 @@ module SolanaRpcRuby
68
71
  end
69
72
 
70
73
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getbalance
74
+ #
71
75
  # Returns the balance of the account of provided Pubkey
72
76
  #
73
77
  # @param account_pubkey [String]
@@ -94,6 +98,7 @@ module SolanaRpcRuby
94
98
 
95
99
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getblock
96
100
  # NEW: This method is only available in solana-core v1.7 or newer. Please use getConfirmedBlock for solana-core v1.6
101
+ #
97
102
  # Returns identity and transaction information about a confirmed block in the ledger
98
103
  #
99
104
  # @param slot [Integer]
@@ -124,6 +129,7 @@ module SolanaRpcRuby
124
129
  end
125
130
 
126
131
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getblockheight
132
+ #
127
133
  # Returns the current block height of the node
128
134
  #
129
135
  # @param commitment [String]
@@ -145,6 +151,7 @@ module SolanaRpcRuby
145
151
  end
146
152
 
147
153
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getblockproduction
154
+ #
148
155
  # Returns recent block production information from the current or previous epoch.
149
156
  #
150
157
  # @param identity [String]
@@ -167,6 +174,7 @@ module SolanaRpcRuby
167
174
 
168
175
  params_hash['identity'] = identity unless blank?(identity)
169
176
  params_hash['range'] = range_hash unless range_hash.empty?
177
+ params_hash['commitment'] = commitment unless blank?(commitment)
170
178
 
171
179
  params << params_hash unless params_hash.empty?
172
180
 
@@ -176,6 +184,7 @@ module SolanaRpcRuby
176
184
  end
177
185
 
178
186
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getblockcommitment
187
+ #
179
188
  # Returns commitment for particular block
180
189
  #
181
190
  # @param block [Integer]
@@ -196,20 +205,25 @@ module SolanaRpcRuby
196
205
 
197
206
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getblocks
198
207
  # NEW: This method is only available in solana-core v1.7 or newer. Please use getConfirmedBlocks for solana-core v1.6
208
+ #
199
209
  # Returns a list of confirmed blocks between two slots
200
210
  #
201
211
  # @param start_slot [Integer]
202
212
  # @param end_slot [Integer]
203
213
  #
204
214
  # @return [Response, ApiError] Response when success, ApiError on failure.
205
- def get_blocks(start_slot, end_slot: nil)
215
+ def get_blocks(start_slot, end_slot: nil, commitment: nil)
206
216
  http_method = :post
207
217
  method = create_method_name(__method__)
208
218
 
209
219
  params = []
220
+ params_hash = {}
210
221
 
211
222
  params << start_slot
212
223
  params << end_slot unless end_slot.nil?
224
+ params_hash['commitment'] = commitment unless blank?(commitment)
225
+
226
+ params << params_hash unless params_hash.empty?
213
227
 
214
228
  body = create_json_body(method, method_params: params)
215
229
 
@@ -218,6 +232,7 @@ module SolanaRpcRuby
218
232
 
219
233
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getblockswithlimit
220
234
  # NEW: This method is only available in solana-core v1.7 or newer. Please use getConfirmedBlocks for solana-core v1.6
235
+ #
221
236
  # Returns a list of confirmed blocks starting at the given slot
222
237
  #
223
238
  # @param start_slot [Integer]
@@ -244,6 +259,7 @@ module SolanaRpcRuby
244
259
  end
245
260
 
246
261
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getblocktime
262
+ #
247
263
  # Returns the estimated production time of a block.
248
264
  #
249
265
  # @param block [Integer]
@@ -263,6 +279,7 @@ module SolanaRpcRuby
263
279
  end
264
280
 
265
281
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getclusternodes
282
+ #
266
283
  # Returns information about all the nodes participating in the cluster
267
284
  #
268
285
  # @return [Response, ApiError] Response when success, ApiError on failure.
@@ -276,28 +293,7 @@ module SolanaRpcRuby
276
293
  end
277
294
 
278
295
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getepochinfo
279
- # DEPRECATED: Please use getBlocks instead This method is expected to be removed in solana-core v1.8
280
- # Returns a list of confirmed blocks between two slots
281
296
  #
282
- # @param start_slot [Integer]
283
- # @param end_slot [Integer]
284
- #
285
- # @return [Response, ApiError] Response when success, ApiError on failure.
286
- def get_confirmed_blocks(start_slot, end_slot: nil)
287
- http_method = :post
288
- method = create_method_name(__method__)
289
-
290
- params = []
291
-
292
- params << start_slot
293
- params << end_slot unless end_slot.nil? # optional
294
-
295
- body = create_json_body(method, method_params: params)
296
-
297
- send_request(body, http_method)
298
- end
299
-
300
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getepochinfo
301
297
  # Returns information about the current epoch
302
298
  #
303
299
  # @param commitment [String]
@@ -320,6 +316,7 @@ module SolanaRpcRuby
320
316
  end
321
317
 
322
318
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getepochschedule
319
+ #
323
320
  # Returns epoch schedule information from this cluster's genesis config
324
321
  #
325
322
  # @return [Response, ApiError] Response when success, ApiError on failure.
@@ -332,35 +329,37 @@ module SolanaRpcRuby
332
329
  send_request(body, http_method)
333
330
  end
334
331
 
335
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfeecalculatorforblockhash
336
- # Returns the fee calculator associated with the query blockhash, or null if the blockhash has expired
332
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfeeformessage
333
+ # NEW: This method is only available in solana-core v1.9 or newer. Please use getFees for solana-core v1.8
337
334
  #
338
- # @param query_blockhash [String]
335
+ # Get the fee the network will charge for a particular Message
336
+ #
337
+ # @param message [String]
339
338
  # @param commitment [String]
340
339
  #
341
340
  # @return [Response, ApiError] Response when success, ApiError on failure.
342
- def get_fee_calculator_for_blockhash(query_blockhash, commitment: nil)
341
+ def get_fee_for_message(message, commitment: nil)
343
342
  http_method = :post
344
343
  method = create_method_name(__method__)
345
344
 
346
345
  params = []
347
346
  params_hash = {}
348
347
 
348
+ params << message
349
349
  params_hash['commitment'] = commitment unless blank?(commitment)
350
350
 
351
- params << query_blockhash
352
351
  params << params_hash unless params_hash.empty?
353
-
354
352
  body = create_json_body(method, method_params: params)
355
353
 
356
354
  send_request(body, http_method)
357
355
  end
358
356
 
359
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfeerategovernor
360
- # Returns the fee rate governor information from the root bank
357
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfirstavailableblock
358
+ #
359
+ # Returns the slot of the lowest confirmed block that has not been purged from the ledger
361
360
  #
362
361
  # @return [Response, ApiError] Response when success, ApiError on failure.
363
- def get_fee_rate_governor
362
+ def get_first_available_block
364
363
  http_method = :post
365
364
  method = create_method_name(__method__)
366
365
 
@@ -369,33 +368,12 @@ module SolanaRpcRuby
369
368
  send_request(body, http_method)
370
369
  end
371
370
 
372
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfees
373
- # Returns a recent block hash from the ledger, a fee schedule that can be used to compute
374
- # the cost of submitting a transaction using it, and the last slot in which the blockhash will be valid.
375
- #
376
- # @param commitment [String]
371
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getgenesishash
377
372
  #
378
- # @return [Response, ApiError] Response when success, ApiError on failure.
379
- def get_fees(commitment: nil)
380
- http_method = :post
381
- method = create_method_name(__method__)
382
-
383
- params = []
384
- params_hash = {}
385
-
386
- params_hash['commitment'] = commitment unless blank?(commitment)
387
- params << params_hash unless params_hash.empty?
388
-
389
- body = create_json_body(method, method_params: params)
390
-
391
- send_request(body, http_method)
392
- end
393
-
394
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfirstavailableblock
395
- # Returns the slot of the lowest confirmed block that has not been purged from the ledger
373
+ # Returns the genesis hash.
396
374
  #
397
375
  # @return [Response, ApiError] Response when success, ApiError on failure.
398
- def get_first_available_block
376
+ def get_genesis_hash
399
377
  http_method = :post
400
378
  method = create_method_name(__method__)
401
379
 
@@ -404,11 +382,12 @@ module SolanaRpcRuby
404
382
  send_request(body, http_method)
405
383
  end
406
384
 
407
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getgenesishash
408
- # Returns the genesis hash.
385
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#gethealth
386
+ #
387
+ # Returns the current health of the node.
409
388
  #
410
389
  # @return [Response, ApiError] Response when success, ApiError on failure.
411
- def get_genesis_hash
390
+ def get_health
412
391
  http_method = :post
413
392
  method = create_method_name(__method__)
414
393
 
@@ -417,11 +396,15 @@ module SolanaRpcRuby
417
396
  send_request(body, http_method)
418
397
  end
419
398
 
420
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#gethealth
421
- # Returns the current health of the node.
399
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#gethighestsnapshotslot
400
+ #
401
+ # NEW: This method is only available in solana-core v1.9 or newer. Please use getSnapshotSlot for solana-core v1.8
402
+ #
403
+ # Returns the highest slot information that the node has snapshots for.
404
+ # This will find the highest full snapshot slot, and the highest incremental snapshot slot based on the full snapshot slot, if there is one.
422
405
  #
423
406
  # @return [Response, ApiError] Response when success, ApiError on failure.
424
- def get_health
407
+ def get_highest_snapshot_slot
425
408
  http_method = :post
426
409
  method = create_method_name(__method__)
427
410
 
@@ -431,6 +414,7 @@ module SolanaRpcRuby
431
414
  end
432
415
 
433
416
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getidentity
417
+ #
434
418
  # Returns the identity pubkey for the current node.
435
419
  #
436
420
  # @return [Response, ApiError] Response when success, ApiError on failure.
@@ -444,6 +428,7 @@ module SolanaRpcRuby
444
428
  end
445
429
 
446
430
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getinflationgovernor
431
+ #
447
432
  # Returns the current inflation governor.
448
433
  #
449
434
  # @param commitment [String]
@@ -466,6 +451,7 @@ module SolanaRpcRuby
466
451
  end
467
452
 
468
453
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getinflationrate
454
+ #
469
455
  # Returns the specific inflation values for the current epoch.
470
456
  #
471
457
  # @return [Response, ApiError] Response when success, ApiError on failure.
@@ -479,6 +465,7 @@ module SolanaRpcRuby
479
465
  end
480
466
 
481
467
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getinflationreward
468
+ #
482
469
  # Returns the inflation reward for a list of addresses for an epoch.
483
470
  #
484
471
  # @param addresses [Array]
@@ -506,6 +493,7 @@ module SolanaRpcRuby
506
493
  end
507
494
 
508
495
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getlargestaccounts
496
+ #
509
497
  # Returns the 20 largest accounts, by lamport balance (results may be cached up to two hours)
510
498
  #
511
499
  # @param commitment [String]
@@ -529,7 +517,32 @@ module SolanaRpcRuby
529
517
  send_request(body, http_method)
530
518
  end
531
519
 
520
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getlatestblockhash
521
+ # NEW: This method is only available in solana-core v1.9 or newer. Please use getRecentBlockhash for solana-core v1.8
522
+ #
523
+ # Returns the latest blockhash.
524
+ #
525
+ # @param commitment [String]
526
+ #
527
+ # @return [Response, ApiError] Response when success, ApiError on failure.
528
+ def get_latest_blockhash(commitment: nil)
529
+ http_method = :post
530
+ method = create_method_name(__method__)
531
+
532
+ params = []
533
+ params_hash = {}
534
+
535
+ params_hash['commitment'] = commitment unless blank?(commitment)
536
+
537
+ params << params_hash unless params_hash.empty?
538
+
539
+ body = create_json_body(method, method_params: params)
540
+
541
+ send_request(body, http_method)
542
+ end
543
+
532
544
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getleaderschedule
545
+ #
533
546
  # Returns the leader schedule for an epoch.
534
547
  #
535
548
  # @param epoch [Integer]
@@ -556,6 +569,7 @@ module SolanaRpcRuby
556
569
  end
557
570
 
558
571
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getmaxretransmitslot
572
+ #
559
573
  # Get the max slot seen from retransmit stage.
560
574
  #
561
575
  # @return [Response, ApiError] Response when success, ApiError on failure.
@@ -582,6 +596,7 @@ module SolanaRpcRuby
582
596
  end
583
597
 
584
598
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getminimumbalanceforrentexemption
599
+ #
585
600
  # Returns minimum balance required to make account rent exempt.
586
601
  #
587
602
  # @param account_data_length [String]
@@ -609,12 +624,15 @@ module SolanaRpcRuby
609
624
  end
610
625
 
611
626
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getmultipleaccounts
627
+ #
612
628
  # Returns the account information for a list of Pubkeys.
613
- # @param account_data_length [String]
614
- # @param commitment [String]
615
629
  #
616
- # @return [Response, ApiError] Response when success, ApiError on failure. # @param account_data_length [String]
630
+ # @param pubkeys [Array]
617
631
  # @param commitment [String]
632
+ # @param encoding [String]
633
+ # @param data_slice [Hash]
634
+ # @option data_slice [Integer] :offset
635
+ # @option data_slice [Integer] :length
618
636
  #
619
637
  # @return [Response, ApiError] Response when success, ApiError on failure.
620
638
  def get_multiple_accounts(
@@ -688,30 +706,8 @@ module SolanaRpcRuby
688
706
  send_request(body, http_method)
689
707
  end
690
708
 
691
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getrecentblockhash
692
- # Returns a recent block hash from the ledger, and a fee schedule
693
- # that can be used to compute the cost of submitting a transaction using it.
694
- #
695
- # @param commitment [String]
696
- #
697
- # @return [Response, ApiError] Response when success, ApiError on failure.
698
- def get_recent_blockhash(commitment: nil)
699
- http_method = :post
700
- method = create_method_name(__method__)
701
-
702
- params = []
703
- params_hash = {}
704
-
705
- params_hash['commitment'] = commitment unless blank?(commitment)
706
-
707
- params << params_hash unless params_hash.empty?
708
-
709
- body = create_json_body(method, method_params: params)
710
-
711
- send_request(body, http_method)
712
- end
713
-
714
709
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getrecentperformancesamples
710
+ #
715
711
  # Returns a list of recent performance samples, in reverse slot order.
716
712
  # Performance samples are taken every 60 seconds and include the number of transactions and slots that occur in a given time window.
717
713
  #
@@ -731,19 +727,6 @@ module SolanaRpcRuby
731
727
  send_request(body, http_method)
732
728
  end
733
729
 
734
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#getsnapshotslot
735
- # Returns the highest slot that the node has a snapshot for.
736
- #
737
- # @return [Response, ApiError] Response when success, ApiError on failure.
738
- def get_snapshot_slot
739
- http_method = :post
740
- method = create_method_name(__method__)
741
-
742
- body = create_json_body(method)
743
-
744
- send_request(body, http_method)
745
- end
746
-
747
730
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getsignaturesforaddress
748
731
  # NEW: This method is only available in solana-core v1.7 or newer.
749
732
  # Please use getConfirmedSignaturesForAddress2 for solana-core v1.6
@@ -816,6 +799,7 @@ module SolanaRpcRuby
816
799
  end
817
800
 
818
801
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getslot
802
+ #
819
803
  # Returns the current slot the node is processing.
820
804
  #
821
805
  # @param commitment [String]
@@ -838,6 +822,7 @@ module SolanaRpcRuby
838
822
  end
839
823
 
840
824
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getslotleader
825
+ #
841
826
  # Returns the current slot leader
842
827
  #
843
828
  # @param commitment [String]
@@ -860,6 +845,7 @@ module SolanaRpcRuby
860
845
  end
861
846
 
862
847
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getslotleaders
848
+ #
863
849
  # Returns the slot leaders for a given slot range.
864
850
  #
865
851
  # @param start_slot [Integer]
@@ -878,6 +864,7 @@ module SolanaRpcRuby
878
864
  end
879
865
 
880
866
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getstakeactivation
867
+ #
881
868
  # Returns epoch activation information for a stake account.
882
869
  #
883
870
  # @param pubkey [String]
@@ -904,12 +891,14 @@ module SolanaRpcRuby
904
891
  end
905
892
 
906
893
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getsupply
894
+ #
907
895
  # Returns information about the current supply.
908
896
  #
909
897
  # @param commitment [String]
898
+ # @param exclude_non_circulating_accounts_list [Boolean]
910
899
  #
911
900
  # @return [Response, ApiError] Response when success, ApiError on failure.
912
- def get_supply(commitment: nil)
901
+ def get_supply(commitment: nil, exclude_non_circulating_accounts_list: nil)
913
902
  http_method = :post
914
903
  method = create_method_name(__method__)
915
904
 
@@ -917,6 +906,8 @@ module SolanaRpcRuby
917
906
  params_hash = {}
918
907
 
919
908
  params_hash['commitment'] = commitment unless blank?(commitment)
909
+ params_hash['exclude_non_circulating_accounts_list'] = exclude_non_circulating_accounts_list \
910
+ unless exclude_non_circulating_accounts_list.nil?
920
911
 
921
912
  params << params_hash unless params_hash.empty?
922
913
 
@@ -1080,6 +1071,35 @@ module SolanaRpcRuby
1080
1071
  send_request(body, http_method)
1081
1072
  end
1082
1073
 
1074
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#gettokensupply
1075
+ #
1076
+ # Returns the total supply of an SPL Token type.
1077
+ #
1078
+ # @param token_mint_pubkey [String]
1079
+ # @param commitment [String]
1080
+ #
1081
+ # @return [Response, ApiError] Response when success, ApiError on failure.
1082
+ def get_token_supply(
1083
+ token_mint_pubkey,
1084
+ commitment: nil
1085
+ )
1086
+
1087
+ http_method = :post
1088
+ method = create_method_name(__method__)
1089
+
1090
+ params = []
1091
+ params_hash = {}
1092
+
1093
+ params_hash['commitment'] = commitment unless blank?(commitment)
1094
+
1095
+ params << token_mint_pubkey
1096
+ params << params_hash unless params_hash.empty?
1097
+
1098
+ body = create_json_body(method, method_params: params)
1099
+
1100
+ send_request(body, http_method)
1101
+ end
1102
+
1083
1103
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#gettransaction
1084
1104
  #
1085
1105
  # Returns transaction details for a confirmed transaction
@@ -1145,13 +1165,21 @@ module SolanaRpcRuby
1145
1165
  end
1146
1166
 
1147
1167
  # @see https://docs.solana.com/developing/clients/jsonrpc-api#getvoteaccounts
1168
+ #
1148
1169
  # Returns the account info and associated stake for all the voting accounts in the current bank.
1149
1170
  #
1150
1171
  # @param commitment [String]
1151
1172
  # @param vote_pubkey [String]
1173
+ # @param keep_unstaked_delinquents [Boolean]
1174
+ # @param delinquent_slot_distance [Integer] NOTE: For the sake of consistency between ecosystem products, it is not recommended that this argument be specified.
1152
1175
  #
1153
1176
  # @return [Response, ApiError] Response when success, ApiError on failure.
1154
- def get_vote_accounts(commitment: nil, vote_pubkey: nil)
1177
+ def get_vote_accounts(
1178
+ commitment: nil,
1179
+ vote_pubkey: nil,
1180
+ keep_unstaked_delinquents: nil,
1181
+ delinquent_slot_distance: nil
1182
+ )
1155
1183
  http_method = :post
1156
1184
  method = create_method_name(__method__)
1157
1185
 
@@ -1160,6 +1188,8 @@ module SolanaRpcRuby
1160
1188
 
1161
1189
  params_hash['votePubkey'] = vote_pubkey unless blank?(vote_pubkey)
1162
1190
  params_hash['commitment'] = commitment unless blank?(commitment)
1191
+ params_hash['keep_unstaked_delinquents'] = keep_unstaked_delinquents unless keep_unstaked_delinquents.nil?
1192
+ params_hash['delinquent_slot_distance'] = delinquent_slot_distance unless blank?(delinquent_slot_distance)
1163
1193
 
1164
1194
  params << params_hash unless params_hash.empty?
1165
1195
 
@@ -1168,16 +1198,28 @@ module SolanaRpcRuby
1168
1198
  send_request(body, http_method)
1169
1199
  end
1170
1200
 
1171
- # @see https://docs.solana.com/developing/clients/jsonrpc-api#minimumledgerslot
1201
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#isblockhashvalid
1202
+ # NEW: This method is only available in solana-core v1.9 or newer. Please use getFeeCalculatorForBlockhash for solana-core v1.8
1172
1203
  #
1173
- # Returns the current solana versions running on the node.
1204
+ # Returns whether a blockhash is still valid or not.
1205
+ #
1206
+ # @param blockhash [String]
1207
+ # @param commitment [String]
1174
1208
  #
1175
1209
  # @return [Response, ApiError] Response when success, ApiError on failure.
1176
- def get_version
1210
+ def is_blockhash_valid(blockhash, commitment: nil)
1177
1211
  http_method = :post
1178
1212
  method = create_method_name(__method__)
1179
1213
 
1180
- body = create_json_body(method)
1214
+ params = []
1215
+ params_hash = {}
1216
+
1217
+ params_hash['commitment'] = commitment unless blank?(commitment)
1218
+
1219
+ params << blockhash
1220
+ params << params_hash unless params_hash.empty?
1221
+
1222
+ body = create_json_body(method, method_params: params)
1181
1223
 
1182
1224
  send_request(body, http_method)
1183
1225
  end
@@ -1212,6 +1254,7 @@ module SolanaRpcRuby
1212
1254
 
1213
1255
  params = []
1214
1256
  params_hash = {}
1257
+ params_hash['commitment'] = commitment unless blank?(commitment)
1215
1258
 
1216
1259
  params << pubkey
1217
1260
  params << lamports
@@ -1230,13 +1273,15 @@ module SolanaRpcRuby
1230
1273
  # @param skip_pre_flight [Boolean]
1231
1274
  # @param pre_flight_commitment [String]
1232
1275
  # @param encoding [String]
1276
+ # @param max_retries [Integer]
1233
1277
  #
1234
1278
  # @return [Response, ApiError] Response when success, ApiError on failure.
1235
1279
  def send_transaction(
1236
1280
  transaction_signature,
1237
1281
  skip_pre_flight: false,
1238
1282
  pre_flight_commitment: nil,
1239
- encoding: ''
1283
+ encoding: '',
1284
+ max_retries: nil
1240
1285
  )
1241
1286
  http_method = :post
1242
1287
  method = create_method_name(__method__)
@@ -1247,6 +1292,7 @@ module SolanaRpcRuby
1247
1292
  params_hash['skipPreFlight'] = skip_pre_flight unless skip_pre_flight.nil?
1248
1293
  params_hash['preflightCommitment'] = pre_flight_commitment unless blank?(pre_flight_commitment)
1249
1294
  params_hash['encoding'] = encoding unless blank?(encoding)
1295
+ params_hash['max_retries'] = max_retries unless blank?(max_retries)
1250
1296
 
1251
1297
  params << transaction_signature
1252
1298
  params << params_hash unless params_hash.empty?
@@ -1306,7 +1352,155 @@ module SolanaRpcRuby
1306
1352
  send_request(body, http_method)
1307
1353
  end
1308
1354
 
1355
+
1356
+ ######## DEPRECATED METHODS #########
1357
+
1358
+ # @deprecated Please use getBlocks instead This method is expected to be removed in solana-core v1.8
1359
+ #
1360
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getepochinfo
1361
+ #
1362
+ # Returns a list of confirmed blocks between two slots
1363
+ #
1364
+ # @param start_slot [Integer]
1365
+ # @param end_slot [Integer]
1366
+ #
1367
+ # @return [Response, ApiError] Response when success, ApiError on failure.
1368
+ def get_confirmed_blocks(start_slot, end_slot: nil)
1369
+ warn 'DEPRECATED: Please use getBlocks instead. This method is expected to be removed in solana-core v1.8'
1370
+
1371
+ http_method = :post
1372
+ method = create_method_name(__method__)
1373
+
1374
+ params = []
1375
+
1376
+ params << start_slot
1377
+ params << end_slot unless end_slot.nil? # optional
1378
+
1379
+ body = create_json_body(method, method_params: params)
1380
+
1381
+ send_request(body, http_method)
1382
+ end
1383
+
1384
+ # @deprecated Please use isBlockhashValid or getFeeForMessage instead This method is expected to be removed in solana-core v2.0
1385
+ #
1386
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfeecalculatorforblockhash
1387
+ #
1388
+ # Returns the fee calculator associated with the query blockhash, or null if the blockhash has expired
1389
+ #
1390
+ # @param query_blockhash [String]
1391
+ # @param commitment [String]
1392
+ #
1393
+ # @return [Response, ApiError] Response when success, ApiError on failure.
1394
+ def get_fee_calculator_for_blockhash(query_blockhash, commitment: nil)
1395
+ warn "DEPRECATED: Please use isBlockhashValid or getFeeForMessage instead. This method is expected to be removed in solana-core v2.0"
1396
+
1397
+ http_method = :post
1398
+ method = create_method_name(__method__)
1399
+
1400
+ params = []
1401
+ params_hash = {}
1402
+
1403
+ params_hash['commitment'] = commitment unless blank?(commitment)
1404
+
1405
+ params << query_blockhash
1406
+ params << params_hash unless params_hash.empty?
1407
+
1408
+ body = create_json_body(method, method_params: params)
1409
+
1410
+ send_request(body, http_method)
1411
+ end
1412
+
1413
+ # @deprecated Please check solana docs for substitution.
1414
+ #
1415
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfeerategovernor
1416
+ #
1417
+ # Returns the fee rate governor information from the root bank
1418
+ #
1419
+ # @return [Response, ApiError] Response when success, ApiError on failure.
1420
+ def get_fee_rate_governor
1421
+ warn "DEPRECATED Please check solana docs for substitution."
1422
+
1423
+ http_method = :post
1424
+ method = create_method_name(__method__)
1425
+
1426
+ body = create_json_body(method)
1427
+
1428
+ send_request(body, http_method)
1429
+ end
1430
+
1431
+ # @deprecated DEPRECATED: Please use getFeeForMessage instead This method is expected to be removed in solana-core v2.0
1432
+ #
1433
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getfees
1434
+ #
1435
+ # Returns a recent block hash from the ledger, a fee schedule that can be used to compute
1436
+ # the cost of submitting a transaction using it, and the last slot in which the blockhash will be valid.
1437
+ #
1438
+ # @param commitment [String]
1439
+ #
1440
+ # @return [Response, ApiError] Response when success, ApiError on failure.
1441
+ def get_fees(commitment: nil)
1442
+ warn "DEPRECATED: Please use getFeeForMessage instead This method is expected to be removed in solana-core v2.0"
1443
+
1444
+ http_method = :post
1445
+ method = create_method_name(__method__)
1446
+
1447
+ params = []
1448
+ params_hash = {}
1449
+
1450
+ params_hash['commitment'] = commitment unless blank?(commitment)
1451
+ params << params_hash unless params_hash.empty?
1452
+
1453
+ body = create_json_body(method, method_params: params)
1454
+
1455
+ send_request(body, http_method)
1456
+ end
1457
+
1458
+ # @depreated Please use getFeeForMessage instead This method is expected to be removed in solana-core v2.0
1459
+ #
1460
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getrecentblockhash
1461
+ #
1462
+ # Returns a recent block hash from the ledger, and a fee schedule
1463
+ # that can be used to compute the cost of submitting a transaction using it.
1464
+ #
1465
+ # @param commitment [String]
1466
+ #
1467
+ # @return [Response, ApiError] Response when success, ApiError on failure.
1468
+ def get_recent_blockhash(commitment: nil)
1469
+ warn "DEPRECATED: Please use getFeeForMessage instead This method is expected to be removed in solana-core v2.0"
1470
+ http_method = :post
1471
+ method = create_method_name(__method__)
1472
+
1473
+ params = []
1474
+ params_hash = {}
1475
+
1476
+ params_hash['commitment'] = commitment unless blank?(commitment)
1477
+
1478
+ params << params_hash unless params_hash.empty?
1479
+
1480
+ body = create_json_body(method, method_params: params)
1481
+
1482
+ send_request(body, http_method)
1483
+ end
1484
+
1485
+ # @deprecated Please use getHighestSnapshotSlot instead This method is expected to be removed in solana-core v2.0
1486
+ #
1487
+ # @see https://docs.solana.com/developing/clients/jsonrpc-api#getsnapshotslot
1488
+ #
1489
+ # Returns the highest slot that the node has a snapshot for.
1490
+ #
1491
+ # @return [Response, ApiError] Response when success, ApiError on failure.
1492
+ def get_snapshot_slot
1493
+ warn "DEPRECATED: Please use getHighestSnapshotSlot instead This method is expected to be removed in solana-core v2.0"
1494
+ http_method = :post
1495
+ method = create_method_name(__method__)
1496
+
1497
+ body = create_json_body(method)
1498
+
1499
+ send_request(body, http_method)
1500
+ end
1501
+
1309
1502
  private
1503
+
1310
1504
  def send_request(body, http_method)
1311
1505
  api_response = api_client.call_api(
1312
1506
  body: body,