syntax = "proto3"; package basicswap; /* Step 1, seller -> network */ message OfferMessage { uint32 coin_from = 1; uint32 coin_to = 2; uint64 amount_from = 3; uint64 rate = 4; uint64 min_bid_amount = 5; uint64 time_valid = 6; enum LockType { NOT_SET = 0; SEQUENCE_LOCK_BLOCKS = 1; SEQUENCE_LOCK_TIME = 2; ABS_LOCK_BLOCKS = 3; ABS_LOCK_TIME = 4; } LockType lock_type = 7; uint32 lock_value = 8; uint32 swap_type = 9; /* optional */ string proof_address = 10; string proof_signature = 11; bytes pkhash_seller = 12; bytes secret_hash = 13; uint64 fee_rate_from = 14; uint64 fee_rate_to = 15; uint32 protocol_version = 16; bool amount_negotiable = 17; bool rate_negotiable = 18; bytes proof_utxos = 19; /* 32 byte txid 2 byte vout, repeated */ } /* Step 2, buyer -> seller */ message BidMessage { bytes offer_msg_id = 1; uint64 time_valid = 2; /* seconds bid is valid for */ uint64 amount = 3; /* amount of amount_from bid is for */ uint64 rate = 4; bytes pkhash_buyer = 5; /* buyer's address to receive amount_from */ string proof_address = 6; string proof_signature = 7; uint32 protocol_version = 8; bytes proof_utxos = 9; /* 32 byte txid 2 byte vout, repeated */ } /* For tests */ message BidMessage_v1Deprecated { bytes offer_msg_id = 1; uint64 time_valid = 2; /* seconds bid is valid for */ uint64 amount = 3; /* amount of amount_from bid is for */ uint64 rate = 4; bytes pkhash_buyer = 5; /* buyer's address to receive amount_from */ string proof_address = 6; string proof_signature = 7; uint32 protocol_version = 8; } /* Step 3, seller -> buyer */ message BidAcceptMessage { bytes bid_msg_id = 1; bytes initiate_txid = 2; bytes contract_script = 3; } message OfferRevokeMessage { bytes offer_msg_id = 1; bytes signature = 2; } message BidRejectMessage { bytes bid_msg_id = 1; uint32 reject_code = 2; } message XmrBidMessage { /* MSG1L, F -> L */ bytes offer_msg_id = 1; uint64 time_valid = 2; /* seconds bid is valid for */ uint64 amount = 3; /* amount of amount_from bid is for */ uint64 rate = 4; bytes pkaf = 5; bytes kbvf = 6; bytes kbsf_dleag = 7; bytes dest_af = 8; uint32 protocol_version = 9; } message XmrSplitMessage { bytes msg_id = 1; uint32 msg_type = 2; /* 1 XmrBid, 2 XmrBidAccept */ uint32 sequence = 3; bytes dleag = 4; } message XmrBidAcceptMessage { bytes bid_msg_id = 1; bytes pkal = 3; bytes kbvl = 4; bytes kbsl_dleag = 5; /* MSG2F */ bytes a_lock_tx = 6; bytes a_lock_tx_script = 7; bytes a_lock_refund_tx = 8; bytes a_lock_refund_tx_script = 9; bytes a_lock_refund_spend_tx = 10; bytes al_lock_refund_tx_sig = 11; } message XmrBidLockTxSigsMessage { /* MSG3L */ bytes bid_msg_id = 1; bytes af_lock_refund_spend_tx_esig = 2; bytes af_lock_refund_tx_sig = 3; } message XmrBidLockSpendTxMessage { /* MSG4F */ bytes bid_msg_id = 1; bytes a_lock_spend_tx = 2; bytes kal_sig = 3; } message XmrBidLockReleaseMessage { /* MSG5F */ bytes bid_msg_id = 1; bytes al_lock_spend_tx_esig = 2; } message ADSBidIntentMessage { /* L -> F Sent from bidder, construct a reverse bid */ bytes offer_msg_id = 1; uint64 time_valid = 2; /* seconds bid is valid for */ uint64 amount_from = 3; /* amount of offer.coin_from bid is for */ uint64 amount_to = 4; /* amount of offer.coin_to bid is for, equivalent to bid.amount */ uint64 rate = 5; /* amount of offer.coin_from bid is for */ uint32 protocol_version = 6; } message ADSBidIntentAcceptMessage { /* F -> L Sent from offerer, construct a reverse bid */ bytes bid_msg_id = 1; bytes pkaf = 2; bytes kbvf = 3; bytes kbsf_dleag = 4; bytes dest_af = 5; }