mirror of https://github.com/zcash/zips.git
Choose lead bytes.
Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
parent
84d2cf08bc
commit
ef9ca8c023
|
@ -19,6 +19,8 @@
|
|||
\newcommand{\PrivateAddress}{\mathsf{addr_{sk}}}
|
||||
\newcommand{\PublicAddressName}{\emph{protected address}}
|
||||
\newcommand{\PrivateAddressName}{\emph{protected address secret}}
|
||||
\newcommand{\PublicAddressLeadByte}{\mathbf{0x92}}
|
||||
\newcommand{\PrivateAddressLeadByte}{\mathbf{0x93}}
|
||||
\newcommand{\SpendAuthorityPublic}{\mathsf{a_{pk}}}
|
||||
\newcommand{\SpendAuthorityPrivate}{\mathsf{a_{sk}}}
|
||||
\newcommand{\SpendAuthorityName}{\emph{spend authority}}
|
||||
|
@ -35,6 +37,7 @@
|
|||
\newcommand{\BucketPlaintextName}{\emph{transmitted bucket plaintext}}
|
||||
\newcommand{\BucketCiphertextName}{\emph{transmitted bucket ciphertext}}
|
||||
\newcommand{\BucketCommitmentName}{\emph{bucket commitment}}
|
||||
\newcommand{\BucketPlaintextVersionByte}{\mathbf{0x00}}
|
||||
\newcommand{\CRH}{\mathbf{CRH}}
|
||||
\newcommand{\PRF}[2]{\mathbf{PRF_{#1}^{#2}}}
|
||||
\newcommand{\PRFaddr}[1]{\PRF{#1}{addr}}
|
||||
|
@ -396,15 +399,15 @@ The raw encoding of a protected address consists of:
|
|||
|
||||
\begin{equation*}
|
||||
\begin{bytefield}[bitwidth=0.07em]{520}
|
||||
\bitbox{80}{0x??} &
|
||||
\bitbox{80}{$\PublicAddressLeadByte$} &
|
||||
\bitbox{256}{$\SpendAuthorityPublic$ (32 bytes)} &
|
||||
\bitbox{256}{A 33-byte encoding of $\TransmitPublic$}
|
||||
\end{bytefield}
|
||||
\end{equation*}
|
||||
|
||||
\begin{itemize}
|
||||
\item A byte, 0x??, indicating this version of the raw encoding of a \Zcash
|
||||
public address.
|
||||
\item A byte, $\PublicAddressLeadByte$, indicating this version of the
|
||||
raw encoding of a \Zcash public address.
|
||||
\item 32 bytes specifying $\SpendAuthorityPublic$.
|
||||
\item An encoding of $\TransmitPublic$: The byte 0x01, followed by 32 bytes
|
||||
representing the x coordinate of the elliptic curve point according to
|
||||
|
@ -415,8 +418,8 @@ The raw encoding of a protected address consists of:
|
|||
5.5.6.3 of IEEE Std 1363a-2004.]
|
||||
\end{itemize}
|
||||
|
||||
\textbf{TODO: pick a version byte distinct from other Bitcoin stuff, and that
|
||||
produces the correct Base58 leading character}
|
||||
\textbf{TODO: check that this lead byte is distinct from other Bitcoin stuff,
|
||||
and produces `z' as the Base58Check leading character.}
|
||||
|
||||
\textbf{TODO: what about the network version byte?}
|
||||
|
||||
|
@ -433,21 +436,21 @@ The raw encoding of a protected address secret consists of, in order:
|
|||
|
||||
\begin{equation*}
|
||||
\begin{bytefield}[bitwidth=0.07em]{520}
|
||||
\bitbox{80}{0x??} &
|
||||
\bitbox{80}{$\PrivateAddressLeadByte$} &
|
||||
\bitbox{256}{$\SpendAuthorityPrivate$ (32 bytes)} &
|
||||
\bitbox{256}{$\TransmitPrivate$ (32 bytes)}
|
||||
\end{bytefield}
|
||||
\end{equation*}
|
||||
|
||||
\begin{itemize}
|
||||
\item A byte 0x?? indicating this version of the raw encoding of a Zcash
|
||||
private key.
|
||||
\item A byte $\PrivateAddressLeadByte$ indicating this version of the
|
||||
raw encoding of a \Zcash private key.
|
||||
\item 32 bytes specifying $\SpendAuthorityPrivate$.
|
||||
\item 32 bytes specifying a big-endian encoding of $\TransmitPrivate$.
|
||||
\end{itemize}
|
||||
|
||||
\textbf{TODO: pick a version byte distinct from other Bitcoin stuff, and that
|
||||
produces the correct Base58 leading character}
|
||||
\textbf{TODO: check that this lead byte is distinct from other Bitcoin stuff,
|
||||
and produces `z' as the Base58Check leading character.}
|
||||
|
||||
\textbf{TODO: what about the network version byte?}
|
||||
|
||||
|
@ -477,7 +480,7 @@ The raw encoding of a \BucketPlaintextName consists of, in order:
|
|||
|
||||
\begin{equation*}
|
||||
\begin{bytefield}[bitwidth=0.05em]{200}
|
||||
\bitbox{80}{0x??} &
|
||||
\bitbox{80}{$\BucketPlaintextVersionByte$} &
|
||||
\bitbox{230}{$\Value$ (8 bytes, big endian)} &
|
||||
\bitbox{230}{$\BucketAddressRand$ (32 bytes)} &
|
||||
\bitbox{230}{$\BucketRand$ (32 bytes)} &
|
||||
|
@ -485,7 +488,7 @@ The raw encoding of a \BucketPlaintextName consists of, in order:
|
|||
\end{equation*}
|
||||
|
||||
\begin{itemize}
|
||||
\item A byte 0x?? indicating this version of the raw encoding of a \BucketPlaintextName.
|
||||
\item A byte $\BucketPlaintextVersionByte$ indicating this version of the raw encoding of a \BucketPlaintextName.
|
||||
\item 8 bytes specifying a big-endian encoding of $\Value$.
|
||||
\item 32 bytes specifying $\BucketAddressRand$.
|
||||
\item 32 bytes specifying $\BucketRand$.
|
||||
|
|
Loading…
Reference in New Issue