API documentation

agora.api.handler.Block Definitions of the BlockExternalizedHandler
agora.api.handler.PreImage Definitions of the PreImageReceivedHandler
agora.api.handler.Transaction Definitions of the TransactionReceivedHandler
agora.api.FullNode Definitions of the full node API
agora.api.Validator Definitions of the validator API
agora.common.Amount Defines a monetary type used in the blockchain
agora.common.BanManager Contains code to support temporarily banning from communicating with specific addressses which may belong to badly-behaving nodes.
agora.common.BitField Contains a templated BitField implementation
agora.common.Config Define the configuration objects that are used through the application
agora.common.FileBasedLock Implements file based locking that can help synchronize processes
agora.common.ManagedDatabase Contains a managed wrapper around SQLite databases.
agora.common.Metadata Defines metadata which is stored to disk (e.g. peer info)
agora.common.SCPHash Contains definition of hashing routines which SCP uses. These just call the hashing routines from agora.crypto.Hash
agora.common.Set Contains a simple Set implementation (wrapper around builtin hashmaps)
agora.common.Task Contains the base definition for the task manager
agora.common.Types Defines common types used by Agora
agora.common.VibeTask Contains a task manager backed by vibe.d's event loop.
agora.consensus.data.genesis.Coinnet Defines the genesis block used by the live network (CoinNet)
agora.consensus.data.genesis.Test Defines a genesis block suitable for testing purpose
agora.consensus.data.Block Defines the data structure of a block
agora.consensus.data.DataPayload Contains a type for storing data in a transaction
agora.consensus.data.Enrollment Data definition for enrollment of validator
agora.consensus.data.genesis Contains primitives related to the genesis block
agora.consensus.data.Params The set for consensus-critical constants
agora.consensus.data.PreImageInfo Contains definition for the PreImageInfo struct, which is used to communicate new pre-image informations between nodes.
agora.consensus.data.Transaction Defines the data structure of a transaction
agora.consensus.data.UTXO Defines the UTXO transaction set struct, contains the UTXOFinder delegate
agora.consensus.data.ValidatorBlockSig Contains definition for the ValidatorBlockSig struct, which is used to communicate block signatures between nodes.
agora.consensus.protocol.Data Defines the data used when reaching consensus.
agora.consensus.protocol.Nominator Contains the SCP consensus driver implementation.
agora.consensus.state.UTXOCache Contains the base class for a UTXO set and an AA-backed UTXO set.
agora.consensus.state.UTXODB ManagedDatabase of UTXOs using SQLite as the backing store
agora.consensus.state.UTXOSet Contains a SQLite-backed UTXO set class.
agora.consensus.state.ValidatorSet Contains supporting code for managing validators' information using SQLite as a backing store, including the enrolled height which means enrollment process is confirmed as part of consensus.
agora.consensus.validation.Block Contains validation routines for blocks
agora.consensus.validation.Enrollment Contains validation routines for enrollments
agora.consensus.validation.PreImage Contains validation routines for pre-image
agora.consensus.validation.Transaction Contains validation routines for transactions
agora.consensus.EnrollmentManager Manages this node's Enrollment, the ValidatorSet, and EnrollmentPool
agora.consensus.EnrollmentPool Contains supporting code for managing enrollments registered by nodes on the network to be a validator, which means the enrollment information needs to be confirmed on the consensus protocol to be a validator. The information is stored in a table of SQLite.
agora.consensus.Fee Contains the function to calculate the fees used to store the data
agora.consensus.PreImage Hold pre-image related utilities
agora.consensus.Quorum Contains the quorum generator algorithm.
agora.consensus.SCPEnvelopeStore Contains supporting code for storing the latest SCP envelopes, using SQLite as a backing store.
agora.consensus.SlashPolicy Manages the slashing policy for the misbehaving validators that do not reveal their pre-images timely.
agora.consensus.validation Contains validation routines for all data types required for consensus.
agora.crypto.Bech32 Utilities for converting between bech32-encoded string and ubyte array.
agora.crypto.Crc16 Package crc16 is implementation according to CCITT standards.
agora.crypto.Key Holds primitive types for key operations
agora.flash.API Contains the Flash API.
agora.flash.Channel Contains the Flash Channel definition.
agora.flash.Config Contains the flash Channel definition
agora.flash.ControlAPI Contains the user-facing API used to control the flash node, for example creating invoices and paying invoices.
agora.flash.ErrorCode Contains error codes for the Flash API.
agora.flash.Invoice Contains the invoice definition.
agora.flash.Network Contains in-memory representation of Lightning Network topology
agora.flash.Node Contains the Flash abstract node definition.
agora.flash.OnionPacket Contains the routing path encoding structure.
agora.flash.Route Contains the routing path encoding structure.
agora.flash.Scripts Contains all the Flash-layer scripting support.
agora.flash.Types Contains the common types used by the Flash node and the API, as well as some helper types.
agora.flash.UpdateSigner Contains the task which signs & shares the settlement & update transaction signatures for a given sequence ID.
agora.network.Client Contains code used to communicate with another remote node
agora.network.Clock Contains a network-synchronized Clock implementation.
agora.network.Manager Expose facilities used by the Node to communicate with the network
agora.node.admin.AdminInterface Provide a web-based administrative interface to the node
agora.node.admin.QRCodeInterface Provides QR service interface used by the node's web-based management interface
agora.node.admin.Setup Provide a web-based administrative interface to the node
agora.node.BlockStorage Define the storage for blocks
agora.node.FlashFullNode Implementation of the FlashFullNode
agora.node.FlashValidator Implementation of the FlashValidator API.
agora.node.FullNode Implementation of the full node's API.
agora.node.Ledger The Ledger class binds together other components to provide a consistent view of the state of the node.
agora.node.main Entry point for the Agora node
agora.node.Runner Contains a function which instantiates either a FullNode or a Validator.
agora.node.TransactionPool Contains a transaction pool that is serializable to disk, using SQLite as a backing store.
agora.node.Validator Implementation of the Validator API.
agora.registry.API Definitions of the name registry API
agora.registry.Server Definitions of the name registry API implementation
agora.script.Engine Contains the script execution engine.
agora.script.Lock Contains the Lock / Unlock definitions
agora.script.Opcodes Contains the supported opcodes for the basic execution engine (non-webASM)
agora.script.ScopeCondition Keeps track of scopes and their conditions (TRUE or FALSE). This struct can be used to implement conditional (IF/ELSE/ENDIF) logic.
agora.script.Script Contains the script definition and syntactical opcode validation.
agora.script.Stack Contains a stack implementation for use with the script execution engine.
agora.stats.App Expose stats specific to the application, such as GC stats, or version.
agora.stats.Block Stats corresponding to blocks
agora.stats.EndpointReq Stats corresponding to endpoint requests
agora.stats.Registry Stats corresponding to validators
agora.stats.Server Starts up a HTTP server and listen to queries from Prometheus
agora.stats.Stats Base stats class that helps define other stats classes
agora.stats.Tx Stats corresponding to Transactions
agora.stats.Utils Utilities for stats support
agora.stats.Validator Stats corresponding to validators
agora.test.BanManager Contains tests for banning of unreachable nodes or in situations where timeouts fail or time-out.
agora.test.Base Contains utilities to be used by tests to easily set up test environments
agora.test.BlockTimeConsensus Tests the consensus algorithm on block time offset creation
agora.test.Byzantine Contains Byzantine node tests, which refuse to co-operate in the SCP consensus protocol in various ways.
agora.test.Crypto Contains extra tests for the crypto library
agora.test.EnrollDifferentUTXOs Contains networking tests with multiple enrollments with different UTXOs.
agora.test.EnrollmentManager Contains tests for the creation of an enrollment data, enrolling as a validator and propagating the information through the network
agora.test.Fee Contains tests for the fee distribution
agora.test.Flash Contains Flash layer tests.
agora.test.GenesisBlock Test whether genesis block has enrollment data and existing Genesis Transactions
agora.test.GossipProtocol Contains tests for Gossip Protocol.
agora.test.InvalidBlockSigByzantine Contains Byzantine node tests, which refuse to co-operate in the SCP consensus protocol in various ways.
agora.test.Ledger Contains tests for the Block creation and adding blocks to the ledger, as well as the catch-up
agora.test.LocalTransactions Contains tests for network behaviour when nominated TXs are not known to every node
agora.test.LockHeight Tests for the transaction-level absolute time lock.
agora.test.ManyBlocks Testing generastion of many blocks with re-enrolling every cycle
agora.test.ManyValidators Contains networking tests with a variety of different validator node counts.
agora.test.MissingPreImageDetection Contains tests for the validators not revealing their pre-images.
agora.test.MultiRoundConsensus Tests for reaching consensus in multiple rounds instead of 1 round. In this test, we make nodes reject nominations for several rounds deliberately until one is accepted at a round R, where R could be arbitrarily high.
agora.test.NameRegistry Test for the NameRegistry functionality
agora.test.NetworkClient Contains tests for the functionality of the NetworkClient.
agora.test.NetworkDiscovery Contains tests for the node discovery behavior
agora.test.NetworkManager Contains tests for the tests & error-handling of the NetworkManager
agora.test.PeriodicCatchup Check that if the node does not externalize the block when triggered by SCP that it will fetch the block later during periodic catchup and then successfully externalize.
agora.test.Quorum Contains various quorum tests, adding and expiring enrollments, making a network with many validators, etc.
agora.test.QuorumPreimage Tests preimage quorum generation behavior.
agora.test.QuorumShuffle Tests regular quorum shuffling behavior.
agora.test.Restart Test node restarting behavior
agora.test.RestoreSCPState Tests restoring SCP Envelope state on restart
agora.test.RestoreSlashingInfo Contains tests for re-routing part of the frozen UTXO of a slashed validater to CommonsBudget address.
agora.test.Script Network tests for the execution engine scripts.
agora.test.Simple Contains the simplest possible block creating test
agora.test.SlashingMisbehavingValidator Contains tests for re-routing part of the frozen UTXO of a slashed validater to CommonsBudget address.
agora.test.TimeBlockInterval Tests behavior of block_interval_sec
agora.test.TimeDrift Tests consensus-reaching behavior when the nodes' clocks start to drift.
agora.test.Timeout Tests connection timeouts
agora.test.UnlockAge Tests for the input-level relative time lock.
agora.test.ValidatorCleanRestart Contains tests for general situations where validators participate in nominating a block and reaching consensus.
agora.test.ValidatorCount The creation of a block must stop immediately just before all the active validators is expired. This is to allow additional enrollment of validators. Enrollment's cycle is ConsensusParams.validator_cycle, If none of the active validators exist at height validator_cycle, block generation must stop at height validator_cycle-1.
agora.test.ValidatorRecurringEnrollment Ensures validators re-enroll at the end of their validator cycle when configured to do so
agora.test.VariableBlockSize Tests creating blocks of arbitrary transaction counts.
agora.utils.gc.bits Contains a bitfield used by the GC.
agora.utils.gc.GC A garbage collector that register memory allocations
agora.utils.gc.os Contains OS-level routines needed by the garbage collector.
agora.utils.gc.pooltable A sorted array to quickly lookup pools.
agora.utils.Backoff Contains a truncated exponential backoff algorithm for use with retrying code. Based on Amazon's FullJitter algorithm description on:
agora.utils.InetUtils Lower level utility functions for networking
agora.utils.Log Utilities to deal with logging
agora.utils.PrettyPrinter Defines method to format types to their human readable representation
agora.utils.SCPPrettyPrinter Contains pretty-printing routines specialized for SCP types.
agora.utils.Test Various utilities for testing purpose
agora.utils.TracyAPI Binding for Tracy C API
agora.utils.TxBuilder An helper utility to build transactions
agora.utils.Utility Utility functions that cannot be put anywhere else
agora.utils.WellKnownKeys The list of well-known keypairs
agora.utils.Workarounds Workarounds for compiler / runtime / upstream issues
scpd.quorum.QuorumIntersectionChecker Bindings for quorum/QuorumIntersectionChecker.h
scpd.quorum.QuorumTracker Bindings for quorum/QuorumTracker.h
scpd.scp.BallotProtocol Bindings for scp/BallotProtocol.h
scpd.scp.LocalNode Bindings for scp/LocalNode.h
scpd.scp.NominationProtocol Bindings for scp/NominationProtocol.h
scpd.scp.QuorumSetUtils Bindings for scp/QuorumSetUtils.h
scpd.scp.SCP Bindings for scp/SCP.h, the main class / entrypoint of the SCP protocol
scpd.scp.SCPDriver Bindings for scp/SCPDriver.h, the class to derive to implement the SCP protocol
scpd.scp.Slot Bindings for scp/Slot.h
scpd.scp.Utils Extra bindings for scp for D usage, and other SCP-specific symbols
scpd.tests.GlueTypes Contains types used for size & ABI object layout checks.
scpd.tests.LayoutTest Contains runtime field size & ABI object layout checks.
scpd.tests.SizeTest Contains runtime size checks for the structs.
scpd.types.Stellar_SCP Porting of Stellar's Stellar_SCP.h, itself derived from Stellar_SCP.x
scpd.types.Stellar_types Porting of Stellar's Stellar_types.h, itself derived from Stellar_types.x
scpd.types.Utils C++-side utilities for D code, such as wrapper for vector.push_back
scpd.types.XDRBase Binding to xdrpp types (the library)
scpd.Cpp Types currently missing from core.stdcpp and some additional utilities