Update address prefixes again. refs zcash/zcash#812

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood 2016-10-04 21:11:44 +01:00
parent 2ccd1ac58a
commit af4b9a0f53
1 changed files with 63 additions and 49 deletions

View File

@ -333,18 +333,18 @@
\newcommand{\PaymentAddressSecondByte}{\hexint{9A}}
\newcommand{\SpendingKeyLeadByte}{\hexint{AB}}
\newcommand{\SpendingKeySecondByte}{\hexint{36}}
\newcommand{\PtoSHAddressLeadByte}{\hexint{1B}}
\newcommand{\PtoSHAddressSecondByte}{\hexint{9C}}
\newcommand{\PtoPKHAddressLeadByte}{\hexint{1B}}
\newcommand{\PtoPKHAddressSecondByte}{\hexint{97}}
\newcommand{\PaymentAddressTestnetLeadByte}{\hexint{14}}
\newcommand{\PaymentAddressTestnetSecondByte}{\hexint{51}}
\newcommand{\SpendingKeyTestnetLeadByte}{\hexint{B1}}
\newcommand{\SpendingKeyTestnetSecondByte}{\hexint{EB}}
\newcommand{\PtoSHAddressTestnetLeadByte}{\hexint{1B}}
\newcommand{\PtoSHAddressTestnetSecondByte}{\hexint{9A}}
\newcommand{\PtoPKHAddressTestnetLeadByte}{\hexint{1C}}
\newcommand{\PtoPKHAddressTestnetSecondByte}{\hexint{05}}
\newcommand{\PtoSHAddressLeadByte}{\hexint{1C}}
\newcommand{\PtoSHAddressSecondByte}{\hexint{BD}}
\newcommand{\PtoPKHAddressLeadByte}{\hexint{1C}}
\newcommand{\PtoPKHAddressSecondByte}{\hexint{B8}}
\newcommand{\PaymentAddressTestnetLeadByte}{\hexint{16}}
\newcommand{\PaymentAddressTestnetSecondByte}{\hexint{B6}}
\newcommand{\SpendingKeyTestnetLeadByte}{\hexint{AC}}
\newcommand{\SpendingKeyTestnetSecondByte}{\hexint{08}}
\newcommand{\PtoSHAddressTestnetLeadByte}{\hexint{1C}}
\newcommand{\PtoSHAddressTestnetSecondByte}{\hexint{BA}}
\newcommand{\PtoPKHAddressTestnetLeadByte}{\hexint{1D}}
\newcommand{\PtoPKHAddressTestnetSecondByte}{\hexint{25}}
\newcommand{\NotePlaintextLeadByte}{\hexint{00}}
\newcommand{\AuthPublic}{\mathsf{a_{pk}}}
\newcommand{\AuthPrivate}{\mathsf{a_{sk}}}
@ -2443,11 +2443,11 @@ The raw encoding of a P2PKH address consists of:
\begin{pnotes}
\item In \Bitcoin a single byte is used for the version field identifying
the address type. In \Zcash two bytes are used. For addresses on
the production network, this fixes the first two characters of the
Base58Check encoding to be \ascii{r3} for P2SH addresses, or
\ascii{r1} for P2PKH addresses. (This does \emph{not} imply that a
\transparent \Zcash address can be parsed in the same way as a
\Bitcoin address just by removing the \ascii{r}.)
the production network, this and the encoded length cause the first
two characters of the Base58Check encoding to be fixed as \ascii{t3}
for P2SH addresses, and as \ascii{t1} for P2PKH addresses. (This does
\emph{not} imply that a \transparent \Zcash address can be parsed
identically to a \Bitcoin address just by removing the \ascii{t}.)
\item \Zcash does not yet support Hierarchical Deterministic Wallet
addresses \cite{BIP-32}.
\end{pnotes}
@ -2489,6 +2489,13 @@ The raw encoding of a \paymentAddress consists of:
normal encoding of a Curve25519 public key \cite{Bern2006}}.
\end{itemize}
\pnote{
For addresses on the production network, the lead bytes and encoded length
cause the first two characters of the Base58Check encoding to be fixed as
\ascii{zc}. For the test network, the first two characters are fixed as
\ascii{zt}.
}
\nsubsubsection{Spending Keys} \label{spendingkeyencoding}
A \spendingKey consists of $\AuthPrivate$, which is a sequence of \changed{252} bits.
@ -2519,15 +2526,21 @@ The raw encoding of a \spendingKey consists of, in order:
\changed{
The zero padding occupies the most significant 4 bits of the third byte.
}
\pnote{
If an implementation represents $\AuthPrivate$
internally as a sequence of 32 bytes with the 4 bits of zero padding
intact, it will be in the correct form for use as an input to
$\PRFaddr{}$, $\PRFnf{}$, and $\PRFpk{}$ without need for bit-shifting.
Future key representations may make use of these padding bits.
}
\begin{pnotes}
\changed{
\item If an implementation represents $\AuthPrivate$ internally as a
sequence of 32 bytes with the 4 bits of zero padding intact,
it will be in the correct form for use as an input to $\PRFaddr{}$,
$\PRFnf{}$, and $\PRFpk{}$ without need for bit-shifting.
Future key representations may make use of these padding bits.
}
\item For addresses on the production network, the lead bytes and encoded
length cause the first two characters of the Base58Check encoding to
be fixed as \ascii{SK}. For the test network, the first two characters
are fixed as \ascii{ST}.
\end{pnotes}
\nsubsection{\ZeroKnowledgeProvingSystem} \label{proofs}
@ -3090,30 +3103,30 @@ For mainnet, $\FounderAddressList_{\mathrm{1}..\NumFounderAddresses}$ is \todo{}
For testnet, $\FounderAddressList_{\mathrm{1}..\NumFounderAddresses}$ is:
\begin{tabular}{@{\hskip 2.5em}l@{\;}l}
[& \ascii{2N2e2FRfP9D1dRN1oRWkH7pbFM69eGNAuQ4}, \ascii{2NBW8WsA2jUussoJbRv82UXH1BYopkjYqcd}, \\
& \ascii{2N1MudZmwDFTcYiLCZfrcsnhHwaSTTigbcN}, \ascii{2MxfUJXWKz9D8X3mcMpVcdEJKdJ6zFukca9}, \\
& \ascii{2N8iUwMCpU16VYpKQ1HRM6xfut5FZwGwieM}, \ascii{2N9hyafTvJVrykBvZDw79j1brozwZNySwPP}, \\
& \ascii{2NFx7tRozsp3kT1M4w4tL9FfnEj8RovzbzN}, \ascii{2NAqoH96V1RtmK72LEZpJNX1uxhJ5yejRiK}, \\
& \ascii{2MyV7hoV28KS8Uam2Z8nzY3xeo7R3T3TLUr}, \ascii{2N8Tn19hMoCD4EmCwpg1V8qupVkQLVVPhav}, \\
& \ascii{2NA5UeJU9zAQkSMyy3xpDcjfp4CEyKfzXKp}, \ascii{2NBERNyXy46CfM9yewGeof4yzC3vkwYnhgS}, \\
& \ascii{2N7fnpAswHb4mnPm2ZjWX3eKkF8hABAYBtQ}, \ascii{2N9MXGsz7uYaY5ciax6tSMDG7sjZUoLhJTC}, \\
& \ascii{2N5PwzPQFFmLut2XWGQWAmpwKsF8VzUoPtr}, \ascii{2MvZdDpNP8hWyEqg6zKW9B62YTJqcUwjHr5}, \\
& \ascii{2Mx4KfKJ37EDc3A43Frzof1iEjSe91JUX7d}, \ascii{2NBMSdXjZ7YqREmwxEtgGryY59KBpqMSs1d}, \\
& \ascii{2N9RbfE4ZCJ3Nx68vPfmvH2M6Q3qicJhagb}, \ascii{2N4xwfFkFj4DR4NWNbynzP2aJmVcEFnA2DB}, \\
& \ascii{2Mx4TyAwedmsRuDkvMNYGqrcCZfQTfCvxAp}, \ascii{2Mx4HSVsxEqXjLxn8igJzmCrFdG9XhnNvtf}, \\
& \ascii{2MtLM4SP7LJbBZ5rA5ZG8kAVz9UNrNKuoFB}, \ascii{2N7SPq83Cbmwuwv5rjNBzVd9QtJKAxxKj8M}, \\
& \ascii{2MwYkbE4U4p9XBsCrupDDkdcDH9L9xvc9Bn}, \ascii{2MyaeCHpVmckokUi67YP1QK9L3Dkx3Pt86F}, \\
& \ascii{2N7URNgBPXGjqnuPHiynCa6qMMhKm6YEaHr}, \ascii{2N2eNwGVwj4WwbEdJg7YZDgrnYvDv1ZSNbB}, \\
& \ascii{2MuWAG6BqLM1mtZc67Fv1aKgGwkNQ2akDGt}, \ascii{2N7XH82MbGwpzbc7PM2aK5CU14bSJvK7Etz}, \\
& \ascii{2MuPX8Ke5TvDDQ1nkqpaPMgYWPyWbFp18Jn}, \ascii{2NFBST7oK9yw9PaXaq5QhdyYwp5HpHz9m81}, \\
& \ascii{2MuSeMBUrttbjvDZAeQjTrrDeoP197qj2kG}, \ascii{2N6JU8JNGGAUFknTCuLSuDEEhZJqMfFsH88}, \\
& \ascii{2N4P2MrwtwbiHymQm1RASoVoiH3sFrBpmXa}, \ascii{2MyhFiVXvVVxUNc8Qh9ppV7jG4NsKpnxige}, \\
& \ascii{2N5dLXUho2GtjuHMWuqixLrHLCwUMcYxd7s}, \ascii{2N9NhfSiYBt3fhETFR6mQc3uxreEy7simSg}, \\
& \ascii{2NBEEWPY3v38uuC7n1tMtviEY7ND2XzfgSG}, \ascii{2NCWWj6oREJiMmfJ2bV5sbm1xchMwQfAZ5r}, \\
& \ascii{2N4ACsVCKMvJmtEb3Pd3xkqhJ3rLT4mYx1r}, \ascii{2MtmMdabcwRJmenswaYtWA675df854KhUxD}, \\
& \ascii{2N2h27Dd87eiGcm7ajvu4hJpXjTm9GkzvLZ}, \ascii{2NGE19agRXU1EAK3PCLZWXERkpqyUexhk9r}, \\
& \ascii{2N63112wMnBsXTaBFjbCTjW9LuyTXQmvEdw}, \ascii{2NBkHxgkYZbU56zsoLNsP5WZVfMtBK6X8WK}, \\
& \ascii{2N5pK7NfKo6d9qBmsKggpwuvQeMxGf65SLH}, \ascii{2N5jHzgCg9a9uAcLaT2jij8WKTZzWbVNC5c}\, ]
[& \ascii{t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi}, \ascii{t2N9PH9Wk9xjqYg9iin1Ua3aekJqfAtE543}, \\
& \ascii{t2NGQjYMQhFndDHguvUw4wZdNdsssA6K7x2}, \ascii{t27ktmq1kbeCWiQ5TZ7w5npSzcdbBmTB7v6}, \\
& \ascii{t2GcBttAKD2WTHka8HyGc2dfvVTKYZUfHmJ}, \ascii{t2Q3vxWaD9LrdqUE8Xd9Ddjpr9pUQ2aGotK}, \\
& \ascii{t2TTfWDsYu998fHWzVP9Gns4fgxXXRi1Wzu}, \ascii{t2KS6R4MMWdSBMjLCiw2iMyhWGRQPmyRqDn}, \\
& \ascii{t2Q2ELrgotWv3Eec6LEtMMiiQ8dtW38u8Tj}, \ascii{t2AEgJA88vTWAKqxJDFUEJWyHUtQAZi5G1D}, \\
& \ascii{t2HCSdmpq1TQKksuwPQevwAzPTgfJ2rkMbG}, \ascii{t2HQCPFAUQaUdJWHPhg5pPBxit7inaJzubE}, \\
& \ascii{t2Fzqvq8Y9e6Mn3JNPb982aYsLmq4b5HmhH}, \ascii{t2HEz7YZQqDUgC5h4y2WSD3mWneqJNVRjjJ}, \\
& \ascii{t2GCR1SCk687Eeo5NEZ23MLsms7JjVWBgfG}, \ascii{t2KyiPR9Lztq2w1w747X6W4nkUMAGL8M9KN}, \\
& \ascii{t2UxymadyxSyVihmbq7S1yxw5dCBqJ1S4jT}, \ascii{t2AVeMy7fdmTcJhckqiKRG8B7F1vccEhSqU}, \\
& \ascii{t26m7LwihQzD2sH7ZVhYpPJM5j7kzwbfKW9}, \ascii{t2DgwUNTe7NxuyPU6fxsB5xJXap3E4yWXrN}, \\
& \ascii{t2U6funcXA11fC9SZehyvUL3rk3Vhuh7fzS}, \ascii{t284JhyS8LGM72Tx1porSqwrcq3CejthP1p}, \\
& \ascii{t29egu8QcpzKeLoPLqWS6QVMnUUPQdF6eNm}, \ascii{t29LqD9p9D3B26euBwFi6mfcWu8HPA38VNs}, \\
& \ascii{t28GsAMCxAyLy85XaasddDzaYFTtfewr86y}, \ascii{t2GV44QyaikQPLUfm6oTfZnw71LLjnR7gDG}, \\
& \ascii{t2U2QzNLQ1jtAu4L6xxVnRXLBsQpQvGRR2g}, \ascii{t2QKGr5PNan7nrwDgseyHMN9NFeeuUjCh8b}, \\
& \ascii{t2AfS8u6HwBeJpKpbuxztvRjupKQDXqnrwa}, \ascii{t2CTRQUViQd3CWMhnKhFnUHqDLUyTxmWhJs}, \\
& \ascii{t2CbM9EqszNURqh1UXZBXYhwp1R4GwEhWRE}, \ascii{t2LM7uYiAsKDU42GNSnMwDxbZ8s1DowQzYH}, \\
& \ascii{t2AgvT35LHR378AE3ouz6xKMhkTLHLJC6nD}, \ascii{t285EAQXUVyi4NMddJv2QqTrnv45GRMbP8e}, \\
& \ascii{t2EpMRCD5b8f2DCQ37npNULcpZhkjC8muqA}, \ascii{t2BCmWXrRPiCeQTpizSWKKRPM5X6PS7umDY}, \\
& \ascii{t2DN7X6wDFn5hYKBiBmn3Z98st419yaTVTH}, \ascii{t2QJj8HeCwQ6mHwqekxxDLZntYpZTHNU62t}, \\
& \ascii{t2QdHBR1Yciqn4j8gpS8DcQZZtYetKvfNj3}, \ascii{t2E5cpLA1ey5VNxFNcuopeQMq2rH2NHiPdu}, \\
& \ascii{t2EVRGtzjFAyz8CF8ndvLuiJu7qZUfDa93H}, \ascii{t2KoQDk3BSFadBkuaWdLwchFuQamzw9RE4L}, \\
& \ascii{t2FnR3yhTmuiejEJeu6qpidWTghRd1HpjLt}, \ascii{t2BAuBAAospDc9d1u5nNGEi6x4NRJBD2PQ2}, \\
& \ascii{t2RtKrLCGcyPkm4a4APg1YY9Wu2m4R2PgrB}, \ascii{t28aUbSteZzBq2pFgj1K1XNZRZP5mMMyakV}, \\
& \ascii{t2Urdy1ERfkvsFuy6Z4BkhvYGzWdmivfAFR}, \ascii{t2ADinR4JrvCMd4Q1XGALPajzFrirqvhED6}\, ]
\end{tabular}
\renewcommand{\arraystretch}{1}
@ -3633,7 +3646,8 @@ The errors in the proof of Ledger Indistinguishability mentioned in
\subparagraph{2016.0-beta-1.8}
\begin{itemize}
\item Specify the lead bytes for \transparent P2SH and P2PKH addresses.
\item Revise the lead bytes for \transparent P2SH and P2PKH addresses,
and reencode the testnet \foundersReward addresses.
\item Add a section on which BIPs apply to \Zcash.
\item Specify that \ScriptOP{CODESEPARATOR} has been disabled, and
no longer affects signature hashes.