Privacy tips for Suterusu Shield user

Heisenberg Lin
Suterusu
Published in
4 min readJan 4, 2021

It’s always better for the protection of your payment privacy to use a new Ethereum account to initiate a new transaction, be it a fund or transfer or burn transaction. The following is an example to demonstrate why this is the case.

Suppose you use your Ethereum Account 1 to authorize a transfer transaction as shown in the following figure.

Account 1 transfer authorization

This is the public transaction everyone can see in the Ethereum network, although the transaction amount is hidden (which is why the value is 0 Ether), one can still see the Ethereum account that initiates this transaction, which is 0xdea137dfc9c07c0d348e4ec382fd5db41e5a7c59.

Transfer transaction launched by Account 1

Now suppose you use the same account to authorize a Burn transaction

Account 1 Burn authorization

One can easily see the same Ethereum account that initiates this transaction, which is 0xdea137dfc9c07c0d348e4ec382fd5db41e5a7c59 from the Ethereum network record. This means everyone is able to link these two transactions together, which is bad for your privacy.

Burn transaction launched by Account 1

However, suppose I switch to a different Ethereum account 2 to authorize this burn transaction.

Account 2 Burn Authorization

The following transaction record shows it is initiated by a totally different Ethereum account 0xb0439f5268e3677a4c384defbfe174b6c9089ed3, and hence we sever the link of these two transactions.

Burn transaction launched by Account 2

Now let’s compare a regular transaction with the Suterusu transfer transaction and see why the Suter transfer protects your privacy. Here is the screenshot of the Suter transfer transaction:

Suter transfer transaction

Here is the screenshot of a regular ETH transfer transaction:

Regular transfer transaction

One can observe that the regular transaction does not provide transaction amount confidentiality since we can see the transferred Value is 0.005 Ether while the Suter transfer does not reveal the transferred value since the Value item is always 0 regardless of the transferred amount.

For the anonymity of the involved parties, the regular transaction reveals the addresses of both sender and receiver. In contrast, the receiver address in the Suter transfer function is always the same Suter-ETH token contract address and hence severs the stream of transactions and protects the privacy of the involved parties. As long as the user uses a different sender address each time, one does not have to worry about connecting the involved parties with a specific transaction.

One might argue the user could just use different Ethereum accounts as the sender and receiver for each new regular transaction in order to reach the same level of privacy protection as our scheme. This argument is problematic because: as we can see from above, the regular transaction is always traceable regardless of how you switch your account since both the sender and receiver addresses and the transaction amount are visible from the blockchain network. In contrast, the receiver address in the Suter transfer function is always the same token contract address and we apply zero-knowledge proof to protect the identities of the involved Suter accounts. Think of the token contract address as an ocean. When you trace the Suter transfer transaction, it would be like tracing the direction of a small stream of water, you cannot predict where the stream goes when it reaches the ocean.

--

--