API documentation

ModuleDescription
agora.api.Admin An API to control a node's behavior and perform useful administrative tasks
agora.api.FullNode Definitions of the full node API
agora.api.Handlers Definitions of the Handlers for pushing to Stoa
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.BitMask This is an implementation of a bitmask that once initialized will have a fixed number of bits for holding true / false (1 / 0) values. It allocates the required number of ubytes in the constructor and does not allow reading or writing to bits beyond the fixed count which is set during construction. This type is created for use as the validators signing bitmask and any changes should ensure that it does not compromise that use.
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.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.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.data.ValidatorInfo Holds related informations about a validator.
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.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.FlashAPI Contains the Flash API.
agora.flash.api.FlashControlAPI Contains the user-facing API used to control the flash node, for example creating invoices and paying invoices.
agora.flash.api.FlashListenerAPI Contains the Flash API.
agora.flash.Channel Contains the Flash Channel definition.
agora.flash.Config Contains the flash Channel definition
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.Setup Provide a web-based setup interface to the node (Talos)
agora.node.BlockStorage Define the storage for blocks
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.TransactionRelayer TransactionRelayer is responsible for storing transactions, and relaying some of them to all known network clients periodically. The current implementation relays transactions with the highest fees.
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.EmptyBlocks Contains the simplest empty block creating test
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.PreimageSharing Contains tests for sharing preimages during SCP protocol run.
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.TransactionReplacement Tests the transaction replacement logic for double spend transactions.
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
mmdb.MaxMindDB DLang bindings for MaxMindDB C library generated with jacob-carlborg/dstep.
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