decred.org/dcrwallet/v3@v3.1.0/rpc/api.proto (about) 1 syntax = "proto3"; 2 3 package walletrpc; 4 5 option go_package = "decred.org/dcrwallet/rpc/walletrpc"; 6 7 service VersionService { 8 rpc Version (VersionRequest) returns (VersionResponse); 9 } 10 11 message VersionRequest {} 12 message VersionResponse { 13 string version_string = 1; 14 uint32 major = 2; 15 uint32 minor = 3; 16 uint32 patch = 4; 17 string prerelease = 5; 18 string build_metadata = 6; 19 } 20 21 service WalletService { 22 // Queries 23 rpc Ping (PingRequest) returns (PingResponse); 24 rpc Network (NetworkRequest) returns (NetworkResponse); 25 rpc CoinType (CoinTypeRequest) returns (CoinTypeResponse); 26 rpc AccountNumber (AccountNumberRequest) returns (AccountNumberResponse); 27 rpc Accounts (AccountsRequest) returns (AccountsResponse); 28 rpc Address (AddressRequest) returns (AddressResponse); 29 rpc Balance (BalanceRequest) returns (BalanceResponse); 30 rpc GetAccountExtendedPubKey (GetAccountExtendedPubKeyRequest) returns (GetAccountExtendedPubKeyResponse); 31 rpc GetAccountExtendedPrivKey (GetAccountExtendedPrivKeyRequest) returns (GetAccountExtendedPrivKeyResponse); 32 rpc GetTransaction (GetTransactionRequest) returns (GetTransactionResponse); 33 rpc GetTransactions (GetTransactionsRequest) returns (stream GetTransactionsResponse); 34 rpc GetTicket (GetTicketRequest) returns (GetTicketsResponse); 35 rpc GetTickets (GetTicketsRequest) returns (stream GetTicketsResponse); 36 rpc TicketPrice (TicketPriceRequest) returns (TicketPriceResponse); 37 rpc StakeInfo (StakeInfoRequest) returns (StakeInfoResponse); 38 rpc BlockInfo (BlockInfoRequest) returns (BlockInfoResponse); 39 rpc BestBlock (BestBlockRequest) returns (BestBlockResponse); 40 rpc Spender (SpenderRequest) returns (SpenderResponse); 41 rpc GetCFilters (GetCFiltersRequest) returns (stream GetCFiltersResponse); 42 rpc GetPeerInfo(GetPeerInfoRequest) returns (GetPeerInfoResponse); 43 rpc DumpPrivateKey (DumpPrivateKeyRequest) returns (DumpPrivateKeyResponse); 44 45 // Notifications 46 rpc TransactionNotifications (TransactionNotificationsRequest) returns (stream TransactionNotificationsResponse); 47 rpc AccountNotifications (AccountNotificationsRequest) returns (stream AccountNotificationsResponse); 48 rpc ConfirmationNotifications (stream ConfirmationNotificationsRequest) returns (stream ConfirmationNotificationsResponse); 49 50 // Control 51 rpc ChangePassphrase (ChangePassphraseRequest) returns (ChangePassphraseResponse); 52 rpc RenameAccount (RenameAccountRequest) returns (RenameAccountResponse); 53 rpc Rescan (RescanRequest) returns (stream RescanResponse); 54 rpc NextAccount (NextAccountRequest) returns (NextAccountResponse); 55 rpc NextAddress (NextAddressRequest) returns (NextAddressResponse); 56 rpc ImportPrivateKey (ImportPrivateKeyRequest) returns (ImportPrivateKeyResponse); 57 rpc ImportExtendedPublicKey (ImportExtendedPublicKeyRequest) returns (ImportExtendedPublicKeyResponse); 58 rpc ImportVotingAccountFromSeed (ImportVotingAccountFromSeedRequest) returns (ImportVotingAccountFromSeedResponse); 59 rpc ImportScript(ImportScriptRequest) returns (ImportScriptResponse); 60 rpc FundTransaction (FundTransactionRequest) returns (FundTransactionResponse); 61 rpc UnspentOutputs (UnspentOutputsRequest) returns (stream UnspentOutputResponse); 62 rpc ConstructTransaction (ConstructTransactionRequest) returns (ConstructTransactionResponse); 63 rpc SignTransaction (SignTransactionRequest) returns (SignTransactionResponse); 64 rpc SignTransactions (SignTransactionsRequest) returns (SignTransactionsResponse); 65 rpc CreateSignature (CreateSignatureRequest) returns (CreateSignatureResponse); 66 rpc PublishTransaction (PublishTransactionRequest) returns (PublishTransactionResponse); 67 rpc PublishUnminedTransactions (PublishUnminedTransactionsRequest) returns (PublishUnminedTransactionsResponse); 68 rpc PurchaseTickets(PurchaseTicketsRequest) returns (PurchaseTicketsResponse); 69 rpc RevokeTicket(RevokeTicketRequest) returns (RevokeTicketResponse); 70 rpc RevokeTickets(RevokeTicketsRequest) returns (RevokeTicketsResponse); 71 rpc LoadActiveDataFilters(LoadActiveDataFiltersRequest) returns (LoadActiveDataFiltersResponse); 72 rpc SignMessage (SignMessageRequest) returns (SignMessageResponse); 73 rpc SignMessages (SignMessagesRequest) returns (SignMessagesResponse); 74 rpc ValidateAddress (ValidateAddressRequest) returns (ValidateAddressResponse); 75 rpc CommittedTickets (CommittedTicketsRequest) returns (CommittedTicketsResponse); 76 rpc SweepAccount (SweepAccountRequest) returns (SweepAccountResponse); 77 rpc AbandonTransaction (AbandonTransactionRequest) returns (AbandonTransactionResponse); 78 rpc SignHashes (SignHashesRequest) returns (SignHashesResponse); 79 rpc GetCoinjoinOutputspByAcct (GetCoinjoinOutputspByAcctRequest) returns (GetCoinjoinOutputspByAcctResponse); 80 rpc SetAccountPassphrase (SetAccountPassphraseRequest) returns (SetAccountPassphraseResponse); 81 rpc UnlockAccount (UnlockAccountRequest) returns (UnlockAccountResponse); 82 rpc LockAccount (LockAccountRequest) returns (LockAccountResponse); 83 rpc UnlockWallet (UnlockWalletRequest) returns (UnlockWalletResponse); 84 rpc LockWallet (LockWalletRequest) returns (LockWalletResponse); 85 rpc AccountUnlocked (AccountUnlockedRequest) returns (AccountUnlockedResponse); 86 rpc SyncVSPFailedTickets(SyncVSPTicketsRequest) returns (SyncVSPTicketsResponse); 87 rpc GetVSPTicketsByFeeStatus (GetVSPTicketsByFeeStatusRequest) returns (GetVSPTicketsByFeeStatusResponse); 88 rpc ProcessManagedTickets (ProcessManagedTicketsRequest) returns (ProcessManagedTicketsResponse); 89 rpc ProcessUnmanagedTickets (ProcessUnmanagedTicketsRequest) returns (ProcessUnmanagedTicketsResponse); 90 rpc SetVspdVoteChoices (SetVspdVoteChoicesRequest) returns (SetVspdVoteChoicesResponse); 91 rpc GetTrackedVSPTickets (GetTrackedVSPTicketsRequest) returns (GetTrackedVSPTicketsResponse); 92 rpc DiscoverUsage (DiscoverUsageRequest) returns (DiscoverUsageResponse); 93 } 94 95 service WalletLoaderService { 96 rpc WalletExists (WalletExistsRequest) returns (WalletExistsResponse); 97 rpc CreateWallet (CreateWalletRequest) returns (CreateWalletResponse); 98 rpc CreateWatchingOnlyWallet (CreateWatchingOnlyWalletRequest) returns (CreateWatchingOnlyWalletResponse); 99 rpc OpenWallet (OpenWalletRequest) returns (OpenWalletResponse); 100 rpc CloseWallet (CloseWalletRequest) returns (CloseWalletResponse); 101 rpc SpvSync(SpvSyncRequest) returns (stream SpvSyncResponse); 102 rpc RpcSync(RpcSyncRequest) returns (stream RpcSyncResponse); 103 rpc RescanPoint(RescanPointRequest) returns (RescanPointResponse); 104 } 105 service AccountMixerService { 106 rpc RunAccountMixer (RunAccountMixerRequest) returns (stream RunAccountMixerResponse); 107 } 108 service TicketBuyerV2Service { 109 rpc RunTicketBuyer (RunTicketBuyerRequest) returns (stream RunTicketBuyerResponse); 110 } 111 112 service TicketBuyerService { 113 rpc StartAutoBuyer (StartAutoBuyerRequest) returns (StartAutoBuyerResponse); 114 rpc StopAutoBuyer (StopAutoBuyerRequest) returns (StopAutoBuyerResponse); 115 rpc TicketBuyerConfig (TicketBuyerConfigRequest) returns (TicketBuyerConfigResponse); 116 rpc SetAccount (SetAccountRequest) returns (SetAccountResponse); 117 rpc SetBalanceToMaintain (SetBalanceToMaintainRequest) returns (SetBalanceToMaintainResponse); 118 rpc SetMaxFee (SetMaxFeeRequest) returns (SetMaxFeeResponse); 119 rpc SetMaxPriceRelative (SetMaxPriceRelativeRequest) returns (SetMaxPriceRelativeResponse); 120 rpc SetMaxPriceAbsolute (SetMaxPriceAbsoluteRequest) returns (SetMaxPriceAbsoluteResponse); 121 rpc SetVotingAddress (SetVotingAddressRequest) returns (SetVotingAddressResponse); 122 rpc SetPoolAddress (SetPoolAddressRequest) returns (SetPoolAddressResponse); 123 rpc SetPoolFees (SetPoolFeesRequest) returns (SetPoolFeesResponse); 124 rpc SetMaxPerBlock (SetMaxPerBlockRequest) returns (SetMaxPerBlockResponse); 125 } 126 127 service SeedService { 128 rpc GenerateRandomSeed (GenerateRandomSeedRequest) returns (GenerateRandomSeedResponse); 129 rpc DecodeSeed (DecodeSeedRequest) returns (DecodeSeedResponse); 130 } 131 132 service AgendaService { 133 rpc Agendas (AgendasRequest) returns (AgendasResponse); 134 } 135 136 service VotingService { 137 rpc VoteChoices (VoteChoicesRequest) returns (VoteChoicesResponse); 138 rpc SetVoteChoices (SetVoteChoicesRequest) returns (SetVoteChoicesResponse); 139 rpc TSpendPolicies (TSpendPoliciesRequest) returns (TSpendPoliciesResponse); 140 rpc SetTSpendPolicy (SetTSpendPolicyRequest) returns (SetTSpendPolicyResponse); 141 rpc TreasuryPolicies (TreasuryPoliciesRequest) returns (TreasuryPoliciesResponse); 142 rpc SetTreasuryPolicy (SetTreasuryPolicyRequest) returns (SetTreasuryPolicyResponse); 143 } 144 145 service MessageVerificationService { 146 rpc VerifyMessage (VerifyMessageRequest) returns (VerifyMessageResponse); 147 } 148 149 service NetworkService { 150 rpc GetRawBlock (GetRawBlockRequest) returns (GetRawBlockResponse); 151 } 152 153 message TransactionDetails { 154 message Input { 155 uint32 index = 1; 156 uint32 previous_account = 2; 157 int64 previous_amount = 3; 158 } 159 message Output { 160 uint32 index = 1; 161 uint32 account = 2; 162 bool internal = 3; 163 int64 amount = 4; 164 string address = 5; 165 bytes output_script = 6; 166 } 167 bytes hash = 1; 168 bytes transaction = 2; 169 repeated Input debits = 3; 170 repeated Output credits = 4; 171 int64 fee = 5; 172 int64 timestamp = 6; // May be earlier than a block timestamp, but never later. 173 enum TransactionType { 174 REGULAR = 0; 175 COINBASE = 4; 176 TICKET_PURCHASE = 1; 177 VOTE = 2; 178 REVOCATION = 3; 179 } 180 TransactionType transaction_type = 7; 181 } 182 183 message BlockDetails { 184 bytes hash = 1; 185 int32 height = 2; 186 int64 timestamp = 3; 187 bool approves_parent = 5; 188 repeated TransactionDetails transactions = 4; 189 bytes prev_block = 6; 190 } 191 192 message DetachedBlockDetails { 193 bytes hash = 1; 194 int32 height = 2; 195 bytes prev_block = 3; 196 int64 timestamp = 4; 197 } 198 199 message AccountBalance { 200 uint32 account = 1; 201 int64 total_balance = 2; 202 } 203 204 message PingRequest {} 205 message PingResponse {} 206 207 message NetworkRequest {} 208 message NetworkResponse { 209 uint32 active_network = 1; 210 } 211 212 message CoinTypeRequest {} 213 message CoinTypeResponse { 214 uint32 coin_type = 1; 215 } 216 217 message AccountNumberRequest { 218 string account_name = 1; 219 } 220 message AccountNumberResponse { 221 uint32 account_number = 1; 222 } 223 224 message AccountsRequest {} 225 message AccountsResponse { 226 message Account { 227 uint32 account_number = 1; 228 string account_name = 2; 229 int64 total_balance = 3; 230 uint32 external_key_count = 4; 231 uint32 internal_key_count = 5; 232 uint32 imported_key_count = 6; 233 bool account_encrypted = 7; 234 bool account_unlocked = 8; 235 } 236 repeated Account accounts = 1; 237 bytes current_block_hash = 2; 238 int32 current_block_height = 3; 239 } 240 241 message AddressRequest { 242 uint32 account = 1; 243 enum Kind { 244 BIP0044_EXTERNAL = 0; 245 BIP0044_INTERNAL = 1; 246 } 247 Kind kind = 2; 248 uint32 index = 3; 249 } 250 message AddressResponse { 251 string address = 1; 252 string public_key = 2; 253 } 254 255 256 message RenameAccountRequest { 257 uint32 account_number = 1; 258 string new_name = 2; 259 } 260 message RenameAccountResponse {} 261 262 message RescanRequest { 263 int32 begin_height = 1; 264 bytes begin_hash = 2; 265 } 266 message RescanResponse { 267 int32 rescanned_through = 1; 268 } 269 270 message NextAccountRequest { 271 bytes passphrase = 1; 272 string account_name = 2; 273 } 274 message NextAccountResponse { 275 uint32 account_number = 1; 276 } 277 278 message NextAddressRequest { 279 uint32 account = 1; 280 enum Kind { 281 BIP0044_EXTERNAL = 0; 282 BIP0044_INTERNAL = 1; 283 } 284 Kind kind = 2; 285 enum GapPolicy { 286 GAP_POLICY_UNSPECIFIED = 0; 287 GAP_POLICY_ERROR = 1; 288 GAP_POLICY_IGNORE = 2; 289 GAP_POLICY_WRAP = 3; 290 } 291 GapPolicy gap_policy = 3; 292 } 293 message NextAddressResponse { 294 string address = 1; 295 string public_key = 2; 296 } 297 298 message ImportPrivateKeyRequest { 299 bytes passphrase = 1; 300 uint32 account = 2; 301 string private_key_wif = 3; 302 bool rescan = 4; 303 int32 scan_from = 5; 304 } 305 message ImportPrivateKeyResponse { 306 } 307 308 message ImportExtendedPublicKeyRequest { 309 string xpub = 1; 310 string account_name = 2; 311 bool rescan = 3; 312 int32 scan_from = 4; 313 } 314 message ImportExtendedPublicKeyResponse { 315 } 316 317 message DumpPrivateKeyRequest { 318 string address = 1; 319 } 320 message DumpPrivateKeyResponse { 321 string private_key_wif = 1; 322 } 323 324 message ImportVotingAccountFromSeedRequest { 325 bytes seed = 1; 326 string name = 2; 327 bytes passphrase = 3; 328 bool rescan = 4; 329 int32 scan_from = 5; 330 bool discover_usage = 6; 331 int32 discover_from = 7; 332 int32 discover_gap_limit = 8; 333 } 334 message ImportVotingAccountFromSeedResponse { 335 uint32 account = 1; 336 } 337 338 message ImportScriptRequest { 339 bytes passphrase = 1; 340 bytes script = 2; 341 bool rescan = 3; 342 int32 scan_from = 4; 343 bool require_redeemable = 5; 344 } 345 message ImportScriptResponse { 346 string p2sh_address = 1; 347 bool redeemable = 2; 348 } 349 350 message BalanceRequest { 351 uint32 account_number = 1; 352 int32 required_confirmations = 2; 353 } 354 message BalanceResponse { 355 int64 total = 1; 356 int64 spendable = 2; 357 int64 immature_reward = 3; 358 int64 immature_stake_generation = 4; 359 int64 locked_by_tickets = 5; 360 int64 voting_authority = 6; 361 int64 unconfirmed = 7; 362 } 363 364 message GetTransactionRequest { 365 bytes transaction_hash = 1; 366 } 367 message GetTransactionResponse { 368 TransactionDetails transaction = 1; 369 int32 confirmations = 2; 370 bytes block_hash = 3; 371 } 372 373 message GetTransactionsRequest { 374 // Optionally specify the starting block from which to begin including all transactions. 375 // Either the starting block hash or height may be specified, but not both. 376 // If a block height is specified and is negative, the absolute value becomes the number of 377 // last blocks to include. That is, given a current chain height of 1000 and a starting block 378 // height of -3, transaction notifications will be created for blocks 998, 999, and 1000. 379 // If both options are excluded, transaction results are created for transactions since the 380 // genesis block. 381 bytes starting_block_hash = 1; 382 sint32 starting_block_height = 2; 383 384 // Optionally specify the last block that transaction results may appear in. 385 // Either the ending block hash or height may be specified, but not both. 386 // If both are excluded, transaction results are created for all transactions 387 // through the best block, and include all unmined transactions. 388 bytes ending_block_hash = 3; 389 int32 ending_block_height = 4; 390 391 // Include at least this many of the newest transactions if they exist. 392 // Cannot be used when the ending block hash is specified. 393 // 394 // TODO: remove until spec adds it back in some way. 395 int32 minimum_recent_transactions = 5; 396 397 // Try to include at most this many transactions in the reply 398 int32 target_transaction_count = 6; 399 } 400 message GetTransactionsResponse { 401 BlockDetails mined_transactions = 1; 402 repeated TransactionDetails unmined_transactions = 2; 403 } 404 405 message GetTicketRequest { 406 bytes ticket_hash = 1; 407 } 408 message GetTicketsRequest { 409 bytes starting_block_hash = 1; 410 sint32 starting_block_height = 2; 411 bytes ending_block_hash = 3; 412 int32 ending_block_height = 4; 413 int32 target_ticket_count = 5; 414 } 415 message GetTicketsResponse { 416 message TicketDetails { 417 TransactionDetails ticket = 1; 418 TransactionDetails spender = 2; 419 enum TicketStatus { 420 UNKNOWN = 0; 421 UNMINED = 1; 422 IMMATURE = 2; 423 LIVE = 3; 424 VOTED = 4; 425 MISSED = 5; 426 EXPIRED = 6; 427 REVOKED = 7; 428 } 429 TicketStatus ticket_status = 3; 430 } 431 message BlockDetails { 432 bytes hash = 1; 433 int32 height = 2; 434 int64 timestamp = 3; 435 } 436 TicketDetails ticket = 1; 437 BlockDetails block = 2; 438 string vsp_host = 3; 439 } 440 441 message TicketPriceRequest { 442 } 443 message TicketPriceResponse { 444 int64 ticket_price = 1; 445 int32 height = 2; 446 } 447 448 message StakeInfoRequest { 449 } 450 message StakeInfoResponse { 451 uint32 pool_size = 1; 452 uint32 all_mempool_tix = 2; 453 uint32 own_mempool_tix = 3; 454 uint32 immature = 4; 455 uint32 live = 5; 456 uint32 voted = 6; 457 uint32 missed = 7; 458 uint32 revoked = 8; 459 uint32 expired = 9; 460 int64 total_subsidy = 10; 461 uint32 unspent = 11; 462 } 463 464 message BlockInfoRequest { 465 bytes block_hash = 1; 466 int32 block_height = 2; 467 } 468 message BlockInfoResponse { 469 bytes block_hash = 1; 470 int32 block_height = 2; 471 int32 confirmations = 3; 472 int64 timestamp = 4; 473 bytes block_header = 5; 474 bool stake_invalidated = 6; 475 bool approves_parent = 7; 476 } 477 478 message ChangePassphraseRequest { 479 enum Key { 480 PRIVATE = 0; 481 PUBLIC = 1; 482 } 483 Key key = 1; 484 bytes old_passphrase = 2; 485 bytes new_passphrase = 3; 486 } 487 message ChangePassphraseResponse {} 488 489 message FundTransactionRequest { 490 uint32 account = 1; 491 int64 target_amount = 2; 492 int32 required_confirmations = 3; 493 bool include_immature_coinbases = 4; 494 bool include_change_script = 5; 495 } 496 message FundTransactionResponse { 497 message PreviousOutput { 498 bytes transaction_hash = 1; 499 uint32 output_index = 2; 500 int64 amount = 3; 501 bytes pk_script = 4; 502 int64 receive_time = 5; 503 bool from_coinbase = 6; 504 int32 tree = 7; 505 } 506 repeated PreviousOutput selected_outputs = 1; 507 int64 total_amount = 2; 508 bytes change_pk_script = 3; 509 } 510 511 message UnspentOutputsRequest { 512 uint32 account = 1; 513 int64 target_amount = 2; 514 int32 required_confirmations = 3; 515 bool include_immature_coinbases = 4; 516 } 517 message UnspentOutputResponse { 518 bytes transaction_hash = 1; 519 uint32 output_index = 2; 520 int64 amount = 3; 521 bytes pk_script = 4; 522 int64 receive_time = 5; 523 bool from_coinbase = 6; 524 int32 tree = 7; 525 int64 amount_sum = 8; 526 } 527 528 message ConstructTransactionRequest { 529 message OutputDestination { 530 string address = 1; 531 532 bytes script = 2; 533 uint32 script_version = 3; 534 } 535 message Output { 536 OutputDestination destination = 1; 537 int64 amount = 2; 538 } 539 enum OutputSelectionAlgorithm { 540 UNSPECIFIED = 0; 541 ALL = 1; 542 } 543 uint32 source_account = 1; 544 int32 required_confirmations = 2; 545 int32 fee_per_kb = 3; 546 OutputSelectionAlgorithm output_selection_algorithm = 4; 547 repeated Output non_change_outputs = 5; 548 OutputDestination change_destination = 6; 549 } 550 message ConstructTransactionResponse { 551 bytes unsigned_transaction = 1; 552 int64 total_previous_output_amount = 2; 553 int64 total_output_amount = 3; 554 uint32 estimated_signed_size = 4; 555 int32 change_index = 5; 556 } 557 558 message SignTransactionRequest { 559 reserved 3; 560 reserved "input_indexes"; 561 message AdditionalScript { 562 bytes transaction_hash = 1; 563 uint32 output_index = 2; 564 int32 tree = 3; 565 bytes pk_script = 4; 566 } 567 bytes passphrase = 1; 568 bytes serialized_transaction = 2; 569 // If no indexes are specified, signatures scripts will be added for 570 // every input. If any input indexes are specified, only those inputs 571 // will be signed. Rather than returning an incompletely signed 572 // transaction if any of the inputs to be signed can not be, the RPC 573 // immediately errors. 574 // repeated uint32 input_indexes = 3; 575 repeated AdditionalScript additional_scripts = 4; 576 } 577 message SignTransactionResponse { 578 bytes transaction = 1; 579 repeated uint32 unsigned_input_indexes = 2; 580 } 581 582 message SignTransactionsRequest { 583 message AdditionalScript { 584 bytes transaction_hash = 1; 585 uint32 output_index = 2; 586 int32 tree = 3; 587 bytes pk_script = 4; 588 } 589 message UnsignedTransaction { 590 bytes serialized_transaction = 1; 591 } 592 593 bytes passphrase = 1; 594 repeated UnsignedTransaction transactions = 2; 595 repeated AdditionalScript additional_scripts = 3; 596 } 597 message SignTransactionsResponse { 598 message SignedTransaction { 599 bytes transaction = 1; 600 repeated uint32 unsigned_input_indexes = 2; 601 } 602 repeated SignedTransaction transactions = 1; 603 } 604 605 message CreateSignatureRequest { 606 bytes passphrase = 1; 607 string address = 2; 608 bytes serialized_transaction = 3; 609 uint32 input_index = 4; 610 enum SigHashType { 611 SIGHASH_OLD = 0; 612 SIGHASH_ALL = 1; 613 SIGHASH_NONE = 2; 614 SIGHASH_SINGLE = 3; 615 SIGHASH_ALLVALUE = 4; 616 SIGHASH_ANYONECANPAY = 0x80; 617 } 618 SigHashType hash_type = 5; 619 bytes previous_pk_script = 6; 620 } 621 message CreateSignatureResponse { 622 bytes signature = 1; 623 bytes public_key = 2; 624 } 625 626 message PublishTransactionRequest { 627 bytes signed_transaction = 1; 628 } 629 message PublishTransactionResponse { 630 bytes transaction_hash = 1; 631 } 632 633 message PublishUnminedTransactionsRequest {} 634 message PublishUnminedTransactionsResponse {} 635 636 message PurchaseTicketsRequest { 637 bytes passphrase = 1; 638 uint32 account = 2; 639 int64 spend_limit = 3; 640 uint32 required_confirmations = 4; 641 string ticket_address = 5; 642 uint32 num_tickets = 6; 643 string pool_address = 7; 644 double pool_fees = 8; 645 uint32 expiry = 9; 646 int64 tx_fee = 10; 647 int64 ticket_fee = 11; 648 bool dont_sign_tx = 12; 649 string cspp_server = 13; 650 uint32 mixed_account = 14; 651 uint32 mixed_account_branch = 15; 652 uint32 mixed_split_account = 16; 653 uint32 change_account = 17; 654 string vsp_host = 18; 655 string vsp_pubkey = 19; 656 bool use_voting_account = 20; 657 uint32 voting_account = 21; 658 } 659 message PurchaseTicketsResponse { 660 repeated bytes ticket_hashes = 1; 661 repeated bytes tickets = 2; 662 bytes split_tx = 3; 663 } 664 665 message RevokeTicketRequest { 666 bytes ticket_hash = 1; 667 } 668 message RevokeTicketResponse {} 669 670 message RevokeTicketsRequest { 671 bytes passphrase = 1; 672 } 673 message RevokeTicketsResponse {} 674 675 message LoadActiveDataFiltersRequest {} 676 message LoadActiveDataFiltersResponse {} 677 678 message SignMessageRequest{ 679 string address = 1; 680 string message = 2; 681 bytes passphrase = 3; 682 } 683 message SignMessageResponse{ 684 bytes signature = 1; 685 } 686 687 message SignMessagesRequest{ 688 message Message { 689 string address = 1; 690 string message = 2; 691 } 692 bytes passphrase = 1; 693 repeated Message messages = 2; 694 } 695 message SignMessagesResponse{ 696 message SignReply { 697 bytes signature = 1; 698 string error = 2; 699 } 700 repeated SignReply replies = 1; 701 } 702 703 message TransactionNotificationsRequest {} 704 message TransactionNotificationsResponse { 705 // Sorted by increasing height. This is a repeated field so many new blocks 706 // in a new best chain can be notified at once during a reorganize. 707 repeated BlockDetails attached_blocks = 1; 708 709 // If there was a chain reorganize, there may have been blocks with wallet 710 // transactions that are no longer in the best chain. These are those 711 // block's hashes. 712 repeated bytes detached_blocks = 2; 713 714 // Any new unmined transactions are included here. These unmined transactions 715 // refer to the current best chain, so transactions from detached blocks may 716 // be moved to mempool and included here if they are not mined or double spent 717 // in the new chain. Additionally, if no new blocks were attached but a relevant 718 // unmined transaction is seen by the wallet, it will be reported here. 719 repeated TransactionDetails unmined_transactions = 3; 720 721 // Instead of notifying all of the removed unmined transactions, 722 // just send all of the current hashes. 723 repeated bytes unmined_transaction_hashes = 4; 724 725 repeated DetachedBlockDetails detached_block_headers = 5; 726 } 727 728 message AccountNotificationsRequest {} 729 message AccountNotificationsResponse { 730 uint32 account_number = 1; 731 string account_name = 2; 732 uint32 external_key_count = 3; 733 uint32 internal_key_count = 4; 734 uint32 imported_key_count = 5; 735 } 736 737 message ConfirmationNotificationsRequest { 738 repeated bytes tx_hashes = 1; 739 int32 stop_after = 2; 740 } 741 message ConfirmationNotificationsResponse { 742 message TransactionConfirmations { 743 bytes tx_hash = 1; 744 int32 confirmations = 2; 745 bytes block_hash = 3; 746 int32 block_height = 4; 747 } 748 repeated TransactionConfirmations confirmations = 1; 749 } 750 751 message CreateWalletRequest { 752 bytes public_passphrase = 1; 753 bytes private_passphrase = 2; 754 bytes seed = 3; 755 } 756 message CreateWalletResponse {} 757 758 message CreateWatchingOnlyWalletRequest { 759 string extended_pub_key = 1; 760 bytes public_passphrase = 2; 761 } 762 message CreateWatchingOnlyWalletResponse {} 763 764 message OpenWalletRequest { 765 bytes public_passphrase = 1; 766 } 767 message OpenWalletResponse { 768 bool watching_only = 1; 769 } 770 771 message CloseWalletRequest {} 772 message CloseWalletResponse {} 773 774 message WalletExistsRequest {} 775 message WalletExistsResponse { 776 bool exists = 1; 777 } 778 779 message StartConsensusRpcRequest { 780 string network_address = 1; 781 string username = 2; 782 bytes password = 3; 783 bytes certificate = 4; 784 } 785 message StartConsensusRpcResponse {} 786 787 message DiscoverAddressesRequest { 788 bool discover_accounts = 1; 789 bytes private_passphrase = 2; 790 bytes starting_block_hash = 3; 791 } 792 message DiscoverAddressesResponse {} 793 794 message FetchMissingCFiltersRequest {} 795 message FetchMissingCFiltersResponse {} 796 797 message SubscribeToBlockNotificationsRequest {} 798 message SubscribeToBlockNotificationsResponse {} 799 800 message FetchHeadersRequest {} 801 message FetchHeadersResponse { 802 uint32 fetched_headers_count = 1; 803 bytes first_new_block_hash = 2; 804 int32 first_new_block_height = 3; 805 bytes main_chain_tip_block_hash = 4; 806 int32 main_chain_tip_block_height = 5; 807 } 808 809 enum SyncNotificationType { 810 SYNCED = 0; 811 UNSYNCED = 1; 812 PEER_CONNECTED = 2; 813 PEER_DISCONNECTED = 3; 814 FETCHED_MISSING_CFILTERS_STARTED = 4; 815 FETCHED_MISSING_CFILTERS_PROGRESS = 5; 816 FETCHED_MISSING_CFILTERS_FINISHED = 6; 817 FETCHED_HEADERS_STARTED = 7; 818 FETCHED_HEADERS_PROGRESS = 8; 819 FETCHED_HEADERS_FINISHED = 9; 820 DISCOVER_ADDRESSES_STARTED = 10; 821 DISCOVER_ADDRESSES_FINISHED = 11; 822 RESCAN_STARTED = 12; 823 RESCAN_PROGRESS = 13; 824 RESCAN_FINISHED = 14; 825 } 826 827 message FetchHeadersNotification { 828 int32 fetched_headers_count = 1; 829 int64 last_header_time = 2; 830 } 831 832 message FetchMissingCFiltersNotification { 833 int32 fetched_cfilters_start_height = 1; 834 int32 fetched_cfilters_end_height = 2; 835 } 836 837 message RescanProgressNotification { 838 int32 rescanned_through = 1; 839 } 840 841 message PeerNotification { 842 int32 peer_count = 1; 843 string address = 2; 844 } 845 846 message RpcSyncRequest { 847 string network_address = 1; 848 string username = 2; 849 bytes password = 3; 850 bytes certificate = 4; 851 bool discover_accounts = 5; 852 bytes private_passphrase = 6; 853 } 854 message RpcSyncResponse { 855 bool synced = 1; 856 SyncNotificationType notification_type = 2; 857 FetchHeadersNotification fetch_headers = 3; 858 FetchMissingCFiltersNotification fetch_missing_cfilters = 4; 859 RescanProgressNotification rescan_progress = 5; 860 PeerNotification peer_information = 6; 861 } 862 863 message SpvSyncRequest { 864 bool discover_accounts = 1; 865 bytes private_passphrase = 2; 866 repeated string spv_connect = 3; 867 } 868 message SpvSyncResponse { 869 bool synced = 1; 870 SyncNotificationType notification_type = 2; 871 FetchHeadersNotification fetch_headers = 3; 872 FetchMissingCFiltersNotification fetch_missing_cfilters = 4; 873 RescanProgressNotification rescan_progress = 5; 874 PeerNotification peer_information = 6; 875 } 876 877 message RescanPointRequest {} 878 message RescanPointResponse { 879 bytes rescan_point_hash = 1; 880 } 881 882 message GenerateRandomSeedRequest { 883 uint32 seed_length = 1; 884 } 885 message GenerateRandomSeedResponse { 886 bytes seed_bytes = 1; 887 string seed_hex = 2; 888 string seed_mnemonic = 3; 889 } 890 891 message DecodeSeedRequest { 892 string user_input = 1; 893 } 894 message DecodeSeedResponse { 895 bytes decoded_seed = 1; 896 } 897 898 message RunTicketBuyerRequest { 899 bytes passphrase = 1; 900 uint32 account = 2; 901 uint32 voting_account = 3; 902 int64 balance_to_maintain = 4; 903 string voting_address = 5; 904 string pool_address = 6; 905 double pool_fees = 7; 906 string vsp_host = 8; 907 string vsp_pubkey = 9; 908 int32 limit = 10; 909 string cspp_server = 11; 910 uint32 mixed_account = 12; 911 uint32 mixed_account_branch = 13; 912 uint32 mixed_split_account = 14; 913 uint32 change_account = 15; 914 } 915 916 message RunTicketBuyerResponse {} 917 918 message RunAccountMixerRequest { 919 bytes passphrase = 1; 920 uint32 mixed_account = 2; 921 uint32 mixed_account_branch = 3; 922 uint32 change_account = 4; 923 string cspp_server = 5; 924 } 925 926 message RunAccountMixerResponse {} 927 928 message StartAutoBuyerRequest { 929 bytes passphrase = 1; 930 uint32 account = 2; 931 int64 balance_to_maintain = 3; 932 int64 max_fee_per_kb = 4; 933 double max_price_relative = 5; 934 int64 max_price_absolute = 6; 935 string voting_address = 7; 936 string pool_address = 8; 937 double pool_fees = 9; 938 int64 max_per_block = 10; 939 } 940 message StartAutoBuyerResponse {} 941 942 message StopAutoBuyerRequest {} 943 message StopAutoBuyerResponse {} 944 message TicketBuyerConfigRequest{ 945 } 946 947 message TicketBuyerConfigResponse{ 948 uint32 account = 1; 949 string avg_price_mode = 2; 950 int64 avg_priceVWAP_delta = 3; 951 int64 balance_to_maintain = 4; 952 int64 blocks_to_avg = 5; 953 bool dont_wait_for_tickets = 6; 954 int64 expiry_delta = 7; 955 string fee_source = 8; 956 double fee_target_scaling = 9; 957 int64 min_fee = 10; 958 int64 max_fee = 12; 959 int64 max_per_block = 13; 960 int64 max_price_absolute = 14; 961 double max_price_relative = 15; 962 int64 max_in_mempool = 17; 963 string pool_address = 18; 964 double pool_fees = 19; 965 bool spread_ticket_purchases = 20; 966 string voting_address = 21; 967 int64 tx_fee = 22; 968 } 969 970 message SetAccountRequest{ 971 uint32 account = 1; 972 } 973 message SetAccountResponse{} 974 975 message SetBalanceToMaintainRequest{ 976 int64 balance_to_maintain = 1; 977 } 978 message SetBalanceToMaintainResponse{} 979 980 message SetMaxFeeRequest{ 981 int64 max_fee_per_kb = 1; 982 } 983 message SetMaxFeeResponse{} 984 985 message SetMaxPriceRelativeRequest{ 986 double max_price_relative = 1; 987 } 988 message SetMaxPriceRelativeResponse{} 989 990 message SetMaxPriceAbsoluteRequest{ 991 int64 max_price_absolute = 1; 992 } 993 message SetMaxPriceAbsoluteResponse{} 994 995 message SetVotingAddressRequest{ 996 string voting_address = 1; 997 } 998 message SetVotingAddressResponse{} 999 1000 message SetPoolAddressRequest{ 1001 string pool_address = 1; 1002 } 1003 message SetPoolAddressResponse{} 1004 1005 message SetPoolFeesRequest{ 1006 double pool_fees = 1; 1007 } 1008 message SetPoolFeesResponse{} 1009 1010 message SetMaxPerBlockRequest{ 1011 int64 max_per_block = 1; 1012 } 1013 message SetMaxPerBlockResponse{} 1014 1015 message AgendasRequest {} 1016 message AgendasResponse { 1017 message Agenda { 1018 string id = 1; 1019 string description = 2; 1020 uint32 mask = 3; 1021 repeated Choice choices = 4; 1022 int64 start_time = 5; 1023 int64 expire_time = 6; 1024 } 1025 message Choice { 1026 string id = 1; 1027 string description = 2; 1028 uint32 bits = 3; 1029 bool is_abstain = 4; 1030 bool is_no = 5; 1031 } 1032 uint32 version = 1; 1033 repeated Agenda agendas = 2; 1034 } 1035 1036 message VoteChoicesRequest { 1037 bytes ticket_hash = 1; 1038 } 1039 message VoteChoicesResponse { 1040 message Choice { 1041 string agenda_id = 1; 1042 string agenda_description = 2; 1043 string choice_id = 3; 1044 string choice_description = 4; 1045 } 1046 uint32 version = 1; 1047 repeated Choice choices = 2; 1048 uint32 votebits = 3; 1049 } 1050 1051 message SetVoteChoicesRequest { 1052 message Choice { 1053 string agenda_id = 1; 1054 string choice_id = 2; 1055 } 1056 repeated Choice choices = 1; 1057 bytes ticket_hash = 2; 1058 } 1059 message SetVoteChoicesResponse { 1060 uint32 votebits = 1; 1061 } 1062 1063 message TSpendPoliciesRequest { 1064 bytes hash = 1; 1065 bytes ticket_hash = 2; 1066 } 1067 1068 message TSpendPoliciesResponse { 1069 message Policy { 1070 bytes hash = 1; 1071 string policy = 2; 1072 bytes ticket_hash = 3; 1073 } 1074 repeated Policy policies = 1; 1075 } 1076 1077 message SetTSpendPolicyRequest { 1078 bytes hash = 1; 1079 string policy = 2; 1080 bytes ticket_hash = 3; 1081 } 1082 1083 message SetTSpendPolicyResponse {} 1084 1085 message TreasuryPoliciesRequest {} 1086 1087 message TreasuryPoliciesResponse { 1088 message Policy { 1089 bytes key = 1; 1090 string policy = 2; 1091 bytes ticket_hash = 3; 1092 } 1093 repeated Policy policies = 1; 1094 } 1095 1096 message SetTreasuryPolicyRequest { 1097 bytes key = 1; 1098 string policy = 2; 1099 bytes ticket_hash = 3; 1100 } 1101 1102 message SetTreasuryPolicyResponse {} 1103 1104 message VerifyMessageRequest { 1105 string address = 1; 1106 string message = 2; 1107 bytes signature = 3; 1108 } 1109 message VerifyMessageResponse { 1110 bool valid = 1; 1111 } 1112 1113 service DecodeMessageService { 1114 rpc DecodeRawTransaction (DecodeRawTransactionRequest) returns (DecodeRawTransactionResponse); 1115 } 1116 1117 message DecodedTransaction { 1118 message Input { 1119 bytes previous_transaction_hash = 1; 1120 uint32 previous_transaction_index = 2; 1121 enum TreeType { 1122 REGULAR = 0; 1123 UNKNOWN = -1; 1124 STAKE = 1; 1125 } 1126 TreeType tree = 3; 1127 uint32 sequence = 4; 1128 int64 amount_in = 5; 1129 uint32 block_height = 6; 1130 uint32 block_index = 7; 1131 bytes signature_script = 8; 1132 string signature_script_asm = 9; 1133 } 1134 message Output { 1135 int64 value = 1; 1136 uint32 index = 2; 1137 int32 version = 3; 1138 bytes script = 4; 1139 string script_asm = 5; 1140 int32 required_signatures = 6; 1141 enum ScriptClass { 1142 NON_STANDARD = 0; 1143 PUB_KEY = 1; 1144 PUB_KEY_HASH = 2; 1145 SCRIPT_HASH = 3; 1146 MULTI_SIG = 4; 1147 NULL_DATA = 5; 1148 STAKE_SUBMISSION = 6; 1149 STAKE_GEN = 7; 1150 STAKE_REVOCATION = 8; 1151 STAKE_SUB_CHANGE = 9; 1152 PUB_KEY_ALT = 10; 1153 PUB_KEY_HASH_ALT = 11; 1154 TGEN = 12; 1155 TADD = 13; 1156 } 1157 ScriptClass script_class = 7; 1158 repeated string addresses = 8; 1159 int64 commitment_amount = 9; 1160 } 1161 bytes transaction_hash = 1; 1162 int32 version = 2; 1163 uint32 lock_time = 3; 1164 uint32 expiry = 4; 1165 TransactionDetails.TransactionType transaction_type = 5; 1166 repeated Input inputs = 6; 1167 repeated Output outputs = 7; 1168 } 1169 1170 message DecodeRawTransactionRequest { 1171 bytes serialized_transaction = 1; 1172 } 1173 message DecodeRawTransactionResponse { 1174 DecodedTransaction transaction = 1; 1175 } 1176 1177 message ValidateAddressRequest { 1178 string address = 1; 1179 } 1180 1181 message ValidateAddressResponse { 1182 bool is_valid = 1; 1183 bool is_mine = 2; 1184 uint32 account_number = 3; 1185 string pub_key_addr = 4; 1186 bytes pub_key = 5; 1187 bool is_script = 6; 1188 repeated string pk_script_addrs = 7; 1189 enum ScriptType { 1190 NonStandardTy = 0; 1191 PubKeyTy = 1; 1192 PubKeyHashTy = 2; 1193 ScriptHashTy = 3; 1194 MultiSigTy = 4; 1195 NullDataTy = 5; 1196 StakeSubmissionTy = 6; 1197 StakeGenTy = 7; 1198 StakeRevocationTy = 8; 1199 StakeSubChangeTy = 9; 1200 PubkeyAltTy = 10; 1201 PubkeyHashAltTy = 11; 1202 TreasuryGenTy = 12; 1203 TreasuryAddTy = 13; 1204 } 1205 ScriptType script_type = 8; 1206 bytes pay_to_addr_script = 9; 1207 uint32 sigs_required = 10; 1208 bool is_internal = 11; 1209 uint32 index = 12; 1210 } 1211 1212 message CommittedTicketsRequest { 1213 repeated bytes tickets = 1; 1214 } 1215 1216 message GetAccountExtendedPubKeyRequest { 1217 uint32 account_number = 1; 1218 } 1219 1220 message GetAccountExtendedPubKeyResponse { 1221 string acc_extended_pub_key = 1; 1222 } 1223 1224 message GetAccountExtendedPrivKeyRequest { 1225 uint32 account_number = 1; 1226 bytes passphrase = 2; 1227 } 1228 1229 message GetAccountExtendedPrivKeyResponse { 1230 string acc_extended_priv_key = 1; 1231 } 1232 1233 message CommittedTicketsResponse { 1234 message TicketAddress { 1235 bytes ticket = 1; 1236 string address = 2; 1237 } 1238 repeated TicketAddress ticketAddresses = 1; 1239 } 1240 1241 message BestBlockRequest { 1242 } 1243 1244 message BestBlockResponse { 1245 uint32 height = 1; 1246 bytes hash = 2; 1247 } 1248 1249 message SweepAccountRequest { 1250 string source_account = 1; 1251 string destination_address = 2; 1252 uint32 required_confirmations = 3; 1253 double fee_per_kb = 4; 1254 } 1255 1256 message SweepAccountResponse { 1257 bytes unsigned_transaction = 1; 1258 int64 total_previous_output_amount = 2; 1259 int64 total_output_amount = 3; 1260 uint32 estimated_signed_size = 4; 1261 } 1262 1263 message AbandonTransactionRequest{ 1264 bytes transaction_hash = 1; 1265 } 1266 message AbandonTransactionResponse { 1267 } 1268 1269 message SignHashesRequest { 1270 bytes passphrase = 1; 1271 string address = 2; 1272 repeated bytes hashes = 3; 1273 } 1274 1275 message SignHashesResponse { 1276 bytes public_key = 1; 1277 repeated bytes signatures = 2; 1278 } 1279 1280 message SpenderRequest { 1281 bytes transaction_hash = 1; 1282 uint32 index = 2; 1283 } 1284 message SpenderResponse { 1285 bytes spender_transaction = 1; 1286 uint32 input_index = 2; 1287 } 1288 1289 message GetCFiltersRequest { 1290 bytes starting_block_hash = 1; 1291 sint32 starting_block_height = 2; 1292 bytes ending_block_hash = 3; 1293 sint32 ending_block_height = 4; 1294 } 1295 1296 message GetCFiltersResponse { 1297 bytes key = 1; 1298 bytes filter = 2; 1299 bytes block_hash = 3; 1300 } 1301 1302 message GetRawBlockRequest { 1303 bytes block_hash = 1; 1304 sint32 block_height = 2; 1305 } 1306 1307 message GetRawBlockResponse { 1308 bytes block = 1; 1309 } 1310 1311 message GetCoinjoinOutputspByAcctRequest {} 1312 1313 message coinjoinTxsSumByAcct { 1314 uint32 account_number = 1; 1315 int32 coinjoin_txs_sum = 2; 1316 } 1317 1318 message GetCoinjoinOutputspByAcctResponse { 1319 repeated coinjoinTxsSumByAcct data = 1; 1320 } 1321 1322 message SetAccountPassphraseRequest { 1323 bytes account_passphrase = 1; 1324 bytes new_account_passphrase = 2; 1325 uint32 account_number = 3; 1326 // used only in case account pass not yet set. 1327 bytes wallet_passphrase = 4; 1328 } 1329 1330 message UnlockAccountRequest { 1331 bytes passphrase = 1; 1332 uint32 account_number = 2; 1333 } 1334 1335 message LockAccountRequest { 1336 uint32 account_number = 1; 1337 } 1338 1339 message SetAccountPassphraseResponse {} 1340 1341 message UnlockAccountResponse {} 1342 1343 message LockAccountResponse {} 1344 1345 message AccountUnlockedRequest { 1346 uint32 account_number = 1; 1347 } 1348 1349 message AccountUnlockedResponse { 1350 bool unlocked = 1; 1351 } 1352 1353 message UnlockWalletRequest { 1354 bytes passphrase = 1; 1355 } 1356 message UnlockWalletResponse {} 1357 1358 message LockWalletRequest {} 1359 message LockWalletResponse {} 1360 1361 message GetPeerInfoRequest {} 1362 message GetPeerInfoResponse { 1363 message PeerInfo { 1364 int32 id = 1; 1365 string addr = 2; 1366 string addr_local = 3; 1367 string services = 4; 1368 uint32 version = 5; 1369 string sub_ver = 6; 1370 int64 starting_height = 7; 1371 int32 ban_score = 8; 1372 } 1373 repeated PeerInfo peer_info = 1; 1374 } 1375 1376 message SyncVSPTicketsRequest { 1377 string vsp_host = 1; 1378 string vsp_pubkey = 2; 1379 uint32 account = 3; 1380 uint32 change_account = 4; 1381 } 1382 1383 message SyncVSPTicketsResponse {} 1384 1385 message GetVSPTicketsByFeeStatusRequest { 1386 enum FeeStatus { 1387 VSP_FEE_PROCESS_STARTED = 0; 1388 VSP_FEE_PROCESS_PAID = 1; 1389 VSP_FEE_PROCESS_ERRORED = 2; 1390 VSP_FEE_PROCESS_CONFIRMED = 3; 1391 } 1392 FeeStatus fee_status = 3; 1393 } 1394 1395 message GetVSPTicketsByFeeStatusResponse { 1396 repeated bytes tickets_hashes = 1; 1397 } 1398 1399 message ProcessManagedTicketsRequest { 1400 string vsp_host = 1; 1401 string vsp_pubkey = 2; 1402 uint32 fee_account = 3; 1403 uint32 change_account = 4; 1404 } 1405 1406 message ProcessManagedTicketsResponse {} 1407 1408 message ProcessUnmanagedTicketsRequest { 1409 string vsp_host = 1; 1410 string vsp_pubkey = 2; 1411 uint32 fee_account = 3; 1412 uint32 change_account = 4; 1413 } 1414 1415 message ProcessUnmanagedTicketsResponse {} 1416 1417 message SetVspdVoteChoicesRequest { 1418 string vsp_host = 1; 1419 string vsp_pubkey = 2; 1420 uint32 fee_account = 3; 1421 uint32 change_account = 4; 1422 } 1423 1424 message SetVspdVoteChoicesResponse {} 1425 1426 message GetTrackedVSPTicketsRequest {} 1427 1428 message GetTrackedVSPTicketsResponse { 1429 message Ticket { 1430 bytes ticket_hash = 1; 1431 string voting_address = 2; 1432 string commitment_address = 3; 1433 uint32 state = 4; 1434 int64 fee = 5; 1435 bytes fee_hash = 6; 1436 } 1437 message VSP { 1438 string host = 1; 1439 repeated Ticket tickets = 2; 1440 } 1441 1442 repeated VSP vsps = 1; 1443 } 1444 1445 message DiscoverUsageRequest { 1446 bool discover_accounts = 1; 1447 uint32 gap_limit = 2; 1448 bytes starting_block_hash = 3; 1449 } 1450 1451 message DiscoverUsageResponse {}