From 4595b51fb6877ad7a93ce325d47ca3838573249c Mon Sep 17 00:00:00 2001 From: Silas Lenz Date: Wed, 21 Aug 2019 17:39:52 +0200 Subject: [PATCH] common: add all Ripple messages --- common/protob/messages-ripple.proto | 265 +++++++++++++++++++++++++++- 1 file changed, 259 insertions(+), 6 deletions(-) diff --git a/common/protob/messages-ripple.proto b/common/protob/messages-ripple.proto index 5edc2babb..780fbe21f 100644 --- a/common/protob/messages-ripple.proto +++ b/common/protob/messages-ripple.proto @@ -29,23 +29,276 @@ message RippleAddress { * @next RippleSignedTx */ message RippleSignTx { + // Common fields repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/144'/index' optional uint64 fee = 2; // fee (in drops) for the transaction optional uint32 flags = 3; // transaction flags optional uint32 sequence = 4; // transaction sequence number optional uint32 last_ledger_sequence = 5; // see https://developers.ripple.com/reliable-transaction-submission.html#lastledgersequence - optional RipplePayment payment = 6; // Payment transaction type + optional string account_txn_id = 7; // see https://xrpl.org/transaction-common-fields.html#accounttxnid + repeated RippleMemo memos = 8; // additional arbitrary information used to identify this transaction + repeated RippleSigner signers = 9; // array of objects that represent a multi-signature + optional uint32 source_tag = 10; // identify the reason for this payment, or a sender on whose behalf this transaction is made. + + // Transaction fields + optional RippleAccountSet account_set = 11; + optional RippleCheckCancel check_cancel = 12; + optional RippleCheckCash check_cash = 13; + optional RippleCheckCreate check_create = 14; + optional RippleDepositPreauth deposit_preauth = 15; + optional RippleEscrowCancel escrow_cancel = 16; + optional RippleEscrowCreate escrow_create = 17; + optional RippleEscrowFinish escrow_finish = 18; + optional RippleOfferCancel offer_cancel = 19; + optional RippleOfferCreate offer_create = 20; + optional RipplePayment payment = 6; // keep number 6 for backwards compatibility + optional RipplePaymentChannelClaim payment_channel_claim = 21; + optional RipplePaymentChannelCreate payment_channel_create = 22; + optional RipplePaymentChannelFund payment_channel_fund = 23; + optional RippleSetRegularKey set_regular_key = 24; + optional RippleSignerListSet signer_list_set = 25; + optional RippleTrustSet trust_set = 26; + + /** + * AccountSet transaction type + * - modifies the properties of an account + * - see https://xrpl.org/accountset.html + */ + message RippleAccountSet { + optional uint32 clear_flag = 1; + optional uint32 set_flag = 2; + optional string domain = 3; + optional string email_hash = 4; + optional string message_key = 5; + optional uint32 transfer_rate = 6; + optional uint32 tick_size = 7; + } + + /** + * CheckCancel transaction type + * - cancels an unredeemed Check + * - see https://xrpl.org/checkcancel.html + */ + message RippleCheckCancel { + optional string check_id = 1; + } + + /** + * CheckCash transaction type + * - attempts to redeem a Check + * - see https://xrpl.org/checkcash.html + */ + message RippleCheckCash { + optional string check_id = 1; + optional uint64 amount = 2; + optional RippleIssuedAmount issued_amount = 3; + optional uint64 deliver_min = 4; + optional RippleIssuedAmount issued_deliver_min = 5; + } + + /** + * CheckCreate transaction type + * - creates a Check + * - see https://xrpl.org/checkcreate.html + */ + message RippleCheckCreate { + optional string destination = 1; + optional uint64 send_max = 2; + optional RippleIssuedAmount issued_send_max = 3; + optional uint32 destination_tag = 4; + optional uint32 expiration = 5; + optional string invoice_id = 6; + } + + /** + * DepositPreauth transaction type + * - gives another account pre-approval to deliver payments to the sender of this transaction + * - see https://xrpl.org/depositpreauth.html + */ + message RippleDepositPreauth { + optional string authorize = 1; + optional string unauthorize = 2; + } + + /** + * EscrowCancel transaction type + * - returns escrowed XRP to the sender + * - see https://xrpl.org/escrowcancel.html + */ + message RippleEscrowCancel { + optional string owner = 1; + optional uint32 offer_sequence = 2; + } + + /** + * EscrowCreate transaction type + * - sequesters XRP until the escrow process either finishes or is canceled + * - see https://xrpl.org/escrowcreate.html + */ + message RippleEscrowCreate { + optional uint64 amount = 1; + optional string destination = 2; + optional uint32 cancel_after = 3; + optional uint32 finish_after = 4; + optional string condition = 5; + optional uint32 destination_tag = 6; + } + + /** + * EscrowFinish transaction type + * - delivers XRP from a held payment to the recipient + * - see https://xrpl.org/escrowfinish.html + */ + message RippleEscrowFinish { + optional string owner = 1; + optional uint32 offer_sequence = 2; + optional string condition = 3; + optional string fulfillment = 4; + + } + + /** + * OfferCancel transaction type + * - removes an Offer + * - see https://xrpl.org/offercancel.html + */ + message RippleOfferCancel { + optional uint32 offer_sequence = 1; + } + + /** + * OfferCreate transaction type + * - effectively a limit order + * - see https://xrpl.org/offercreate.html + */ + message RippleOfferCreate { + optional uint32 expiration = 1; + optional uint32 offer_sequence = 2; + optional uint64 taker_gets = 3; + optional RippleIssuedAmount issued_taker_gets = 4; + optional uint64 taker_pays = 5; + optional RippleIssuedAmount issued_taker_pays = 6; + } /** * Payment transaction type * - simple A sends money to B - * - only a subset of fields is supported - * - see https://developers.ripple.com/payment.html + * - see https://xrpl.org/payment.html */ message RipplePayment { - optional uint64 amount = 1; // only XRP is supported at the moment so this an integer - optional string destination = 2; // destination account address - optional uint32 destination_tag = 3; // destination tag to identify payments + optional uint64 amount = 1; + optional string destination = 2; + optional uint32 destination_tag = 3; + optional RippleIssuedAmount issued_amount = 4; + optional string invoice_id = 5; + optional uint64 send_max = 6; + optional uint64 deliver_min = 7; + optional RippleIssuedAmount issued_deliver_min = 8; + } + + /** + * PaymentChannelClaim transaction type + * - claims XRP from a payment channel, adjusts the payment channel's expiration, or both + * - see https://xrpl.org/paymentchannelclaim.html + */ + message RipplePaymentChannelClaim { + optional string channel = 1; + optional uint64 balance = 2; + optional uint64 amount = 4; + optional string signature = 5; + optional string public_key = 6; + } + + /** + * PaymentChannelCreate transaction type + * - creates a unidirectional channel and fund it with XRP + * - see https://xrpl.org/paymentchannelcreate.html + */ + message RipplePaymentChannelCreate { + optional uint64 amount = 1; + optional string destination = 2; + optional uint32 settle_delay = 3; + optional string public_key = 4; + optional uint32 cancel_after = 5; + optional uint32 destination_tag = 6; + } + + /** + * PaymentChannelFund transaction type + * - adds additional XRP to an open payment channel, updates the expiration time of the channel, or both + * - see https://xrpl.org/paymentchannelfund.html + */ + message RipplePaymentChannelFund { + optional string channel = 1; + optional uint64 amount = 2; + optional uint32 expiration = 3; + } + + /** + * SetRegularKey transaction type + * - assigns, changes, or removes the regular key pair associated with an account + * - see https://xrpl.org/setregularkey.html + */ + message RippleSetRegularKey { + optional string regular_key = 1; + } + + /** + * SignerListSet transaction type + * - creates, replaces, or removes a list of signers that can be used to multi-sign a transaction + * - see https://xrpl.org/signerlistset.html + */ + message RippleSignerListSet { + optional uint32 signer_quorum = 1; + repeated RippleSignerEntry signer_entries = 2; + message RippleSignerEntry { + optional string account = 1; + optional uint32 signer_weight = 2; + } + } + + /** + * TrustSet transaction type + * - creates or modify a trust line linking two accounts + * - see https://xrpl.org/trustset.html + */ + message RippleTrustSet { + optional RippleIssuedAmount limit_amount = 1; + optional uint32 quality_in = 2; + optional uint32 quality_out = 3; + } + + /** + * Amount object + * - specifies amount for issued currencies + * - see https://xrpl.org/basic-data-types.html#specifying-currency-amounts + */ + message RippleIssuedAmount { + optional string currency = 1; + optional string value = 2; + optional string issuer = 3; + } + + /** + * Memo object + * - specifies arbitrary messaging data for a transaction + * - see https://xrpl.org/transaction-common-fields.html#memos-field + */ + message RippleMemo { + optional string memo_data = 1; + optional string memo_format = 2; + optional string memo_type = 3; + } + + /** + * Signer object + * - specifies signatures for a multi-signed transaction + * - see https://xrpl.org/transaction-common-fields.html#signers-field + */ + message RippleSigner { + optional string account = 1; + optional string txn_signature = 2; + optional string signing_pub_key = 3; } }