Bytecoin team wanted to give a varying level of access to CryptoNote transactions core with two API interfaces:
- IWallet operates on the business logics level. It is useful if you simply need to receive and send transactions, without going into CryptoNote protocol details. Should you require to transfer money with IWallet, you just need to indicate the receiver's address, the amount, and the mixing level. IWallet will do the hard work for you, as it will select the inputs, and then create, validate, sign, and broadcast the transaction.
- ITransaction is a low-level interface that gives full access to CryptoNote transactions engine. It is designed for those applications that require strict control of transaction creation process. For instance, ITransaction allows you to select specific inputs, and has separate methods for signing and broadcasting a transaction. It also provides access to multisig functionality.
Both API interfaces are capable of doing exactly the same, but with varying level of detalization. That is why IWallet belongs to Bytecoin high-level API, while ITransaction is low-level.
Is it possible to switch between IWallet and ITransactions? Will it give any advantages to the user?