The fund contract allows the sender to create a Suter account and then create a transaction to run the Fund smart contract to convert ETH or ERC-20 token to its anonymized counterpart in the Suterusu protocol such as s-ETH or s-ERC-20 token, which would be homomorphically added to the newly created Suter account. The original ETH or ERC-20 token will be stored in the Fund contract. The user can access this contract by running CreateAddress and CreateFundTx algorithms on the client-side. The CreateFundTx algorithm takes the newly created Suter account pk and the amount of the native token amt as input. After invoking the Fund contract, amt amounts of native tokens are converted into the equivalent amount of their Suter-counterpart and transferred to the Suter account pk. Once the native token is converted to s-ETH and s-ERC-20 token, the users hold the ticket to enter the dark ballroom of the Suterusu ecosystem.
The transfer contract protects the payment privacy of the s-ETH or s-ERC-20 token by running the ZK-ConSNARK scheme as the sub-routine. It will guarantee the anonymity of the transaction sender and receiver by hiding their identities among other users of the system while protecting the transferred amount through encryption. This contract is the key technology to protect the payment privacy of any smart contract platform that integrates the Suterusu protocol. The sender can initiate this contract by running the CreateTransferTx algorithm on the client-side. This algorithm takes the secret key of the sender’s Suter account and the public keys of both the sender and anonymity set and transaction amount amt to generate the zero-knowledge proof, which would serve as the input to the Transfer contract. After running the Transfer contract, the sender’s balance will be reduced by amt while the receiver’s balance will be increased by amt.
The withdraw contract allows the users to convert their s-ETH or s-ERC-20 token into the native ETH or ERC-20 token at any time the users choose to. The API provided to the user to run this algorithm is CreateBurnTx algorithm, which takes the secret key of the respective Suter account as the input.