- process and stores neuron bandwidth in the network
- dynamically adjust bandwidth price to network load
- neurons use bandwidth to add cyberlinks to the network
- and never pay gas fees for cyberlinks
- personal bandwidth tracks neuron ability to create cyberlinks
- protects cybergraph from sybil attacks
- accounting of bandwidth
- transactions mempool
- for transactions that consist of cyberlinks, a fee check will not apply
- but correct required gas amount should be provided
- network capacity
- total amount of minted $V
- represents the demand of bandwidth from neurons
- validators need to keep tracking investments in $V resources
- to provide great service at scale to dynamically adjust available peek load
- community can adjust gas max gas consumable at block
- state
- state transition function
- bandwidth module doesn’t have own messages that trigger state transition
- state transition is happen in such cases
- ante handler: processing of transaction with cyberlinks messages in transaction middleware
- calculate total bandwidth amount for all cyberlinks messages in transaction using current price and consume neuron bandwidth
- add consumed bandwidth to block bandwidth (in-memory)
- graph module: processing of cyberlink message created by vm contract
- calculate bandwidth for message using current price and consume neuron’s bandwidth
- add consumed bandwidth to block bandwidth (in-memory)
- note: billing happens in the graph module for contracts because contracts creates messages not grouped into transactions (ante handler are not processing them)
- end blocker: transfers of $V
- update account’s bandwidth for an account with changed stake collected by
CollectAddressesWithStakeChange hook (e.g transfer of investmint).
- note: minting of new $V using investming will trigger the account’s bandwidth update with an increased max bandwidth value
- end blocker: save consumed bandwidth by block
- save the total amount (sum aggregated in-memory before) of consumed bandwidth by all neurons on a given block (to storage & in-memory).
- remove value for a block that is out of recovery window block period and not perform in bandwidth load calculation (to storage & in-memory).
- end blocker: adjust bandwidth price
- if block height number’s remainder of division by
AdjustPrice parameter is equal to zero
- calculate and save price based on current load
- bostrom/genesis
- params
- errors
- rest and grpc
- cyber cli
- query bandwidth params
- query bandwidth load
- query bandwidth price
- query bandwidth desirable
- query bandwidth account neuron
- cw-cyber
- cyber-ts