---
# System prepended metadata

title: Asset Swap Implemantion Update

---

# Asset Swap Implemantion Update

* All code in here - https://github.com/blockrockettech/asset-swap-service


### Current state of play

* TypeScript / postgres DB
* Simple `generate_quote` RPC endpoint
* Auth onto kchannels on app start
* Listen for `transaction` and `channel_info` websocket updates
* Can issue quotes for DAI <-> xDAI swaps
* Maintain a history of kchannel coin balances
* Fulfills quotes with basic validation
* Asset swap a fixed fee % from the trade

### Known unknowns / Improvements

* Signature validation after each transacting stage
    * Payloads are checked but signautres are not
* Error handling in general
    * Mainly around failing to send a transaction, 
    * channel busy flow
* Persistence of transactions,  needed so they can be picked up and ressolved at a later time
    * Separating the acknowledging and sending a transaction into 2 flows, so they can be handled async
    * Introducing of a state machine in some form? 
* Re-authenitcation of sockets 
    * Atm requires app restart to re-auth onto kchannels
    * The auth token (JWT) is generate each time, persist and check expiry
* Fees are fixed e.g. 1%
    * Also expiring of quotes - if the fees can change then I would assume they should expire
* Maybe expose additional JSON RPC methods to get quote history, quote state etc?
    * May help with UX
* Deployment and hosting
* Balance manager
    * Responsible for maintain asset balanaces of the asset swap service
    * Fliping coins on and off chain
* Multiple liquidity providers
    * Atm the asset swap service = 1 big fat bank with all the cash
* deployment / hosting
* Agree json rpc schema/payloads
    * basic schema validation like using actual JSON Schema validation
* Reporting
    * Would be nice to be able to query for asset balances/earnings/state etc

### General code smells

* More test coverage
    * Get quote covered, others are not
* ORM for DB mapping
    * Use a cloud DB ... ?
* Hard coded list of available assets to swap currently DIA <-> xDAI in either direction
* Better logging in general - standardise loggin format and storage
* Docs on how to onboard and use the service




