Bitswift Bundler System
Create child chain blocks (a special typeof Ardor transactions), consisting themselves of child chain transactions. Bundlers collect fees from child chain transaction senders, in native child chain token. Bundlers Pay fees to the Ardor forgers, in order to have their child chain block included in an Ardor block. Anyone can participate as a Bitswift bundler, provided they have enough ARDR to pay fees to the Ardor forgers to ensure their bundled transactions are secured by the parent chain (Ardor). Bundlers can decide which transaction to include in the child chain block, and how much in fees, if any, in the native token, to charge for each.
Child chain transactions can be submitted with any desired fee but will not be processed unless there is a bundler which will accept the fee. For instance, a transaction with no fee attached will only be accepted if a bundler is online processing transactions at no costs (bundler rate 0). A bundler processing transactions with no fee would be subsidizing all transaction fees on behalf of the user.
It cost 0.01 Ardor to process a base child chain transaction. The minimum child chain fee is 'base-fee of service (0.01)* bundler-rate. Keep in mind that the base fee for the service is determined by the transaction type, typically transactions which include permanent messages have a higher base fee. If a user makes a simple base transaction the user should first check for the lowest bundler rate. In this example the lowest bundler rate available is 1.5 Bitswift. This means that the user will pay 0.01 * 1.5 = 0.015 Bitswift as a fee to the bundler for processing the transaction. Fees set by bundlers are dynamic, it is up to the bundler to ensure that they are processing child chain transcations with fee rates which ensure profitability.
A detailed fee structure may be found here : [https://www.jelurida.com/sites/default/files/ArdorFees.pdf ]
It is up to the ChildBlock bundler which child transactions to include in a ChildBlock, and this selection can be customized by defining a custom filter in the nxt.bundlingFilter property. The default bundler behavior is to select child transactions ordered by fee per byte, up to the count and payload limits of a child block, creating several child blocks if necessary. Within a child block, child transactions are sorted based on their full hash, but executed based on sorting them after adding the block hash to the child transaction hash,i.e. the execution order of child transactions within a block is deterministic but not predictable and not controllable by the bundler or by the forger. This is in order to prevent front-running of asset exchange and other trading orders.
Will add this section with details and pictures.
Create Ardor chain blocks consisting of Ardor transactions. Collect fees from bundlers and from Ardor transaction senders, all in ARDR. The ability to forge depends on the effective ARDR balance of the forger's account Forgers can decide which transactions to include or exclude from their block. Forgers can control in what order transactions in their block are processed, but the default is based on transaction arrival timestamp. ARDR fees are fixed, determined based on transaction type and parameters, and cannot be changed by the forgers.