BACK OFFICE MANUAL Version 1.2 - Benjamin Bommhardt DRAGLET GMBH Bergsonstraße 154 81245 München - Germany
Contents Introduction... 3 Overview of cxadmin... 4 Dashboard... 4 Customer overview... 5 Markets... 9 Currencies... 10 Types of currencies... 10 Configuration... 13 Use cases... 14 Use Case 1: User support request... 14 Step 1: User initiates support request... 14 Step 2: Back office agent sees new support request... 14 Step 3: Fix problem with cxadmin... 15 Step 4: Notify user... 16 Step 5: User sees notification and is happy... 16 Use case 2: Look up customer details... 17 Step 1: Enter Customers area... 17 Step 2: Enter customer data to search... 18 Step 3: Click on the customer to show details... 18 Use case 3: User withdraw request... 19 Step 1: User wants to withdraw money... 20 Step 2: Withdraw request will be shown in cxadmin... 20 Step 3: Back office agent sends wire transfer... 20 Step 4: Back office agent closes withdraw request... 21 Step 5: User receives money on bank account... 21 Use case 4: deep-freeze process... 22 Step 1: Create vault keepers pub keys... 22 Step 2: Create multi signature addresses... 23 Step 3: Information management... 25 Step 4: Insert the multi sign addresses in cxadmin... 26 Use case 5: Defrost request... 28 Page 1 of 49
Step 1: Receiving defrost request notification... 29 Step 2: Chose cold storage to defrost... 29 Step 3: Move funds from cold storage address to hot wallet... 30 Step 4: Verify redeem key... 31 Step 5: Create transaction... 33 Step 6: Verify transaction script... 34 Step 7: Vault keepers sign transaction script... 35 Step 8: Broadcast the signed transaction... 37 Step 9: Recreate paper wallet... 38 Step 10: Insert new paper wallet into cxadmin deepfreeze... 38 Use case 6: User deposit... 39 Step 1: User wires bank transfer... 39 Step 2: Back office agent allocates user payment... 40 Step 3: Back office agent updates the user s account balance... 40 Step 4: User receives new balance... 41 Use case 7: Create new market... 42 Step 1: Market concept... 42 Step 2: Create market... 43 Step 3: Activate market... 45 Use case 8: Edit market... 46 Step 1: Market overview... 46 Step 2: Pause market... 47 Step 3: Edit market... 47 Step 4: Activate market... 47 Appendix... 48 Table of captions... 48 Page 2 of 49
Introduction Welcome to cxadmin, the admin interface of the bleeding-edge cryptocurrency exchange software from draglet. This manual will help you to understand how the back end processes of our exchange software work and what you have to do to effectively run the exchange and make your customers happy. We will first give you an overview of the cxadmin interface and will show you what each section of the admin console looks like and what functions it contains. All processes that need your operative attention will be broadly described as Use cases and you will understand, how the cxadmin responds to user actions and how you can handle the load of requests. cxadmin will help you to comfortably administer your draglet exchange and it allows you to interact and to administer other draglet modules. cxadmin is the only module the legal operator (you) directly interacts with, thus this is the only manual. Caption 1: interdependencies between cxadmin and other draglet modules Page 3 of 49
Overview of cxadmin We will give you an overview of the cxadmin console first. You will see what areas are available and what they contain. In case that you want to look at the processes in particular, you should go to the section Use cases. Dashboard Caption 2: cxadmin dashboard When you log in to the cxadmin console, you will start with the dashboard. It gives you an overview of your operative exchange requests. Hot wallet status: Here you can see how many crypto funds are stored in your hot wallet. On a glance, you are able to see the filling status, also giving you information about the configured thresholds of each cryptocurrency. The threshold attributes are explained in the currencies section. Suspended transfers: If requests show up here, a hot wallet underrun occurred: a user wants to withdraw more Bitcoin (or another Alt coin) than is currently available in the hot wallet. A suspended transfer is the result, telling you that you have to unfreeze Bitcoin from the cold storage and put them in the hot wallet in order to enable the user to withdraw his full amount of funds. The deep Freeze process is described as a separate process. The defrost request process is described as a use case. Withdrawal requests: Here, you will find all requests from exchange users that want to withdraw fiat money (for example: USD, EUR or GBP). Every request will be listed and can be clicked in order to see the details and to mark the request as done. Support requests: In this tab you see all support requests that were entered by users. By clicking on the support request you will see the chat history, containing the last problems the user reported to your support team. You can also mark single or all conversations as done, so it will not be shown as an active support request anymore. Page 4 of 49
Customer overview The customer overview gives you a list of all customers that are registered on your exchange. When clicking on a customer in the list, you will see his customer details. This will help you to see the relevant information about your customers. Caption 3: overview of customers When clicking on the customer menu point, you will get an overview of all registered customers on your exchange. You can either filter by username, or more reliably (because it is the main identifier) by e-mail address. The list will give you an overview of the ID, the username, the email address as well as last login and the creation date of the account. When clicking on a customer you will see his details. Page 5 of 49
Caption 4: customer details, basic data The customer details are sorted in different tabs: Basic data: This reveals the username, preferred language, activated flag (did the user activate his account, did he click on the link in the confirmation email?), deleted flag (did the user delete his account?), newsletter flag (did he accept the opt in to receive newsletters?), Google Authenticator seed (did the user add a Google Authenticator flag) and secret flag (which is important for our encrypted user access). Page 6 of 49
Caption 5: customer details, accounts Accounts: Here you have an overview of all fund accounts that the user account has initiated. You will see each currency as well as the user s current balance. You can filter for particular accounts and see a history of the particular currency accounts. The transaction history lists every deposit, withdrawal, trade or trading fee. You will also see if a change on the account has been performed by an administrator of the cxadmin console. Caption 6: customer details, fiat crediting Page 7 of 49
Fiat Crediting: The fiat crediting tab enables your back office administrators to increase or decrease (credit or debit) the account balance of fiat currencies. By clicking the fiat crediting tab of a user, you can select the currency and insert a value that should be either added to or subtracted from the user account. Also, a note can be added that will be shown in the user s account history. Caption 7: Fiat withdrawal request of a user Fiat withdrawals: Here you will see all open fiat withdrawal requests. When open fiat withdrawal requests exist, you can click on them and set them as done as soon as you manually wired the money transfer to the user s bank account. Caption 8: Support history of a user Support: This tab shows the open support requests. You also can see a full history of the chat between the support employee and the particular user. Furthermore, all messages can be marked as handled and a flag can be set that will send new support chat entries to the respective user by email. Page 8 of 49
Markets You can administer the available trading pairs by using the market section in cxadmin. Here, you can pause or resume markets as well as edit their settings such as minimum nominal or the trading fee. You may also create new markets (trading pairs like BTC/USD is a market) by using the create menu and entering the needed details. Caption 9: Overview of markets Page 9 of 49
Currencies This gives you an overview of all currencies that are implemented in your exchange. Caption 10: Overview of currencies Every currency has a list of attributes that can be edited and effect the behavior of this currency: Currency ID: The Identifier of the currency. For example: BTC Currency Name: The name of the currency: For example: Bitcoin Type: Can be either Fiat or crypto currencies. Please see below for the description of each currency type. Actions edit: This allows you to edit each currency. Depending on the type, the currency has different edit options. Types of currencies There are different types of currencies that have different attributes: Crypto: A crypto currency like Bitcoin or Litecoin and needs an additional set of attributes that can be chosen for each crypto currency: Wanted confirmations: Amount of confirmations by the network that are needed before the user account balance will be updated. Minimum Threshold: Defines the minimum balance that needs to be held in the hot wallet at any time. If the hot wallet contains less crypto than defined by minimum threshold (and minimum tolerance), a hot wallet underrun occurs, prompting the exchange operator to free funds so the minimum threshold can be restored to the hot wallet. Minimum Tolerance: Defines the percentage, which the hot wallet balance may fall below the minimum threshold, before action must be taken by the vault master. When the current filling status is between the minimum thresholds but in the defined tolerance, the hot wallet status is low wallet. Maximum Threshold: Defines the maximum amount of crypto funds that may be stored in the hot wallet. When the system swaps away funds from the hot wallet to Page 10 of 49
deep freeze storage, it will do so until the hot wallet balance is at the maximum threshold. Maximum Tolerance: Defines the percentage, which the hot wallet balance may reach above the maximum threshold, before the system will swap out to deep freeze storage. Setting the Maximum threshold to 10 and giving 10% maximum tolerance means that if 11 crypto tokens are in the hot wallet, 1 crypto token will be swapped to deep freeze, so the amount of crypto tokens stored in the hot wallet equates the maximum tolerance of 10. Deep freeze transfer fee account: Moving crypto currencies from hot to cold wallet (and vice versa) requires transaction fees for the network. This account will provide the funds for the transaction fees and will be subtracted by the amount of missing funds from the defrost process. Caption 11: Overview of crypto currency attributes Fiat: This is currency which derives its value from government regulation or law such as EUR or USD and has fewer attributes that can be edited: Deposit text: Here you can simply paste the deposit text that will be shown for users that want to deposit this particular fiat currency on your exchange banking account. You can have different deposit texts for each fiat currency and also put in tokens that will be processed before the text is displayed to the users. This gives you the opportunity to allocate the payment of the user by using specifically generated reference codes. Examples are {{user.id}} or {{user.email}}, which will show the username or the user email address. Page 11 of 49
Caption 12: Banking deposit text The deposit text will then be shown in the user interface as the following: Caption 13: Deposit text with tokens Page 12 of 49
Configuration The configuration panel lets you edit basic settings for your exchange. Caption 14: cxadmin configuration mailfromemail: System emails will be sent from this email address. This includes registration confirmation emails and emails for password reset. This does NOT include the sending of support emails! mailfromname: This is the name for the sender of the system notifications such as register confirmation or password reset emails. mailto: This attribute defines the email address for receiving support requests. mailtotech: This will be the receiving address for emails that are sent from the system for technical notification purposes. Only draglet will receive technical notification emails that inform about the technical performance of your exchange. mailtovaultmaster: Here you can put in the email address of the vault master. He will receive the notification emails given the case that one of your crypto fund hot wallets has a change in status. For example, if a user wants to withdraw more Bitcoin than are available in the hot wallet, you will receive a message that tells you that the Bitcoin transfer has been suspended and you need to clear wallets before the user can receive his withdrawal. Page 13 of 49
Use cases Use Case 1: User support request This use case handles the support handling of the draglet crypto exchange. Users use the support tab in the draglet exchange software to create a support request by simply typing into a chat form. The back end operator will see a new support request in the dashboard and can click on it to respond to the user support request. The exchange user will then see the reply in the same support chat. Step 1: User initiates support request The user is logged in on your exchange site and has a problem that needs the attention of one of your back office agents. He initiates the support request by going to the support tab and by entering a chat message. Hopefully, he states the problem in a clear manner so the support employee is able to allocate the problem and respond Caption 15: Support request flow adequately. He simply enters the text in the support chat and then clicks on Send and the message is stored in the exchange system. Step 2: Back office agent sees new support request After the user submitted the support message, the back office agent can see the new support request on his dashboard under support requests. When he clicks on the username he will see the support request. Caption 16: Dashboard with new support request Page 14 of 49
Caption 17: User submits support message Step 3: Fix problem with cxadmin After your back end operator clicked on the username, he is able to see the support history that contains the new support request. It might contain some relevant information that is connected to the user s problem. Now your back office agent is able to see the support context and act adequately. He can browse through the tabs of the customer to effectively help the user and to process the support request. Caption 18: New support requests available After the problem is fixed, the next step is to notify the user by entering the response text in the send message field. Page 15 of 49
Caption 19: Answering a support request Step 4: Notify user Mark all messages as handled will remove the support request from the stack that is shown on the dashboard. By clicking the Send mail to user checkbox, the respective user will also receive an email with the response text in it. After clicking on send, you will receive a notification that your support response was accepted. Step 5: User sees notification and is happy The user can now see the response of your support team in the support tab. Caption 20: User can see answer of support team Page 16 of 49
Use case 2: Look up customer details Master data of users can be looked up by accessing the cxadmin Customers area. After clicking on the customer area, you will see a search filter for users. You may search either for the username or the email address of the user. In the results list you will see the username, email address, last login and registration date. When clicking on the user, you can see the details that are broadly described in customer overview. Step 1: Enter Customers area Go to the cxadmin interface and click on Customers. You now have an overview of all current customers that are registered on your exchange. You may see the ID, email address as well as last login and the date when the account was registered. You may also sort the user list according to one of these attributes. If you are searching for a user in particular, you can use the search field for either the user name or the email address. You may also combine name and email address for more exact search results. Caption 21: Customers area Page 17 of 49
Step 2: Enter customer data to search Now you have to enter the search data for the user you are looking for. When you entered the details, you can now click on the Search button. Caption 22: Entering customer search details After the search was completed, you will see the results below: Caption 23: Result of customer search You can now click on the customer to show the details. Step 3: Click on the customer to show details After clicking the name of the customer, you will be able to see numerous details which are described in the overview section. Page 18 of 49
Use case 3: User withdraw request Caption 24: Flow of user withdraw request When a user wants to withdraw fiat money, he needs to go to the exchange account and click on Withdraw <fiat currency>. He then can enter an amount of currency that he wants to withdraw so that it will be wired to his banking account. After he submitted the withdrawal request, it will be shown on the cxadmin dashboard of your exchange. Your back office agent then is supposed to click on the request and verify it. After verification, the back office agent can then wire the money to the banking account of the user. The user will receive his money in the banking account and is happy. Page 19 of 49
Step 1: User wants to withdraw money The first step of a withdraw request is a customer that wants to withdraw fiat money from his exchange account. Please notice that the user has to be verified first (go through the KYC process) before he can withdraw funds in case your exchange has the standard configuration regarding KYC. He goes to account and clicks on withdraw. He then has to enter the amount that he wishes to withdraw. After he clicks on withdraw, the withdraw request will appear on the cxdashboard. Caption 25: Customer wants to withdraw money Step 2: Withdraw request will be shown in cxadmin The user has submitted the withdraw request and It will now be shown on cxadmin: Caption 26: Dashboard showing open requests After clicking on the withdraw request, you will see the user s withdraw request. Caption 27: open withdraw requests Step 3: Back office agent sends wire transfer The back office agent can see the amount of the withdraw request under Fiat withdrawals. He is supposed to then manually wire the sum to the user s account. He is able to see the bank information of the customer under Base data. It is advisable to check each wire with the Page 20 of 49
dual control procedure, meaning that one back office agent has to start the wire and the other one has to check/verify it in order to avoid errors. Step 4: Back office agent closes withdraw request After the wire has been sent, the back office agent can close the withdraw request. He can do so by clicking on set done. After he marked the withdraw request as done, it vanishes and will no longer be shown in the dashboard. Step 5: User receives money on bank account The user now receives the money on his bank account and is happy. Page 21 of 49
Use case 4: deep-freeze process The deep-freeze process works not only for Bitcoin but for any alternative crypto currencies. Not every alternative crypto currency supports multi signature, so deep-freeze may require operation without multisign. The deep-freeze process will check if the balance stored in the hot wallet exceeds a certain threshold. If so, it will automatically swap Bitcoin (or any other Alt coin) from the hot wallet to the multisign paper wallets. Before being able to use the deep-freeze feature, you will have to create addresses or paper wallets. Depending on the size of your exchange staff, you can either appoint 3 or fewer vault keepers. Vault keepers are responsible for the management of the private keys which are needed for unfreezing the coins from the cold storage. A vault admin is needed in every case; he coordinates the unfreezing of the coins by mailing the public keys, multi signature addresses as well as redeem scripts for the unfreeze process. When you have 3 vault keepers, you will create multi signature addresses with a 2 out of 3 procedure. This means that you need two out of three vault keepers to initiate the unfreezing of the coins. After each vault keeper created 20 paper wallets, they will be used to generate multi signature addresses that can be used for storage and unfreeze. Step 1: Create vault keepers pub keys Your vault keepers (the vault admin being one of them) create 20 paper wallets each. We only need the pub keys (uncompressed public keys from the address) so we can generate multi signature addresses. The paper wallets can be generated on https://coinb.in/multisig/ or https://yourexchange/multisig: Caption 28: Create new Bitcoin keys Click on New and then on Bitcoin Keys. Then simply click on Generate Page 22 of 49
Caption 29: Generated Bitcoin keys The pubkey will be sent to the vault admin so that he can create the multi signature addresses. The private keys need to be printed on a separate, numbered paper each. After the 20 pub keys from each vault keeper were generated and sent to the vault admin, the private keys are stored by each vault keeper. The vault admin can now use the pub keys from the vault keepers to generate the multi signature addresses. Step 2: Create multi signature addresses Go to https://coinb.in/multisig/ and click on New and then Multi Signature Address. Now you can start creating your first multi signature address. This is the process for three vault keepers: You should now have the list of the 20 pub keys of each vault keeper as email. Put in the first pubkey from the first vault keeper into the first field, then put the first pubkey from the second vault keeper in the second field and finally put the first pubkey from your third vault keeper in the third field. Leave the amount of signatures needed required to release the coins at amount 2, because we want a 2 out of 3 authorization where we need two out of the three vault keepers in order to unfreeze the funds. Page 23 of 49
Caption 30: create new multi sign address Click on Submit when you are ready and you will receive your multi signature address as well as the redeem script. Caption 31: Generated Bitcoin multi signature address Address: This is the address of the first address you generated from the pub keys of your vault keepers. The draglet exchange software will automatically send funds to this multi signature address, where your vault keepers will be able to redeem the coins to fill the hot wallet. Page 24 of 49
Redeem Script: Send this script to all vault keepers. They need to save this for the time the first defrost action needs to be taken. Commence with this address generation until you used all 20 different pub keys from each vault keeper to create those 20 multi signature addresses as well as redeem codes. The next step is to insert the addresses into cxadmin. Step 3: Information management Now it is important that every vault keeper saves the 20 multi signature addresses together with the public keys of every vault keeper, his own private keys and the redeem scripts. In the case that any of the vault keeper loses his keys (this might occur in the event of a fire, theft or inattention) he MUST immediately inform the others. To avoid permanent loss of funds, all funds should be moved to a newly created storage using the remaining two private keys. Page 25 of 49
Step 4: Insert the multi sign addresses in cxadmin Go to cxadmin console and click on Create under the Deep Freeze nesting. Insert the newly created multi sign address, select the appropriate currency and define a target balance. The target balance defines the maximum amount of funds that will be moved to this address by the system. Addresses with smaller target balances will be filled first. You may change the target balance for every address later. Caption 32: Deepfreeze area Caption 33: Insert new deep-freeze address Your multi signature address will now be shown in the overview of deep-freeze addresses: Page 26 of 49
Caption 34: Overview of deep-freeze addresses Your deep-freeze addresses will now be automatically filled with Bitcoins (maximum of 50) that exceed the maximum size of your hot wallet. Page 27 of 49
Use case 5: Defrost request It might occur that a user from your exchange wants to withdraw more Bitcoin that are in your current hot wallet. This will trigger a defrost request that will pop up in the dashboard of your cxadmin interface. This tells you that you need to unfreeze Bitcoin from your cold storage to be able to process the user withdrawal. Besides the created defrost request, you will also receive an email to vault-admin@exchange-domain.com that contains the size of the withdrawal that cannot be handled and the current size of the hot wallet. You will also receive an email notification when another user just transferred funds to your hot wallet or you cleared a paper wallet to increase the size of the hot wallet so the user withdraw can now be successfully processed. If there are still not enough Bitcoins available on the hot wallet, your vault admin now has to verify the redeem code from the multi sign address he wants to clear and create a transaction that clears all funds from the paper wallet and has to be signed by each vault admin. After the transaction has been Caption 35: Defrost request flow signed by all vault admins, the transaction can be broadcasted into the network. The paper wallet has now been cleared and a new paper wallet has to be created in order to sustain the amount of 20 paper wallets. The process is described in Use case 4: deep freeze processes. Page 28 of 49
Step 1: Receiving defrost request notification You will either receive an email to vault-admin@exchange-domain.org (you can edit the email recipient address under configuration ) or see that there are suspended transfers on the dashboard of your admin interface. Caption 36: Defrost request in dashboard You now have to decide which paper wallets you have to clear in order to be able to serve the user withdrawal. The amount of crypto funds that need to be cleared in order to be able to serve the user withdrawal is displayed in the email notification that you will receive when a hot wallet underrun occurs. After deciding which paper wallets to clear, you initiate the process of clearing the multi sign paper wallets (or standard cold storages). Step 2: Chose cold storage to defrost Go to Deep Freeze in the admin interface and have a look at the overview of all cold storage addressed that are used by Deep Freeze. Choose the cold storage address that you want to clear and click on the defrost icon. Caption 37: Overview of Deep-freeze addresses You will now see a summary of the deep freeze address you are about to defrost and you will receive a hot wallet address that shows you where the cleared funds need to be transferred to. Page 29 of 49
Caption 38: Summary of defrost request If you are sure that this is the right one, click on Start defrost process. You will now see that the Deep-freeze address has been highlighted as it is in the process of being defrosted. Caption 39: Highlighted deep-freeze address Step 3: Move funds from cold storage address to hot wallet If you are using not a multi signature paper wallet for the address that you are about to unfreeze, simply send the funds from the cold storage to the hot wallet ID provided in Step 2. Please notice that the defrosting process requires you to make only one transaction to the displayed hot wallet ID. If the amount of crypto funds contained in the defrost transaction is smaller than the original amount of funds stored in the deep freeze address, the difference will be subtracted from the deep freeze account that is supposed to procure the mining fees for the defrosting of the deep freeze address. Page 30 of 49
The process of clearing a multi signature paper storage is a bit more complex and can be seen in this chart: Caption 40: Flow of multi signature transaction The vault admin uses the redeem script to generate a transaction script which contains the information where the funds from the cold storage should be sent to and how much miner fee is needed to ensure a swift processing by the Bitcoin network. He then signs the transaction script with his own private key and then gives the transaction script to another vault keeper. The vault keeper also signs this transaction script with his own private key. With every signature, the transaction script gets bigger. The vault keeper provides the transaction script to the vault admin, who can now broadcast the transaction (which has been signed by two out of three private key holders) to the bitcoin network. Step 4: Verify redeem key Now we need to verify the redeem key to be sure that we are about to clear the right paper wallet. Go to exchangeurl.com/multisign and click on verify. Caption 41: Verify redeem script navigation Enter the redeem script of the first paper wallet to and click on submit. Page 31 of 49
You will see a confirmation of the multi signature address as well as the pub keys that will have to provide the signature so you can successfully sign the transaction to clear the paper wallet. Caption 42: Verification of redeem script Verifying helps you to ensure that you are unfreezing the correct paper wallet. It should be done after creating transactions or after you signed the transaction with one of the private keys. Page 32 of 49
Step 5: Create transaction After you verified the redeem script you can now create a new transaction from the paper wallet. Go to yourexchangeurl.com/multisign on New -> Transaction. Caption 43: Create new multi signature transaction After you filled in the redeem script, you will see the current balance of this paper wallet. You may now insert an address and wait for the balance to show up. Caption 44: Verification of redeem script After the balance has been updated, you may insert addresses where the coins will be sent to after the paper wallet has been-cleared. Do not forget to include a miner (transaction) fee. Caption 45: Creating a new multi sig transaction Page 33 of 49
Insert the address where to send the cold storage coins, insert the amount (minus the transaction fee) and click on-submit. Caption 46: Generated multi signature transaction script You will receive your transaction script that now has to be signed by 2 out of 3 vault keepers. Step 6: Verify transaction script Go to Verify. Enter your transaction code that you have just generated and click on- submit. You will then see the transaction details and amount of signatures in this script. Page 34 of 49
Caption 47: Verification of transaction script Step 7: Vault keepers sign transaction script As you can see in the verification of the transaction script, it has zero signatures. You will have to sign the transaction with 2 out of 3 signatures so you can broadcast the transaction to the network and clear the paper wallet. Go to Sign. Caption 48: Navigation to sign a transaction Page 35 of 49
Now enter the transaction script and your private key (as you are the vault admin, you are supposed to have one of the three keys for the cold storage wallet) and click on submit to sign the transaction script with your private key. Caption 49: Sign Transaction interface After you submitted the signature, you will receive a transaction script that contains your signature. Caption 50: Signed transaction script You can also verify the transaction script that contains the signature from your private key under verify. Just enter the transaction script, click submit again and you will see that your transaction already contains one of the needed two signatures: Page 36 of 49
Caption 51: Verification of signature Now, send the new transaction script to another vault keeper so he can sign it. After he signed it, he sends you the transaction script that contains both your signatures. You can verify the signed transaction script to see if all needed signatures are available. Caption 52: Verification of second signature Step 8: Broadcast the signed transaction The next step is to broadcast the transaction script that contains your signature and the signature of another vault keeper. Go to Broadcast and enter the transaction script: Caption 53: Navigation to broadcast transaction After you entered the script and clicked on submit, you will receive a txid the transaction Id is the confirmation that the coin network accepted your transaction. You can use it to search for the transaction on blockchain.info. Caption 54: Accepted, broadcasted multi signature transaction Page 37 of 49
Just go to blockchain.info and type into the search field the transaction Id provided. You will see that the transaction is on the way: Caption 55: Transaction is already on the Bitcoin network Step 9: Recreate paper wallet Now it is important to recreate these paper wallet(s) because we need to have 20 paper wallets at all times. You can use the process description of Use case 4: deep freeze process to create new paper wallets so the amount of cold storages is always 20. Step 10: Insert new paper wallet into cxadmin deepfreeze The last step is to put the recreated paper wallets into the cxadmin deep freeze console. This step is described in the Use case: Insert into cxadmin Page 38 of 49
Use case 6: User deposit Caption 56: User deposit flow Step 1: User wires bank transfer The first step is that the user that wants to trade on your platform and needs to fund his account first. He wires a transfer to the account that will be shown by the exchange site. Page 39 of 49
Caption 57: Popup showing the user the instructions for wire transfer After the user has sent the wire, the back office agent then has to allocate the payment. Step 2: Back office agent allocates user payment The back office agent now has to look up the wires that arrived on the bank account and has to allocate the payment to the user. The user has included a reference when making the transfer, this reference will be used for the allocation. When the allocation is confirmed, the back office will update the user s account balance in the next step. Step 3: Back office agent updates the user s account balance Now, the back office agent has to look for the customer that wired the transaction. He can use the Use case that describes how to search for a user. After he found the user, he can click on him and click on Fiat crediting. Caption 58: Navigation in cxadmin to crediting He then choses the type of currency, enters the amount of money that has been wired to the account (minus any wire fees that will be applied as a policy from the exchange) and clicks on Credit Money. Page 40 of 49
Caption 59: Crediting of user Account After the back office agent clicked on credit money, the user balance will get updated and you will get a short notification: Caption 60: notification that crediting was successful Step 4: User receives new balance The user now has an updated account balance and will be able to execute orders. He receives a notification that informs about the account credit. Caption 61: Credit notification Due to the optimistic fund locking, the user is able to create orders even before he did the first wiring. The order will not be shown in the order book. As once as balance gets updated and he has funds, the orders will then be shown in the order book and can be executed. Page 41 of 49
Use case 7: Create new market Creating a new market on your exchange is easy. Prerequisite for this is that the currencies that will be traded on your new market were both added to your exchange by the draglet team. Please inform us if you want a new currency added into your exchange system. Caption 62: Creating a new market Step 1: Market concept First, you need to prepare a small concept of your market. The cryptocurrency trading pair that you are aiming for should have a decent activity so you will most likely generate a good amount of traffic on your exchange. Comparing the trading activity on other exchanges is a good idea. Also, the understanding of the maker taker fee as well as nominal and limit structure is important because it will influence the way people are trading on your exchange. The Maker is the person that creates orders that are limited and will not get executed immediately and stay in the order book. Hence they create the market, they are market makers. Page 42 of 49
The Taker is the person that creates unlimited orders or limited orders that automatically get matched. He is taking orders from the market and also is called the market taker. Because he decreases the liquidity on your exchange, it might be a good idea to increase the taker fee. The order book is the biggest asset of every exchange. The more orders are in the order book, the higher the liquidity of the exchange is. Our fee structure in cxadmin allows you to stimulate your market by setting higher taker fees and lower maker fees. This will incentivize people to rather create market making orders than to create market taking orders. As a result your order book will grow and the liquidity of your exchange will increase. Step 2: Create market We decide to create a new BTC LTC market that has the usual minimum nominal and a fee structure that incentivizes market markers. We enter the cxadmin console and click on Markets > create. We are now able to fill in a lot of market attributes which will now be explained: Caption 63: Create market menu The first two attributes that you need to enter defines the trading pair of the new market you are about to create. If you chose BTC as nominal currency and LTC as limit currency, you will create a BTC/LTC market where BTC is the leading currency. This means that your users will be able to buy Litecoin with Bitcoin as leading currency. We will create a BTC/LTC market in this example, therefor we pick BTC as nominal currency and LTC as limit currency. Page 43 of 49
Caption 64: Nominal and limit currencies when creating a market After defining the trading pair, we need to enter the minimum nominal and the minimum limit. The minimum nominal defines, what the lowest acceptable input for the creating of orders is. In this example, setting the minimum nominal to 0.01 would result that buy orders for Litecoin need to be at least 0.01 BTC so the system accepts the order. The minimum limit defines what the minimum amount of Litecoin has to be so the system accepts the order. Setting it to 0.1 would mean that users cannot create sell orders that contain fewer than 0.1 Litecoin. We will set the minimum nominal to 0.01 and the minimum limit to 0.1. Buy orders have to be at least 0.01 BTC while sell orders have to be at least 0.1 LTC. Caption 65: Minimum nominal and limit of a market Now we need to adjust the fee structure of your exchange. We decided to incentivize the active market makers and will set lower fees for market making. The following settings have the following results: Caption 66: Maker taker fee structure Page 44 of 49
Maker fee (nominal): This is the maker fee for the nominal side (BTC). Users that create buy orders (that will not get executed immediately, hence stay in the order book) will only pay a 0.1% transaction fee for the execution of the trade. Maker fee (limit): This is the maker fee for the limit side (LTC). Users that create sell orders (that also stay in the order book) will only pay a 0.1% transaction fee. Taker fee (nominal): This is the taker fee for the nominal side. Users that create buy orders that get instantly executed will pay a 0.4% transaction fee because they decrease the size of your order book. Taker fee (limit): This is the taker fee for the limit side. Users that create sell orders that get immediately executed will pay a 0.4% transaction fee because they decrease the size of your order book. After adjusting all attributes, we need to decide if the market should be activated immediately. If yes, the flag can stay. We click on create market to create the market after all. Caption 67: Create market button You will see a success notice that the market has been created. Step 3: Activate market After you created the market (and did not activate it yet), you need to activate it. Do so by going on markets: Caption 68: Markets overview Click on the play icon to start your market. You will receive a notification if it has been successfully activated. Caption 69: Confirmation of created market Page 45 of 49
Use case 8: Edit market If you want to edit a market, you need first to pause it, then edit the settings and test if those were successful. If your tests were successful, you can then activate the market again. Step 1: Market overview First, go to the market overview in cxadmin. You need to find the market that you want to edit first. Caption 70: Overview of markets Page 46 of 49
Step 2: Pause market First, you need to pause the market you want to edit. Finding your market should be easy, either look out for him in the market overview or use the search interface to find him. You can now see if the market is running or is inactive. If the market is active, press on the square to pause it. Caption 71: Activated market After clicking on the square, you will receive a message if the market has been successfully deactivated. You will also see this in the overview of the market. Caption 72: Market deactivated notice Caption 73: Deactivated market Step 3: Edit market After you paused the market, you can now edit the settings. Click on the edit symbol to edit the settings of a market. All settings are described in the use case to create a market. Step 4: Activate market After you edited all settings you should briefly verify them in a short test. If everything went well, you can now activate the market again. To do this, simply go to the market overview and click on the play button on the market. Caption 74: Click on play to activate market again Page 47 of 49
Appendix Table of captions Caption 1: interdependencies between cxadmin and other draglet modules... 3 Caption 2: cxadmin dashboard... 4 Caption 3: overview of customers... 5 Caption 4: customer details, basic data... 6 Caption 5: customer details, accounts... 7 Caption 6: customer details, fiat crediting... 7 Caption 7: Fiat withdrawal request of a user... 8 Caption 8: Support history of a user... 8 Caption 9: Overview of markets... 9 Caption 10: Overview of currencies... 10 Caption 11: Overview of crypto currency attributes... 11 Caption 12: Banking deposit text... 12 Caption 13: Deposit text with tokens... 12 Caption 14: cxadmin configuration... 13 Caption 15: Support request flow... 14 Caption 16: Dashboard with new support request... 14 Caption 17: User submits support message... 15 Caption 18: New support requests available... 15 Caption 19: Answering a support request... 16 Caption 20: User can see answer of support team... 16 Caption 21: Customers area... 17 Caption 22: Entering customer search details... 18 Caption 23: Result of customer search... 18 Caption 24: Flow of user withdraw request... 19 Caption 25: Customer wants to withdraw money... 20 Caption 26: Dashboard showing open requests... 20 Caption 27: open withdraw requests... 20 Caption 28: Create new Bitcoin keys... 22 Caption 29: Generated Bitcoin keys... 23 Caption 30: create new multi sign address... 24 Caption 31: Generated Bitcoin multi signature address... 24 Caption 32: Deepfreeze area... 26 Caption 33: Insert new deep-freeze address... 26 Caption 34: Overview of deep-freeze addresses... 27 Caption 35: Defrost request flow... 28 Caption 36: Defrost request in dashboard... 29 Caption 37: Overview of Deep-freeze addresses... 29 Caption 38: Summary of defrost request... 30 Caption 39: Highlighted deep-freeze address... 30 Caption 40: Flow of multi signature transaction... 31 Page 48 of 49
Caption 41: Verify redeem script navigation... 31 Caption 42: Verification of redeem script... 32 Caption 43: Create new multi signature transaction... 33 Caption 44: Verification of redeem script... 33 Caption 45: Creating a new multi sig transaction... 33 Caption 46: Generated multi signature transaction script... 34 Caption 47: Verification of transaction script... 35 Caption 48: Navigation to sign a transaction... 35 Caption 49: Sign Transaction interface... 36 Caption 50: Signed transaction script... 36 Caption 51: Verification of signature... 37 Caption 52: Verification of second signature... 37 Caption 53: Navigation to broadcast transaction... 37 Caption 54: Accepted, broadcasted multi signature transaction... 37 Caption 55: Transaction is already on the Bitcoin network... 38 Caption 56: User deposit flow... 39 Caption 57: Popup showing the user the instructions for wire transfer... 40 Caption 58: Navigation in cxadmin to crediting... 40 Caption 59: Crediting of user Account... 41 Caption 60: notification that crediting was successful... 41 Caption 61: Credit notification... 41 Caption 62: Creating a new market... 42 Caption 63: Create market menu... 43 Caption 64: Nominal and limit currencies when creating a market... 44 Caption 65: Minimum nominal and limit of a market... 44 Caption 66: Maker taker fee structure... 44 Caption 67: Create market button... 45 Caption 68: Markets overview... 45 Caption 69: Confirmation of created market... 45 Caption 70: Overview of markets... 46 Caption 71: Activated market... 47 Caption 72: Market deactivated notice... 47 Caption 73: Deactivated market... 47 Caption 74: Click on play to activate market again... 47 Page 49 of 49