You can organize and manage your cryptocurrency funds as suits your business needs. You may choose to use one shared wallet for all users of your system, or assign one or more wallets to each user.
A wallet can contain one single address, a group of addresses, a deterministically-generated sequences of addresses (HD Wallet), or a combination of these. For example, if you want to switch from accepting payments on a single address to using unique address to receive each payment, you can add a pre-existing address to a wallet, then add deterministically-generated sequences of addresses to the same wallet – and handle funds for both pre-existing and newly generated addresses together.
Addresses in wallets can all be controlled by one key, or a group of keys in multi-signature configurations. Wallets can contain addresses controlled by different keys: you may choose to have several ‘compartments’ with different keys in one wallet, instead of several independent wallets. When spending from such wallet, funds in all compartments are used together as a whole.
You can configure the priority of the 'compartments' for spending funds from them: thus, one ‘compartment’ of a wallet may have less strict limits, and be used primarily, but when it does not have enough funds to satisfy a withdrawal order, another ‘compartment’ will be used, which may have a different multisignature configuration and different spending limits.
The address sequence priority feature can also be used when you want to seamlessly move funds from one group of addresses to another, for example, when you have old and new sets of Bitcoin or Litecoin deposit addresses (after upgradinge to newer technology, like segwit). Old deposit addresses still work, but with every transaction funds on old deposit addresses are used first, and change output from the transaction is sent to new addresses. Thus you do not need to do a periodic ‘sweep’ to move the funds around, saving you time and network fee.
Deterministically-generated address sequences, per Bitcoin standard BIP43, can be represented as trees that reflect the hierarchy of the entities that use these addresses. For one set of keys at the root of the hierarchy there might be address sets for company head office, for branch offices, for employees, etc. With Simplexum it is possible to manage funds on these address sets hierarchically: get a balance for the whole company, or send funds of one branch, including funds assigned to all sub-branches and employees of that branch and sub-branches, to another branch, etc.
Different policies can be set on each withdraw order to handle situations where there are not enough funds to withdraw: cancel an order, pause withdrawals from the wallet until enough funds to satisfy an order are added to the wallet or pause just this order, but allow orders that can be satisfied with available funds to be processed.
You can select who will pay the network fee for withdraw order – You or the recipient.
Withdraw orders may be processed as soon as they are created, or processing may be scheduled at certain times or time intervals. Processing runs can also be started by operator command at any time.
Withdraw orders can be placed in different processing groups, and each group can have its own processing schedule or policy.
In Bitcoin-type blockchain networks, when you need to send a certain amount, you may have a set of “coins” (Unspent Transaction Outputs, UTXO) that you can use to create a transaction with the required amount. The more coins you use, the bigger the resulting transaction will be, resulting in highter fees that will need to be paid to miners for the transaction to be processed and included in the blockchain.
It is very important for large-scale payment operations to keep their UTXO set optimized. Simplexum has built-in mechanisms to keep the UTXO set in good shape. Network fees in blockchain networks usually fluctuate. When network fees are low, the data size of transactions created grow larger because smaller coins are preferred, leaving larger coins for later use. When the network fee is high, minimal-size transactions are created, using larger coins. This lowers network fees spent over time, automatically. You can tune the algorithm manually to prefer big or small transaction size, when needed.
A bunch of orders that have the same wallet as source, and are selected for processing in the same processing cycle, can be gathered into one blockchain transaction (“payment batching”). Such a transaction will have many destination addresses: one per order. This batched transaction has a smaller data size than the sum of the individual transactions, and will have only one 'change' output. Thus you have to pay less in network fees and have a less fragmented coin set.
Even if you just received a lot of small coins, you won’t need to do any ‘sweeping’ of them into larger coins to be able to create large payments, as is often required in other payment solutions for Bitcoin-type cryptocurrencies. You just create a withdraw order for therequired amount, and if there is no coin subset that can be used to fit that amount into a single transaction (due to transaction size limitations in blockchain), Simplexum can automatically create several transactions that will send this payment in multiple pieces.