mirror of https://github.com/zcash/zips.git
ZIP 311: Use length(a) instead of a.len()
This commit is contained in:
parent
28bc4e1611
commit
fa4b1ddcf0
|
@ -175,7 +175,7 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/387">https://g
|
|||
<span class="math">\(b\)</span>
|
||||
.</li>
|
||||
<li>
|
||||
<span class="math">\(a\text{.len}()\)</span>
|
||||
<span class="math">\(\mathsf{length}(a)\)</span>
|
||||
means the length of the vector
|
||||
<span class="math">\(a\)</span>
|
||||
.</li>
|
||||
|
@ -189,11 +189,14 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/387">https://g
|
|||
<li><cite>msg</cite>: A message field, which could contain a challenge value from the party to whom the payment disclosure is directed.</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{saplingOutputs}\)</span>
|
||||
: A vector of the Sapling Outputs that we are disclosing [0..tx.shieldedOutputs.len()]
|
||||
: A vector of the Sapling Outputs that we are disclosing
|
||||
<span class="math">\([0..\mathsf{length}(\mathsf{tx.shieldedOutputs})]\)</span>
|
||||
<ul>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{index}\)</span>
|
||||
: An index into <cite>tx.shieldedOutputs</cite>.</li>
|
||||
: An index into
|
||||
<span class="math">\(\mathsf{tx.shieldedOutputs}\)</span>
|
||||
.</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{ock}\)</span>
|
||||
: The outgoing cipher key that allows this output to be recovered. <a id="id4" class="footnote_reference" href="#protocol-saplingencrypt">5</a></li>
|
||||
|
@ -201,11 +204,14 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/387">https://g
|
|||
</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{saplingSpends}\)</span>
|
||||
: A vector of the Sapling Spends for which we are proving spend authority [0..tx.shieldedSpends.len()]
|
||||
: A vector of the Sapling Spends for which we are proving spend authority
|
||||
<span class="math">\([0..\mathsf{length}(\mathsf{tx.shieldedSpends})]\)</span>
|
||||
<ul>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{index}\)</span>
|
||||
: An index into <cite>tx.shieldedSpends</cite>.</li>
|
||||
: An index into
|
||||
<span class="math">\(\mathsf{tx.shieldedSpends}\)</span>
|
||||
.</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{cv}\)</span>
|
||||
: A value commitment to the spent note.</li>
|
||||
|
@ -237,11 +243,14 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/387">https://g
|
|||
</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{transparentInputs}\)</span>
|
||||
: A vector of the transparent inputs for which we are proving spend authority [0..tx.vin.len()]
|
||||
: A vector of the transparent inputs for which we are proving spend authority
|
||||
<span class="math">\([0..\mathsf{length}(\mathsf{tx.vin})]\)</span>
|
||||
<ul>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{index}\)</span>
|
||||
: An index into <cite>tx.vin</cite>.</li>
|
||||
: An index into
|
||||
<span class="math">\(\mathsf{tx.vin}\)</span>
|
||||
.</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{sig}\)</span>
|
||||
: A BIP 322 signature. <a id="id6" class="footnote_reference" href="#bip-0322">8</a>
|
||||
|
@ -282,7 +291,9 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/387">https://g
|
|||
<ul>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{index}\)</span>
|
||||
: An index into <cite>tx.vin</cite>.</li>
|
||||
: An index into
|
||||
<span class="math">\(\mathsf{tx.vin}\)</span>
|
||||
.</li>
|
||||
<li>The inputs to a BIP 322 signature (excluding <cite>message_data</cite>).</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
@ -357,13 +368,13 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/387">https://g
|
|||
<li>Vector length correctness:
|
||||
<ul>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{pd.saplingOutputs.len}() \leq \mathsf{tx.shieldedOutputs.len}()\)</span>
|
||||
<span class="math">\(\mathsf{length}(\mathsf{pd.saplingOutputs}) \leq \mathsf{length}(\mathsf{tx.shieldedOutputs})\)</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{pd.saplingSpends.len}() \leq \mathsf{tx.shieldedSpends.len}()\)</span>
|
||||
<span class="math">\(\mathsf{length}(\mathsf{pd.saplingSpends}) \leq \mathsf{length}(\mathsf{tx.shieldedSpends})\)</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{pd.transparentInputs.len}() \leq \mathsf{tx.vin.len}()\)</span>
|
||||
<span class="math">\(\mathsf{length}(\mathsf{pd.transparentInputs}) \leq \mathsf{length}(\mathsf{tx.vin})\)</span>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
@ -399,26 +410,26 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/387">https://g
|
|||
in
|
||||
<span class="math">\(\mathsf{pd.saplingOutputs}\)</span>
|
||||
,
|
||||
<span class="math">\(\mathsf{output.index} < \mathsf{tx.shieldedOutputs.len}()\)</span>
|
||||
<span class="math">\(\mathsf{output.index} < \mathsf{length}(\mathsf{tx.shieldedOutputs})\)</span>
|
||||
</li>
|
||||
<li>For every
|
||||
<span class="math">\(\mathsf{spend}\)</span>
|
||||
in
|
||||
<span class="math">\(\mathsf{pd.saplingSpends}\)</span>
|
||||
,
|
||||
<span class="math">\(\mathsf{spend.index} < \mathsf{tx.shieldedSpends.len}()\)</span>
|
||||
<span class="math">\(\mathsf{spend.index} < \mathsf{length}(\mathsf{tx.shieldedSpends})\)</span>
|
||||
</li>
|
||||
<li>For every
|
||||
<span class="math">\(\mathsf{input}\)</span>
|
||||
in
|
||||
<span class="math">\(\mathsf{pd.transparentInputs}\)</span>
|
||||
,
|
||||
<span class="math">\(\mathsf{input.index} < \mathsf{tx.vin.len}()\)</span>
|
||||
<span class="math">\(\mathsf{input.index} < \mathsf{length}(\mathsf{tx.vin})\)</span>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<span class="math">\(\mathsf{pd.saplingSpends.len}() + \mathsf{pd.transparentInputs.len}() > 0\)</span>
|
||||
<span class="math">\(\mathsf{length}(\mathsf{pd.saplingSpends}) + \mathsf{length}(\mathsf{pd.transparentInputs}) > 0\)</span>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
30
zip-0311.rst
30
zip-0311.rst
|
@ -160,7 +160,7 @@ We also define the following notation here:
|
|||
- :math:`[a..b]` means the sequence of values inclusive of :math:`a` and exclusive of
|
||||
:math:`b`.
|
||||
|
||||
- :math:`a\text{.len}()` means the length of the vector :math:`a`.
|
||||
- :math:`\mathsf{length}(a)` means the length of the vector :math:`a`.
|
||||
|
||||
|
||||
Specification
|
||||
|
@ -177,16 +177,16 @@ A payment disclosure has the following fields:
|
|||
the payment disclosure is directed.
|
||||
|
||||
- :math:`\mathsf{saplingOutputs}`: A vector of the Sapling Outputs that we are disclosing
|
||||
[0..tx.shieldedOutputs.len()]
|
||||
:math:`[0..\mathsf{length}(\mathsf{tx.shieldedOutputs})]`
|
||||
|
||||
- :math:`\mathsf{index}`: An index into `tx.shieldedOutputs`.
|
||||
- :math:`\mathsf{index}`: An index into :math:`\mathsf{tx.shieldedOutputs}`.
|
||||
- :math:`\mathsf{ock}`: The outgoing cipher key that allows this output to be recovered.
|
||||
[#protocol-saplingencrypt]_
|
||||
|
||||
- :math:`\mathsf{saplingSpends}`: A vector of the Sapling Spends for which we are proving
|
||||
spend authority [0..tx.shieldedSpends.len()]
|
||||
spend authority :math:`[0..\mathsf{length}(\mathsf{tx.shieldedSpends})]`
|
||||
|
||||
- :math:`\mathsf{index}`: An index into `tx.shieldedSpends`.
|
||||
- :math:`\mathsf{index}`: An index into :math:`\mathsf{tx.shieldedSpends}`.
|
||||
- :math:`\mathsf{cv}`: A value commitment to the spent note.
|
||||
- :math:`\mathsf{rk}`: A randomized public key linked to the spent note.
|
||||
- :math:`\mathsf{zkproof_{spend}}`: A Sapling spend proof.
|
||||
|
@ -199,9 +199,9 @@ A payment disclosure has the following fields:
|
|||
- :math:`\mathsf{spendAuthSig}`
|
||||
|
||||
- :math:`\mathsf{transparentInputs}`: A vector of the transparent inputs for which we are
|
||||
proving spend authority [0..tx.vin.len()]
|
||||
proving spend authority :math:`[0..\mathsf{length}(\mathsf{tx.vin})]`
|
||||
|
||||
- :math:`\mathsf{index}`: An index into `tx.vin`.
|
||||
- :math:`\mathsf{index}`: An index into :math:`\mathsf{tx.vin}`.
|
||||
- :math:`\mathsf{sig}`: A BIP 322 signature. [#bip-0322]_
|
||||
|
||||
- TODO: `zcashd` currently only supports the legacy format defined in BIP 322. We may
|
||||
|
@ -232,7 +232,7 @@ The inputs to a payment disclosure are:
|
|||
|
||||
- A vector of transparent input tuples (which may be empty) containing:
|
||||
|
||||
- :math:`\mathsf{index}`: An index into `tx.vin`.
|
||||
- :math:`\mathsf{index}`: An index into :math:`\mathsf{tx.vin}`.
|
||||
- The inputs to a BIP 322 signature (excluding `message_data`).
|
||||
|
||||
The caller MUST provide at least one input tuple of any type (either a Sapling spend tuple
|
||||
|
@ -291,9 +291,9 @@ by the caller), the verifier proceeds as follows:
|
|||
|
||||
- Vector length correctness:
|
||||
|
||||
- :math:`\mathsf{pd.saplingOutputs.len}() \leq \mathsf{tx.shieldedOutputs.len}()`
|
||||
- :math:`\mathsf{pd.saplingSpends.len}() \leq \mathsf{tx.shieldedSpends.len}()`
|
||||
- :math:`\mathsf{pd.transparentInputs.len}() \leq \mathsf{tx.vin.len}()`
|
||||
- :math:`\mathsf{length}(\mathsf{pd.saplingOutputs}) \leq \mathsf{length}(\mathsf{tx.shieldedOutputs})`
|
||||
- :math:`\mathsf{length}(\mathsf{pd.saplingSpends}) \leq \mathsf{length}(\mathsf{tx.shieldedSpends})`
|
||||
- :math:`\mathsf{length}(\mathsf{pd.transparentInputs}) \leq \mathsf{length}(\mathsf{tx.vin})`
|
||||
|
||||
- Index uniqueness:
|
||||
|
||||
|
@ -307,13 +307,13 @@ by the caller), the verifier proceeds as follows:
|
|||
- Index correctness:
|
||||
|
||||
- For every :math:`\mathsf{output}` in :math:`\mathsf{pd.saplingOutputs}`,
|
||||
:math:`\mathsf{output.index} < \mathsf{tx.shieldedOutputs.len}()`
|
||||
:math:`\mathsf{output.index} < \mathsf{length}(\mathsf{tx.shieldedOutputs})`
|
||||
- For every :math:`\mathsf{spend}` in :math:`\mathsf{pd.saplingSpends}`,
|
||||
:math:`\mathsf{spend.index} < \mathsf{tx.shieldedSpends.len}()`
|
||||
:math:`\mathsf{spend.index} < \mathsf{length}(\mathsf{tx.shieldedSpends})`
|
||||
- For every :math:`\mathsf{input}` in :math:`\mathsf{pd.transparentInputs}`,
|
||||
:math:`\mathsf{input.index} < \mathsf{tx.vin.len}()`
|
||||
:math:`\mathsf{input.index} < \mathsf{length}(\mathsf{tx.vin})`
|
||||
|
||||
- :math:`\mathsf{pd.saplingSpends.len}() + \mathsf{pd.transparentInputs.len}() > 0`
|
||||
- :math:`\mathsf{length}(\mathsf{pd.saplingSpends}) + \mathsf{length}(\mathsf{pd.transparentInputs}) > 0`
|
||||
|
||||
- Let :math:`unsignedPaymentDisclosure` be the encoding of the payment disclosure without
|
||||
signatures.
|
||||
|
|
Loading…
Reference in New Issue