From 005da38aa3b8b44f341bc6886583e0bf79c44336 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 22 Jan 2018 05:04:29 +0000 Subject: [PATCH] Update HushList protocol whitepaper some more --- whitepaper/protocol.pdf | Bin 342083 -> 361551 bytes whitepaper/protocol.tex | 204 +--------------------------------------- 2 files changed, 1 insertion(+), 203 deletions(-) diff --git a/whitepaper/protocol.pdf b/whitepaper/protocol.pdf index 90418653b6beb2d008f617866d369b4f2714c459..bef33acc7bc80da031ed9029b92ee9d84ab4bdea 100644 GIT binary patch delta 32670 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 delta 13101 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 diff --git a/whitepaper/protocol.tex b/whitepaper/protocol.tex index b9046f0..99e1fd0 100644 --- a/whitepaper/protocol.tex +++ b/whitepaper/protocol.tex @@ -419,209 +419,7 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\rightarrowR}{\buildrel{\scriptstyle\mathrm{R}}\over\rightarrow} \newcommand{\leftarrowR}{\buildrel{\scriptstyle\mathrm{R}}\over\leftarrow} -% key pairs: -\newcommand{\PaymentAddress}{\mathsf{addr_{pk}}} -\newcommand{\PaymentAddressLeadByte}{\hexint{16}} -\newcommand{\PaymentAddressSecondByte}{\hexint{9A}} -\newcommand{\SpendingKeyLeadByte}{\hexint{AB}} -\newcommand{\SpendingKeySecondByte}{\hexint{36}} -\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}}} -\newcommand{\AuthPublicX}[1]{\mathsf{a^\mathrm{#1}_{pk}}} -\newcommand{\AuthPrivateX}[1]{\mathsf{a^\mathrm{#1}_{sk}}} -\newcommand{\AuthPrivateLength}{\mathsf{\ell_{\AuthPrivate}}} -\newcommand{\AuthPublicOld}[1]{\mathsf{a^{old}_{pk,\mathnormal{#1}}}} -\newcommand{\AuthPrivateOld}[1]{\mathsf{a^{old}_{sk,\mathnormal{#1}}}} -\newcommand{\AuthEmphPublicOld}[1]{\mathsf{a^{old}_{\textsf{\textbf{pk}},\mathnormal{#1}}}} -\newcommand{\AuthPublicOldX}[1]{\mathsf{a^{old}_{pk,\mathrm{#1}}}} -\newcommand{\AuthPrivateOldX}[1]{\mathsf{a^{old}_{sk,\mathrm{#1}}}} -\newcommand{\AuthPublicNew}[1]{\mathsf{a^{new}_{pk,\mathnormal{#1}}}} -\newcommand{\AuthPrivateNew}[1]{\mathsf{a^{new}_{sk,\mathnormal{#1}}}} -\newcommand{\AddressPublicNew}[1]{\mathsf{addr^{new}_{pk,\mathnormal{#1}}}} -\newcommand{\enc}{\mathsf{enc}} -\newcommand{\DHSecret}[1]{\mathsf{sharedSecret}_{#1}} -\newcommand{\EphemeralPublic}{\mathsf{epk}} -\newcommand{\EphemeralPrivate}{\mathsf{esk}} -\newcommand{\TransmitPublic}{\mathsf{pk_{enc}}} -\newcommand{\TransmitPublicSup}[1]{\mathsf{pk}^{#1}_\mathsf{enc}} -\newcommand{\TransmitPublicNew}[1]{\mathsf{pk^{new}_{\enc,\mathnormal{#1}}}} -\newcommand{\TransmitPrivate}{\mathsf{sk_{enc}}} -\newcommand{\TransmitPrivateSup}[1]{\mathsf{sk}^{#1}_\mathsf{enc}} - -% Money supply -\newcommand{\MAXMONEY}{\mathsf{MAX\_MONEY}} -\newcommand{\BlockSubsidy}{\mathsf{BlockSubsidy}} -\newcommand{\MinerSubsidy}{\mathsf{MinerSubsidy}} -\newcommand{\FoundersReward}{\mathsf{FoundersReward}} -\newcommand{\SlowStartInterval}{\mathsf{SlowStartInterval}} -\newcommand{\SlowStartShift}{\mathsf{SlowStartShift}} -\newcommand{\SlowStartRate}{\mathsf{SlowStartRate}} -\newcommand{\HalvingInterval}{\mathsf{HalvingInterval}} -\newcommand{\MaxBlockSubsidy}{\mathsf{MaxBlockSubsidy}} -\newcommand{\NumFounderAddresses}{\mathsf{NumFounderAddresses}} -\newcommand{\FounderAddressChangeInterval}{\mathsf{FounderAddressChangeInterval}} -\newcommand{\FoundersFraction}{\mathsf{FoundersFraction}} -\newcommand{\BlockHeight}{\mathsf{height}} -\newcommand{\Halving}{\mathsf{Halving}} -\newcommand{\FounderAddress}{\mathsf{FounderAddress}} -\newcommand{\FounderAddressList}{\mathsf{FounderAddressList}} -\newcommand{\FounderAddressIndex}{\mathsf{FounderAddressIndex}} -\newcommand{\RedeemScriptHash}{\mathsf{RedeemScriptHash}} - -\newcommand{\blockSubsidy}{\term{block subsidy}} -\newcommand{\minerSubsidy}{\term{miner subsidy}} -\newcommand{\foundersReward}{\term{Founders' Reward}} -\newcommand{\slowStartPeriod}{\term{slow-start period}} -\newcommand{\halvingInterval}{\term{halving interval}} - -\newcommand{\PoWLimit}{\mathsf{PoWLimit}} -\newcommand{\PoWAveragingWindow}{\mathsf{PoWAveragingWindow}} -\newcommand{\PoWMedianBlockSpan}{\mathsf{PoWMedianBlockSpan}} -\newcommand{\PoWMaxAdjustDown}{\mathsf{PoWMaxAdjustDown}} -\newcommand{\PoWMaxAdjustUp}{\mathsf{PoWMaxAdjustUp}} -\newcommand{\PoWDampingFactor}{\mathsf{PoWDampingFactor}} -\newcommand{\PoWTargetSpacing}{\mathsf{PoWTargetSpacing}} -\newcommand{\MeanTarget}{\mathsf{MeanTarget}} -\newcommand{\MedianTime}{\mathsf{MedianTime}} -\newcommand{\AveragingWindowTimespan}{\mathsf{AveragingWindowTimespan}} -\newcommand{\MinActualTimespan}{\mathsf{MinActualTimespan}} -\newcommand{\MaxActualTimespan}{\mathsf{MaxActualTimespan}} -\newcommand{\ActualTimespan}{\mathsf{ActualTimespan}} -\newcommand{\ActualTimespanDamped}{\mathsf{ActualTimespanDamped}} -\newcommand{\ActualTimespanClamped}{\mathsf{ActualTimespanClamped}} -\newcommand{\Threshold}{\mathsf{Threshold}} -\newcommand{\ThresholdBits}{\mathsf{ThresholdBits}} - -\newcommand{\targetThreshold}{\term{target threshold}} -\newcommand{\targetThresholds}{\term{target thresholds}} - -% Signatures -\newcommand{\Sig}{\mathsf{Sig}} -\newcommand{\SigPublic}{\mathsf{Sig.Public}} -\newcommand{\SigPrivate}{\mathsf{Sig.Private}} -\newcommand{\SigMessage}{\mathsf{Sig.Message}} -\newcommand{\SigSignature}{\mathsf{Sig.Signature}} -\newcommand{\SigGen}{\mathsf{Sig.Gen}} -\newcommand{\SigSign}[1]{\mathsf{Sig.Sign}_{#1}} -\newcommand{\SigVerify}[1]{\mathsf{Sig.Verify}_{#1}} -\newcommand{\JoinSplitSig}{\mathsf{JoinSplitSig}} -\newcommand{\JoinSplitSigPublic}{\mathsf{JoinSplitSig.Public}} -\newcommand{\JoinSplitSigPrivate}{\mathsf{JoinSplitSig.Private}} -\newcommand{\JoinSplitSigMessage}{\mathsf{JoinSplitSig.Message}} -\newcommand{\JoinSplitSigSignature}{\mathsf{JoinSplitSig.Signature}} -\newcommand{\JoinSplitSigGen}{\mathsf{JoinSplitSig.Gen}} -\newcommand{\JoinSplitSigSign}[1]{\mathsf{JoinSplitSig.Sign}_{#1}} -\newcommand{\JoinSplitSigVerify}[1]{\mathsf{JoinSplitSig.Verify}_{#1}} -\newcommand{\JoinSplitSigSpecific}{\mathsf{Ed25519}} -\newcommand{\JoinSplitSigHashName}{\mathsf{SHA\mhyphen512}} -\newcommand{\EdDSAr}{R} -\newcommand{\EdDSAs}{S} -\newcommand{\EdDSAR}{\bytes{R}} -\newcommand{\EdDSAS}{\bytes{S}} -\newcommand{\RandomSeedLength}{\mathsf{\ell_{Seed}}} -\newcommand{\RandomSeedType}{\bitseq{\mathsf{\ell_{Seed}}}} -\newcommand{\pksig}{\mathsf{pk_{sig}}} -\newcommand{\sk}{\mathsf{sk}} -\newcommand{\hSigInput}{\mathsf{hSigInput}} -\newcommand{\dataToBeSigned}{\mathsf{dataToBeSigned}} - -% Merkle tree -\newcommand{\MerkleDepth}{\mathsf{d_{Merkle}}} -\newcommand{\MerkleNode}[2]{\mathsf{M}^{#1}_{#2}} -\newcommand{\MerkleSibling}{\mathsf{sibling}} -\newcommand{\MerkleCRH}{\mathsf{MerkleCRH}} -\newcommand{\MerkleHashLength}{\mathsf{\ell_{Merkle}}} -\newcommand{\MerkleHash}{\bitseq{\MerkleHashLength}} - -\newcommand{\SHAd}{\term{SHA-256d}} - -% Proving system -\newcommand{\ZK}{\mathsf{ZK}} -\newcommand{\ZKProvingKey}{\mathsf{ZK.ProvingKey}} -\newcommand{\ZKVerifyingKey}{\mathsf{ZK.VerifyingKey}} -\newcommand{\pk}{\mathsf{pk}} -\newcommand{\vk}{\mathsf{vk}} -\newcommand{\ZKGen}{\mathsf{ZK.Gen}} -\newcommand{\ZKProof}{\mathsf{ZK.Proof}} -\newcommand{\ZKPrimary}{\mathsf{ZK.PrimaryInput}} -\newcommand{\ZKAuxiliary}{\mathsf{ZK.AuxiliaryInput}} -\newcommand{\ZKSatisfying}{\mathsf{ZK.SatisfyingInputs}} -\newcommand{\ZKProve}[1]{\mathsf{ZK.}\mathtt{Prove}_{#1}} -\newcommand{\ZKVerify}[1]{\mathsf{ZK.}\mathtt{Verify}_{#1}} -\newcommand{\Simulator}{\mathcal{S}} -\newcommand{\Distinguisher}{\mathcal{D}} \newcommand{\JoinSplit}{\text{\footnotesize\texttt{JoinSplit}}} -\newcommand{\ZKJoinSplit}{\mathsf{ZK}_{\JoinSplit}} -\newcommand{\ZKJoinSplitVerify}{\ZKJoinSplit\mathsf{.Verify}} -\newcommand{\ZKJoinSplitProve}{\ZKJoinSplit\mathsf{.Prove}} -\newcommand{\ZKJoinSplitProof}{\ZKJoinSplit\mathsf{.Proof}} -\newcommand{\Proof}{\pi} -\newcommand{\JoinSplitProof}{\Proof_{\JoinSplit}} -\newcommand{\zkproof}{\mathtt{zkproof}} -\newcommand{\POUR}{\texttt{POUR}} -\newcommand{\Prob}[2]{\mathrm{Pr}\scalebox{0.88}{\ensuremath{ - \left[\!\!\begin{array}{c}#1\end{array} \middle| \begin{array}{l}#2\end{array}\!\!\right] -}}} - -% JoinSplit -\newcommand{\hSig}{\mathsf{h_{Sig}}} -\newcommand{\hSigText}{\texorpdfstring{$\hSig$}{hSig}} -\newcommand{\h}[1]{\mathsf{h_{\mathnormal{#1}}}} -\newcommand{\NOld}{\mathrm{N}^\mathsf{old}} -\newcommand{\NNew}{\mathrm{N}^\mathsf{new}} -\newcommand{\allN}[1]{\mathrm{1}..\mathrm{N}^\mathsf{#1}} -\newcommand{\allOld}{\allN{old}} -\newcommand{\allNew}{\allN{new}} -\newcommand{\setofOld}{\setof{\allOld}} -\newcommand{\setofNew}{\setof{\allNew}} -\newcommand{\vmacs}{\mathtt{vmacs}} -\newcommand{\GroupG}[1]{\mathbb{G}_{#1}} -\newcommand{\GroupGstar}[1]{\mathbb{G}^\ast_{#1}} -\newcommand{\PointP}[1]{\mathcal{P}_{#1}} -\newcommand{\xP}{{x_{\hspace{-0.12em}P}}} -\newcommand{\yP}{{y_{\hspace{-0.03em}P}}} -\newcommand{\AtInfinity}[1]{\mathcal{O}_{#1}} -\newcommand{\GF}[1]{\mathbb{F}_{#1}} -\newcommand{\GFstar}[1]{\mathbb{F}^\ast_{#1}} -\newcommand{\ECtoOSP}{\mathsf{EC2OSP}} -\newcommand{\ECtoOSPXL}{\mathsf{EC2OSP\mhyphen{}XL}} -\newcommand{\ECtoOSPXS}{\mathsf{EC2OSP\mhyphen{}XS}} -\newcommand{\ItoOSP}[1]{\mathsf{I2OSP}_{#1}} -\newcommand{\ItoBSP}[1]{\mathsf{I2BSP}_{#1}} -\newcommand{\FEtoIP}{\mathsf{FE2IP}} -\newcommand{\BNImpl}{\mathtt{ALT\_BN128}} -\newcommand{\vpubOld}{\mathsf{v_{pub}^{old}}} -\newcommand{\vpubNew}{\mathsf{v_{pub}^{new}}} -\newcommand{\nOld}[1]{\NoteTuple{#1}^\mathsf{old}} -\newcommand{\nNew}[1]{\NoteTuple{#1}^\mathsf{new}} -\newcommand{\vOld}[1]{\mathsf{v}_{#1}^\mathsf{old}} -\newcommand{\vNew}[1]{\mathsf{v}_{#1}^\mathsf{new}} -\newcommand{\RandomSeed}{\mathsf{randomSeed}} -\newcommand{\rt}{\mathsf{rt}} -\newcommand{\treepath}[1]{\mathsf{path}_{#1}} -\newcommand{\Receive}{\mathsf{Receive}} -\newcommand{\EnforceMerklePath}[1]{\mathsf{enforceMerklePath}_{~\!\!#1}} - - -\newcommand{\consensusrule}[1]{\needspace{3ex}\subparagraph{Consensus rule:}{#1}} -\newenvironment{consensusrules}{\introlist\subparagraph{Consensus rules:}\begin{itemize}}{\end{itemize}} -\newcommand{\securityrequirement}[1]{\needspace{3ex}\subparagraph{Security requirement:}{#1}} -\newenvironment{securityrequirements}{\introlist\subparagraph{Security requirements:}\begin{itemize}}{\end{itemize}} -\newcommand{\pnote}[1]{\subparagraph{Note:}{#1}} -\newenvironment{pnotes}{\introlist\subparagraph{Notes:}\begin{itemize}}{\end{itemize}} \newcommand{\affiliation}{\hairspace$^\dagger$\;} \newcommand{\affiliationDuke}{\hairspace$^\ddagger$\;} @@ -992,7 +790,7 @@ https://explorer.myhush.org/tx/30a38c7ba0929efb7cd54d3b724d9eb1d9cb03f35381a94d8 One may note that the zaddr associated with this transaction does not appear anywhere in the explorer, because shielded addresses never show up directly in the public blockchain. Network transaction analysis is not possible on zaddrs. The explorer only -shows that a JoinSplit occured and that change was given to a taddr. +shows that a \JoinSplit occured and that change was given to a taddr. Nevertheless, the follow text is forever embedded in the 512 byte memo field of the above transaction: