
Consider a transaction with input commitments C
i
and output commitments C
o
. As with all implemen-
tations of confidential transactions, the sum of the input commitments minus the outputs will be the ratio of
their products, and this will be a public key to which the owner knows the private key:
Q
C
i
Q
C
o
= g
s
i
−s
o
= g
z
= C
T
(160)
The transaction format is thus the set (C
i
1
, ..., C
i
N
, C
o
1
, ..., C
o
M
, C
T
), with a signature on CT to prove the
balance. Given this format, it is trivial to combine transactions; you can simply add the new input, output, and
balance commitments to the existing set, and the balance check should still succeed with the combined sets:
Y
(
Q
C
i
Q
C
o
)
k
=
Y
(C
T
)
k
(161)
A verifier can check the signatures on the individual C
T
and the aggregated balance check; if they all succeed,
the aggregated transaction set is still valid.
Using this technique, miners will aggregate all of the transactions in a block into a single set with a single
aggregated signature. After the new block is formed, nodes can again merge the transactions from the new
block into the set of all transactions. Once this is done, any spent outputs will appear in both the output list
and the input list. Such outputs can be safely pruned from both lists, and a balance check over the entire
ledger will still be valid. This is clear, as any such transactions will appear in both the top and bottom of the
input/output ratio, and will thus cancel each other out.
Thanks to this pruning, Mimblewimble achieves its goal of maintaining a lightweight ledger, with only
unspent outputs and no inputs. This makes the ledger small, only growing with the UTXO set. And for
observers who want to analyze the ledger, there is no way to link transactions.
However, any observer who sees the advertised transactions (either a peer or a miner) has full visibility
into the money flow, and can easily link transactions, since the inputs and outputs are directly listed with
no obfuscation. And all node operators get a list of the inputs and outputs in every block, which gives them
obfuscated access to the same data (though on a per block rather than per transaction level).
Since spent outputs will be removed, it will no longer be possible to validate a block using normal merkle
tree semantics, since this requires having all leaf nodes to construct the root hash. So every output will need
a separate merkle proof, to tie it to the root hash at time of block creation. Validating a block will require
validating each remaining output’s merkle proof.
Finally, while there are indeed space savings from removing inputs and spent outputs, it is necessary to store
all balance commitments C
T
and their associated Schnorr proofs forever. This set grows monotonically with
each added transaction.
11 MobileCoin
MobileCoin is a new cryptocurrency, whose goals are privacy, convenience, and provable correctness. The proof
of concept implementation uses CryptoNote as a transaction format, with the Stellar Consensus Protocol to
achieve blockchain consensus, rather than a wasteful proof of work. All computation on the nodes uses a secure
enclave, to prevent even node operators from having access to view keys or rings.
For maximal convenience, MobileCoin will be introduced directly into secure messaging apps, using mobile
devices’ secure storage for keys. Since there is no mining, transactions will be confirmed quickly. A user will be
able to open a messaging app and quickly send untraceable money, usually within a matter of seconds.
The main weakness of CryptoNote is that the ring signatures contain the actual inputs used in the trans-
action, though these are obscured by a number of mixins. So anyone with access to the ledger can perform a
number of attacks, linking payments to their eventual destinations. This can be used in the common Overseer
scenario, where collusion between two parties can unmask the owners of coins sent by one and cashed out at
the other. So the FBI could send coins to a suspect address, then wait for those coins to make their way to an
exchange, at which point the identity of the owner of the suspect address can be determined.
To address this, MobileCoin currently drops the inputs from transactions before writing them to the ledger,
indeed before the transactions even leave the secure enclave. This guarantees full privacy from ledger analysis,
at the cost of external verifiability. The consensus quorum becomes the arbiter of correctness, and since the
software is open source and anyone can run a node, this functions to attest to the correctness of the ledger.
12 Acknowledgements
The author would like to thank Toby Segaran for initial help on ring signatures, and Isis Lovecruft for the initial
review.
15