forked from decred/dcrwallet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
api.proto
1463 lines (1294 loc) · 36.7 KB
/
api.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
syntax = "proto3";
package walletrpc;
option go_package = "decred.org/dcrwallet/rpc/walletrpc";
service VersionService {
rpc Version (VersionRequest) returns (VersionResponse);
}
message VersionRequest {}
message VersionResponse {
string version_string = 1;
uint32 major = 2;
uint32 minor = 3;
uint32 patch = 4;
string prerelease = 5;
string build_metadata = 6;
}
service WalletService {
// Queries
rpc Ping (PingRequest) returns (PingResponse);
rpc Network (NetworkRequest) returns (NetworkResponse);
rpc CoinType (CoinTypeRequest) returns (CoinTypeResponse);
rpc AccountNumber (AccountNumberRequest) returns (AccountNumberResponse);
rpc Accounts (AccountsRequest) returns (AccountsResponse);
rpc Address (AddressRequest) returns (AddressResponse);
rpc Balance (BalanceRequest) returns (BalanceResponse);
rpc GetAccountExtendedPubKey (GetAccountExtendedPubKeyRequest) returns (GetAccountExtendedPubKeyResponse);
rpc GetAccountExtendedPrivKey (GetAccountExtendedPrivKeyRequest) returns (GetAccountExtendedPrivKeyResponse);
rpc GetTransaction (GetTransactionRequest) returns (GetTransactionResponse);
rpc GetTransactions (GetTransactionsRequest) returns (stream GetTransactionsResponse);
rpc GetTicket (GetTicketRequest) returns (GetTicketsResponse);
rpc GetTickets (GetTicketsRequest) returns (stream GetTicketsResponse);
rpc TicketPrice (TicketPriceRequest) returns (TicketPriceResponse);
rpc StakeInfo (StakeInfoRequest) returns (StakeInfoResponse);
rpc BlockInfo (BlockInfoRequest) returns (BlockInfoResponse);
rpc BestBlock (BestBlockRequest) returns (BestBlockResponse);
rpc Spender (SpenderRequest) returns (SpenderResponse);
rpc GetCFilters (GetCFiltersRequest) returns (stream GetCFiltersResponse);
rpc GetPeerInfo(GetPeerInfoRequest) returns (GetPeerInfoResponse);
rpc DumpPrivateKey (DumpPrivateKeyRequest) returns (DumpPrivateKeyResponse);
rpc BirthBlock (BirthBlockRequest) returns (BirthBlockResponse);
// Notifications
rpc TransactionNotifications (TransactionNotificationsRequest) returns (stream TransactionNotificationsResponse);
rpc AccountNotifications (AccountNotificationsRequest) returns (stream AccountNotificationsResponse);
rpc ConfirmationNotifications (stream ConfirmationNotificationsRequest) returns (stream ConfirmationNotificationsResponse);
// Control
rpc ChangePassphrase (ChangePassphraseRequest) returns (ChangePassphraseResponse);
rpc RenameAccount (RenameAccountRequest) returns (RenameAccountResponse);
rpc Rescan (RescanRequest) returns (stream RescanResponse);
rpc NextAccount (NextAccountRequest) returns (NextAccountResponse);
rpc NextAddress (NextAddressRequest) returns (NextAddressResponse);
rpc ImportPrivateKey (ImportPrivateKeyRequest) returns (ImportPrivateKeyResponse);
rpc ImportExtendedPublicKey (ImportExtendedPublicKeyRequest) returns (ImportExtendedPublicKeyResponse);
rpc ImportVotingAccountFromSeed (ImportVotingAccountFromSeedRequest) returns (ImportVotingAccountFromSeedResponse);
rpc ImportScript(ImportScriptRequest) returns (ImportScriptResponse);
rpc FundTransaction (FundTransactionRequest) returns (FundTransactionResponse);
rpc UnspentOutputs (UnspentOutputsRequest) returns (stream UnspentOutputResponse);
rpc ConstructTransaction (ConstructTransactionRequest) returns (ConstructTransactionResponse);
rpc SignTransaction (SignTransactionRequest) returns (SignTransactionResponse);
rpc SignTransactions (SignTransactionsRequest) returns (SignTransactionsResponse);
rpc CreateSignature (CreateSignatureRequest) returns (CreateSignatureResponse);
rpc PublishTransaction (PublishTransactionRequest) returns (PublishTransactionResponse);
rpc PublishUnminedTransactions (PublishUnminedTransactionsRequest) returns (PublishUnminedTransactionsResponse);
rpc PurchaseTickets(PurchaseTicketsRequest) returns (PurchaseTicketsResponse);
rpc RevokeTicket(RevokeTicketRequest) returns (RevokeTicketResponse);
rpc RevokeTickets(RevokeTicketsRequest) returns (RevokeTicketsResponse);
rpc LoadActiveDataFilters(LoadActiveDataFiltersRequest) returns (LoadActiveDataFiltersResponse);
rpc SignMessage (SignMessageRequest) returns (SignMessageResponse);
rpc SignMessages (SignMessagesRequest) returns (SignMessagesResponse);
rpc ValidateAddress (ValidateAddressRequest) returns (ValidateAddressResponse);
rpc CommittedTickets (CommittedTicketsRequest) returns (CommittedTicketsResponse);
rpc SweepAccount (SweepAccountRequest) returns (SweepAccountResponse);
rpc AbandonTransaction (AbandonTransactionRequest) returns (AbandonTransactionResponse);
rpc SignHashes (SignHashesRequest) returns (SignHashesResponse);
rpc GetCoinjoinOutputspByAcct (GetCoinjoinOutputspByAcctRequest) returns (GetCoinjoinOutputspByAcctResponse);
rpc SetAccountPassphrase (SetAccountPassphraseRequest) returns (SetAccountPassphraseResponse);
rpc UnlockAccount (UnlockAccountRequest) returns (UnlockAccountResponse);
rpc LockAccount (LockAccountRequest) returns (LockAccountResponse);
rpc UnlockWallet (UnlockWalletRequest) returns (UnlockWalletResponse);
rpc LockWallet (LockWalletRequest) returns (LockWalletResponse);
rpc AccountUnlocked (AccountUnlockedRequest) returns (AccountUnlockedResponse);
rpc SyncVSPFailedTickets(SyncVSPTicketsRequest) returns (SyncVSPTicketsResponse);
rpc GetVSPTicketsByFeeStatus (GetVSPTicketsByFeeStatusRequest) returns (GetVSPTicketsByFeeStatusResponse);
rpc ProcessManagedTickets (ProcessManagedTicketsRequest) returns (ProcessManagedTicketsResponse);
rpc ProcessUnmanagedTickets (ProcessUnmanagedTicketsRequest) returns (ProcessUnmanagedTicketsResponse);
rpc SetVspdVoteChoices (SetVspdVoteChoicesRequest) returns (SetVspdVoteChoicesResponse);
rpc GetTrackedVSPTickets (GetTrackedVSPTicketsRequest) returns (GetTrackedVSPTicketsResponse);
rpc DiscoverUsage (DiscoverUsageRequest) returns (DiscoverUsageResponse);
}
service WalletLoaderService {
rpc WalletExists (WalletExistsRequest) returns (WalletExistsResponse);
rpc CreateWallet (CreateWalletRequest) returns (CreateWalletResponse);
rpc CreateWatchingOnlyWallet (CreateWatchingOnlyWalletRequest) returns (CreateWatchingOnlyWalletResponse);
rpc OpenWallet (OpenWalletRequest) returns (OpenWalletResponse);
rpc CloseWallet (CloseWalletRequest) returns (CloseWalletResponse);
rpc SpvSync(SpvSyncRequest) returns (stream SpvSyncResponse);
rpc RpcSync(RpcSyncRequest) returns (stream RpcSyncResponse);
rpc RescanPoint(RescanPointRequest) returns (RescanPointResponse);
}
service AccountMixerService {
rpc RunAccountMixer (RunAccountMixerRequest) returns (stream RunAccountMixerResponse);
}
service TicketBuyerV2Service {
rpc RunTicketBuyer (RunTicketBuyerRequest) returns (stream RunTicketBuyerResponse);
}
service TicketBuyerService {
rpc StartAutoBuyer (StartAutoBuyerRequest) returns (StartAutoBuyerResponse);
rpc StopAutoBuyer (StopAutoBuyerRequest) returns (StopAutoBuyerResponse);
rpc TicketBuyerConfig (TicketBuyerConfigRequest) returns (TicketBuyerConfigResponse);
rpc SetAccount (SetAccountRequest) returns (SetAccountResponse);
rpc SetBalanceToMaintain (SetBalanceToMaintainRequest) returns (SetBalanceToMaintainResponse);
rpc SetMaxFee (SetMaxFeeRequest) returns (SetMaxFeeResponse);
rpc SetMaxPriceRelative (SetMaxPriceRelativeRequest) returns (SetMaxPriceRelativeResponse);
rpc SetMaxPriceAbsolute (SetMaxPriceAbsoluteRequest) returns (SetMaxPriceAbsoluteResponse);
rpc SetVotingAddress (SetVotingAddressRequest) returns (SetVotingAddressResponse);
rpc SetPoolAddress (SetPoolAddressRequest) returns (SetPoolAddressResponse);
rpc SetPoolFees (SetPoolFeesRequest) returns (SetPoolFeesResponse);
rpc SetMaxPerBlock (SetMaxPerBlockRequest) returns (SetMaxPerBlockResponse);
}
service SeedService {
rpc GenerateRandomSeed (GenerateRandomSeedRequest) returns (GenerateRandomSeedResponse);
rpc DecodeSeed (DecodeSeedRequest) returns (DecodeSeedResponse);
}
service AgendaService {
rpc Agendas (AgendasRequest) returns (AgendasResponse);
}
service VotingService {
rpc VoteChoices (VoteChoicesRequest) returns (VoteChoicesResponse);
rpc SetVoteChoices (SetVoteChoicesRequest) returns (SetVoteChoicesResponse);
rpc TSpendPolicies (TSpendPoliciesRequest) returns (TSpendPoliciesResponse);
rpc SetTSpendPolicy (SetTSpendPolicyRequest) returns (SetTSpendPolicyResponse);
rpc TreasuryPolicies (TreasuryPoliciesRequest) returns (TreasuryPoliciesResponse);
rpc SetTreasuryPolicy (SetTreasuryPolicyRequest) returns (SetTreasuryPolicyResponse);
}
service MessageVerificationService {
rpc VerifyMessage (VerifyMessageRequest) returns (VerifyMessageResponse);
}
service NetworkService {
rpc GetRawBlock (GetRawBlockRequest) returns (GetRawBlockResponse);
}
message TransactionDetails {
message Input {
uint32 index = 1;
uint32 previous_account = 2;
int64 previous_amount = 3;
}
message Output {
uint32 index = 1;
uint32 account = 2;
bool internal = 3;
int64 amount = 4;
string address = 5;
bytes output_script = 6;
}
bytes hash = 1;
bytes transaction = 2;
repeated Input debits = 3;
repeated Output credits = 4;
int64 fee = 5;
int64 timestamp = 6; // May be earlier than a block timestamp, but never later.
enum TransactionType {
REGULAR = 0;
COINBASE = 4;
TICKET_PURCHASE = 1;
VOTE = 2;
REVOCATION = 3;
}
TransactionType transaction_type = 7;
}
message BlockDetails {
bytes hash = 1;
int32 height = 2;
int64 timestamp = 3;
bool approves_parent = 5;
repeated TransactionDetails transactions = 4;
bytes prev_block = 6;
}
message DetachedBlockDetails {
bytes hash = 1;
int32 height = 2;
bytes prev_block = 3;
int64 timestamp = 4;
}
message AccountBalance {
uint32 account = 1;
int64 total_balance = 2;
}
message PingRequest {}
message PingResponse {}
message NetworkRequest {}
message NetworkResponse {
uint32 active_network = 1;
}
message CoinTypeRequest {}
message CoinTypeResponse {
uint32 coin_type = 1;
}
message AccountNumberRequest {
string account_name = 1;
}
message AccountNumberResponse {
uint32 account_number = 1;
}
message AccountsRequest {}
message AccountsResponse {
message Account {
uint32 account_number = 1;
string account_name = 2;
int64 total_balance = 3;
uint32 external_key_count = 4;
uint32 internal_key_count = 5;
uint32 imported_key_count = 6;
bool account_encrypted = 7;
bool account_unlocked = 8;
}
repeated Account accounts = 1;
bytes current_block_hash = 2;
int32 current_block_height = 3;
}
message AddressRequest {
uint32 account = 1;
enum Kind {
BIP0044_EXTERNAL = 0;
BIP0044_INTERNAL = 1;
}
Kind kind = 2;
uint32 index = 3;
}
message AddressResponse {
string address = 1;
string public_key = 2;
}
message RenameAccountRequest {
uint32 account_number = 1;
string new_name = 2;
}
message RenameAccountResponse {}
message RescanRequest {
int32 begin_height = 1;
bytes begin_hash = 2;
}
message RescanResponse {
int32 rescanned_through = 1;
}
message NextAccountRequest {
bytes passphrase = 1;
string account_name = 2;
}
message NextAccountResponse {
uint32 account_number = 1;
}
message NextAddressRequest {
uint32 account = 1;
enum Kind {
BIP0044_EXTERNAL = 0;
BIP0044_INTERNAL = 1;
}
Kind kind = 2;
enum GapPolicy {
GAP_POLICY_UNSPECIFIED = 0;
GAP_POLICY_ERROR = 1;
GAP_POLICY_IGNORE = 2;
GAP_POLICY_WRAP = 3;
}
GapPolicy gap_policy = 3;
}
message NextAddressResponse {
string address = 1;
string public_key = 2;
}
message ImportPrivateKeyRequest {
bytes passphrase = 1;
uint32 account = 2;
string private_key_wif = 3;
bool rescan = 4;
int32 scan_from = 5;
}
message ImportPrivateKeyResponse {
}
message ImportExtendedPublicKeyRequest {
string xpub = 1;
string account_name = 2;
bool rescan = 3;
int32 scan_from = 4;
}
message ImportExtendedPublicKeyResponse {
}
message DumpPrivateKeyRequest {
string address = 1;
}
message DumpPrivateKeyResponse {
string private_key_wif = 1;
}
message BirthBlockRequest {
}
message BirthBlockResponse {
bytes hash = 1;
uint32 height = 2;
}
message ImportVotingAccountFromSeedRequest {
bytes seed = 1;
string name = 2;
bytes passphrase = 3;
bool rescan = 4;
int32 scan_from = 5;
bool discover_usage = 6;
int32 discover_from = 7;
int32 discover_gap_limit = 8;
}
message ImportVotingAccountFromSeedResponse {
uint32 account = 1;
}
message ImportScriptRequest {
bytes passphrase = 1;
bytes script = 2;
bool rescan = 3;
int32 scan_from = 4;
bool require_redeemable = 5;
}
message ImportScriptResponse {
string p2sh_address = 1;
bool redeemable = 2;
}
message BalanceRequest {
uint32 account_number = 1;
int32 required_confirmations = 2;
}
message BalanceResponse {
int64 total = 1;
int64 spendable = 2;
int64 immature_reward = 3;
int64 immature_stake_generation = 4;
int64 locked_by_tickets = 5;
int64 voting_authority = 6;
int64 unconfirmed = 7;
}
message GetTransactionRequest {
bytes transaction_hash = 1;
}
message GetTransactionResponse {
TransactionDetails transaction = 1;
int32 confirmations = 2;
bytes block_hash = 3;
}
message GetTransactionsRequest {
// Optionally specify the starting block from which to begin including all transactions.
// Either the starting block hash or height may be specified, but not both.
// If a block height is specified and is negative, the absolute value becomes the number of
// last blocks to include. That is, given a current chain height of 1000 and a starting block
// height of -3, transaction notifications will be created for blocks 998, 999, and 1000.
// If both options are excluded, transaction results are created for transactions since the
// genesis block.
bytes starting_block_hash = 1;
sint32 starting_block_height = 2;
// Optionally specify the last block that transaction results may appear in.
// Either the ending block hash or height may be specified, but not both.
// If both are excluded, transaction results are created for all transactions
// through the best block, and include all unmined transactions.
bytes ending_block_hash = 3;
int32 ending_block_height = 4;
// Include at least this many of the newest transactions if they exist.
// Cannot be used when the ending block hash is specified.
//
// TODO: remove until spec adds it back in some way.
int32 minimum_recent_transactions = 5;
// Try to include at most this many transactions in the reply
int32 target_transaction_count = 6;
}
message GetTransactionsResponse {
BlockDetails mined_transactions = 1;
repeated TransactionDetails unmined_transactions = 2;
}
message GetTicketRequest {
bytes ticket_hash = 1;
}
message GetTicketsRequest {
bytes starting_block_hash = 1;
sint32 starting_block_height = 2;
bytes ending_block_hash = 3;
int32 ending_block_height = 4;
int32 target_ticket_count = 5;
}
message GetTicketsResponse {
message TicketDetails {
TransactionDetails ticket = 1;
TransactionDetails spender = 2;
enum TicketStatus {
UNKNOWN = 0;
UNMINED = 1;
IMMATURE = 2;
LIVE = 3;
VOTED = 4;
MISSED = 5;
EXPIRED = 6;
REVOKED = 7;
}
TicketStatus ticket_status = 3;
}
message BlockDetails {
bytes hash = 1;
int32 height = 2;
int64 timestamp = 3;
}
TicketDetails ticket = 1;
BlockDetails block = 2;
string vsp_host = 3;
}
message TicketPriceRequest {
}
message TicketPriceResponse {
int64 ticket_price = 1;
int32 height = 2;
}
message StakeInfoRequest {
}
message StakeInfoResponse {
uint32 pool_size = 1;
uint32 all_mempool_tix = 2;
uint32 own_mempool_tix = 3;
uint32 immature = 4;
uint32 live = 5;
uint32 voted = 6;
uint32 missed = 7;
uint32 revoked = 8;
uint32 expired = 9;
int64 total_subsidy = 10;
uint32 unspent = 11;
}
message BlockInfoRequest {
bytes block_hash = 1;
int32 block_height = 2;
}
message BlockInfoResponse {
bytes block_hash = 1;
int32 block_height = 2;
int32 confirmations = 3;
int64 timestamp = 4;
bytes block_header = 5;
bool stake_invalidated = 6;
bool approves_parent = 7;
}
message ChangePassphraseRequest {
enum Key {
PRIVATE = 0;
PUBLIC = 1;
}
Key key = 1;
bytes old_passphrase = 2;
bytes new_passphrase = 3;
}
message ChangePassphraseResponse {}
message FundTransactionRequest {
uint32 account = 1;
int64 target_amount = 2;
int32 required_confirmations = 3;
bool include_immature_coinbases = 4;
bool include_change_script = 5;
}
message FundTransactionResponse {
message PreviousOutput {
bytes transaction_hash = 1;
uint32 output_index = 2;
int64 amount = 3;
bytes pk_script = 4;
int64 receive_time = 5;
bool from_coinbase = 6;
int32 tree = 7;
}
repeated PreviousOutput selected_outputs = 1;
int64 total_amount = 2;
bytes change_pk_script = 3;
}
message UnspentOutputsRequest {
uint32 account = 1;
int64 target_amount = 2;
int32 required_confirmations = 3;
bool include_immature_coinbases = 4;
}
message UnspentOutputResponse {
bytes transaction_hash = 1;
uint32 output_index = 2;
int64 amount = 3;
bytes pk_script = 4;
int64 receive_time = 5;
bool from_coinbase = 6;
int32 tree = 7;
int64 amount_sum = 8;
}
message ConstructTransactionRequest {
message OutputDestination {
string address = 1;
bytes script = 2;
uint32 script_version = 3;
}
message Output {
OutputDestination destination = 1;
int64 amount = 2;
}
enum OutputSelectionAlgorithm {
UNSPECIFIED = 0;
ALL = 1;
}
uint32 source_account = 1;
int32 required_confirmations = 2;
int32 fee_per_kb = 3;
OutputSelectionAlgorithm output_selection_algorithm = 4;
repeated Output non_change_outputs = 5;
OutputDestination change_destination = 6;
}
message ConstructTransactionResponse {
bytes unsigned_transaction = 1;
int64 total_previous_output_amount = 2;
int64 total_output_amount = 3;
uint32 estimated_signed_size = 4;
int32 change_index = 5;
}
message SignTransactionRequest {
reserved 3;
reserved "input_indexes";
message AdditionalScript {
bytes transaction_hash = 1;
uint32 output_index = 2;
int32 tree = 3;
bytes pk_script = 4;
}
bytes passphrase = 1;
bytes serialized_transaction = 2;
// If no indexes are specified, signatures scripts will be added for
// every input. If any input indexes are specified, only those inputs
// will be signed. Rather than returning an incompletely signed
// transaction if any of the inputs to be signed can not be, the RPC
// immediately errors.
// repeated uint32 input_indexes = 3;
repeated AdditionalScript additional_scripts = 4;
}
message SignTransactionResponse {
bytes transaction = 1;
repeated uint32 unsigned_input_indexes = 2;
}
message SignTransactionsRequest {
message AdditionalScript {
bytes transaction_hash = 1;
uint32 output_index = 2;
int32 tree = 3;
bytes pk_script = 4;
}
message UnsignedTransaction {
bytes serialized_transaction = 1;
}
bytes passphrase = 1;
repeated UnsignedTransaction transactions = 2;
repeated AdditionalScript additional_scripts = 3;
}
message SignTransactionsResponse {
message SignedTransaction {
bytes transaction = 1;
repeated uint32 unsigned_input_indexes = 2;
}
repeated SignedTransaction transactions = 1;
}
message CreateSignatureRequest {
bytes passphrase = 1;
string address = 2;
bytes serialized_transaction = 3;
uint32 input_index = 4;
enum SigHashType {
SIGHASH_OLD = 0;
SIGHASH_ALL = 1;
SIGHASH_NONE = 2;
SIGHASH_SINGLE = 3;
SIGHASH_ALLVALUE = 4;
SIGHASH_ANYONECANPAY = 0x80;
}
SigHashType hash_type = 5;
bytes previous_pk_script = 6;
}
message CreateSignatureResponse {
bytes signature = 1;
bytes public_key = 2;
}
message PublishTransactionRequest {
bytes signed_transaction = 1;
}
message PublishTransactionResponse {
bytes transaction_hash = 1;
}
message PublishUnminedTransactionsRequest {}
message PublishUnminedTransactionsResponse {}
message PurchaseTicketsRequest {
bytes passphrase = 1;
uint32 account = 2;
int64 spend_limit = 3;
uint32 required_confirmations = 4;
string ticket_address = 5;
uint32 num_tickets = 6;
string pool_address = 7;
double pool_fees = 8;
uint32 expiry = 9;
int64 tx_fee = 10;
int64 ticket_fee = 11;
bool dont_sign_tx = 12;
string cspp_server = 13;
uint32 mixed_account = 14;
uint32 mixed_account_branch = 15;
uint32 mixed_split_account = 16;
uint32 change_account = 17;
string vsp_host = 18;
string vsp_pubkey = 19;
bool use_voting_account = 20;
uint32 voting_account = 21;
}
message PurchaseTicketsResponse {
repeated bytes ticket_hashes = 1;
repeated bytes tickets = 2;
bytes split_tx = 3;
}
message RevokeTicketRequest {
bytes ticket_hash = 1;
}
message RevokeTicketResponse {}
message RevokeTicketsRequest {
bytes passphrase = 1;
}
message RevokeTicketsResponse {}
message LoadActiveDataFiltersRequest {}
message LoadActiveDataFiltersResponse {}
message SignMessageRequest{
string address = 1;
string message = 2;
bytes passphrase = 3;
}
message SignMessageResponse{
bytes signature = 1;
}
message SignMessagesRequest{
message Message {
string address = 1;
string message = 2;
}
bytes passphrase = 1;
repeated Message messages = 2;
}
message SignMessagesResponse{
message SignReply {
bytes signature = 1;
string error = 2;
}
repeated SignReply replies = 1;
}
message TransactionNotificationsRequest {}
message TransactionNotificationsResponse {
// Sorted by increasing height. This is a repeated field so many new blocks
// in a new best chain can be notified at once during a reorganize.
repeated BlockDetails attached_blocks = 1;
// If there was a chain reorganize, there may have been blocks with wallet
// transactions that are no longer in the best chain. These are those
// block's hashes.
repeated bytes detached_blocks = 2;
// Any new unmined transactions are included here. These unmined transactions
// refer to the current best chain, so transactions from detached blocks may
// be moved to mempool and included here if they are not mined or double spent
// in the new chain. Additionally, if no new blocks were attached but a relevant
// unmined transaction is seen by the wallet, it will be reported here.
repeated TransactionDetails unmined_transactions = 3;
// Instead of notifying all of the removed unmined transactions,
// just send all of the current hashes.
repeated bytes unmined_transaction_hashes = 4;
repeated DetachedBlockDetails detached_block_headers = 5;
}
message AccountNotificationsRequest {}
message AccountNotificationsResponse {
uint32 account_number = 1;
string account_name = 2;
uint32 external_key_count = 3;
uint32 internal_key_count = 4;
uint32 imported_key_count = 5;
}
message ConfirmationNotificationsRequest {
repeated bytes tx_hashes = 1;
int32 stop_after = 2;
}
message ConfirmationNotificationsResponse {
message TransactionConfirmations {
bytes tx_hash = 1;
int32 confirmations = 2;
bytes block_hash = 3;
int32 block_height = 4;
}
repeated TransactionConfirmations confirmations = 1;
}
message CreateWalletRequest {
bytes public_passphrase = 1;
bytes private_passphrase = 2;
bytes seed = 3;
bool set_birth_time = 4;
int64 birth_time = 5;
bool set_birth_height = 6;
uint32 birth_height = 7;
}
message CreateWalletResponse {}
message CreateWatchingOnlyWalletRequest {
string extended_pub_key = 1;
bytes public_passphrase = 2;
}
message CreateWatchingOnlyWalletResponse {}
message OpenWalletRequest {
bytes public_passphrase = 1;
}
message OpenWalletResponse {
bool watching_only = 1;
}
message CloseWalletRequest {}
message CloseWalletResponse {}
message WalletExistsRequest {}
message WalletExistsResponse {
bool exists = 1;
}
message StartConsensusRpcRequest {
string network_address = 1;
string username = 2;
bytes password = 3;
bytes certificate = 4;
}
message StartConsensusRpcResponse {}
message DiscoverAddressesRequest {
bool discover_accounts = 1;
bytes private_passphrase = 2;
bytes starting_block_hash = 3;
}
message DiscoverAddressesResponse {}
message FetchMissingCFiltersRequest {}
message FetchMissingCFiltersResponse {}
message SubscribeToBlockNotificationsRequest {}
message SubscribeToBlockNotificationsResponse {}
message FetchHeadersRequest {}
message FetchHeadersResponse {
uint32 fetched_headers_count = 1;
bytes first_new_block_hash = 2;
int32 first_new_block_height = 3;
bytes main_chain_tip_block_hash = 4;
int32 main_chain_tip_block_height = 5;
}
enum SyncNotificationType {
SYNCED = 0;
UNSYNCED = 1;
PEER_CONNECTED = 2;
PEER_DISCONNECTED = 3;
FETCHED_MISSING_CFILTERS_STARTED = 4;
FETCHED_MISSING_CFILTERS_PROGRESS = 5;
FETCHED_MISSING_CFILTERS_FINISHED = 6;
FETCHED_HEADERS_STARTED = 7;
FETCHED_HEADERS_PROGRESS = 8;
FETCHED_HEADERS_FINISHED = 9;
DISCOVER_ADDRESSES_STARTED = 10;
DISCOVER_ADDRESSES_FINISHED = 11;
RESCAN_STARTED = 12;
RESCAN_PROGRESS = 13;
RESCAN_FINISHED = 14;
}
message FetchHeadersNotification {
int32 fetched_headers_count = 1;
int64 last_header_time = 2;
}
message FetchMissingCFiltersNotification {
int32 fetched_cfilters_start_height = 1;
int32 fetched_cfilters_end_height = 2;
}
message RescanProgressNotification {
int32 rescanned_through = 1;
}
message PeerNotification {
int32 peer_count = 1;
string address = 2;
}
message RpcSyncRequest {
string network_address = 1;
string username = 2;
bytes password = 3;
bytes certificate = 4;
bool discover_accounts = 5;
bytes private_passphrase = 6;
}
message RpcSyncResponse {
bool synced = 1;
SyncNotificationType notification_type = 2;
FetchHeadersNotification fetch_headers = 3;
FetchMissingCFiltersNotification fetch_missing_cfilters = 4;
RescanProgressNotification rescan_progress = 5;
PeerNotification peer_information = 6;
}
message SpvSyncRequest {
bool discover_accounts = 1;
bytes private_passphrase = 2;
repeated string spv_connect = 3;
}
message SpvSyncResponse {
bool synced = 1;
SyncNotificationType notification_type = 2;
FetchHeadersNotification fetch_headers = 3;
FetchMissingCFiltersNotification fetch_missing_cfilters = 4;
RescanProgressNotification rescan_progress = 5;
PeerNotification peer_information = 6;
}
message RescanPointRequest {}
message RescanPointResponse {
bytes rescan_point_hash = 1;
}
message GenerateRandomSeedRequest {
uint32 seed_length = 1;
}
message GenerateRandomSeedResponse {
bytes seed_bytes = 1;
string seed_hex = 2;
string seed_mnemonic = 3;
}
message DecodeSeedRequest {
string user_input = 1;
}
message DecodeSeedResponse {
bytes decoded_seed = 1;
}
message RunTicketBuyerRequest {
bytes passphrase = 1;
uint32 account = 2;
uint32 voting_account = 3;
int64 balance_to_maintain = 4;
string voting_address = 5;
string pool_address = 6;
double pool_fees = 7;
string vsp_host = 8;
string vsp_pubkey = 9;
int32 limit = 10;
string cspp_server = 11;
uint32 mixed_account = 12;
uint32 mixed_account_branch = 13;
uint32 mixed_split_account = 14;
uint32 change_account = 15;
}
message RunTicketBuyerResponse {}
message RunAccountMixerRequest {
bytes passphrase = 1;
uint32 mixed_account = 2;
uint32 mixed_account_branch = 3;
uint32 change_account = 4;
string cspp_server = 5;
}
message RunAccountMixerResponse {}
message StartAutoBuyerRequest {
bytes passphrase = 1;
uint32 account = 2;
int64 balance_to_maintain = 3;
int64 max_fee_per_kb = 4;
double max_price_relative = 5;
int64 max_price_absolute = 6;
string voting_address = 7;
string pool_address = 8;
double pool_fees = 9;
int64 max_per_block = 10;
}
message StartAutoBuyerResponse {}
message StopAutoBuyerRequest {}
message StopAutoBuyerResponse {}
message TicketBuyerConfigRequest{
}
message TicketBuyerConfigResponse{
uint32 account = 1;
string avg_price_mode = 2;
int64 avg_priceVWAP_delta = 3;
int64 balance_to_maintain = 4;
int64 blocks_to_avg = 5;
bool dont_wait_for_tickets = 6;
int64 expiry_delta = 7;
string fee_source = 8;
double fee_target_scaling = 9;
int64 min_fee = 10;
int64 max_fee = 12;
int64 max_per_block = 13;
int64 max_price_absolute = 14;
double max_price_relative = 15;
int64 max_in_mempool = 17;
string pool_address = 18;
double pool_fees = 19;
bool spread_ticket_purchases = 20;
string voting_address = 21;
int64 tx_fee = 22;
}
message SetAccountRequest{
uint32 account = 1;
}
message SetAccountResponse{}
message SetBalanceToMaintainRequest{
int64 balance_to_maintain = 1;
}
message SetBalanceToMaintainResponse{}
message SetMaxFeeRequest{
int64 max_fee_per_kb = 1;
}
message SetMaxFeeResponse{}
message SetMaxPriceRelativeRequest{
double max_price_relative = 1;
}
message SetMaxPriceRelativeResponse{}