π¨High level architecture
Tech Docupaper ( Part I ): Covers an overview of high level architecture of tanX.
Last updated
Tech Docupaper ( Part I ): Covers an overview of high level architecture of tanX.
Last updated
tanX Key
A public and private key that is generated via a static signature of the userβs ethereum address.
Cairo
Cairo is A STARK-based Turing-complete language for writing provable programs on blockchain.
SHARP
A shared proving service for Cairo programs. It receives proof requests from different applications and outputs proofs to attest to the validity of Cairo executions. The output proof can be shared among multiple proof requests.
STARK VERIFIER
An on-chain component that receives a state update validity proof and verifies that the proof is valid.
tanX has 2 components.
1. Off-Chain
a) Stores wallet based data b) Stores current state of orders & trades c) Creates batches for transactions d) Sends state updates to the L2 scalability engines
2. On-Chain
a) Holds the state commitments and the system assets b) Management of accounts on-chain (All balance instructions arrive as L1 transactions) c) Responsible for enforcing the validity of state transitions
All the transactions including deposits/orders/trades/withdrawals/transfers/stake requests are aggregated and stored on an off-chain state system managed by tanX (tanX at no point has access to the keys of the users). All transactions before being submitted are signed by the user's tanX private key. The transactions are matched via our internal engine and is sent to a Cairo based batching service which sends the batches to SHARP*.
*SHARP on programmed intervals sends the STARK proof to the STARK VERIFIER for verification. The service then sends an on-chain state update transaction to the tanX Contract in L1, which will be accepted only if the verifier finds the proof valid.
tanX has 2 components.
User deposits funds by interacting with the contract: 0x1390f521a79babe99b69b37154d63d431da27a07
Once there are enough confirmation, funds are transferred to the tanX wallet.
Whenever user creates an order, the user signs the order with his tanX Key with all the necessary parameters.
tanX upon finding a suitable matching order, matches the order and the same is then sent to the batching processor.
As explained above the batch processor sends the batches to SHARP which then sends it to the STARK verifier for verification and is finally pushed to L1 as a state update updating the balances of contract wallets.
Withdrawal can be made by a user directly via the smart contract or by sending a request to tanX which allows the user to withdraw the funds with reduced gas fee.