gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lsd0003] branch master updated: Refactored 1


From: gnunet
Subject: [lsd0003] branch master updated: Refactored 1
Date: Wed, 13 Jan 2021 19:49:05 +0100

This is an automated email from the git hooks/post-receive script.

elias-summermatter pushed a commit to branch master
in repository lsd0003.

The following commit(s) were added to refs/heads/master by this push:
     new cb34904  Refactored 1
cb34904 is described below

commit cb349049b411a5a58635b156a94abab26922eb2f
Author: Elias Summermatter <elias.summermatter@seccom.ch>
AuthorDate: Wed Jan 13 19:48:19 2021 +0100

    Refactored 1
---
 draft-summermatter-set-union.xml | 327 +++++++++++++++++++++------------------
 1 file changed, 174 insertions(+), 153 deletions(-)

diff --git a/draft-summermatter-set-union.xml b/draft-summermatter-set-union.xml
index 9e07080..a12fee4 100644
--- a/draft-summermatter-set-union.xml
+++ b/draft-summermatter-set-union.xml
@@ -79,18 +79,21 @@
             <t>
                 The Protocol should prevent bad acting peers from waisting 
resources by sending wrong formed elements, pretending to have a multiple
                 of elements or request more elements than the size of the full 
set. This is achieved by
-                remembering how much elements already have been sent and how 
many elements are possible by some real world
-                limiting factor in E-Voting this for example is the people who 
are permitted to vote.
+                saving the count of already sent elements and plausibility 
checks on how many elements are possible by some real world
+                limiting factor. In E-Voting this is for example the count of 
people who are permitted to vote.
             </t>
             <t>
-                Another probabilistic approach to discover bad behaving peers 
is sampling, in this case the proving peer need
-                to prove to the verifying peer that he really has the amount 
of elements he claims to have. To prove this the verifying peer chooses some
+                Another probabilistic approach to discover bad behaving peers 
is sampling, in this approach the proving peer needs
+                to prove that he is in possession of the  elements he claimed 
to be. This is achieved by the following procedure:
+            </t>
+            <t>
+                The verifying peer chooses some
                 random salt and sends the salt to the proving peer. The 
proving peer salts the hash of elements with the given
                 salt from the verifying peer. Then the proving peer calculates 
the new hashes modulo a number depending on the set sized difference and
-                sends all the elements where the modulo calculation equals 
0(?) to the verifying peer.
+                sends all the elements where the modulo calculation equals 0 
to the verifying peer.
                 As soon as the verifying peer receives the elements the 
verifying peer can verify that all the elements
                 are valid and the modulo calculation equals 0 then the 
verifying peer can be assured with a high probability
-                that the peer is honest about his set size.
+                that the peer is honest about his remaining set size and 
difference.
             </t>
              <t>
                 The Byzantine Fault Tolerant Set Reconciliation can be used in 
a variety of different fields of application,
@@ -105,7 +108,9 @@
             </t>
             <t>
                 The protocol should minimize network round-trips and bytes 
send over the network at the
-                expense of CPU operations.
+                expense of CPU operations. The tradeoff between round-trips 
and network bytes is specified by
+                the application and depends on field of application and the 
environment.
+
                 The protocol uses some heuristics to determinate if sending 
the full set of elements or just sending the elements
                 that differ in the set is cheaper.
             </t>
@@ -123,112 +128,119 @@
             </t>
         </section>
 
-        <section anchor="bf" numbered="true" toc="default">
-            <name>Bloom Filter</name>
-            <t>
-                A Bloom Filter (BF) is a space-efficient datastructure to test 
if am element is part of a set of elements.
-                Since a Bloom filter is a probabilistic datastructure its 
possible to have false positives but false negatives
-                are not possible.
-            </t>
-            <t>
-                A BF consists out of multiple buckets, every bucket can be set 
to 0 or 1. In the beginning all buckets are set
-                to 0. To add an element to the BF the corresponding buckets 
are set to 1. To map an element on the array of buckets
-                a mapping function M is required. The mapping function is 
non-injective a takes an element as input and outputs a
-                deterministic bit stream of the length of the BF. The Mapping 
function is described by the following mathematical equation:
-            </t>
-            <figure anchor="bf_mapping_function_math">
-                <artwork name="" type="" align="left" alt=""><![CDATA[
-        --------------------------------
-        # E->B^k (B=Z/l)
-        --------------------------------
-        # l = number buckets
-        # B = 0...1,
-        # k = number of bits per element
-        # E = Element from the set
-        --------------------------------
-                 ]]></artwork>
-            </figure>
-            <t>
-                Further in this document a bitstream outputted by the mapping 
function is represented by
-                a set of numeric values for example (0101) = (2,4).
-                In the BF the buckets are set to 1 if the corresponding bit in 
the bitstream is 1.
-                If there is a collision and a bucket is already set to 1, the 
bucket stays 1.
-            </t>
-            <t>
-                In the following example the element M(element) = (1,3) has 
been added:
-            </t>
-                <figure anchor="figure_bf_insert_0">
+        <section anchor="background" numbered="true" toc="default">
+            <name>Background</name>
+            <section anchor="bf" numbered="true" toc="default">
+                <name>Bloom Filter</name>
+                <t>
+                    A Bloom Filter (BF) is a space-efficient datastructure to 
test if am element is part of a set of elements.
+                    Since a Bloom filter is a probabilistic datastructure its 
possible to have false positives but false negatives
+                    are not possible.
+                </t>
+                <t>
+                    A BF consists of multiple buckets, every bucket can be set 
to 0 or 1. In the beginning all buckets are set
+                    to 0. To add an element to the BF the corresponding 
buckets are set to 1. To map an element on the array of buckets
+                    a mapping function M is required. The mapping function is 
non-injective an takes an element as input and outputs a
+                    deterministic bit stream of the length of the BF. The 
mapping function is described by the following mathematical equation:
+                </t>
+                <figure anchor="bf_mapping_function_math">
                     <artwork name="" type="" align="left" alt=""><![CDATA[
-            bucket-0     bucket-1       bucket-2      bucket-3
-        +-------------+-------------+-------------+-------------+
-        |      0      |      1      |      0      |      1      |
-        +-------------+-------------+-------------+-------------+
-                 ]]></artwork>
+            --------------------------------
+            # M: E->B^k (B=Z/l)
+            --------------------------------
+            # l = Number of bits per element
+            # B = 0,1,2,3,4,...l
+            # k = Number of buckets
+            # E = Element from the set
+            # Z = Natural Numbers Mod l
+            --------------------------------
+            Example: l=256, k=3
+            M(E) = {4,6,255}
+
+                     ]]></artwork>
                 </figure>
-            <t>
-                Is easy to see that the M(element) = (0,3) could be in the BF 
bellow and M(element) = (0,2) can't be
-                in the BF bellow:
-            </t>
+                <t>
+                    Further in this document a bitstream outputted by the 
mapping function is represented by
+                    a set of numeric values for example (0101) = (2,4).
+                    In the BF the buckets are set to 1 if the corresponding 
bit in the bitstream is 1.
+                    If there is a collision and a bucket is already set to 1, 
the bucket stays 1.
+                </t>
+                <t>
+                    In the following example the element M(element) = (1,3) 
has been added:
+                </t>
+                    <figure anchor="figure_bf_insert_0">
+                        <artwork name="" type="" align="left" alt=""><![CDATA[
+                bucket-0     bucket-1       bucket-2      bucket-3
+            +-------------+-------------+-------------+-------------+
+            |      0      |      1      |      0      |      1      |
+            +-------------+-------------+-------------+-------------+
+                     ]]></artwork>
+                    </figure>
+                <t>
+                    Is easy to see that the M(element) = (0,3) could be in the 
BF bellow and M(element) = (0,2) can't be
+                    in the BF bellow:
+                </t>
 
-            <figure anchor="figure_bf_contains">
-                <artwork name="" type="" align="left" alt=""><![CDATA[
-            bucket-0     bucket-1       bucket-2      bucket-3
-        +-------------+-------------+-------------+-------------+
-        |      1      |      0      |      0      |      1      |
-        +-------------+-------------+-------------+-------------+
-                 ]]></artwork>
-            </figure>
-            <t>
-                Its not possible to remove an element from the BF because 
buckets can only be set to 1 or 0 so its not possible to
-                differentiate between buckets containing one or multiple 
elements. To remove elements from the BF a <xref target="cbf" format="title" />
-                is required.
-            </t>
-        </section>
+                <figure anchor="figure_bf_contains">
+                    <artwork name="" type="" align="left" alt=""><![CDATA[
+                bucket-0     bucket-1       bucket-2      bucket-3
+            +-------------+-------------+-------------+-------------+
+            |      1      |      0      |      0      |      1      |
+            +-------------+-------------+-------------+-------------+
+                     ]]></artwork>
+                </figure>
+                <t>
+                    Its not possible to remove an element from the BF because 
buckets can only be set to 1 or 0 so its not possible to
+                    differentiate between buckets containing one or multiple 
elements. To remove elements from the BF a <xref target="cbf" format="title" />
+                    is required.
+                </t>
+            </section>
 
-        <section anchor="cbf" numbered="true" toc="default">
-            <name>Counting Bloom Filter</name>
-            <t>
-                A Counting Bloom Filter (CBF) is an extension of the Bloom 
Filer datastructure it replaces the filed of
-                the bucket with an unsigned counter. This allows the removal 
of an elements from the CBF.
-            </t>
-            <t>
-                Adding an element to the CBF is similar to the adding 
operation of the BF but instead of setting the bucket on hit to 1 the bucket
-                is increased by 1. For example if two colliding elements 
M(element1) = (1,3) and
-                M(element2) = (0,3) are added to the CBF bucket 0 and 1 are 
set to 1 and bucket 3 (the colliding bucket) is set
-                to 2:
-            </t>
-            <figure anchor="figure_cbf_insert_0">
-                <artwork name="" type="" align="left" alt=""><![CDATA[
-            bucket-0     bucket-1       bucket-2      bucket-3
-        +-------------+-------------+-------------+-------------+
-        |      1      |      1      |      0      |      2      |
-        +-------------+-------------+-------------+-------------+
-                 ]]></artwork>
-            </figure>
-            <t>
-                The order of a bucket is defined by the counter, if a bucket 
contains two elements the counter is set to 2 so the order of
-                the bucket is two.
-            </t>
-            <t>
-                To remove an element form the CBF the counter is decreased by 
1.
-            </t>
-            <t>
-                Removing M(element2) = (1,3) from the CBF above:
-            </t>
-            <figure anchor="figure_cbf_remove_0">
-                <artwork name="" type="" align="left" alt=""><![CDATA[
-            bucket-0     bucket-1       bucket-2      bucket-3
-        +-------------+-------------+-------------+-------------+
-        |      1      |      0      |      0      |      1      |
-        +-------------+-------------+-------------+-------------+
-                 ]]></artwork>
-            </figure>
+            <section anchor="cbf" numbered="true" toc="default">
+                <name>Counting Bloom Filter</name>
+                <t>
+                    A Counting Bloom Filter (CBF) is an extension of the <xref 
target="bf" format="title" />. In the CBF the binary filed of the bucket is 
replaced by
+                    an unsigned counter. This allows the removal of an 
elements from the CBF.
+                </t>
+                <t>
+                    Adding an element to the CBF is similar to the adding 
operation of the BF but instead of setting the bucket on hit to 1 the bucket
+                    is increased by 1. For example if two colliding elements 
M(element1) = (1,3) and
+                    M(element2) = (0,3) are added to the CBF bucket 0 and 1 
are set to 1 and bucket 3 (the colliding bucket) is set
+                    to 2:
+                </t>
+                <figure anchor="figure_cbf_insert_0">
+                    <artwork name="" type="" align="left" alt=""><![CDATA[
+                bucket-0     bucket-1       bucket-2      bucket-3
+            +-------------+-------------+-------------+-------------+
+            |      1      |      1      |      0      |      2      |
+            +-------------+-------------+-------------+-------------+
+                     ]]></artwork>
+                </figure>
+                <t>
+                    The order of a bucket is defined by the counter, if a 
bucket contains two elements the counter is set to 2 so the order of
+                    the bucket is two.
+                </t>
+                <t>
+                    To remove an element form the CBF the counter is decreased 
by 1.
+                </t>
+                <t>
+                    Removing M(element2) = (1,3) from the CBF above:
+                </t>
+                <figure anchor="figure_cbf_remove_0">
+                    <artwork name="" type="" align="left" alt=""><![CDATA[
+                bucket-0     bucket-1       bucket-2      bucket-3
+            +-------------+-------------+-------------+-------------+
+            |      1      |      0      |      0      |      1      |
+            +-------------+-------------+-------------+-------------+
+                     ]]></artwork>
+                </figure>
+            </section>
         </section>
 
         <section anchor="ibv" numbered="true" toc="default">
         <name>Invertible Bloom Filter</name>
             <t>
-                A Invertible Bloom Filter (IBF) is a further extension of the 
CBF. The IBF extends the CBF with two more operations,
+                A Invertible Bloom Filter (IBF) is a further extension of the 
<xref target="cbf" format="title" />. The IBF extends the <xref target="cbf" 
format="title" /> with two more operations,
                 beside insert and remove the IBF supports a decode and set 
difference operation. This two extra operations allows the
                 IBF to calculate small differences in big sets very 
efficiently.
 
@@ -241,10 +253,17 @@
                 <t>
                     The storage format of an IBF consists of n buckets that 
store a hash value
                     and a signed counter. The decision how many bits are used 
for the counter and for the map filed
-                    is a tradeoff and has to be adjusted to the cup 
architecture and setsize for optimal performance.
-                    If a 4-bit counter reaches 7 or -8  this means the counter 
is overflown and the IBF does not decode
-                    anymore in this case the size of the IBF or the size of 
the counter has to be adjusted. In
-                    the described implementation the size of the counter and 
the HASH Value is 32-bit.
+                    is a tradeoff and has to be adjusted to the CPU 
architecture and setsize for optimal performance.
+                </t>
+                <t>
+                    If the IBF size is to small or the mapping function does 
not spread out the elements uniformly a counter can overflow,
+                    in this case the highest and the lowest number the signed 
counter can accept means infinite.
+                    If a counter of one bucket is set to infinite the IBF can 
not be decoded anymore and size of the IBF
+                    or the size of the counter has to be adjusted.
+                    For a IBF with 4-bit counters this means if the counter of 
one bucket is set to 7 or -8 the IBF is invalid.
+                    The implementation described in this document the size of 
the counter and the HASH Value is 32-bit. This means
+                    the counter of this implementation can reach a minimum of 
-2147483647 and a maximum of 2147483646, before the
+                    counter overflows and the IBF cant be decoded anymore.
                 </t>
                     <figure anchor="figure_ibf_format">
                         <artwork name="" type="" align="left" alt=""><![CDATA[
@@ -263,9 +282,8 @@
                 <section anchor="ibv_operations_insert" numbered="true" 
toc="default">
                     <name>Insert Element</name>
                     <t>
-                        To add an element to a IBF the element is hashed with 
different hash functions the output of
-                        the hash functions is mapped on the two-component data 
structure. At the
-                        bit positions with a one of the hash output the 
counter is increased by one and the value
+                        To add an element to a IBF the element is mapped as 
described in the <xref target="cbf" format="title" /> section on
+                        the IBF. Where the map function hits the counter is 
increased by one and the value
                         field is updated with the XOR product of the new hash 
and the previously stored value.
                     </t>
                     <t>
@@ -309,13 +327,12 @@
                 <section anchor="ibf_operations_remove" numbered="true" 
toc="default">
                     <name>Remove Element</name>
                     <t>
-                        To remove an element from the IBF the element is 
hashed with the same hash functions that it was
-                        hashed to insert and at the bit positions where the 
hashes result in a one the counter in the
-                        two-component data structure is reduced by one and the 
resulting hash is XORed with the value field
-                        and is written to the value field again.
+                        To remove an element from the IBF the element is 
mapped with the same map functions that was used to previously insert
+                        the Element. Then all the bucket that got hit by the 
map function are reduced by one and the value field of the buckets is
+                        replaced by a new value containing the old value xored 
with the hash of the removed Element.
                     </t>
                     <t>
-                        In the following example the insert operation for the 
element [1100] with the hash 0101 is demonstrated.
+                        In the following example the remove operation for the 
element [1100] with the hash 0101 is demonstrated.
                     </t>
                 <t>IBF with encoded elements:</t>
                 <figure anchor="figure_ibf_remove_0">
@@ -343,12 +360,14 @@
                 <section anchor="ibf_operations_decode" numbered="true" 
toc="default">
                     <name>Decode IBF</name>
                     <t>
-                        To decode a IBF there are pure buckets needed, pure 
buckets are buckets where which contain only
-                        one element (counter = 1). If there is no pure element 
in the IBF does not decode and there is the
-                        need to choose a bigger IBF or different hash function 
to create the IBF.
+                        To decode an IBF there are pure buckets needed, pure 
buckets are buckets which contain only
+                        one element - the counter is set to 1 or -1. If there 
is no pure bucket in the IBF, its not possible
+                        to decode the IBF. In this case a new IBF has to be 
created, the new IBF needs to be bigger or a different mapping function
+                        should be used.
                         If there are pure buckets its possible to decode the 
IBF by removing elements as described
-                        in the section "Remove Element" from the pure buckets 
from the filter creating new pure buckets
-                        until the IBF is completely empty and all elements 
have been decoded.
+                        in the section <xref target="ibf_operations_remove" 
format="title" /> from the pure buckets from the filter creating new pure 
buckets
+                        until the IBF is empty and all elements have been 
decoded. Its possible the an IBF only partly decodes, in this case a new IBF 
has to be
+                        created.
                     </t>
                     <t>
                         In the following example the successful decoding of an 
IBF containing the two elements previously
@@ -400,9 +419,9 @@
                 <section anchor="ibv_operations_setdiff" numbered="true" 
toc="default">
                     <name>Set Difference</name>
                     <t>
-                        One of the most interesting capability of IBF's is the 
possibility to easily calculate the difference
-                        between two IBF's.
-                        To calculate the difference between two IBF's its only 
necessary to XOR the value of both IBF's bucket by bucket and
+                        One of the most interesting capability of IBFs is the 
possibility to easily calculate the difference
+                        between two IBFs.
+                        To calculate the difference between two IBFs its only 
necessary to XOR the value of both IBFs bucket by bucket and
                         subtracting the counts which results in a new IBF with 
the same amount of buckets.
                         This new IBF can be decoded as described in section 
<xref target="ibf_operations_decode" format="counter" />.
                         The new IBF can have two types of pure buckets with 
counter set to 1 or -1. If the counter is set to 1
@@ -482,7 +501,7 @@
                     this until the decoding of the SE fails or Stratum 0 is 
reached. Then its possible to estimate
                     how big the difference between two sets is by adding the 
number of extracted hashes up (C) and scale it
                     by the expected number of elements (E) in the remaining 
unencoded IBF's (C*E=[estimated count of objects]).
-                    If no of the SE decoded choose a smaller stratum or try a 
other hash function.
+                    If non of the SE decoded choose a smaller stratum or try a 
other mapping function.
                 </t>
             </section>
         </section>
@@ -503,20 +522,24 @@
                 ############# IMAGE ##################
             </t>
 
-            <t>.
+            <t>
+                In the following section the operation mode independent flow 
in the beginning is described in detail:
+            </t>
+
+            <t>
                 The initiating peer is initially in the <strong>Initiating 
Connection</strong> state and the receiving peer in the <strong>Expecting 
Connection</strong>
-                state. The first step of the protocol for the initiating peer 
is to send an <em><xref target="messages_operation_request" format="title" 
/></em> to the receiving peer and
+                state. The first step for the initiating peer in the protocol 
is to send an <em><xref target="messages_operation_request" format="title" 
/></em> to the receiving peer and
                 change into <strong>Expect SE</strong> state. After receiving 
the <em><xref target="messages_operation_request" format="title" /></em> the 
receiving peer changes in <strong>Expecting IBF</strong> state and answers with 
the
-                Strata Estimator (<em><xref target="messages_se" 
format="title" /></em>). After the initiating peer has received the Strata 
Estimator the initiating peer decides
-                with heuristics which operation mode is best fitted for the 
the estimated set difference and the environment.
-                The detailed tradeoff between the "Full Synchronisation Mode" 
and the <xref target="modeofoperation_individual-elements" format="title" />
+                <em><xref target="messages_se" format="title" /></em> message. 
When the initiating peer receives the Strata Estimator the initiating peer 
decides
+                with some heuristics which operation mode is best fitted for 
the the estimated set difference and the environment.
+                The detailed tradeoff between the <xref 
target="modeofoperation_full-sync" format="title" /> and the <xref 
target="modeofoperation_individual-elements" format="title" />
                 is explained in the section <xref 
target="modeofoperation_combined-mode" format="title" />.
             </t>
             <section anchor="modeofoperation_full-sync" numbered="true" 
toc="default">
                 <name>Full Synchronisation Mode</name>
 
                 <t>
-                    In full synchronisation mode, if the set of the initiating 
peer is bigger than the set of the receiving peer, the initiating
+                    When the initiating peer decide to use the Full 
Synchronisation Mode and the set of the initiating peer is bigger than the set 
of the receiving peer, the initiating
                     peer sends a <em><xref target="messages_request_full" 
format="title" /></em> message and change from <strong>Expecting SE</strong> to 
the <strong>Full Receiving</strong> State.
                     In all other cases the initiating peer sends all set 
elements to the other peer followed by the <em><xref 
target="messages_full_done" format="title" /></em> message and
                     changes into <strong>Full Sending</strong> state.
@@ -528,9 +551,9 @@
                 <dl>
                     <dt><strong>Expecting IBF:</strong></dt>
                     <dd>
-                        If a peer in the in state <strong>Expecting 
IBF</strong> receives a <em><xref target="messages_request_full" format="title" 
/></em> message from the other peer, the
-                        peer starts sending all the elements of the set 
followed by a <em><xref target="messages_full_done" format="title" /></em> 
message and change to the
-                        <strong>Full Sending</strong> State. If the peer 
receives an <em><xref target="messages_full_element" format="title" /></em> the 
peer changes to the state <strong>Full Receiving</strong>.
+                        If a peer in the <strong>Expecting IBF</strong> state 
receives a <em><xref target="messages_request_full" format="title" /></em> 
message from the other peer, the
+                        peer starts sending all the elements of the set 
followed by a <em><xref target="messages_full_done" format="title" /></em> 
message to the other peer and change to the
+                        <strong>Full Sending</strong> State. If the peer 
receives an <em><xref target="messages_full_element" format="title" /></em> 
message the peer changes to the <strong>Full Receiving</strong> state.
                     </dd>
                     <dt><strong>Full Sending:</strong></dt>
                     <dd>
@@ -540,7 +563,7 @@
                     <dt><strong>Full Receiving (In code: Expecting IBF): 
</strong></dt>
                     <dd>
                         While a peer is in <strong>Full Receiving</strong> 
state the peer expects to continuously receiving elements from the other
-                        peer. As soon as a the <em><xref 
target="messages_full_done" format="title" /></em> message is received the peer 
sends the remaining elements set to the other
+                        peer. As soon as a the <em><xref 
target="messages_full_done" format="title" /></em> message is received the peer 
sends the remaining elements from his set to the other
                         peer followed by a <em><xref 
target="messages_full_done" format="title" /></em>. After sending the last 
message the peer changes into <strong>Finished</strong> state.
                     </dd>
                 </dl>
@@ -548,15 +571,13 @@
             <section anchor="modeofoperation_individual-elements" 
numbered="true" toc="default">
                 <name>Individual Element Synchronisation Mode</name>
                 <t>
-                    In Individual Element Synchronisation Mode and the 
initiating peer is in <strong>Expected SE</strong> state and receives a
-                    <em><xref target="messages_se" format="title" /></em> 
message or a <em><xref target="messages_sec" format="title" /></em> message. 
The initiating
-                    peer decodes the Strata Estimator and sends the complete 
<em><xref target="messages_ibf" format="title" /></em> back to the receiving 
peer
-                    and changes into the <strong>Passive Decoding</strong> 
state.
+                    When the initiating peer in <strong>Expected SE</strong> 
state decide to use the Individual Element Synchronisation Mode, the peer
+                    sends a <em><xref target="messages_ibf" format="title" 
/></em> to the receiving peer and changes into the <strong>Passive 
Decoding</strong> state.
                 </t>
                 <t>
-                    The receiving peer in the <strong>Expecting IBF</strong> 
state receives a
-                    <em><xref target="messages_ibf" format="title" /></em> 
message from the initiating peer and changes into <strong>Expecting IBF 
Last</strong> if there
-                    are multiple IBFs sent otherwise and there is one 
<em><xref target="messages_ibf" format="title" /></em> message the reviving peer
+                    The receiving peer in the <strong>Expecting IBF</strong> 
state then receives the
+                    <em><xref target="messages_ibf" format="title" /></em> 
message from the initiating peer and changes into <strong>Expecting IBF 
Last</strong> state when there
+                    are multiple <em><xref target="messages_ibf" 
format="title" /></em> messages to sent, when there is just a single <em><xref 
target="messages_ibf" format="title" /></em> message the reviving peer
                     switches directly to the <strong>Active Decoding</strong> 
state.
                 </t>
                 <t>
@@ -593,8 +614,8 @@
                             <dt><em><xref target="messages_offer" 
format="title" /></em> Message:</dt>
                             <dd>
                                 The <em><xref target="messages_offer" 
format="title" /></em> message
-                                is received if the active peer decodes an 
element that is present in the active peers set and is missing in the
-                                set of the passive peer. If the offered 
element is truly missing in the set of the passive peer, the passive peer 
answers
+                                is received if the active peer has decoded an 
element that is present in the active peers set and is missing in the
+                                set of the passive peer. If the offered 
element is missing in the set of the passive peer, the passive peer answers
                                 with a <em><xref target="messages_demand" 
format="title" /></em> message.
                             </dd>
                             <dt><em><xref target="messages_elements" 
format="title" /></em> Message:</dt>
@@ -621,7 +642,7 @@
                         <t>
                             In <strong>Active Decoding</strong> state the 
active peer decodes the IBFs and evaluate the set difference
                             between the active and passive peer. In case the 
IBF decodes successfully the active peer sends offers and
-                            inquiries to the passive client depending on which 
site the element is missing.
+                            inquiries to the passive peer depending on which 
site the element is missing.
                         </t>
                         <t>
                             If the IBF decodes a positive (1) pure bucket the 
element is missing on the passive peers site
@@ -670,7 +691,7 @@
                     <dt><strong>Expecing IBF Last</strong></dt>
                     <dd>
                         <t>
-                            In the <strong>Expecing IBF Last</strong> the 
active peer continuously receives <em><xref target="messages_ibf" 
format="title" /></em>
+                            In the <strong>Expecing IBF Last</strong> state 
the active peer continuously receives <em><xref target="messages_ibf" 
format="title" /></em>
                             messages from the passive peer. When the last 
<em><xref target="messages_ibf" format="title" /></em> message is resived
                             the active peer changes into <strong>Active 
Decoding</strong> state.
                         </t>
@@ -941,9 +962,9 @@
                 <section anchor="messages_offer_description" numbered="true" 
toc="default">
                     <name>Description</name>
                     <t>
-                        The offer message answers an <em><xref 
target="messages_inquiry" format="title" /></em> message
+                        The offer message is an answer to an <em><xref 
target="messages_inquiry" format="title" /></em> message
                         and transmits the full hash of an element that has 
been requested by the other peer.
-                        This full hash enables the other peer to check if the 
element is not in his set and
+                        This full hash enables the other peer to check if the 
element is really missing in his set and
                         eventually send a <em><xref target="messages_demand" 
format="title" /></em> message for that a element.
                     </t>
                     <t>
@@ -1125,11 +1146,11 @@
                 <section anchor="messages_full_done_description" 
numbered="true" toc="default">
                     <name>Description</name>
                     <t>
-                        The full done message sent in the <xref 
target="modeofoperation_full-sync" format="title" /> sent
+                        The full done message is sent in the <xref 
target="modeofoperation_full-sync" format="title" />
                         to signal that all remaining elements of the set have 
been sent. The message is received and sent in in the
                         <strong>Full Sending</strong> and in the <strong>Full 
Receiving</strong> state. When the full done message is received
                         in <strong>Full Sending</strong> state the peer 
changes directly into <strong>Finished</strong> state. In
-                        <strong>Full Receiving</strong> state receiving a full 
done message initiates sending of
+                        <strong>Full Receiving</strong> state receiving a full 
done message initiates the sending of
                         the remaining elements that are missing in the set of 
the other peer.
                     </t>
                 </section>
@@ -1171,7 +1192,7 @@
                         <strong>Full Receiving</strong> state.
                     </t>
                     <t>
-                        The receiving peer can receive the request full 
message in the <strong>Expecting IBF</strong>, afterwards the receiving peer
+                        The receiving peer receives the Request Full message 
in the <strong>Expecting IBF</strong>, afterwards the receiving peer
                         starts sending his complete set in <xref 
target="messages_full_element" format="title" /> messages to the initiating 
peer.
                     </t>
                 </section>
@@ -1214,7 +1235,7 @@
                     </t>
                     <t>
                         When the initiating peer receives the strata estimator 
the peer decides which <xref target="modeofoperation" format="title" /> to use
-                        for the synchronization. Depending on the size of set 
difference and the <xref target="modeofoperation" format="title" /> the 
initiating peer
+                        for the synchronization. Depending on the size of the 
set difference and the <xref target="modeofoperation" format="title" /> the 
initiating peer
                         changes into <strong>Full Sending</strong>, 
<strong>Full Receiving</strong> or <strong>Passive Decoding</strong> state.
                     </t>
                 </section>
@@ -1266,7 +1287,7 @@
                     </t>
                     <t>
                         Since the content of the message is the same as the 
uncompressed Strata Estimator, the details
-                        aren't repeated here for more information see section 
<xref target="messages_se" format="counter" />.
+                        aren't repeated here for details see section <xref 
target="messages_se" format="counter" />.
                     </t>
                 </section>
             </section>

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]