From 6661b1bbba8d459f6ed944a541816c0b2612087f Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 22 Jan 2018 04:59:45 +0000 Subject: [PATCH] Update HushList protocol whitepaper some more --- whitepaper/protocol.pdf | Bin 341789 -> 342083 bytes whitepaper/protocol.tex | 83 ---------------------------------------- 2 files changed, 83 deletions(-) diff --git a/whitepaper/protocol.pdf b/whitepaper/protocol.pdf index f339bd4b342f4a8d22cc47832f623e54348ddffc..90418653b6beb2d008f617866d369b4f2714c459 100644 GIT binary patch delta 14737 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 delta 14405 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 diff --git a/whitepaper/protocol.tex b/whitepaper/protocol.tex index 1bb3d64..b9046f0 100644 --- a/whitepaper/protocol.tex +++ b/whitepaper/protocol.tex @@ -461,89 +461,6 @@ electronic commerce and payment, financial privacy, proof of work, zero knowledg \newcommand{\TransmitPrivate}{\mathsf{sk_{enc}}} \newcommand{\TransmitPrivateSup}[1]{\mathsf{sk}^{#1}_\mathsf{enc}} -% PRFs -\newcommand{\PRF}[2]{\mathsf{{PRF}^{#2}_\mathnormal{#1}}} -\newcommand{\PRFaddr}[1]{\PRF{#1}{addr}} -\newcommand{\PRFnf}[1]{\PRF{#1}{\nf}} -\newcommand{\PRFsn}[1]{\PRF{#1}{sn}} -\newcommand{\PRFpk}[1]{\PRF{#1}{pk}} -\newcommand{\PRFrho}[1]{\PRF{#1}{\NoteAddressRand}} -\newcommand{\PRFOutputLength}{\mathsf{\ell_{PRF}}} -\newcommand{\PRFOutput}{\bitseq{\PRFOutputLength}} - -% Commitments -\newcommand{\Commit}[1]{\mathsf{COMM}_{#1}} -\newcommand{\CommitTrapdoor}{\mathsf{COMM.Trapdoor}} -\newcommand{\CommitInput}{\mathsf{COMM.Input}} -\newcommand{\CommitOutput}{\mathsf{COMM.Output}} -\newcommand{\NoteCommit}{\mathtt{NoteCommitment}} -\newcommand{\Uncommitted}{\mathsf{Uncommitted}} - -% Symmetric encryption -\newcommand{\Sym}{\mathsf{Sym}} -\newcommand{\SymEncrypt}[1]{\mathsf{Sym.}\mathtt{Encrypt}_{#1}} -\newcommand{\SymDecrypt}[1]{\mathsf{Sym.}\mathtt{Decrypt}_{#1}} -\newcommand{\SymSpecific}{\mathsf{AEAD\_CHACHA20\_POLY1305}} -\newcommand{\SymCipher}{\mathsf{ChaCha20}} -\newcommand{\SymAuth}{\mathsf{Poly1305}} -\newcommand{\Ptext}{\mathsf{P}} -\newcommand{\Plaintext}{\mathsf{Sym.}\mathbf{P}} -\newcommand{\Ctext}{\mathsf{C}} -\newcommand{\Ciphertext}{\mathsf{Sym.}\mathbf{C}} -\newcommand{\Key}{\mathsf{K}} -\newcommand{\Keyspace}{\mathsf{Sym.}\mathbf{K}} -\newcommand{\TransmitPlaintext}[1]{\Ptext^\enc_{#1}} -\newcommand{\TransmitCiphertext}[1]{\Ctext^\enc_{#1}} -\newcommand{\TransmitKey}[1]{\Key^\enc_{#1}} -\newcommand{\Adversary}{\mathcal{A}} -\newcommand{\CryptoBoxSeal}{\mathsf{crypto\_box\_seal}} - -% Key agreement -\newcommand{\KA}{\mathsf{KA}} -\newcommand{\KAPublic}{\mathsf{KA.Public}} -\newcommand{\KAPrivate}{\mathsf{KA.Private}} -\newcommand{\KASharedSecret}{\mathsf{KA.SharedSecret}} -\newcommand{\KAFormatPrivate}{\mathsf{KA.}\mathtt{FormatPrivate}} -\newcommand{\KADerivePublic}{\mathsf{KA.}\mathtt{DerivePublic}} -\newcommand{\KAAgree}{\mathsf{KA.}\mathtt{Agree}} -\newcommand{\CurveMultiply}{\mathsf{Curve25519}} -\newcommand{\CurveBase}{\bytes{9}} -\newcommand{\Clamp}{\mathsf{clamp_{Curve25519}}} - -% KDF -\newcommand{\KDF}{\mathsf{KDF}} -\newcommand{\kdftag}{\mathsf{kdftag}} -\newcommand{\kdfinput}{\mathsf{kdfinput}} - -% Notes -\newcommand{\Value}{\mathsf{v}} -\newcommand{\ValueNew}[1]{\mathsf{v^{new}_\mathnormal{#1}}} -\newcommand{\ValueOld}[1]{\mathsf{v^{old}_\mathnormal{#1}}} -\newcommand{\NoteTuple}[1]{\mathbf{n}_{#1}} -\newcommand{\NoteType}{\mathsf{Note}} -\newcommand{\NotePlaintext}[1]{\mathbf{np}_{#1}} -\newcommand{\NoteCommitRand}{\mathsf{r}} -\newcommand{\NoteCommitRandLength}{\mathsf{\ell_{\NoteCommitRand}}} -\newcommand{\NoteCommitRandOld}[1]{\mathsf{r^{old}_\mathnormal{#1}}} -\newcommand{\NoteCommitRandNew}[1]{\mathsf{r^{new}_\mathnormal{#1}}} -\newcommand{\NoteAddressRand}{\mathsf{\uprho}} -\newcommand{\NoteAddressRandOld}[1]{\mathsf{\uprho^{old}_\mathnormal{#1}}} -\newcommand{\NoteAddressRandOldX}[1]{\mathsf{\uprho^{old}_\mathrm{#1}}} -\newcommand{\NoteAddressRandNew}[1]{\mathsf{\uprho^{new}_\mathnormal{#1}}} -\newcommand{\NoteAddressPreRand}{\mathsf{\upvarphi}} -\newcommand{\NoteAddressPreRandLength}{\mathsf{\ell_{\NoteAddressPreRand}}} -\newcommand{\NoteCommitS}{\mathsf{s}} -\newcommand{\cm}{\mathsf{cm}} -\newcommand{\cmOld}[1]{\mathsf{{cm}^{old}_\mathnormal{#1}}} -\newcommand{\cmOldX}[1]{\mathsf{{cm}^{old}_\mathrm{#1}}} -\newcommand{\cmNew}[1]{\mathsf{{cm}^{new}_\mathnormal{#1}}} -\newcommand{\snOldX}[1]{\mathsf{{sn}^{old}_\mathrm{#1}}} -\newcommand{\nf}{\mathsf{nf}} -\newcommand{\nfOld}[1]{\nf^\mathsf{old}_\mathnormal{#1}} -\newcommand{\Memo}{\mathsf{memo}} -\newcommand{\DecryptNote}{\mathtt{DecryptNote}} -\newcommand{\ReplacementCharacter}{\textsf{U+FFFD}} - % Money supply \newcommand{\MAXMONEY}{\mathsf{MAX\_MONEY}} \newcommand{\BlockSubsidy}{\mathsf{BlockSubsidy}}