From 1c65ac6cab3dd27bef02a4967c41867a960c5391 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 10:13:31 +0300 Subject: [PATCH 01/38] Added PlainLock, HashedLock to common.capnp. --- components/proto/src/capnp_common.rs | 25 ++++++++++++++++++++++-- components/proto/src/schema/common.capnp | 8 ++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/components/proto/src/capnp_common.rs b/components/proto/src/capnp_common.rs index b7b8cb50e..6844880fd 100644 --- a/components/proto/src/capnp_common.rs +++ b/components/proto/src/capnp_common.rs @@ -4,8 +4,8 @@ use std::io; use common_capnp::{ buffer128, buffer256, buffer512, custom_int128, custom_u_int128, dh_public_key, hash, - invoice_id, named_index_server_address, named_relay_address, net_address, public_key, - rand_nonce, receipt, relay_address, salt, signature, uid, + hashed_lock, invoice_id, named_index_server_address, named_relay_address, net_address, + plain_lock, public_key, rand_nonce, receipt, relay_address, salt, signature, uid, }; use crate::app_server::messages::{NamedRelayAddress, RelayAddress}; @@ -17,6 +17,7 @@ use crate::serialize::SerializeError; use crypto::crypto_rand::RandValue; use crypto::dh::{DhPublicKey, Salt}; use crypto::hash::HashResult; +use crypto::hash_lock::{HashedLock, PlainLock}; use crypto::identity::{PublicKey, Signature}; use crypto::invoice_id::InvoiceId; use crypto::uid::Uid; @@ -168,6 +169,26 @@ type_capnp_serde!( write_buffer512 ); +// 256 bits: +type_capnp_serde!( + plain_lock, + PlainLock, + read_plain_lock, + write_plain_lock, + read_buffer256, + write_buffer256 +); + +// 256 bits: +type_capnp_serde!( + hashed_lock, + HashedLock, + read_hashed_lock, + write_hashed_lock, + read_buffer256, + write_buffer256 +); + pub fn read_custom_u_int128(from: &custom_u_int128::Reader) -> Result { let inner = from.get_inner()?; let data_bytes = read_buffer128(&inner); diff --git a/components/proto/src/schema/common.capnp b/components/proto/src/schema/common.capnp index 3e8824b71..c4b07e4e4 100644 --- a/components/proto/src/schema/common.capnp +++ b/components/proto/src/schema/common.capnp @@ -69,6 +69,14 @@ struct Uid { inner @0: Buffer128; } +struct PlainLock { + inner @0: Buffer256; +} + +struct HashedLock { + inner @0: Buffer256; +} + # A receipt for payment to the Funder struct Receipt { From 3213f938b7a40ed30b59e849a42f44154ad57173 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 11:03:33 +0300 Subject: [PATCH 02/38] Updated payment related messages in capnp schemas. --- components/proto/src/funder/serialize.rs | 4 +- components/proto/src/schema/common.capnp | 62 ++++++++++++++++++------ components/proto/src/schema/funder.capnp | 57 +++++++++++++--------- 3 files changed, 83 insertions(+), 40 deletions(-) diff --git a/components/proto/src/funder/serialize.rs b/components/proto/src/funder/serialize.rs index d013847ff..61fc9c835 100644 --- a/components/proto/src/funder/serialize.rs +++ b/components/proto/src/funder/serialize.rs @@ -78,7 +78,7 @@ fn ser_response_send_funds_op( fn ser_cancel_send_funds_op( cancel_send_funds: &CancelSendFundsOp, - cancel_send_funds_op_builder: &mut funder_capnp::failure_send_funds_op::Builder, + cancel_send_funds_op_builder: &mut funder_capnp::cancel_send_funds_op::Builder, ) { unimplemented!(); /* @@ -309,7 +309,7 @@ fn deser_response_send_funds_op( } fn deser_cancel_send_funds_op( - cancel_send_funds_op_reader: &funder_capnp::failure_send_funds_op::Reader, + cancel_send_funds_op_reader: &funder_capnp::cancel_send_funds_op::Reader, ) -> Result { unimplemented!(); /* diff --git a/components/proto/src/schema/common.capnp b/components/proto/src/schema/common.capnp index c4b07e4e4..dcf00455f 100644 --- a/components/proto/src/schema/common.capnp +++ b/components/proto/src/schema/common.capnp @@ -78,21 +78,6 @@ struct HashedLock { } -# A receipt for payment to the Funder -struct Receipt { - responseHash @0: Hash; - # = sha512/256(requestId || sha512/256(route) || randNonce) - invoiceId @1: InvoiceId; - destPayment @2: CustomUInt128; - signature @3: Signature; - # Signature{key=recipientKey}( - # sha512/256("FUND_SUCCESS") || - # sha512/256(requestId || sha512/256(route) || randNonce) || - # invoiceId || - # destPayment - # ) -} - # Stringly represented address. # For example: "127.0.0.1:1337" struct NetAddress { @@ -119,3 +104,50 @@ struct NamedIndexServerAddress { name @2: Text; } + +# Common payment primitives +############################ + +# A single commit, commiting to a transaction along a certain route. +struct Commit { + responseHash @0: Hash; + destPayment @1: CustomUInt128; + srcPlainLock @2: PlainLock; + destHashedLock @3: HashedLock; + signature @4: Signature; +} + +# Multi-commit: Commiting to multiple transactions along multi routes at the +# same time. The Buyer has to hand a MultiCommit message to the seller before +# the seller can collect the credits. +struct MultiCommit { + invoiceId @0: InvoiceId; + # invoice id of the invoice we are paying (Generated by the seller) + totalDestPayment @1: CustomUInt128; + # Total sum of credits paid in this multi-route payment. + commits @2: List(Commit); + # A list of commits (Each commit corresponds to a single route) +} + + +# A receipt for payment to the Funder +struct Receipt { + responseHash @0: Hash; + # = sha512/256(requestId || sha512/256(route) || randNonce) + invoiceId @1: InvoiceId; + srcPlainLock @2: PlainLock; + destPlainLock @3: PlainLock; + destPayment @4: CustomUInt128; + totalDestPayment @5: CustomUInt128; + signature @6: Signature; + # Signature{key=destinationKey}( + # sha512/256("FUNDS_RESPONSE") || + # sha512/256(requestId || sha512/256(route) || randNonce) || + # srcHashedLock || + # dstHashedLock || + # destPayment || + # totalDestPayment || + # invoiceId + # ) +} + diff --git a/components/proto/src/schema/funder.capnp b/components/proto/src/schema/funder.capnp index e0f6e854e..3a980c73c 100644 --- a/components/proto/src/schema/funder.capnp +++ b/components/proto/src/schema/funder.capnp @@ -8,6 +8,9 @@ using import "common.capnp".Uid; using import "common.capnp".CustomUInt128; using import "common.capnp".CustomInt128; using import "common.capnp".RelayAddress; +using import "common.capnp".HashedLock; +using import "common.capnp".PlainLock; +using import "common.capnp".Hash; # Token channel messages @@ -108,19 +111,33 @@ struct Ratio128 { struct RequestSendFundsOp { requestId @0: Uid; - route @1: FriendsRoute; - destPayment @2: CustomUInt128; - invoiceId @3: InvoiceId; + # Id number of this request. Used to identify the whole transaction + # over this route. + srcHashedLock @1: HashedLock; + # A hash lock created by the originator of this request + route @2: FriendsRoute; + destPayment @3: CustomUInt128; + totalDestPayment @4: CustomUInt128; + invoiceId @5: InvoiceId; + # Id number of the invoice we are attempting to pay + leftFees @6: CustomUInt128; + # Amount of fees left to give to mediators + # Every mediator takes the amount of fees he wants and subtracts this + # value accordingly. } struct ResponseSendFundsOp { requestId @0: Uid; - randNonce @1: RandNonce; - signature @2: Signature; - # Signature{key=recipientKey}( - # sha512/256("FUND_SUCCESS") || + destHashedLock @1: HashedLock; + randNonce @2: RandNonce; + signature @3: Signature; + # Signature{key=destinationKey}( + # sha512/256("FUNDS_RESPONSE") || # sha512/256(requestId || sha512/256(route) || randNonce) || + # srcHashedLock || + # destHashedLock || # destPayment || + # totalDestPayment || # invoiceId # ) # @@ -129,22 +146,14 @@ struct ResponseSendFundsOp { # See also the Receipt structure. } -struct FailureSendFundsOp { +struct CancelSendFundsOp { requestId @0: Uid; - reportingPublicKey @1: PublicKey; - # Index of the reporting node in the route of the corresponding request. - # The reporting node cannot be the destination node. - randNonce @2: RandNonce; - signature @3: Signature; - # Signature{key=recipientKey}( - # sha512/256("FUND_FAILURE") || - # requestId || - # sha512/256(route) || - # destPayment || - # invoiceId || - # reportingPublicKey || - # randNonce - # ) +} + +struct CollectSendFundsOp { + requestId @0: Uid; + srcPlainLock @1: PlainLock; + destPlainLock @2: PlainLock; } @@ -155,6 +164,8 @@ struct FriendOperation { setRemoteMaxDebt @2: CustomUInt128; requestSendFunds @3: RequestSendFundsOp; responseSendFunds @4: ResponseSendFundsOp; - failureSendFunds @5: FailureSendFundsOp; + cancelSendFunds @5: CancelSendFundsOp; + collectSendFunds @6: CollectSendFundsOp; } } + From 2d4affb20c3ac244475c5794b8e4a0a7b27ee904 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 11:06:59 +0300 Subject: [PATCH 03/38] Restored read_receipt() and write_receipt(). --- components/proto/src/capnp_common.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/components/proto/src/capnp_common.rs b/components/proto/src/capnp_common.rs index 6844880fd..90ea61254 100644 --- a/components/proto/src/capnp_common.rs +++ b/components/proto/src/capnp_common.rs @@ -291,23 +291,32 @@ pub fn write_index_server_address(from: &IndexServerAddress, to: &mut index_serv */ pub fn read_receipt(from: &receipt::Reader) -> Result { - unimplemented!(); - /* Ok(Receipt { response_hash: read_hash(&from.get_response_hash()?)?, invoice_id: read_invoice_id(&from.get_invoice_id()?)?, + src_plain_lock: read_plain_lock(&from.get_src_plain_lock()?)?, + dest_plain_lock: read_plain_lock(&from.get_dest_plain_lock()?)?, dest_payment: read_custom_u_int128(&from.get_dest_payment()?)?, + total_dest_payment: read_custom_u_int128(&from.get_total_dest_payment()?)?, signature: read_signature(&from.get_signature()?)?, }) - */ } pub fn write_receipt(from: &Receipt, to: &mut receipt::Builder) { - unimplemented!(); - /* write_hash(&from.response_hash, &mut to.reborrow().init_response_hash()); write_invoice_id(&from.invoice_id, &mut to.reborrow().init_invoice_id()); + write_plain_lock( + &from.src_plain_lock, + &mut to.reborrow().init_src_plain_lock(), + ); + write_plain_lock( + &from.dest_plain_lock, + &mut to.reborrow().init_dest_plain_lock(), + ); write_custom_u_int128(from.dest_payment, &mut to.reborrow().init_dest_payment()); + write_custom_u_int128( + from.total_dest_payment, + &mut to.reborrow().init_total_dest_payment(), + ); write_signature(&from.signature, &mut to.reborrow().init_signature()); - */ } From e3fbe136326e1ee787621ead47f58d3e4d8410b7 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 11:10:20 +0300 Subject: [PATCH 04/38] Restored serialization of CancelSendFundsOp. --- components/proto/src/funder/serialize.rs | 25 ------------------------ 1 file changed, 25 deletions(-) diff --git a/components/proto/src/funder/serialize.rs b/components/proto/src/funder/serialize.rs index 61fc9c835..ea58e6a2d 100644 --- a/components/proto/src/funder/serialize.rs +++ b/components/proto/src/funder/serialize.rs @@ -80,27 +80,10 @@ fn ser_cancel_send_funds_op( cancel_send_funds: &CancelSendFundsOp, cancel_send_funds_op_builder: &mut funder_capnp::cancel_send_funds_op::Builder, ) { - unimplemented!(); - /* write_uid( &cancel_send_funds.request_id, &mut cancel_send_funds_op_builder.reborrow().init_request_id(), ); - write_public_key( - &cancel_send_funds.reporting_public_key, - &mut cancel_send_funds_op_builder - .reborrow() - .init_reporting_public_key(), - ); - write_rand_nonce( - &cancel_send_funds.rand_nonce, - &mut cancel_send_funds_op_builder.reborrow().init_rand_nonce(), - ); - write_signature( - &cancel_send_funds.signature, - &mut cancel_send_funds_op_builder.reborrow().init_signature(), - ); - */ } fn ser_friend_operation( @@ -311,17 +294,9 @@ fn deser_response_send_funds_op( fn deser_cancel_send_funds_op( cancel_send_funds_op_reader: &funder_capnp::cancel_send_funds_op::Reader, ) -> Result { - unimplemented!(); - /* Ok(CancelSendFundsOp { request_id: read_uid(&cancel_send_funds_op_reader.get_request_id()?)?, - reporting_public_key: read_public_key( - &cancel_send_funds_op_reader.get_reporting_public_key()?, - )?, - rand_nonce: read_rand_nonce(&cancel_send_funds_op_reader.get_rand_nonce()?)?, - signature: read_signature(&cancel_send_funds_op_reader.get_signature()?)?, }) - */ } fn deser_friend_operation( From ed8e6ee1f098c2c037c0334766f359ab67bd114c Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 11:17:47 +0300 Subject: [PATCH 05/38] Restored serialization of RequestSendFundsOp. --- components/proto/src/funder/serialize.rs | 33 +++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/components/proto/src/funder/serialize.rs b/components/proto/src/funder/serialize.rs index ea58e6a2d..31aa4ede5 100644 --- a/components/proto/src/funder/serialize.rs +++ b/components/proto/src/funder/serialize.rs @@ -1,7 +1,7 @@ use crate::capnp_common::{ - read_custom_int128, read_custom_u_int128, /*read_invoice_id,*/ read_public_key, + read_custom_int128, read_custom_u_int128, read_hashed_lock, read_invoice_id, read_public_key, read_rand_nonce, read_relay_address, read_signature, read_uid, write_custom_int128, - write_custom_u_int128, write_invoice_id, write_public_key, write_rand_nonce, + write_custom_u_int128, write_hashed_lock, write_invoice_id, write_public_key, write_rand_nonce, write_relay_address, write_signature, write_uid, }; use capnp; @@ -44,6 +44,13 @@ fn ser_request_send_funds_op( &mut request_send_funds_op_builder.reborrow().init_request_id(), ); + write_hashed_lock( + &request_send_funds.src_hashed_lock, + &mut request_send_funds_op_builder + .reborrow() + .init_src_hashed_lock(), + ); + let mut route_builder = request_send_funds_op_builder.reborrow().init_route(); ser_friends_route(&request_send_funds.route, &mut route_builder); @@ -52,10 +59,22 @@ fn ser_request_send_funds_op( &mut request_send_funds_op_builder.reborrow().init_dest_payment(), ); + write_custom_u_int128( + request_send_funds.total_dest_payment, + &mut request_send_funds_op_builder + .reborrow() + .init_total_dest_payment(), + ); + write_invoice_id( &request_send_funds.invoice_id, &mut request_send_funds_op_builder.reborrow().init_invoice_id(), ); + + write_custom_u_int128( + request_send_funds.left_fees, + &mut request_send_funds_op_builder.reborrow().init_left_fees(), + ); } fn ser_response_send_funds_op( @@ -267,15 +286,17 @@ pub fn deser_friends_route( fn deser_request_send_funds_op( request_send_funds_op_reader: &funder_capnp::request_send_funds_op::Reader, ) -> Result { - unimplemented!(); - /* - Ok(RequestSendFunds { + Ok(RequestSendFundsOp { request_id: read_uid(&request_send_funds_op_reader.get_request_id()?)?, + src_hashed_lock: read_hashed_lock(&request_send_funds_op_reader.get_src_hashed_lock()?)?, route: deser_friends_route(&request_send_funds_op_reader.get_route()?)?, dest_payment: read_custom_u_int128(&request_send_funds_op_reader.get_dest_payment()?)?, + total_dest_payment: read_custom_u_int128( + &request_send_funds_op_reader.get_total_dest_payment()?, + )?, invoice_id: read_invoice_id(&request_send_funds_op_reader.get_invoice_id()?)?, + left_fees: read_custom_u_int128(&request_send_funds_op_reader.get_left_fees()?)?, }) - */ } fn deser_response_send_funds_op( From 7ddf2591f798b47a91d3d693432c092ce37cea4e Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 11:20:36 +0300 Subject: [PATCH 06/38] Restored ResponseSendFundsOp serialization. --- components/proto/src/funder/serialize.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/components/proto/src/funder/serialize.rs b/components/proto/src/funder/serialize.rs index 31aa4ede5..ac4eeb0c6 100644 --- a/components/proto/src/funder/serialize.rs +++ b/components/proto/src/funder/serialize.rs @@ -85,6 +85,14 @@ fn ser_response_send_funds_op( &response_send_funds.request_id, &mut response_send_funds_op_builder.reborrow().init_request_id(), ); + + write_hashed_lock( + &response_send_funds.dest_hashed_lock, + &mut response_send_funds_op_builder + .reborrow() + .init_dest_hashed_lock(), + ); + write_rand_nonce( &response_send_funds.rand_nonce, &mut response_send_funds_op_builder.reborrow().init_rand_nonce(), @@ -302,14 +310,12 @@ fn deser_request_send_funds_op( fn deser_response_send_funds_op( response_send_funds_op_reader: &funder_capnp::response_send_funds_op::Reader, ) -> Result { - unimplemented!(); - /* - Ok(ResponseSendFunds { + Ok(ResponseSendFundsOp { request_id: read_uid(&response_send_funds_op_reader.get_request_id()?)?, + dest_hashed_lock: read_hashed_lock(&response_send_funds_op_reader.get_dest_hashed_lock()?)?, rand_nonce: read_rand_nonce(&response_send_funds_op_reader.get_rand_nonce()?)?, signature: read_signature(&response_send_funds_op_reader.get_signature()?)?, }) - */ } fn deser_cancel_send_funds_op( From 7c7e7924d86f4eee7989390b311928d3ddf658a4 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 11:28:21 +0300 Subject: [PATCH 07/38] Added serialization for CollectSendFundsOp. --- components/proto/src/funder/serialize.rs | 47 +++++++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/components/proto/src/funder/serialize.rs b/components/proto/src/funder/serialize.rs index ac4eeb0c6..209a20a60 100644 --- a/components/proto/src/funder/serialize.rs +++ b/components/proto/src/funder/serialize.rs @@ -1,8 +1,9 @@ use crate::capnp_common::{ - read_custom_int128, read_custom_u_int128, read_hashed_lock, read_invoice_id, read_public_key, - read_rand_nonce, read_relay_address, read_signature, read_uid, write_custom_int128, - write_custom_u_int128, write_hashed_lock, write_invoice_id, write_public_key, write_rand_nonce, - write_relay_address, write_signature, write_uid, + read_custom_int128, read_custom_u_int128, read_hashed_lock, read_invoice_id, read_plain_lock, + read_public_key, read_rand_nonce, read_relay_address, read_signature, read_uid, + write_custom_int128, write_custom_u_int128, write_hashed_lock, write_invoice_id, + write_plain_lock, write_public_key, write_rand_nonce, write_relay_address, write_signature, + write_uid, }; use capnp; use capnp::serialize_packed; @@ -12,8 +13,8 @@ use std::io; use funder_capnp; use super::messages::{ - CancelSendFundsOp, FriendMessage, FriendTcOp, FriendsRoute, MoveToken, MoveTokenRequest, - RequestSendFundsOp, ResetTerms, ResponseSendFundsOp, + CancelSendFundsOp, CollectSendFundsOp, FriendMessage, FriendTcOp, FriendsRoute, MoveToken, + MoveTokenRequest, RequestSendFundsOp, ResetTerms, ResponseSendFundsOp, }; use crate::serialize::SerializeError; @@ -113,6 +114,30 @@ fn ser_cancel_send_funds_op( ); } +fn ser_collect_send_funds_op( + collect_send_funds: &CollectSendFundsOp, + collect_send_funds_op_builder: &mut funder_capnp::collect_send_funds_op::Builder, +) { + write_uid( + &collect_send_funds.request_id, + &mut collect_send_funds_op_builder.reborrow().init_request_id(), + ); + + write_plain_lock( + &collect_send_funds.src_plain_lock, + &mut collect_send_funds_op_builder + .reborrow() + .init_src_plain_lock(), + ); + + write_plain_lock( + &collect_send_funds.dest_plain_lock, + &mut collect_send_funds_op_builder + .reborrow() + .init_dest_plain_lock(), + ); +} + fn ser_friend_operation( operation: &FriendTcOp, operation_builder: &mut funder_capnp::friend_operation::Builder, @@ -326,6 +351,16 @@ fn deser_cancel_send_funds_op( }) } +fn deser_collect_send_funds_op( + collect_send_funds_op_reader: &funder_capnp::collect_send_funds_op::Reader, +) -> Result { + Ok(CollectSendFundsOp { + request_id: read_uid(&collect_send_funds_op_reader.get_request_id()?)?, + src_plain_lock: read_plain_lock(&collect_send_funds_op_reader.get_src_plain_lock()?)?, + dest_plain_lock: read_plain_lock(&collect_send_funds_op_reader.get_dest_plain_lock()?)?, + }) +} + fn deser_friend_operation( friend_operation_reader: &funder_capnp::friend_operation::Reader, ) -> Result { From 2c961113f892a4c34987c3954591058583c0877c Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 14:31:48 +0300 Subject: [PATCH 08/38] Restored serialization for FriendTcOp. --- components/proto/src/funder/serialize.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/components/proto/src/funder/serialize.rs b/components/proto/src/funder/serialize.rs index 209a20a60..213f13fdf 100644 --- a/components/proto/src/funder/serialize.rs +++ b/components/proto/src/funder/serialize.rs @@ -142,8 +142,6 @@ fn ser_friend_operation( operation: &FriendTcOp, operation_builder: &mut funder_capnp::friend_operation::Builder, ) { - unimplemented!(); - /* match operation { FriendTcOp::EnableRequests => operation_builder.set_enable_requests(()), FriendTcOp::DisableRequests => operation_builder.set_disable_requests(()), @@ -167,8 +165,12 @@ fn ser_friend_operation( operation_builder.reborrow().init_cancel_send_funds(); ser_cancel_send_funds_op(cancel_send_funds, &mut cancel_send_funds_builder); } + FriendTcOp::CollectSendFunds(collect_send_funds) => { + let mut collect_send_funds_builder = + operation_builder.reborrow().init_collect_send_funds(); + ser_collect_send_funds_op(collect_send_funds, &mut collect_send_funds_builder); + } }; - */ } fn ser_move_token( @@ -364,8 +366,6 @@ fn deser_collect_send_funds_op( fn deser_friend_operation( friend_operation_reader: &funder_capnp::friend_operation::Reader, ) -> Result { - unimplemented!(); - /* Ok(match friend_operation_reader.which()? { funder_capnp::friend_operation::EnableRequests(()) => FriendTcOp::EnableRequests, funder_capnp::friend_operation::DisableRequests(()) => FriendTcOp::DisableRequests, @@ -383,8 +383,10 @@ fn deser_friend_operation( funder_capnp::friend_operation::CancelSendFunds(cancel_send_funds_reader) => { FriendTcOp::CancelSendFunds(deser_cancel_send_funds_op(&cancel_send_funds_reader?)?) } + funder_capnp::friend_operation::CollectSendFunds(collect_send_funds_reader) => { + FriendTcOp::CollectSendFunds(deser_collect_send_funds_op(&collect_send_funds_reader?)?) + } }) - */ } fn deser_move_token( From 6fc79358899b0e76eae5ffa64e38bbd6e4058dfd Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 14:36:09 +0300 Subject: [PATCH 09/38] Restored funder proto serialize tests. --- components/proto/src/funder/serialize.rs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/components/proto/src/funder/serialize.rs b/components/proto/src/funder/serialize.rs index 213f13fdf..392f271da 100644 --- a/components/proto/src/funder/serialize.rs +++ b/components/proto/src/funder/serialize.rs @@ -474,12 +474,12 @@ pub fn deserialize_friend_message(data: &[u8]) -> Result Date: Sun, 2 Jun 2019 14:39:14 +0300 Subject: [PATCH 10/38] Fixed AppPermissions serialization. --- components/proto/src/app_server/serialize.rs | 15 ++++++--------- components/proto/src/schema/app_server.capnp | 10 ++++++---- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 6471037b4..0fc2452c6 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -388,32 +388,29 @@ fn ser_app_permissions( app_permissions: &AppPermissions, app_permissions_builder: &mut app_server_capnp::app_permissions::Builder, ) { - unimplemented!(); - /* app_permissions_builder .reborrow() .set_routes(app_permissions.routes); app_permissions_builder .reborrow() - .set_send_funds(app_permissions.buyer); + .set_buyer(app_permissions.buyer); + app_permissions_builder + .reborrow() + .set_seller(app_permissions.seller); app_permissions_builder .reborrow() .set_config(app_permissions.config); - */ } fn deser_app_permissions( app_permissions_reader: &app_server_capnp::app_permissions::Reader, ) -> Result { - unimplemented!(); - /* Ok(AppPermissions { routes: app_permissions_reader.get_routes(), - buyer: app_permissions_reader.get_send_funds(), - seller: app_permissions_reader.get_send_funds(), + buyer: app_permissions_reader.get_buyer(), + seller: app_permissions_reader.get_seller(), config: app_permissions_reader.get_config(), }) - */ } fn ser_report_mutations( diff --git a/components/proto/src/schema/app_server.capnp b/components/proto/src/schema/app_server.capnp index 2407fbe67..67c34e4ab 100644 --- a/components/proto/src/schema/app_server.capnp +++ b/components/proto/src/schema/app_server.capnp @@ -93,10 +93,12 @@ struct ClientResponseRoutes { struct AppPermissions { routes @0: Bool; - # Can request routes - sendFunds @1: Bool; - # Can send credits - config @2: Bool; + # Can request for routes + buyer @1: Bool; + # Can buy (Send credits) + seller @2: Bool; + # Can sell (Receive credits) + config @3: Bool; # Can configure friends } From 956ac4c31fc55ad5989a38e25bcc5a5e4f602528 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 15:09:40 +0300 Subject: [PATCH 11/38] Updated app-server capnp schema to the new protocol. --- components/proto/src/app_server/serialize.rs | 47 ++++---- components/proto/src/schema/app_server.capnp | 114 +++++++++++++++---- components/proto/src/schema/common.capnp | 9 ++ 3 files changed, 125 insertions(+), 45 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 0fc2452c6..9291ede00 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -25,7 +25,7 @@ use index_server::serialize::{deser_request_routes, ser_request_routes}; use crate::funder::messages::{ AddFriend, ReceiptAck, ResetFriendChannel, /* ResponseReceived, ResponseSendFundsResult, */ - SetFriendName, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, + SetFriendName, SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -33,12 +33,12 @@ use crate::app_server::messages::{ AppPermissions, AppRequest, AppServerToApp, AppToAppServer, ReportMutations, }; +/* fn ser_user_request_send_funds( user_request_send_funds: &UserRequestSendFunds, user_request_send_funds_builder: &mut app_server_capnp::user_request_send_funds::Builder, ) { unimplemented!(); - /* write_uid( &user_request_send_funds.request_id, &mut user_request_send_funds_builder.reborrow().init_request_id(), @@ -58,22 +58,21 @@ fn ser_user_request_send_funds( &user_request_send_funds.invoice_id, &mut user_request_send_funds_builder.reborrow().init_invoice_id(), ); - */ } fn deser_user_request_send_funds( user_request_send_funds_reader: &app_server_capnp::user_request_send_funds::Reader, ) -> Result { unimplemented!(); - /* + Ok(UserRequestSendFunds { request_id: read_uid(&user_request_send_funds_reader.get_request_id()?)?, route: deser_friends_route(&user_request_send_funds_reader.get_route()?)?, dest_payment: read_custom_u_int128(&user_request_send_funds_reader.get_dest_payment()?)?, invoice_id: read_invoice_id(&user_request_send_funds_reader.get_invoice_id()?)?, }) - */ } +*/ /* fn ser_response_received( @@ -520,8 +519,6 @@ fn ser_app_request( app_request: &AppRequest, app_request_builder: &mut app_server_capnp::app_request::Builder, ) { - unimplemented!(); - /* match app_request { AppRequest::AddRelay(named_relay_address) => write_named_relay_address( named_relay_address, @@ -531,14 +528,13 @@ fn ser_app_request( public_key, &mut app_request_builder.reborrow().init_remove_relay(), ), - AppRequest::RequestSendFunds(user_request_send_funds) => ser_user_request_send_funds( - user_request_send_funds, - &mut app_request_builder.reborrow().init_request_send_funds(), - ), - AppRequest::ReceiptAck(receipt_ack) => ser_receipt_ack( - receipt_ack, - &mut app_request_builder.reborrow().init_receipt_ack(), - ), + AppRequest::CreatePayment(_create_payment) => unimplemented!(), + AppRequest::CreateTransaction(_create_transaction) => unimplemented!(), + AppRequest::RequestClosePayment(_request_close_payment) => unimplemented!(), + AppRequest::AckClosePayment(_ack_close_payment) => unimplemented!(), + AppRequest::AddInvoice(_add_invoice) => unimplemented!(), + AppRequest::CancelInvoice(_cancel_invoice) => unimplemented!(), + AppRequest::CommitInvoice(_commit_invoice) => unimplemented!(), AppRequest::AddFriend(add_friend) => ser_add_friend( add_friend, &mut app_request_builder.reborrow().init_add_friend(), @@ -579,6 +575,7 @@ fn ser_app_request( .init_set_friend_remote_max_debt(), ) } + AppRequest::SetFriendRate(_set_friend_rate) => unimplemented!(), AppRequest::ResetFriendChannel(reset_friend_channel) => ser_reset_friend_channel( reset_friend_channel, &mut app_request_builder.reborrow().init_reset_friend_channel(), @@ -598,14 +595,11 @@ fn ser_app_request( &mut app_request_builder.reborrow().init_remove_index_server(), ), } - */ } fn deser_app_request( app_request: &app_server_capnp::app_request::Reader, ) -> Result { - unimplemented!(); - /* Ok(match app_request.which()? { app_server_capnp::app_request::AddRelay(named_relay_address_reader) => { AppRequest::AddRelay(read_named_relay_address(&named_relay_address_reader?)?) @@ -613,14 +607,17 @@ fn deser_app_request( app_server_capnp::app_request::RemoveRelay(public_key_reader) => { AppRequest::RemoveRelay(read_public_key(&public_key_reader?)?) } - app_server_capnp::app_request::RequestSendFunds(request_send_funds_reader) => { - AppRequest::RequestSendFunds(deser_user_request_send_funds( - &request_send_funds_reader?, - )?) + app_server_capnp::app_request::CreatePayment(_create_payment_reader) => unimplemented!(), + app_server_capnp::app_request::CreateTransaction(_create_transaction_reader) => { + unimplemented!() } - app_server_capnp::app_request::ReceiptAck(receipt_ack_reader) => { - AppRequest::ReceiptAck(deser_receipt_ack(&receipt_ack_reader?)?) + app_server_capnp::app_request::RequestClosePayment(_request_close_payment) => { + unimplemented!() } + app_server_capnp::app_request::AckClosePayment(_ack_close_payment) => unimplemented!(), + app_server_capnp::app_request::AddInvoice(_add_invoice) => unimplemented!(), + app_server_capnp::app_request::CancelInvoice(_cancel_invoice) => unimplemented!(), + app_server_capnp::app_request::CommitInvoice(_commit_invoice) => unimplemented!(), app_server_capnp::app_request::AddFriend(add_friend_reader) => { AppRequest::AddFriend(deser_add_friend(&add_friend_reader?)?) } @@ -645,6 +642,7 @@ fn deser_app_request( app_server_capnp::app_request::CloseFriend(public_key_reader) => { AppRequest::CloseFriend(read_public_key(&public_key_reader?)?) } + app_server_capnp::app_request::SetFriendRate(_set_friend_rate) => unimplemented!(), app_server_capnp::app_request::SetFriendRemoteMaxDebt( set_friend_remote_max_debt_reader, ) => AppRequest::SetFriendRemoteMaxDebt(deser_set_friend_remote_max_debt( @@ -665,7 +663,6 @@ fn deser_app_request( AppRequest::RemoveIndexServer(read_public_key(&public_key_reader?)?) } }) - */ } fn ser_app_to_app_server( diff --git a/components/proto/src/schema/app_server.capnp b/components/proto/src/schema/app_server.capnp index 67c34e4ab..903bcb40a 100644 --- a/components/proto/src/schema/app_server.capnp +++ b/components/proto/src/schema/app_server.capnp @@ -9,8 +9,12 @@ using import "common.capnp".PublicKey; using import "common.capnp".Hash; using import "common.capnp".Signature; using import "common.capnp".RandNonce; +using import "common.capnp".PaymentId; +using import "common.capnp".Rate; using import "common.capnp".Receipt; +using import "common.capnp".Commit; +using import "common.capnp".MultiCommit; using import "common.capnp".RelayAddress; using import "common.capnp".NamedRelayAddress; using import "common.capnp".NetAddress; @@ -71,6 +75,11 @@ struct SetFriendRemoteMaxDebt { remoteMaxDebt @1: CustomUInt128; } +struct SetFriendRate { + friendPublicKey @0: PublicKey; + rate @1: Rate; +} + # Application -> AppServer struct ResetFriendChannel { friendPublicKey @0: PublicKey; @@ -89,6 +98,31 @@ struct ClientResponseRoutes { result @1: ResponseRoutesResult; } +struct CreatePayment { + paymentId @0: PaymentId; + invoiceId @1: InvoiceId; + totalDestPayment @2: CustomUInt128; + destPublicKey @3: PublicKey; +} + +struct CreateTransaction { + paymentId @0: PaymentId; + requestId @1: Uid; + route @2: FriendsRoute; + destPayment @3: CustomUInt128; + fees @4: CustomUInt128; +} + +struct AckClosePayment { + paymentId @0: PaymentId; + ackUid @1: Uid; +} + +struct AddInvoice { + invoiceId @0: InvoiceId; + totalDestPayment @1: CustomUInt128; +} + ##################################################################### struct AppPermissions { @@ -114,18 +148,50 @@ struct ReportMutations { # A list of mutations } +struct RequestResult { + union { + success @0: Commit; + failure @1: Void; + } +} + +struct TransactionResult { + requestId @0: Uid; + result @1: RequestResult; +} + +struct PaymentStatusSuccess { + receipt @0: Receipt; + ackUid @1: Receipt; +} + +struct PaymentStatus { + union { + paymentNotFound @0: Void; + inProgress @1: Void; + success @2: PaymentStatusSuccess; + canceled @3: Uid; + } +} + +struct ResponseClosePayment { + paymentId @0: PaymentId; + status @1: PaymentStatus; +} + struct AppServerToApp { union { # Funds - responseReceived @0: ResponseReceived; + transactionResult @0: TransactionResult; + responseClosePayment @1: ResponseClosePayment; # Reports about current state: - report @1: NodeReport; - reportMutations @2: ReportMutations; + report @2: NodeReport; + reportMutations @3: ReportMutations; # Routes: - responseRoutes @3: ClientResponseRoutes; + responseRoutes @4: ClientResponseRoutes; } } @@ -136,28 +202,36 @@ struct AppRequest { addRelay @0: NamedRelayAddress; removeRelay @1: PublicKey; - # Sending Funds: - requestSendFunds @2: UserRequestSendFunds; - receiptAck @3: ReceiptAck; + # Buyer (Sending Funds): + createPayment @2: CreatePayment; + createTransaction @3: CreateTransaction; + requestClosePayment @4: PaymentId; + ackClosePayment @5: AckClosePayment; + + # Seller (Receiving funds): + addInvoice @6: AddInvoice; + cancelInvoice @7: InvoiceId; + commitInvoice @8: MultiCommit; # Friends management - addFriend @4: AddFriend; - setFriendRelays @5: SetFriendRelays; - setFriendName @6: SetFriendName; - removeFriend @7: PublicKey; - enableFriend @8: PublicKey; - disableFriend @9: PublicKey; - openFriend @10: PublicKey; - closeFriend @11: PublicKey; - setFriendRemoteMaxDebt @12: SetFriendRemoteMaxDebt; - resetFriendChannel @13: ResetFriendChannel; + addFriend @9: AddFriend; + setFriendRelays @10: SetFriendRelays; + setFriendName @11: SetFriendName; + removeFriend @12: PublicKey; + enableFriend @13: PublicKey; + disableFriend @14: PublicKey; + openFriend @15: PublicKey; + closeFriend @16: PublicKey; + setFriendRemoteMaxDebt @17: SetFriendRemoteMaxDebt; + setFriendRate @18: SetFriendRate; + resetFriendChannel @19: ResetFriendChannel; # Routes: - requestRoutes @14: RequestRoutes; + requestRoutes @20: RequestRoutes; # Index servers management: - addIndexServer @15: NamedIndexServerAddress; - removeIndexServer @16: PublicKey; + addIndexServer @21: NamedIndexServerAddress; + removeIndexServer @22: PublicKey; } } diff --git a/components/proto/src/schema/common.capnp b/components/proto/src/schema/common.capnp index dcf00455f..bc9a8cf1e 100644 --- a/components/proto/src/schema/common.capnp +++ b/components/proto/src/schema/common.capnp @@ -69,6 +69,10 @@ struct Uid { inner @0: Buffer128; } +struct PaymentId { + inner @0: Buffer128; +} + struct PlainLock { inner @0: Buffer256; } @@ -77,6 +81,11 @@ struct HashedLock { inner @0: Buffer256; } +struct Rate { + mul @0: UInt32; + add @1: UInt32; +} + # Stringly represented address. # For example: "127.0.0.1:1337" From 3294a486108fb63f542b6bb9eecd1759f019f19c Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 15:21:35 +0300 Subject: [PATCH 12/38] Some work on AppRequest serialization. Not done yet. --- components/proto/src/app_server/serialize.rs | 26 +++++++++++++------- components/proto/src/capnp_common.rs | 13 +++++++++- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 9291ede00..752005ae5 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -2,10 +2,10 @@ use std::io; use crate::capnp_common::{ read_custom_int128, read_custom_u_int128, read_invoice_id, read_named_index_server_address, - read_named_relay_address, read_public_key, /*read_receipt,*/ read_relay_address, - read_signature, read_uid, write_custom_int128, write_custom_u_int128, write_invoice_id, - write_named_index_server_address, write_named_relay_address, - write_public_key, /*write_receipt,*/ + read_named_relay_address, read_payment_id, read_public_key, + /*read_receipt,*/ read_relay_address, read_signature, read_uid, write_custom_int128, + write_custom_u_int128, write_invoice_id, write_named_index_server_address, + write_named_relay_address, write_payment_id, write_public_key, /*write_receipt,*/ write_relay_address, write_signature, write_uid, }; use capnp; @@ -530,10 +530,16 @@ fn ser_app_request( ), AppRequest::CreatePayment(_create_payment) => unimplemented!(), AppRequest::CreateTransaction(_create_transaction) => unimplemented!(), - AppRequest::RequestClosePayment(_request_close_payment) => unimplemented!(), + AppRequest::RequestClosePayment(payment_id) => write_payment_id( + payment_id, + &mut app_request_builder.reborrow().init_request_close_payment(), + ), AppRequest::AckClosePayment(_ack_close_payment) => unimplemented!(), AppRequest::AddInvoice(_add_invoice) => unimplemented!(), - AppRequest::CancelInvoice(_cancel_invoice) => unimplemented!(), + AppRequest::CancelInvoice(invoice_id) => write_invoice_id( + invoice_id, + &mut app_request_builder.reborrow().init_cancel_invoice(), + ), AppRequest::CommitInvoice(_commit_invoice) => unimplemented!(), AppRequest::AddFriend(add_friend) => ser_add_friend( add_friend, @@ -611,12 +617,14 @@ fn deser_app_request( app_server_capnp::app_request::CreateTransaction(_create_transaction_reader) => { unimplemented!() } - app_server_capnp::app_request::RequestClosePayment(_request_close_payment) => { - unimplemented!() + app_server_capnp::app_request::RequestClosePayment(payment_id_reader) => { + AppRequest::RequestClosePayment(read_payment_id(&payment_id_reader?)?) } app_server_capnp::app_request::AckClosePayment(_ack_close_payment) => unimplemented!(), app_server_capnp::app_request::AddInvoice(_add_invoice) => unimplemented!(), - app_server_capnp::app_request::CancelInvoice(_cancel_invoice) => unimplemented!(), + app_server_capnp::app_request::CancelInvoice(invoice_id_reader) => { + AppRequest::CancelInvoice(read_invoice_id(&invoice_id_reader?)?) + } app_server_capnp::app_request::CommitInvoice(_commit_invoice) => unimplemented!(), app_server_capnp::app_request::AddFriend(add_friend_reader) => { AppRequest::AddFriend(deser_add_friend(&add_friend_reader?)?) diff --git a/components/proto/src/capnp_common.rs b/components/proto/src/capnp_common.rs index 90ea61254..682317da6 100644 --- a/components/proto/src/capnp_common.rs +++ b/components/proto/src/capnp_common.rs @@ -5,7 +5,7 @@ use std::io; use common_capnp::{ buffer128, buffer256, buffer512, custom_int128, custom_u_int128, dh_public_key, hash, hashed_lock, invoice_id, named_index_server_address, named_relay_address, net_address, - plain_lock, public_key, rand_nonce, receipt, relay_address, salt, signature, uid, + payment_id, plain_lock, public_key, rand_nonce, receipt, relay_address, salt, signature, uid, }; use crate::app_server::messages::{NamedRelayAddress, RelayAddress}; @@ -20,6 +20,7 @@ use crypto::hash::HashResult; use crypto::hash_lock::{HashedLock, PlainLock}; use crypto::identity::{PublicKey, Signature}; use crypto::invoice_id::InvoiceId; +use crypto::payment_id::PaymentId; use crypto::uid::Uid; /// Read the underlying bytes from given `CustomUInt128` reader. @@ -150,6 +151,7 @@ type_capnp_serde!( read_buffer256, write_buffer256 ); + type_capnp_serde!( invoice_id, InvoiceId, @@ -159,6 +161,15 @@ type_capnp_serde!( write_buffer256 ); +type_capnp_serde!( + payment_id, + PaymentId, + read_payment_id, + write_payment_id, + read_buffer128, + write_buffer128 +); + // 512 bits: type_capnp_serde!( signature, From b1c7b1c2db40eedad0b435e964315a9910a53d11 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 15:35:48 +0300 Subject: [PATCH 13/38] Added serialization for CreatePayment. --- components/proto/src/app_server/serialize.rs | 47 ++++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 752005ae5..38bc8d6a5 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -23,7 +23,7 @@ use crate::report::serialize::{ use index_server::serialize::{deser_request_routes, ser_request_routes}; use crate::funder::messages::{ - AddFriend, ReceiptAck, + AddFriend, CreatePayment, ReceiptAck, ResetFriendChannel, /* ResponseReceived, ResponseSendFundsResult, */ SetFriendName, SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, }; @@ -412,6 +412,42 @@ fn deser_app_permissions( }) } +fn ser_create_payment( + create_payment: &CreatePayment, + create_payment_builder: &mut app_server_capnp::create_payment::Builder, +) { + write_payment_id( + &create_payment.payment_id, + &mut create_payment_builder.reborrow().init_payment_id(), + ); + + write_invoice_id( + &create_payment.invoice_id, + &mut create_payment_builder.reborrow().init_invoice_id(), + ); + + write_custom_u_int128( + create_payment.total_dest_payment, + &mut create_payment_builder.reborrow().init_total_dest_payment(), + ); + + write_public_key( + &create_payment.dest_public_key, + &mut create_payment_builder.reborrow().init_dest_public_key(), + ); +} + +fn deser_create_payment( + create_payment_reader: &app_server_capnp::create_payment::Reader, +) -> Result { + Ok(CreatePayment { + payment_id: read_payment_id(&create_payment_reader.get_payment_id()?)?, + invoice_id: read_invoice_id(&create_payment_reader.get_invoice_id()?)?, + total_dest_payment: read_custom_u_int128(&create_payment_reader.get_total_dest_payment()?)?, + dest_public_key: read_public_key(&create_payment_reader.get_dest_public_key()?)?, + }) +} + fn ser_report_mutations( report_mutations: &ReportMutations, report_mutations_builder: &mut app_server_capnp::report_mutations::Builder, @@ -528,7 +564,10 @@ fn ser_app_request( public_key, &mut app_request_builder.reborrow().init_remove_relay(), ), - AppRequest::CreatePayment(_create_payment) => unimplemented!(), + AppRequest::CreatePayment(create_payment) => ser_create_payment( + create_payment, + &mut app_request_builder.reborrow().init_create_payment(), + ), AppRequest::CreateTransaction(_create_transaction) => unimplemented!(), AppRequest::RequestClosePayment(payment_id) => write_payment_id( payment_id, @@ -613,7 +652,9 @@ fn deser_app_request( app_server_capnp::app_request::RemoveRelay(public_key_reader) => { AppRequest::RemoveRelay(read_public_key(&public_key_reader?)?) } - app_server_capnp::app_request::CreatePayment(_create_payment_reader) => unimplemented!(), + app_server_capnp::app_request::CreatePayment(create_payment_reader) => { + AppRequest::CreatePayment(deser_create_payment(&create_payment_reader?)?) + } app_server_capnp::app_request::CreateTransaction(_create_transaction_reader) => { unimplemented!() } From 32883427a20a56f4eb0c1f5afcd7903c694c3ec5 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 15:39:45 +0300 Subject: [PATCH 14/38] Added serialization for Rate. --- components/proto/src/capnp_common.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/components/proto/src/capnp_common.rs b/components/proto/src/capnp_common.rs index 682317da6..1e637b579 100644 --- a/components/proto/src/capnp_common.rs +++ b/components/proto/src/capnp_common.rs @@ -5,11 +5,12 @@ use std::io; use common_capnp::{ buffer128, buffer256, buffer512, custom_int128, custom_u_int128, dh_public_key, hash, hashed_lock, invoice_id, named_index_server_address, named_relay_address, net_address, - payment_id, plain_lock, public_key, rand_nonce, receipt, relay_address, salt, signature, uid, + payment_id, plain_lock, public_key, rand_nonce, rate, receipt, relay_address, salt, signature, + uid, }; use crate::app_server::messages::{NamedRelayAddress, RelayAddress}; -use crate::funder::messages::Receipt; +use crate::funder::messages::{Rate, Receipt}; use crate::index_server::messages::NamedIndexServerAddress; use crate::net::messages::NetAddress; use crate::serialize::SerializeError; @@ -331,3 +332,15 @@ pub fn write_receipt(from: &Receipt, to: &mut receipt::Builder) { ); write_signature(&from.signature, &mut to.reborrow().init_signature()); } + +pub fn read_rate(from: &rate::Reader) -> Result { + Ok(Rate { + mul: from.get_mul(), + add: from.get_add(), + }) +} + +pub fn write_rate(from: &Rate, to: &mut rate::Builder) { + to.reborrow().set_mul(from.mul); + to.reborrow().set_add(from.add); +} From 556e8ca56a2f9c497c7577472a65172d8bd28460 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 15:48:29 +0300 Subject: [PATCH 15/38] Added serialization for SetFriendRate. --- components/proto/src/app_server/serialize.rs | 37 +++++++++++++++++--- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 38bc8d6a5..02a0ad6a8 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -2,11 +2,11 @@ use std::io; use crate::capnp_common::{ read_custom_int128, read_custom_u_int128, read_invoice_id, read_named_index_server_address, - read_named_relay_address, read_payment_id, read_public_key, + read_named_relay_address, read_payment_id, read_public_key, read_rate, /*read_receipt,*/ read_relay_address, read_signature, read_uid, write_custom_int128, write_custom_u_int128, write_invoice_id, write_named_index_server_address, write_named_relay_address, write_payment_id, write_public_key, /*write_receipt,*/ - write_relay_address, write_signature, write_uid, + write_rate, write_relay_address, write_signature, write_uid, }; use capnp; use capnp::serialize_packed; @@ -448,6 +448,30 @@ fn deser_create_payment( }) } +fn ser_set_friend_rate( + set_friend_rate: &SetFriendRate, + set_friend_rate_builder: &mut app_server_capnp::set_friend_rate::Builder, +) { + write_public_key( + &set_friend_rate.friend_public_key, + &mut set_friend_rate_builder.reborrow().init_friend_public_key(), + ); + + write_rate( + &set_friend_rate.rate, + &mut set_friend_rate_builder.reborrow().init_rate(), + ); +} + +fn deser_set_friend_rate( + set_friend_rate_reader: &app_server_capnp::set_friend_rate::Reader, +) -> Result { + Ok(SetFriendRate { + friend_public_key: read_public_key(&set_friend_rate_reader.get_friend_public_key()?)?, + rate: read_rate(&set_friend_rate_reader.get_rate()?)?, + }) +} + fn ser_report_mutations( report_mutations: &ReportMutations, report_mutations_builder: &mut app_server_capnp::report_mutations::Builder, @@ -620,7 +644,10 @@ fn ser_app_request( .init_set_friend_remote_max_debt(), ) } - AppRequest::SetFriendRate(_set_friend_rate) => unimplemented!(), + AppRequest::SetFriendRate(set_friend_rate) => ser_set_friend_rate( + set_friend_rate, + &mut app_request_builder.reborrow().init_set_friend_rate(), + ), AppRequest::ResetFriendChannel(reset_friend_channel) => ser_reset_friend_channel( reset_friend_channel, &mut app_request_builder.reborrow().init_reset_friend_channel(), @@ -691,7 +718,9 @@ fn deser_app_request( app_server_capnp::app_request::CloseFriend(public_key_reader) => { AppRequest::CloseFriend(read_public_key(&public_key_reader?)?) } - app_server_capnp::app_request::SetFriendRate(_set_friend_rate) => unimplemented!(), + app_server_capnp::app_request::SetFriendRate(set_friend_rate_reader) => { + AppRequest::SetFriendRate(deser_set_friend_rate(&set_friend_rate_reader?)?) + } app_server_capnp::app_request::SetFriendRemoteMaxDebt( set_friend_remote_max_debt_reader, ) => AppRequest::SetFriendRemoteMaxDebt(deser_set_friend_remote_max_debt( From deacb221214356588f8431da5d16369607997dca Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:03:12 +0300 Subject: [PATCH 16/38] Added serialization to Commit, MultiCommit. --- components/proto/src/capnp_common.rs | 66 +++++++++++++++++++++++++--- 1 file changed, 61 insertions(+), 5 deletions(-) diff --git a/components/proto/src/capnp_common.rs b/components/proto/src/capnp_common.rs index 1e637b579..094e99ef8 100644 --- a/components/proto/src/capnp_common.rs +++ b/components/proto/src/capnp_common.rs @@ -2,15 +2,17 @@ use byteorder::{BigEndian, ByteOrder, ReadBytesExt, WriteBytesExt}; use std::convert::{TryFrom, TryInto}; use std::io; +use common::int_convert::usize_to_u32; + use common_capnp::{ - buffer128, buffer256, buffer512, custom_int128, custom_u_int128, dh_public_key, hash, - hashed_lock, invoice_id, named_index_server_address, named_relay_address, net_address, - payment_id, plain_lock, public_key, rand_nonce, rate, receipt, relay_address, salt, signature, - uid, + buffer128, buffer256, buffer512, commit, custom_int128, custom_u_int128, dh_public_key, hash, + hashed_lock, invoice_id, multi_commit, named_index_server_address, named_relay_address, + net_address, payment_id, plain_lock, public_key, rand_nonce, rate, receipt, relay_address, + salt, signature, uid, }; use crate::app_server::messages::{NamedRelayAddress, RelayAddress}; -use crate::funder::messages::{Rate, Receipt}; +use crate::funder::messages::{Commit, MultiCommit, Rate, Receipt}; use crate::index_server::messages::NamedIndexServerAddress; use crate::net::messages::NetAddress; use crate::serialize::SerializeError; @@ -333,6 +335,60 @@ pub fn write_receipt(from: &Receipt, to: &mut receipt::Builder) { write_signature(&from.signature, &mut to.reborrow().init_signature()); } +pub fn read_commit(from: &commit::Reader) -> Result { + Ok(Commit { + response_hash: read_hash(&from.get_response_hash()?)?, + dest_payment: read_custom_u_int128(&from.get_dest_payment()?)?, + src_plain_lock: read_plain_lock(&from.get_src_plain_lock()?)?, + dest_hashed_lock: read_hashed_lock(&from.get_dest_hashed_lock()?)?, + signature: read_signature(&from.get_signature()?)?, + }) +} + +pub fn write_commit(from: &Commit, to: &mut commit::Builder) { + write_hash(&from.response_hash, &mut to.reborrow().init_response_hash()); + write_custom_u_int128(from.dest_payment, &mut to.reborrow().init_dest_payment()); + write_plain_lock( + &from.src_plain_lock, + &mut to.reborrow().init_src_plain_lock(), + ); + write_hashed_lock( + &from.dest_hashed_lock, + &mut to.reborrow().init_dest_hashed_lock(), + ); + write_signature(&from.signature, &mut to.reborrow().init_signature()); +} + +pub fn read_multi_commit(from: &multi_commit::Reader) -> Result { + let mut commits = Vec::new(); + for commit_reader in from.get_commits()? { + commits.push(read_commit(&commit_reader)?); + } + + Ok(MultiCommit { + invoice_id: read_invoice_id(&from.get_invoice_id()?)?, + total_dest_payment: read_custom_u_int128(&from.get_total_dest_payment()?)?, + commits, + }) +} + +pub fn write_multi_commit(from: &MultiCommit, to: &mut multi_commit::Builder) { + write_invoice_id(&from.invoice_id, &mut to.reborrow().init_invoice_id()); + write_custom_u_int128( + from.total_dest_payment, + &mut to.reborrow().init_total_dest_payment(), + ); + + let mut commits_builder = to + .reborrow() + .init_commits(usize_to_u32(from.commits.len()).unwrap()); + + for (index, commit) in from.commits.iter().enumerate() { + let mut commit_builder = commits_builder.reborrow().get(usize_to_u32(index).unwrap()); + write_commit(commit, &mut commit_builder); + } +} + pub fn read_rate(from: &rate::Reader) -> Result { Ok(Rate { mul: from.get_mul(), From 7f3801c5f23fc73ecc94f90ff06462374294f765 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:07:36 +0300 Subject: [PATCH 17/38] Added serialization for AppRequest::CommitInvoice. --- components/proto/src/app_server/serialize.rs | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 02a0ad6a8..910dc74b7 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -1,11 +1,12 @@ use std::io; use crate::capnp_common::{ - read_custom_int128, read_custom_u_int128, read_invoice_id, read_named_index_server_address, - read_named_relay_address, read_payment_id, read_public_key, read_rate, - /*read_receipt,*/ read_relay_address, read_signature, read_uid, write_custom_int128, - write_custom_u_int128, write_invoice_id, write_named_index_server_address, - write_named_relay_address, write_payment_id, write_public_key, /*write_receipt,*/ + read_custom_int128, read_custom_u_int128, read_invoice_id, read_multi_commit, + read_named_index_server_address, read_named_relay_address, read_payment_id, read_public_key, + read_rate, /*read_receipt,*/ read_relay_address, read_signature, read_uid, + write_custom_int128, write_custom_u_int128, write_invoice_id, write_multi_commit, + write_named_index_server_address, write_named_relay_address, write_payment_id, + write_public_key, /*write_receipt,*/ write_rate, write_relay_address, write_signature, write_uid, }; use capnp; @@ -603,7 +604,10 @@ fn ser_app_request( invoice_id, &mut app_request_builder.reborrow().init_cancel_invoice(), ), - AppRequest::CommitInvoice(_commit_invoice) => unimplemented!(), + AppRequest::CommitInvoice(multi_commit) => write_multi_commit( + multi_commit, + &mut app_request_builder.reborrow().init_commit_invoice(), + ), AppRequest::AddFriend(add_friend) => ser_add_friend( add_friend, &mut app_request_builder.reborrow().init_add_friend(), @@ -693,7 +697,9 @@ fn deser_app_request( app_server_capnp::app_request::CancelInvoice(invoice_id_reader) => { AppRequest::CancelInvoice(read_invoice_id(&invoice_id_reader?)?) } - app_server_capnp::app_request::CommitInvoice(_commit_invoice) => unimplemented!(), + app_server_capnp::app_request::CommitInvoice(multi_commit_reader) => { + AppRequest::CommitInvoice(read_multi_commit(&multi_commit_reader?)?) + } app_server_capnp::app_request::AddFriend(add_friend_reader) => { AppRequest::AddFriend(deser_add_friend(&add_friend_reader?)?) } From c18c7aaac1146e24e24a9a08f41102a367ae65ff Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:17:29 +0300 Subject: [PATCH 18/38] Added serialization for CreateTransaction. --- components/proto/src/app_server/serialize.rs | 56 +++++++++++++++++--- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 910dc74b7..f288edbe3 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -24,9 +24,8 @@ use crate::report::serialize::{ use index_server::serialize::{deser_request_routes, ser_request_routes}; use crate::funder::messages::{ - AddFriend, CreatePayment, ReceiptAck, - ResetFriendChannel, /* ResponseReceived, ResponseSendFundsResult, */ - SetFriendName, SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, + AddFriend, CreatePayment, CreateTransaction, ReceiptAck, ResetFriendChannel, SetFriendName, + SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -449,6 +448,48 @@ fn deser_create_payment( }) } +fn ser_create_transaction( + create_transaction: &CreateTransaction, + create_transaction_builder: &mut app_server_capnp::create_transaction::Builder, +) { + write_payment_id( + &create_transaction.payment_id, + &mut create_transaction_builder.reborrow().init_payment_id(), + ); + + write_uid( + &create_transaction.request_id, + &mut create_transaction_builder.reborrow().init_request_id(), + ); + + ser_friends_route( + &create_transaction.route, + &mut create_transaction_builder.reborrow().init_route(), + ); + + write_custom_u_int128( + create_transaction.dest_payment, + &mut create_transaction_builder.reborrow().init_dest_payment(), + ); + + write_custom_u_int128( + create_transaction.fees, + &mut create_transaction_builder.reborrow().init_fees(), + ); +} + +fn deser_create_transaction( + create_transaction_reader: &app_server_capnp::create_transaction::Reader, +) -> Result { + Ok(CreateTransaction { + payment_id: read_payment_id(&create_transaction_reader.get_payment_id()?)?, + request_id: read_uid(&create_transaction_reader.get_request_id()?)?, + route: deser_friends_route(&create_transaction_reader.get_route()?)?, + dest_payment: read_custom_u_int128(&create_transaction_reader.get_dest_payment()?)?, + fees: read_custom_u_int128(&create_transaction_reader.get_fees()?)?, + }) +} + fn ser_set_friend_rate( set_friend_rate: &SetFriendRate, set_friend_rate_builder: &mut app_server_capnp::set_friend_rate::Builder, @@ -593,7 +634,10 @@ fn ser_app_request( create_payment, &mut app_request_builder.reborrow().init_create_payment(), ), - AppRequest::CreateTransaction(_create_transaction) => unimplemented!(), + AppRequest::CreateTransaction(create_transaction) => ser_create_transaction( + create_transaction, + &mut app_request_builder.reborrow().init_create_transaction(), + ), AppRequest::RequestClosePayment(payment_id) => write_payment_id( payment_id, &mut app_request_builder.reborrow().init_request_close_payment(), @@ -686,8 +730,8 @@ fn deser_app_request( app_server_capnp::app_request::CreatePayment(create_payment_reader) => { AppRequest::CreatePayment(deser_create_payment(&create_payment_reader?)?) } - app_server_capnp::app_request::CreateTransaction(_create_transaction_reader) => { - unimplemented!() + app_server_capnp::app_request::CreateTransaction(create_transaction_reader) => { + AppRequest::CreateTransaction(deser_create_transaction(&create_transaction_reader?)?) } app_server_capnp::app_request::RequestClosePayment(payment_id_reader) => { AppRequest::RequestClosePayment(read_payment_id(&payment_id_reader?)?) From 9091a07b4055089c1d69e8dc226644647ea59cc4 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:24:37 +0300 Subject: [PATCH 19/38] Added serialization for AppRequest::AddInvoice. --- components/proto/src/app_server/serialize.rs | 41 +++++++++++++++++--- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index f288edbe3..086070f5b 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -24,8 +24,8 @@ use crate::report::serialize::{ use index_server::serialize::{deser_request_routes, ser_request_routes}; use crate::funder::messages::{ - AddFriend, CreatePayment, CreateTransaction, ReceiptAck, ResetFriendChannel, SetFriendName, - SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, + AddFriend, AddInvoice, CreatePayment, CreateTransaction, ReceiptAck, ResetFriendChannel, + SetFriendName, SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -490,6 +490,30 @@ fn deser_create_transaction( }) } +fn ser_add_invoice( + add_invoice: &AddInvoice, + add_invoice_builder: &mut app_server_capnp::add_invoice::Builder, +) { + write_invoice_id( + &add_invoice.invoice_id, + &mut add_invoice_builder.reborrow().init_invoice_id(), + ); + + write_custom_u_int128( + add_invoice.total_dest_payment, + &mut add_invoice_builder.reborrow().init_total_dest_payment(), + ); +} + +fn deser_add_invoice( + add_invoice_reader: &app_server_capnp::add_invoice::Reader, +) -> Result { + Ok(AddInvoice { + invoice_id: read_invoice_id(&add_invoice_reader.get_invoice_id()?)?, + total_dest_payment: read_custom_u_int128(&add_invoice_reader.get_total_dest_payment()?)?, + }) +} + fn ser_set_friend_rate( set_friend_rate: &SetFriendRate, set_friend_rate_builder: &mut app_server_capnp::set_friend_rate::Builder, @@ -643,7 +667,10 @@ fn ser_app_request( &mut app_request_builder.reborrow().init_request_close_payment(), ), AppRequest::AckClosePayment(_ack_close_payment) => unimplemented!(), - AppRequest::AddInvoice(_add_invoice) => unimplemented!(), + AppRequest::AddInvoice(add_invoice) => ser_add_invoice( + add_invoice, + &mut app_request_builder.reborrow().init_add_invoice(), + ), AppRequest::CancelInvoice(invoice_id) => write_invoice_id( invoice_id, &mut app_request_builder.reborrow().init_cancel_invoice(), @@ -736,8 +763,12 @@ fn deser_app_request( app_server_capnp::app_request::RequestClosePayment(payment_id_reader) => { AppRequest::RequestClosePayment(read_payment_id(&payment_id_reader?)?) } - app_server_capnp::app_request::AckClosePayment(_ack_close_payment) => unimplemented!(), - app_server_capnp::app_request::AddInvoice(_add_invoice) => unimplemented!(), + app_server_capnp::app_request::AckClosePayment(_ack_close_payment_reader) => { + unimplemented!() + } + app_server_capnp::app_request::AddInvoice(add_invoice_reader) => { + AppRequest::AddInvoice(deser_add_invoice(&add_invoice_reader?)?) + } app_server_capnp::app_request::CancelInvoice(invoice_id_reader) => { AppRequest::CancelInvoice(read_invoice_id(&invoice_id_reader?)?) } From faef230c50cf7123e31de1bd3f401a28c406ca96 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:32:00 +0300 Subject: [PATCH 20/38] Added serialization code for AppRequest::AckClosePayment. --- components/proto/src/app_server/serialize.rs | 38 +++++++++++++++++--- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 086070f5b..c8ccd4ff3 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -24,8 +24,9 @@ use crate::report::serialize::{ use index_server::serialize::{deser_request_routes, ser_request_routes}; use crate::funder::messages::{ - AddFriend, AddInvoice, CreatePayment, CreateTransaction, ReceiptAck, ResetFriendChannel, - SetFriendName, SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, UserRequestSendFunds, + AckClosePayment, AddFriend, AddInvoice, CreatePayment, CreateTransaction, ReceiptAck, + ResetFriendChannel, SetFriendName, SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, + UserRequestSendFunds, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -514,6 +515,30 @@ fn deser_add_invoice( }) } +fn ser_ack_close_payment( + ack_close_payment: &AckClosePayment, + ack_close_payment_builder: &mut app_server_capnp::ack_close_payment::Builder, +) { + write_payment_id( + &ack_close_payment.payment_id, + &mut ack_close_payment_builder.reborrow().init_payment_id(), + ); + + write_uid( + &ack_close_payment.ack_uid, + &mut ack_close_payment_builder.reborrow().init_ack_uid(), + ); +} + +fn deser_ack_close_payment( + ack_close_payment_reader: &app_server_capnp::ack_close_payment::Reader, +) -> Result { + Ok(AckClosePayment { + payment_id: read_payment_id(&ack_close_payment_reader.get_payment_id()?)?, + ack_uid: read_uid(&ack_close_payment_reader.get_ack_uid()?)?, + }) +} + fn ser_set_friend_rate( set_friend_rate: &SetFriendRate, set_friend_rate_builder: &mut app_server_capnp::set_friend_rate::Builder, @@ -666,7 +691,10 @@ fn ser_app_request( payment_id, &mut app_request_builder.reborrow().init_request_close_payment(), ), - AppRequest::AckClosePayment(_ack_close_payment) => unimplemented!(), + AppRequest::AckClosePayment(ack_close_payment) => ser_ack_close_payment( + ack_close_payment, + &mut app_request_builder.reborrow().init_ack_close_payment(), + ), AppRequest::AddInvoice(add_invoice) => ser_add_invoice( add_invoice, &mut app_request_builder.reborrow().init_add_invoice(), @@ -763,8 +791,8 @@ fn deser_app_request( app_server_capnp::app_request::RequestClosePayment(payment_id_reader) => { AppRequest::RequestClosePayment(read_payment_id(&payment_id_reader?)?) } - app_server_capnp::app_request::AckClosePayment(_ack_close_payment_reader) => { - unimplemented!() + app_server_capnp::app_request::AckClosePayment(ack_close_payment_reader) => { + AppRequest::AckClosePayment(deser_ack_close_payment(&ack_close_payment_reader?)?) } app_server_capnp::app_request::AddInvoice(add_invoice_reader) => { AppRequest::AddInvoice(deser_add_invoice(&add_invoice_reader?)?) From a23f3b5233039ec28a10485e17c2c59f9efe8f63 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:37:44 +0300 Subject: [PATCH 21/38] Updated index capnp schema. --- components/proto/src/schema/app_server.capnp | 4 ++-- components/proto/src/schema/index.capnp | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/components/proto/src/schema/app_server.capnp b/components/proto/src/schema/app_server.capnp index 903bcb40a..bbb8ea162 100644 --- a/components/proto/src/schema/app_server.capnp +++ b/components/proto/src/schema/app_server.capnp @@ -24,7 +24,7 @@ using import "report.capnp".NodeReport; using import "report.capnp".NodeReportMutation; using import "index.capnp".RequestRoutes; -using import "index.capnp".RouteWithCapacity; +using import "index.capnp".MultiRoute; # Interface between AppServer and an Application @@ -88,7 +88,7 @@ struct ResetFriendChannel { struct ResponseRoutesResult { union { - success @0: List(RouteWithCapacity); + success @0: List(MultiRoute); failure @1: Void; } } diff --git a/components/proto/src/schema/index.capnp b/components/proto/src/schema/index.capnp index b623387a9..101d9d2f5 100644 --- a/components/proto/src/schema/index.capnp +++ b/components/proto/src/schema/index.capnp @@ -6,6 +6,7 @@ using import "common.capnp".Hash; using import "common.capnp".RandNonce; using import "common.capnp".Uid; using import "common.capnp".CustomUInt128; +using import "common.capnp".Rate; using import "funder.capnp".FriendsRoute; @@ -30,15 +31,20 @@ struct RequestRoutes { } -struct RouteWithCapacity { +struct RouteCapacityRate { route @0: FriendsRoute; capacity @1: CustomUInt128; + rate @2: Rate; +} + +struct MultiRoute { + routes @0: List(RouteCapacityRate); } # IndexServer -> IndexClient struct ResponseRoutes { requestId @0: Uid; - routes @1: List(RouteWithCapacity); + multiRoutes @1: List(MultiRoute); } struct UpdateFriend { From 66c2349c98f37313ad788898ef4cd3dcfb1ebe4c Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:45:37 +0300 Subject: [PATCH 22/38] Added serialization code for RouteCapacityRate. --- .../proto/src/index_server/serialize.rs | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/components/proto/src/index_server/serialize.rs b/components/proto/src/index_server/serialize.rs index 0d88248bb..22fd71c4a 100644 --- a/components/proto/src/index_server/serialize.rs +++ b/components/proto/src/index_server/serialize.rs @@ -2,17 +2,17 @@ use capnp::serialize_packed; use std::io; use crate::capnp_common::{ - read_custom_u_int128, read_hash, read_public_key, read_rand_nonce, read_signature, read_uid, - write_custom_u_int128, write_hash, write_public_key, write_rand_nonce, write_signature, - write_uid, + read_custom_u_int128, read_hash, read_public_key, read_rand_nonce, read_rate, read_signature, + read_uid, write_custom_u_int128, write_hash, write_public_key, write_rand_nonce, write_rate, + write_signature, write_uid, }; use common::int_convert::usize_to_u32; use index_capnp; use super::messages::{ ForwardMutationsUpdate, IndexClientToServer, IndexMutation, IndexServerToClient, - IndexServerToServer, MutationsUpdate, RequestRoutes, ResponseRoutes, TimeProofLink, - UpdateFriend, + IndexServerToServer, MutationsUpdate, RequestRoutes, ResponseRoutes, RouteCapacityRate, + TimeProofLink, UpdateFriend, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -81,33 +81,33 @@ pub fn deser_request_routes( }) } -/* -pub fn ser_route_with_capacity( - route_with_capacity: &RouteWithCapacity, - route_with_capacity_builder: &mut index_capnp::route_with_capacity::Builder, +pub fn ser_route_capacity_rate( + route_capacity_rate: &RouteCapacityRate, + route_capacity_rate_builder: &mut index_capnp::route_capacity_rate::Builder, ) { - unimplemented!(); - /* ser_friends_route( - &route_with_capacity.route, - &mut route_with_capacity_builder.reborrow().init_route(), + &route_capacity_rate.route, + &mut route_capacity_rate_builder.reborrow().init_route(), ); write_custom_u_int128( - route_with_capacity.capacity, - &mut route_with_capacity_builder.reborrow().init_capacity(), + route_capacity_rate.capacity, + &mut route_capacity_rate_builder.reborrow().init_capacity(), + ); + write_rate( + &route_capacity_rate.rate, + &mut route_capacity_rate_builder.reborrow().init_rate(), ); - */ } -pub fn deser_route_with_capacity( - route_with_capacity_reader: &index_capnp::route_with_capacity::Reader, -) -> Result { - Ok(RouteWithCapacity { - route: deser_friends_route(&route_with_capacity_reader.get_route()?)?, - capacity: read_custom_u_int128(&route_with_capacity_reader.get_capacity()?)?, +pub fn deser_route_capacity_rate( + route_capacity_rate_reader: &index_capnp::route_capacity_rate::Reader, +) -> Result { + Ok(RouteCapacityRate { + route: deser_friends_route(&route_capacity_rate_reader.get_route()?)?, + capacity: read_custom_u_int128(&route_capacity_rate_reader.get_capacity()?)?, + rate: read_rate(&route_capacity_rate_reader.get_rate()?)?, }) } -*/ fn ser_response_routes( response_routes: &ResponseRoutes, From 7536cb40d5698fe70e2c1149b202165f113ac697 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:52:03 +0300 Subject: [PATCH 23/38] Added serialization for MultiRoute. --- .../proto/src/index_server/serialize.rs | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/components/proto/src/index_server/serialize.rs b/components/proto/src/index_server/serialize.rs index 22fd71c4a..0372396f0 100644 --- a/components/proto/src/index_server/serialize.rs +++ b/components/proto/src/index_server/serialize.rs @@ -11,8 +11,8 @@ use index_capnp; use super::messages::{ ForwardMutationsUpdate, IndexClientToServer, IndexMutation, IndexServerToClient, - IndexServerToServer, MutationsUpdate, RequestRoutes, ResponseRoutes, RouteCapacityRate, - TimeProofLink, UpdateFriend, + IndexServerToServer, MultiRoute, MutationsUpdate, RequestRoutes, ResponseRoutes, + RouteCapacityRate, TimeProofLink, UpdateFriend, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -109,6 +109,31 @@ pub fn deser_route_capacity_rate( }) } +pub fn ser_multi_route( + multi_route: &MultiRoute, + multi_route_builder: &mut index_capnp::multi_route::Builder, +) { + let routes_len = usize_to_u32(multi_route.routes.len()).unwrap(); + let mut routes_builder = multi_route_builder.reborrow().init_routes(routes_len); + + for (index, route) in multi_route.routes.iter().enumerate() { + let mut route_capacity_rate_builder = + routes_builder.reborrow().get(usize_to_u32(index).unwrap()); + ser_route_capacity_rate(&route, &mut route_capacity_rate_builder); + } +} + +fn deser_multi_route( + multi_route_reader: &index_capnp::multi_route::Reader, +) -> Result { + let mut routes = Vec::new(); + for route_capacity_rate in multi_route_reader.get_routes()? { + routes.push(deser_route_capacity_rate(&route_capacity_rate)?); + } + + Ok(MultiRoute { routes }) +} + fn ser_response_routes( response_routes: &ResponseRoutes, response_routes_builder: &mut index_capnp::response_routes::Builder, From f528b08491c51b96bdc021c0a7dc1a75dc82ea19 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 16:59:37 +0300 Subject: [PATCH 24/38] Added serialization for ResponseRoutes. --- .../proto/src/index_server/serialize.rs | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/components/proto/src/index_server/serialize.rs b/components/proto/src/index_server/serialize.rs index 0372396f0..727b3bb6e 100644 --- a/components/proto/src/index_server/serialize.rs +++ b/components/proto/src/index_server/serialize.rs @@ -138,38 +138,35 @@ fn ser_response_routes( response_routes: &ResponseRoutes, response_routes_builder: &mut index_capnp::response_routes::Builder, ) { - unimplemented!(); - /* write_uid( &response_routes.request_id, &mut response_routes_builder.reborrow().init_request_id(), ); - let routes_len = usize_to_u32(response_routes.routes.len()).unwrap(); - let mut routes_builder = response_routes_builder.reborrow().init_routes(routes_len); + let multi_routes_len = usize_to_u32(response_routes.multi_routes.len()).unwrap(); + let mut multi_routes_builder = response_routes_builder + .reborrow() + .init_multi_routes(multi_routes_len); - for (index, route) in response_routes.routes.iter().enumerate() { - let mut route_with_capacity_builder = - routes_builder.reborrow().get(usize_to_u32(index).unwrap()); - ser_route_with_capacity(&route, &mut route_with_capacity_builder); + for (index, multi_route) in response_routes.multi_routes.iter().enumerate() { + let mut multi_route_builder = multi_routes_builder + .reborrow() + .get(usize_to_u32(index).unwrap()); + ser_multi_route(&multi_route, &mut multi_route_builder); } - */ } fn deser_response_routes( response_routes_reader: &index_capnp::response_routes::Reader, ) -> Result { - unimplemented!(); - /* - let mut routes = Vec::new(); - for route_with_capacity in response_routes_reader.get_routes()? { - routes.push(deser_route_with_capacity(&route_with_capacity)?); + let mut multi_routes = Vec::new(); + for multi_route_reader in response_routes_reader.get_multi_routes()? { + multi_routes.push(deser_multi_route(&multi_route_reader)?); } Ok(ResponseRoutes { request_id: read_uid(&response_routes_reader.get_request_id()?)?, - routes, + multi_routes, }) - */ } fn ser_update_friend( From 026420d8e229f58a98279f737cefc633480db299 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:02:33 +0300 Subject: [PATCH 25/38] Updated UpdateFriend serialization code and capnp schema. --- components/proto/src/index_server/serialize.rs | 10 ++++++---- components/proto/src/schema/index.capnp | 3 +++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/components/proto/src/index_server/serialize.rs b/components/proto/src/index_server/serialize.rs index 727b3bb6e..a6a9b2f02 100644 --- a/components/proto/src/index_server/serialize.rs +++ b/components/proto/src/index_server/serialize.rs @@ -185,19 +185,21 @@ fn ser_update_friend( update_friend.recv_capacity, &mut update_friend_builder.reborrow().init_recv_capacity(), ); + write_rate( + &update_friend.rate, + &mut update_friend_builder.reborrow().init_rate(), + ); } fn deser_update_friend( - _update_friend_reader: &index_capnp::update_friend::Reader, + update_friend_reader: &index_capnp::update_friend::Reader, ) -> Result { - unimplemented!(); - /* Ok(UpdateFriend { public_key: read_public_key(&update_friend_reader.get_public_key()?)?, send_capacity: read_custom_u_int128(&update_friend_reader.get_send_capacity()?)?, recv_capacity: read_custom_u_int128(&update_friend_reader.get_recv_capacity()?)?, + rate: read_rate(&update_friend_reader.get_rate()?)?, }) - */ } fn ser_index_mutation( diff --git a/components/proto/src/schema/index.capnp b/components/proto/src/schema/index.capnp index 101d9d2f5..c4c44c4f7 100644 --- a/components/proto/src/schema/index.capnp +++ b/components/proto/src/schema/index.capnp @@ -54,6 +54,9 @@ struct UpdateFriend { # To denote remote requests closed, assign 0 to sendCapacity recvCapacity @2: CustomUInt128; # To denote local requests closed, assign 0 to recvCapacity + rate @3: Rate; + # Rate a node takes for forwarding messages for this friend (to another + # node). } From 2273a98412f2a50eae8b9dc9fa98156224153ef8 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:08:17 +0300 Subject: [PATCH 26/38] Added serialization for ResponseRoutesResult. --- components/proto/src/app_server/serialize.rs | 34 ++++++++----------- .../proto/src/index_server/serialize.rs | 2 +- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index c8ccd4ff3..e8543a3fe 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -21,7 +21,9 @@ use crate::index_client::messages::{ClientResponseRoutes, ResponseRoutesResult}; use crate::report::serialize::{ deser_node_report, deser_node_report_mutation, ser_node_report, ser_node_report_mutation, }; -use index_server::serialize::{deser_request_routes, ser_request_routes}; +use index_server::serialize::{ + deser_multi_route, deser_request_routes, ser_multi_route, ser_request_routes, +}; use crate::funder::messages::{ AckClosePayment, AddFriend, AddInvoice, CreatePayment, CreateTransaction, ReceiptAck, @@ -303,42 +305,36 @@ fn ser_response_routes_result( response_routes_result: &ResponseRoutesResult, response_routes_result_builder: &mut app_server_capnp::response_routes_result::Builder, ) { - unimplemented!(); - /* match response_routes_result { - ResponseRoutesResult::Success(routes_with_capacity) => { - let routes_len = usize_to_u32(routes_with_capacity.len()).unwrap(); - let mut routes_with_capacity_builder = response_routes_result_builder + ResponseRoutesResult::Success(multi_routes) => { + let multi_routes_len = usize_to_u32(multi_routes.len()).unwrap(); + let mut multi_routes_builder = response_routes_result_builder .reborrow() - .init_success(routes_len); - for (index, route_with_capacity) in routes_with_capacity.iter().enumerate() { - let mut route_with_capacity_builder = routes_with_capacity_builder + .init_success(multi_routes_len); + for (index, multi_route) in multi_routes.iter().enumerate() { + let mut multi_route_builder = multi_routes_builder .reborrow() .get(usize_to_u32(index).unwrap()); - ser_route_with_capacity(route_with_capacity, &mut route_with_capacity_builder); + ser_multi_route(multi_route, &mut multi_route_builder); } } ResponseRoutesResult::Failure => response_routes_result_builder.reborrow().set_failure(()), } - */ } fn deser_response_routes_result( response_routes_result_reader: &app_server_capnp::response_routes_result::Reader, ) -> Result { - unimplemented!(); - /* Ok(match response_routes_result_reader.which()? { - app_server_capnp::response_routes_result::Success(routes_with_capacity_reader) => { - let mut routes_with_capacity = Vec::new(); - for route_with_capacity in routes_with_capacity_reader? { - routes_with_capacity.push(deser_route_with_capacity(&route_with_capacity)?); + app_server_capnp::response_routes_result::Success(multi_routes_reader) => { + let mut multi_routes = Vec::new(); + for multi_route_reader in multi_routes_reader? { + multi_routes.push(deser_multi_route(&multi_route_reader)?); } - ResponseRoutesResult::Success(routes_with_capacity) + ResponseRoutesResult::Success(multi_routes) } app_server_capnp::response_routes_result::Failure(()) => ResponseRoutesResult::Failure, }) - */ } fn ser_client_response_routes( diff --git a/components/proto/src/index_server/serialize.rs b/components/proto/src/index_server/serialize.rs index a6a9b2f02..9394a456b 100644 --- a/components/proto/src/index_server/serialize.rs +++ b/components/proto/src/index_server/serialize.rs @@ -123,7 +123,7 @@ pub fn ser_multi_route( } } -fn deser_multi_route( +pub fn deser_multi_route( multi_route_reader: &index_capnp::multi_route::Reader, ) -> Result { let mut routes = Vec::new(); From 875634e470efd072450cf8f5e4419266d1230c5a Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:13:06 +0300 Subject: [PATCH 27/38] Added skeleton for AppServerToApp serialization code (Contains unimplemented macros). --- components/proto/src/app_server/serialize.rs | 21 +++++++------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index e8543a3fe..e13900078 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -613,15 +613,9 @@ fn ser_app_server_to_app( app_server_to_app: &AppServerToApp, app_server_to_app_builder: &mut app_server_capnp::app_server_to_app::Builder, ) { - unimplemented!(); - /* match app_server_to_app { - AppServerToApp::ResponseReceived(response_received) => ser_response_received( - response_received, - &mut app_server_to_app_builder - .reborrow() - .init_response_received(), - ), + AppServerToApp::TransactionResult(_transaction_result) => unimplemented!(), + AppServerToApp::ResponseClosePayment(_response_close_payment) => unimplemented!(), AppServerToApp::Report(node_report) => ser_node_report( node_report, &mut app_server_to_app_builder.reborrow().init_report(), @@ -635,18 +629,18 @@ fn ser_app_server_to_app( &mut app_server_to_app_builder.reborrow().init_response_routes(), ), } - */ } fn deser_app_server_to_app( app_server_to_app_reader: &app_server_capnp::app_server_to_app::Reader, ) -> Result { - unimplemented!(); - /* Ok(match app_server_to_app_reader.which()? { - app_server_capnp::app_server_to_app::ResponseReceived(response_received_reader) => { - AppServerToApp::ResponseReceived(deser_response_received(&response_received_reader?)?) + app_server_capnp::app_server_to_app::TransactionResult(_transaction_result_reader) => { + unimplemented!() } + app_server_capnp::app_server_to_app::ResponseClosePayment( + _response_close_payment_reader, + ) => unimplemented!(), app_server_capnp::app_server_to_app::Report(node_report_reader) => { AppServerToApp::Report(deser_node_report(&node_report_reader?)?) } @@ -659,7 +653,6 @@ fn deser_app_server_to_app( )?) } }) - */ } fn ser_app_request( From 28885db5aa19c889fb146c02e75ff038482e7bb0 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:27:30 +0300 Subject: [PATCH 28/38] Added serialization for TransactionResult. --- components/proto/src/app_server/serialize.rs | 58 ++++++++++++++++++-- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index e13900078..43812743e 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -1,9 +1,9 @@ use std::io; use crate::capnp_common::{ - read_custom_int128, read_custom_u_int128, read_invoice_id, read_multi_commit, + read_commit, read_custom_int128, read_custom_u_int128, read_invoice_id, read_multi_commit, read_named_index_server_address, read_named_relay_address, read_payment_id, read_public_key, - read_rate, /*read_receipt,*/ read_relay_address, read_signature, read_uid, + read_rate, /*read_receipt,*/ read_relay_address, read_signature, read_uid, write_commit, write_custom_int128, write_custom_u_int128, write_invoice_id, write_multi_commit, write_named_index_server_address, write_named_relay_address, write_payment_id, write_public_key, /*write_receipt,*/ @@ -27,8 +27,8 @@ use index_server::serialize::{ use crate::funder::messages::{ AckClosePayment, AddFriend, AddInvoice, CreatePayment, CreateTransaction, ReceiptAck, - ResetFriendChannel, SetFriendName, SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, - UserRequestSendFunds, + RequestResult, ResetFriendChannel, SetFriendName, SetFriendRate, SetFriendRelays, + SetFriendRemoteMaxDebt, TransactionResult, UserRequestSendFunds, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -559,6 +559,56 @@ fn deser_set_friend_rate( }) } +fn ser_request_result( + request_result: &RequestResult, + request_result_builder: &mut app_server_capnp::request_result::Builder, +) { + match request_result { + RequestResult::Success(commit) => { + write_commit( + commit, + &mut request_result_builder.reborrow().init_success(), + ); + } + RequestResult::Failure => request_result_builder.reborrow().set_failure(()), + } +} + +fn deser_request_result( + request_result_reader: &app_server_capnp::request_result::Reader, +) -> Result { + Ok(match request_result_reader.which()? { + app_server_capnp::request_result::Success(commit_reader) => { + RequestResult::Success(read_commit(&commit_reader?)?) + } + app_server_capnp::request_result::Failure(()) => RequestResult::Failure, + }) +} + +fn ser_tranaction_result( + transaction_result: &TransactionResult, + transaction_result_builder: &mut app_server_capnp::transaction_result::Builder, +) { + write_uid( + &transaction_result.request_id, + &mut transaction_result_builder.reborrow().init_request_id(), + ); + + ser_request_result( + &transaction_result.result, + &mut transaction_result_builder.reborrow().init_result(), + ); +} + +fn deser_transaction_result( + transaction_result_reader: &app_server_capnp::transaction_result::Reader, +) -> Result { + Ok(TransactionResult { + request_id: read_uid(&transaction_result_reader.get_request_id()?)?, + result: deser_request_result(&transaction_result_reader.get_result()?)?, + }) +} + fn ser_report_mutations( report_mutations: &ReportMutations, report_mutations_builder: &mut app_server_capnp::report_mutations::Builder, From 5e48aecc15f01ef8bfefc68e4574079581c206f7 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:30:01 +0300 Subject: [PATCH 29/38] Added serialization for AppServerToApp::TransactionResult(...). --- components/proto/src/app_server/serialize.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 43812743e..fe048176b 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -585,7 +585,7 @@ fn deser_request_result( }) } -fn ser_tranaction_result( +fn ser_transaction_result( transaction_result: &TransactionResult, transaction_result_builder: &mut app_server_capnp::transaction_result::Builder, ) { @@ -664,7 +664,12 @@ fn ser_app_server_to_app( app_server_to_app_builder: &mut app_server_capnp::app_server_to_app::Builder, ) { match app_server_to_app { - AppServerToApp::TransactionResult(_transaction_result) => unimplemented!(), + AppServerToApp::TransactionResult(transaction_result) => ser_transaction_result( + transaction_result, + &mut app_server_to_app_builder + .reborrow() + .init_transaction_result(), + ), AppServerToApp::ResponseClosePayment(_response_close_payment) => unimplemented!(), AppServerToApp::Report(node_report) => ser_node_report( node_report, @@ -685,8 +690,10 @@ fn deser_app_server_to_app( app_server_to_app_reader: &app_server_capnp::app_server_to_app::Reader, ) -> Result { Ok(match app_server_to_app_reader.which()? { - app_server_capnp::app_server_to_app::TransactionResult(_transaction_result_reader) => { - unimplemented!() + app_server_capnp::app_server_to_app::TransactionResult(transaction_result_reader) => { + AppServerToApp::TransactionResult(deser_transaction_result( + &transaction_result_reader?, + )?) } app_server_capnp::app_server_to_app::ResponseClosePayment( _response_close_payment_reader, From 7dcb74a620ab24eea049e5f6ef257ff0853f28ce Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:31:02 +0300 Subject: [PATCH 30/38] Removed old commented out code. --- components/proto/src/app_server/serialize.rs | 89 -------------------- 1 file changed, 89 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index fe048176b..74b8e503a 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -36,95 +36,6 @@ use crate::app_server::messages::{ AppPermissions, AppRequest, AppServerToApp, AppToAppServer, ReportMutations, }; -/* -fn ser_user_request_send_funds( - user_request_send_funds: &UserRequestSendFunds, - user_request_send_funds_builder: &mut app_server_capnp::user_request_send_funds::Builder, -) { - unimplemented!(); - write_uid( - &user_request_send_funds.request_id, - &mut user_request_send_funds_builder.reborrow().init_request_id(), - ); - - let mut route_builder = user_request_send_funds_builder.reborrow().init_route(); - ser_friends_route(&user_request_send_funds.route, &mut route_builder); - - write_custom_u_int128( - user_request_send_funds.dest_payment, - &mut user_request_send_funds_builder - .reborrow() - .init_dest_payment(), - ); - - write_invoice_id( - &user_request_send_funds.invoice_id, - &mut user_request_send_funds_builder.reborrow().init_invoice_id(), - ); -} - -fn deser_user_request_send_funds( - user_request_send_funds_reader: &app_server_capnp::user_request_send_funds::Reader, -) -> Result { - unimplemented!(); - - Ok(UserRequestSendFunds { - request_id: read_uid(&user_request_send_funds_reader.get_request_id()?)?, - route: deser_friends_route(&user_request_send_funds_reader.get_route()?)?, - dest_payment: read_custom_u_int128(&user_request_send_funds_reader.get_dest_payment()?)?, - invoice_id: read_invoice_id(&user_request_send_funds_reader.get_invoice_id()?)?, - }) -} -*/ - -/* -fn ser_response_received( - response_received: &ResponseReceived, - response_received_builder: &mut app_server_capnp::response_received::Builder, -) { - unimplemented!(); - write_uid( - &response_received.request_id, - &mut response_received_builder.reborrow().init_request_id(), - ); - - let result_builder = response_received_builder.reborrow().init_result(); - match &response_received.result { - ResponseSendFundsResult::Success(receipt) => { - let mut success_builder = result_builder.init_success(); - write_receipt(receipt, &mut success_builder); - } - ResponseSendFundsResult::Failure(public_key) => { - let mut failure_builder = result_builder.init_failure(); - write_public_key(public_key, &mut failure_builder); - } - }; -} -*/ - -/* -fn deser_response_received( - response_received_reader: &app_server_capnp::response_received::Reader, -) -> Result { - unimplemented!(); - let result = match response_received_reader.get_result().which()? { - app_server_capnp::response_received::result::Success(receipt_reader) => { - let receipt_reader = receipt_reader?; - ResponseSendFundsResult::Success(read_receipt(&receipt_reader)?) - } - app_server_capnp::response_received::result::Failure(public_key_reader) => { - let public_key_reader = public_key_reader?; - ResponseSendFundsResult::Failure(read_public_key(&public_key_reader)?) - } - }; - - Ok(ResponseReceived { - request_id: read_uid(&response_received_reader.get_request_id()?)?, - result, - }) -} -*/ - fn ser_receipt_ack( receipt_ack: &ReceiptAck, receipt_ack_builder: &mut app_server_capnp::receipt_ack::Builder, From e9c1af0a8f819769f5756907b0c6a3442b264938 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:49:59 +0300 Subject: [PATCH 31/38] Added serialization for ResponseClosePayment. --- components/proto/src/app_server/serialize.rs | 82 ++++++++++++++++++-- components/proto/src/schema/app_server.capnp | 2 +- 2 files changed, 77 insertions(+), 7 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index 74b8e503a..bfe4d6d89 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -3,11 +3,10 @@ use std::io; use crate::capnp_common::{ read_commit, read_custom_int128, read_custom_u_int128, read_invoice_id, read_multi_commit, read_named_index_server_address, read_named_relay_address, read_payment_id, read_public_key, - read_rate, /*read_receipt,*/ read_relay_address, read_signature, read_uid, write_commit, + read_rate, read_receipt, read_relay_address, read_signature, read_uid, write_commit, write_custom_int128, write_custom_u_int128, write_invoice_id, write_multi_commit, write_named_index_server_address, write_named_relay_address, write_payment_id, - write_public_key, /*write_receipt,*/ - write_rate, write_relay_address, write_signature, write_uid, + write_public_key, write_rate, write_receipt, write_relay_address, write_signature, write_uid, }; use capnp; use capnp::serialize_packed; @@ -26,9 +25,10 @@ use index_server::serialize::{ }; use crate::funder::messages::{ - AckClosePayment, AddFriend, AddInvoice, CreatePayment, CreateTransaction, ReceiptAck, - RequestResult, ResetFriendChannel, SetFriendName, SetFriendRate, SetFriendRelays, - SetFriendRemoteMaxDebt, TransactionResult, UserRequestSendFunds, + AckClosePayment, AddFriend, AddInvoice, CreatePayment, CreateTransaction, PaymentStatus, + ReceiptAck, RequestResult, ResetFriendChannel, ResponseClosePayment, SetFriendName, + SetFriendRate, SetFriendRelays, SetFriendRemoteMaxDebt, TransactionResult, + UserRequestSendFunds, }; use crate::funder::serialize::{deser_friends_route, ser_friends_route}; @@ -520,6 +520,76 @@ fn deser_transaction_result( }) } +fn ser_payment_status( + payment_status: &PaymentStatus, + payment_status_builder: &mut app_server_capnp::payment_status::Builder, +) { + match payment_status { + PaymentStatus::PaymentNotFound => { + payment_status_builder.reborrow().set_payment_not_found(()) + } + PaymentStatus::InProgress => payment_status_builder.reborrow().set_in_progress(()), + PaymentStatus::Success((receipt, ack_uid)) => { + let mut payment_success_builder = payment_status_builder.reborrow().init_success(); + write_receipt( + receipt, + &mut payment_success_builder.reborrow().init_receipt(), + ); + write_uid( + ack_uid, + &mut payment_success_builder.reborrow().init_ack_uid(), + ); + } + PaymentStatus::Canceled(ack_uid) => { + let mut ack_uid_builder = payment_status_builder.reborrow().init_canceled(); + write_uid(ack_uid, &mut ack_uid_builder); + } + } +} + +fn deser_payment_status( + payment_status_reader: &app_server_capnp::payment_status::Reader, +) -> Result { + Ok(match payment_status_reader.which()? { + app_server_capnp::payment_status::PaymentNotFound(()) => PaymentStatus::PaymentNotFound, + app_server_capnp::payment_status::InProgress(()) => PaymentStatus::InProgress, + app_server_capnp::payment_status::Success(res_payment_success_reader) => { + let payment_success_reader = res_payment_success_reader?; + PaymentStatus::Success(( + read_receipt(&payment_success_reader.get_receipt()?)?, + read_uid(&payment_success_reader.get_ack_uid()?)?, + )) + } + app_server_capnp::payment_status::Canceled(ack_uid_reader) => { + PaymentStatus::Canceled(read_uid(&ack_uid_reader?)?) + } + }) +} + +fn ser_response_close_payment( + response_close_payment: &ResponseClosePayment, + response_close_payment_builder: &mut app_server_capnp::response_close_payment::Builder, +) { + write_payment_id( + &response_close_payment.payment_id, + &mut response_close_payment_builder.reborrow().init_payment_id(), + ); + + ser_payment_status( + &response_close_payment.status, + &mut response_close_payment_builder.reborrow().init_status(), + ); +} + +fn deser_response_close_payment( + response_close_payment_reader: &app_server_capnp::response_close_payment::Reader, +) -> Result { + Ok(ResponseClosePayment { + payment_id: read_payment_id(&response_close_payment_reader.get_payment_id()?)?, + status: deser_payment_status(&response_close_payment_reader.get_status()?)?, + }) +} + fn ser_report_mutations( report_mutations: &ReportMutations, report_mutations_builder: &mut app_server_capnp::report_mutations::Builder, diff --git a/components/proto/src/schema/app_server.capnp b/components/proto/src/schema/app_server.capnp index bbb8ea162..9f3e272fe 100644 --- a/components/proto/src/schema/app_server.capnp +++ b/components/proto/src/schema/app_server.capnp @@ -162,7 +162,7 @@ struct TransactionResult { struct PaymentStatusSuccess { receipt @0: Receipt; - ackUid @1: Receipt; + ackUid @1: Uid; } struct PaymentStatus { From d58a7ef8927de83c020d1ef2e61012472a465fdd Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 17:53:16 +0300 Subject: [PATCH 32/38] Added serialization for AppServerToApp::ResponseClosePayment. --- components/proto/src/app_server/serialize.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index bfe4d6d89..b0320900a 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -651,7 +651,12 @@ fn ser_app_server_to_app( .reborrow() .init_transaction_result(), ), - AppServerToApp::ResponseClosePayment(_response_close_payment) => unimplemented!(), + AppServerToApp::ResponseClosePayment(response_close_payment) => ser_response_close_payment( + response_close_payment, + &mut app_server_to_app_builder + .reborrow() + .init_response_close_payment(), + ), AppServerToApp::Report(node_report) => ser_node_report( node_report, &mut app_server_to_app_builder.reborrow().init_report(), @@ -677,8 +682,10 @@ fn deser_app_server_to_app( )?) } app_server_capnp::app_server_to_app::ResponseClosePayment( - _response_close_payment_reader, - ) => unimplemented!(), + response_close_payment_reader, + ) => AppServerToApp::ResponseClosePayment(deser_response_close_payment( + &response_close_payment_reader?, + )?), app_server_capnp::app_server_to_app::Report(node_report_reader) => { AppServerToApp::Report(deser_node_report(&node_report_reader?)?) } From 3de6f4aa8ccebe83d405ae9ee1df0828237a4727 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 18:19:08 +0300 Subject: [PATCH 33/38] Updated test_serialize_app_permissions() (Commented out). --- components/proto/src/app_server/serialize.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index b0320900a..b83a865ad 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -987,8 +987,9 @@ mod tests { fn test_serialize_app_permissions() { let app_permissions = AppPermissions { routes: false, - send_funds: true, - config: false, + buyer: true, + seller: false, + config: true, }; let data = serialize_app_permissions(&app_permissions); From 3687b228115b31285ef79fb5918e8d3c72f71229 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 18:24:37 +0300 Subject: [PATCH 34/38] Updated report.capnp. --- components/proto/src/schema/report.capnp | 28 ++++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/components/proto/src/schema/report.capnp b/components/proto/src/schema/report.capnp index 8b27c36d6..803e46470 100644 --- a/components/proto/src/schema/report.capnp +++ b/components/proto/src/schema/report.capnp @@ -6,6 +6,7 @@ using import "common.capnp".CustomUInt128; using import "common.capnp".CustomInt128; using import "common.capnp".Signature; using import "common.capnp".RandNonce; +using import "common.capnp".Rate; using import "common.capnp".RelayAddress; using import "common.capnp".NamedRelayAddress; @@ -127,17 +128,18 @@ struct SentLocalRelaysReport { struct FriendReport { name @0: Text; - remoteRelays @1: List(RelayAddress); - sentLocalRelays @2: SentLocalRelaysReport; - optLastIncomingMoveToken @3: OptLastIncomingMoveToken; - liveness @4: FriendLivenessReport; - channelStatus @5: ChannelStatusReport; - wantedRemoteMaxDebt @6: CustomUInt128; - wantedLocalRequestsStatus @7: RequestsStatusReport; - numPendingRequests @8: UInt64; - numPendingResponses @9: UInt64; - status @10: FriendStatusReport; - numPendingUserRequests @11: UInt64; + rate @1: Rate; + remoteRelays @2: List(RelayAddress); + sentLocalRelays @3: SentLocalRelaysReport; + optLastIncomingMoveToken @4: OptLastIncomingMoveToken; + liveness @5: FriendLivenessReport; + channelStatus @6: ChannelStatusReport; + wantedRemoteMaxDebt @7: CustomUInt128; + wantedLocalRequestsStatus @8: RequestsStatusReport; + numPendingRequests @9: UInt64; + numPendingBackwardsOps @10: UInt64; + status @11: FriendStatusReport; + numPendingUserRequests @12: UInt64; } struct PkFriendReport { @@ -150,7 +152,9 @@ struct FunderReport { localPublicKey @0: PublicKey; relays @1: List(NamedRelayAddress); friends @2: List(PkFriendReport); - numReadyReceipts @3: UInt64; + numOpenInvoices @3: UInt64; + numPayments @4: UInt64; + numOpenTransactions @5: UInt64; } From 1dba5e35f02019ba18127373bf74735e7ac5c03f Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 18:29:12 +0300 Subject: [PATCH 35/38] Updated FriendReport serialization code. --- components/proto/src/report/serialize.rs | 25 ++++++++++++------------ 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/components/proto/src/report/serialize.rs b/components/proto/src/report/serialize.rs index c44dd056f..bf336a3eb 100644 --- a/components/proto/src/report/serialize.rs +++ b/components/proto/src/report/serialize.rs @@ -3,10 +3,10 @@ use im::vector::Vector as ImVec; use crate::capnp_common::{ read_custom_int128, read_custom_u_int128, read_hash, read_named_index_server_address, - read_named_relay_address, read_public_key, read_rand_nonce, read_relay_address, read_signature, - write_custom_int128, write_custom_u_int128, write_hash, write_named_index_server_address, - write_named_relay_address, write_public_key, write_rand_nonce, write_relay_address, - write_signature, + read_named_relay_address, read_public_key, read_rand_nonce, read_rate, read_relay_address, + read_signature, write_custom_int128, write_custom_u_int128, write_hash, + write_named_index_server_address, write_named_relay_address, write_public_key, + write_rand_nonce, write_rate, write_relay_address, write_signature, }; use common::int_convert::usize_to_u32; use crypto::identity::PublicKey; @@ -544,13 +544,15 @@ fn ser_friend_report( friend_report: &FriendReport, friend_report_builder: &mut report_capnp::friend_report::Builder, ) { - unimplemented!(); - - /* friend_report_builder .reborrow() .set_name(&friend_report.name); + write_rate( + &friend_report.rate, + &mut friend_report_builder.reborrow().init_rate(), + ); + // remote_relays: let relays_len = usize_to_u32(friend_report.remote_relays.len()).unwrap(); let mut relays_builder = friend_report_builder @@ -598,7 +600,7 @@ fn ser_friend_report( ); friend_report_builder.set_num_pending_requests(friend_report.num_pending_requests); - friend_report_builder.set_num_pending_responses(friend_report.num_pending_responses); + friend_report_builder.set_num_pending_backwards_ops(friend_report.num_pending_backwards_ops); ser_friend_status_report( &friend_report.status, @@ -606,14 +608,11 @@ fn ser_friend_report( ); friend_report_builder.set_num_pending_user_requests(friend_report.num_pending_user_requests); - */ } fn deser_friend_report( friend_report_reader: &report_capnp::friend_report::Reader, ) -> Result { - unimplemented!(); - /* let mut remote_relays = Vec::new(); for relay_address in friend_report_reader.get_remote_relays()? { remote_relays.push(read_relay_address(&relay_address)?); @@ -621,6 +620,7 @@ fn deser_friend_report( Ok(FriendReport { name: friend_report_reader.get_name()?.to_owned(), + rate: read_rate(&friend_report_reader.get_rate()?)?, remote_relays, sent_local_relays: deser_sent_local_relays_report( &friend_report_reader.get_sent_local_relays()?, @@ -637,11 +637,10 @@ fn deser_friend_report( &friend_report_reader.get_wanted_local_requests_status()?, )?, num_pending_requests: friend_report_reader.get_num_pending_requests(), - num_pending_responses: friend_report_reader.get_num_pending_responses(), + num_pending_backwards_ops: friend_report_reader.get_num_pending_backwards_ops(), status: deser_friend_status_report(&friend_report_reader.get_status()?)?, num_pending_user_requests: friend_report_reader.get_num_pending_user_requests(), }) - */ } fn ser_pk_friend_report( From 149910b12891d74dcc742fe67464ca7c3f74cba1 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 18:32:02 +0300 Subject: [PATCH 36/38] Updated FunderReport serialization. --- components/proto/src/report/serialize.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/components/proto/src/report/serialize.rs b/components/proto/src/report/serialize.rs index bf336a3eb..bdaa7e924 100644 --- a/components/proto/src/report/serialize.rs +++ b/components/proto/src/report/serialize.rs @@ -671,8 +671,6 @@ fn ser_funder_report( funder_report: &FunderReport, funder_report_builder: &mut report_capnp::funder_report::Builder, ) { - unimplemented!(); - /* write_public_key( &funder_report.local_public_key, &mut funder_report_builder.reborrow().init_local_public_key(), @@ -693,15 +691,14 @@ fn ser_funder_report( ser_pk_friend_report(pk_friend, &mut pk_friend_builder); } - funder_report_builder.set_num_ready_receipts(funder_report.num_ready_receipts); - */ + funder_report_builder.set_num_open_invoices(funder_report.num_open_invoices); + funder_report_builder.set_num_payments(funder_report.num_payments); + funder_report_builder.set_num_open_transactions(funder_report.num_open_transactions); } fn deser_funder_report( funder_report_reader: &report_capnp::funder_report::Reader, ) -> Result { - unimplemented!(); - /* let mut named_relays = Vec::new(); for named_relay_address in funder_report_reader.get_relays()? { named_relays.push(read_named_relay_address(&named_relay_address)?); @@ -717,9 +714,10 @@ fn deser_funder_report( local_public_key: read_public_key(&funder_report_reader.get_local_public_key()?)?, relays: named_relays.into_iter().collect(), friends, - num_ready_receipts: funder_report_reader.get_num_ready_receipts(), + num_open_invoices: funder_report_reader.get_num_open_invoices(), + num_payments: funder_report_reader.get_num_payments(), + num_open_transactions: funder_report_reader.get_num_open_transactions(), }) - */ } fn ser_add_friend_report( From 2d6c9c4d2ee4b45c236bc83b6ef39feef62d0abd Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 18:44:11 +0300 Subject: [PATCH 37/38] Added serialization for FunderReportMutation. --- components/proto/src/report/serialize.rs | 53 +++++++++++++++--------- components/proto/src/schema/report.capnp | 25 ++++++----- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/components/proto/src/report/serialize.rs b/components/proto/src/report/serialize.rs index bdaa7e924..b79bbd3e2 100644 --- a/components/proto/src/report/serialize.rs +++ b/components/proto/src/report/serialize.rs @@ -784,8 +784,6 @@ fn ser_friend_report_mutation( friend_report_mutation: &FriendReportMutation, friend_report_mutation_builder: &mut report_capnp::friend_report_mutation::Builder, ) { - unimplemented!(); - /* match friend_report_mutation { FriendReportMutation::SetRemoteRelays(relays) => { let relays_len = usize_to_u32(relays.len()).unwrap(); @@ -801,6 +799,10 @@ fn ser_friend_report_mutation( FriendReportMutation::SetName(name) => { friend_report_mutation_builder.reborrow().set_set_name(name) } + FriendReportMutation::SetRate(rate) => write_rate( + rate, + &mut friend_report_mutation_builder.reborrow().init_set_rate(), + ), FriendReportMutation::SetSentLocalRelays(sent_local_relays_report) => { ser_sent_local_relays_report( sent_local_relays_report, @@ -836,10 +838,10 @@ fn ser_friend_report_mutation( .reborrow() .set_set_num_pending_requests(*num_pending_requests) } - FriendReportMutation::SetNumPendingResponses(num_pending_responses) => { + FriendReportMutation::SetNumPendingBackwardsOps(num_pending_backwards_ops) => { friend_report_mutation_builder .reborrow() - .set_set_num_pending_responses(*num_pending_responses) + .set_set_num_pending_backwards_ops(*num_pending_backwards_ops) } FriendReportMutation::SetStatus(friend_status_report) => ser_friend_status_report( friend_status_report, @@ -865,15 +867,11 @@ fn ser_friend_report_mutation( .init_set_liveness(), ), }; - */ } fn deser_friend_report_mutation( friend_report_mutation: &report_capnp::friend_report_mutation::Reader, ) -> Result { - unimplemented!(); - - /* Ok(match friend_report_mutation.which()? { report_capnp::friend_report_mutation::SetRemoteRelays(relays_reader) => { let mut relays = Vec::new(); @@ -885,6 +883,9 @@ fn deser_friend_report_mutation( report_capnp::friend_report_mutation::SetName(name) => { FriendReportMutation::SetName(name?.to_owned()) } + report_capnp::friend_report_mutation::SetRate(rate_reader) => { + FriendReportMutation::SetRate(read_rate(&rate_reader?)?) + } report_capnp::friend_report_mutation::SetSentLocalRelays( sent_local_relays_report_reader, ) => FriendReportMutation::SetSentLocalRelays(deser_sent_local_relays_report( @@ -908,9 +909,9 @@ fn deser_friend_report_mutation( report_capnp::friend_report_mutation::SetNumPendingRequests(num_pending_requests) => { FriendReportMutation::SetNumPendingRequests(num_pending_requests) } - report_capnp::friend_report_mutation::SetNumPendingResponses(num_pending_responses) => { - FriendReportMutation::SetNumPendingResponses(num_pending_responses) - } + report_capnp::friend_report_mutation::SetNumPendingBackwardsOps( + num_pending_backwards_ops, + ) => FriendReportMutation::SetNumPendingBackwardsOps(num_pending_backwards_ops), report_capnp::friend_report_mutation::SetStatus(friend_status_report_reader) => { FriendReportMutation::SetStatus(deser_friend_status_report( &friend_status_report_reader?, @@ -930,7 +931,6 @@ fn deser_friend_report_mutation( )?) } }) - */ } fn ser_pk_friend_report_mutation( @@ -968,8 +968,6 @@ fn ser_funder_report_mutation( funder_report_mutation: &FunderReportMutation, funder_report_mutation_builder: &mut report_capnp::funder_report_mutation::Builder, ) { - unimplemented!(); - /* match funder_report_mutation { FunderReportMutation::AddRelay(named_relay_address) => { write_named_relay_address( @@ -1007,20 +1005,27 @@ fn ser_funder_report_mutation( .init_pk_friend_report_mutation(), ); } - FunderReportMutation::SetNumReadyReceipts(num_ready_receipts) => { + FunderReportMutation::SetNumOpenInvoices(num_open_invoices) => { + funder_report_mutation_builder + .reborrow() + .set_set_num_open_invoices(*num_open_invoices); + } + FunderReportMutation::SetNumPayments(num_payments) => { funder_report_mutation_builder .reborrow() - .set_set_num_ready_receipts(*num_ready_receipts); + .set_set_num_payments(*num_payments); + } + FunderReportMutation::SetNumOpenTransactions(num_open_transactions) => { + funder_report_mutation_builder + .reborrow() + .set_set_num_open_transactions(*num_open_transactions); } } - */ } fn deser_funder_report_mutation( funder_report_mutation_reader: &report_capnp::funder_report_mutation::Reader, ) -> Result { - unimplemented!(); - /* Ok(match funder_report_mutation_reader.which()? { report_capnp::funder_report_mutation::AddRelay(named_relay_address_reader) => { FunderReportMutation::AddRelay(read_named_relay_address(&named_relay_address_reader?)?) @@ -1039,8 +1044,16 @@ fn deser_funder_report_mutation( ) => FunderReportMutation::FriendReportMutation(deser_pk_friend_report_mutation( &pk_friend_report_mutation_reader?, )?), + report_capnp::funder_report_mutation::SetNumOpenInvoices(num_open_invoices) => { + FunderReportMutation::SetNumOpenInvoices(num_open_invoices) + } + report_capnp::funder_report_mutation::SetNumPayments(num_payments) => { + FunderReportMutation::SetNumPayments(num_payments) + } + report_capnp::funder_report_mutation::SetNumOpenTransactions(set_num_open_transactions) => { + FunderReportMutation::SetNumOpenTransactions(set_num_open_transactions) + } }) - */ } fn ser_index_client_report( diff --git a/components/proto/src/schema/report.capnp b/components/proto/src/schema/report.capnp index 803e46470..b5707b489 100644 --- a/components/proto/src/schema/report.capnp +++ b/components/proto/src/schema/report.capnp @@ -174,16 +174,17 @@ struct FriendReportMutation { union { setRemoteRelays @0: List(RelayAddress); setName @1: Text; - setSentLocalRelays @2: SentLocalRelaysReport; - setChannelStatus @3: ChannelStatusReport; - setWantedRemoteMaxDebt @4: CustomUInt128; - setWantedLocalRequestsStatus @5: RequestsStatusReport; - setNumPendingRequests @6: UInt64; - setNumPendingResponses @7: UInt64; - setStatus @8: FriendStatusReport; - setNumPendingUserRequests @9: UInt64; - setOptLastIncomingMoveToken @10: OptLastIncomingMoveToken; - setLiveness @11: FriendLivenessReport; + setRate @2: Rate; + setSentLocalRelays @3: SentLocalRelaysReport; + setChannelStatus @4: ChannelStatusReport; + setWantedRemoteMaxDebt @5: CustomUInt128; + setWantedLocalRequestsStatus @6: RequestsStatusReport; + setNumPendingRequests @7: UInt64; + setNumPendingBackwardsOps @8: UInt64; + setStatus @9: FriendStatusReport; + setNumPendingUserRequests @10: UInt64; + setOptLastIncomingMoveToken @11: OptLastIncomingMoveToken; + setLiveness @12: FriendLivenessReport; } } @@ -200,7 +201,9 @@ struct FunderReportMutation { addFriend @2: AddFriendReport; removeFriend @3: PublicKey; pkFriendReportMutation @4: PkFriendReportMutation; - setNumReadyReceipts @5: UInt64; + setNumOpenInvoices @5: UInt64; + setNumPayments @6: UInt64; + setNumOpenTransactions @7: UInt64; } } From 8a6a33590f86c15747b3b2ce7103061a2b020de2 Mon Sep 17 00:00:00 2001 From: real Date: Sun, 2 Jun 2019 18:45:50 +0300 Subject: [PATCH 38/38] Restored app-server basic serialization tests. --- components/proto/src/app_server/serialize.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/components/proto/src/app_server/serialize.rs b/components/proto/src/app_server/serialize.rs index b83a865ad..b430dfe4c 100644 --- a/components/proto/src/app_server/serialize.rs +++ b/components/proto/src/app_server/serialize.rs @@ -972,7 +972,6 @@ pub fn deserialize_app_to_app_server(data: &[u8]) -> Result