Directories ¶
Path | Synopsis |
---|---|
types and functions for converting Bitmark accounts (the public key) and their signatures
|
types and functions for converting Bitmark accounts (the public key) and their signatures |
network announcements
|
network announcements |
Cache for assets temporary store assets just received until they are: a.
|
Cache for assets temporary store assets just received until they are: a. |
an AVL balanced tree with the addition of parent pointers to allow iteration through the nodes Note: an individual tree is not thread safe, so either access only in a single go routine or use mutex/rwmutex to restrict access.
|
an AVL balanced tree with the addition of parent pointers to allow iteration through the nodes Note: an individual tree is not thread safe, so either access only in a single go routine or use mutex/rwmutex to restrict access. |
Simple skeleton for background processes
|
Simple skeleton for background processes |
current block data
|
current block data |
implementation block header hashing using a memory intensive argon2-d algorithm
|
implementation block header hashing using a memory intensive argon2-d algorithm |
the structure of the block header includes functions to pack/unpack []byte form
|
the structure of the block header includes functions to pack/unpack []byte form |
uses crc64 of recent blocks to produce a deterministic number for the issue hashing verification system
|
uses crc64 of recent blocks to produce a deterministic number for the issue hashing verification system |
Package cache maintains the memory data store ***** Data Structure ***** Pool Key Value ExpiresAfter |___ PendingTransfer merkle.Digest (link) merkle.Digest (txid) 72h |___ UnverifiedTxIndex merkle.Digest (txid) pay.PayId 72h |___ UnverifiedTxEntries pay.PayId reservoir.unverifiedItem 72h |___ VerifiedTx merkle.Digest (txid) reservoir.verifiedItem never |___ OrphanPayment pay.PayId reservoir.orphanPayment 72h link ---------> txid -------------> payid ---------> unverifiedItem |________________|___________________|_____________________| PendingTransfer UnverifiedTxIndex UnverifiedTxEntries ***** Purpose ***** PendingTransfer: indexed by link so that duplicate transfers can be detected data is the tx id so that the same transfer repeated can be distinguished from an invalid duplicate transfer UnverifiedTxIndex & UnverifiedTxEntries: unverified transaction (issue and transfer) VerifiedTx: verified transaction (issue and transfer) OrphanPayment: when possible payment is already found, but no transfer transaction is received yet put the payment in the pool to wait for
|
Package cache maintains the memory data store ***** Data Structure ***** Pool Key Value ExpiresAfter |___ PendingTransfer merkle.Digest (link) merkle.Digest (txid) 72h |___ UnverifiedTxIndex merkle.Digest (txid) pay.PayId 72h |___ UnverifiedTxEntries pay.PayId reservoir.unverifiedItem 72h |___ VerifiedTx merkle.Digest (txid) reservoir.verifiedItem never |___ OrphanPayment pay.PayId reservoir.orphanPayment 72h link ---------> txid -------------> payid ---------> unverifiedItem |________________|___________________|_____________________| PendingTransfer UnverifiedTxIndex UnverifiedTxEntries ***** Purpose ***** PendingTransfer: indexed by link so that duplicate transfers can be detected data is the tx id so that the same transfer repeated can be distinguished from an invalid duplicate transfer UnverifiedTxIndex & UnverifiedTxEntries: unverified transaction (issue and transfer) VerifiedTx: verified transaction (issue and transfer) OrphanPayment: when possible payment is already found, but no transfer transaction is received yet put the payment in the pool to wait for |
simple module to list the supported chains
|
simple module to list the supported chains |
command
|
|
bitmark-cli
Generate a large rate of issues for testing e.g.
|
Generate a large rate of issues for testing e.g. |
bitmarkd
bitmarkd main program
|
bitmarkd main program |
prooferd
Proof-of-work program for bitmark system This program subscribes to potential blocks stream on a bitmarkd and determines an argon2 hash value that meets the current network difficulty value.
|
Proof-of-work program for bitmark system This program subscribes to potential blocks stream on a bitmarkd and determines an argon2 hash value that meets the current network difficulty value. |
parse a ucl configuration file The configuration supports variable expansion: ${VAR} variable provided bu optional map ${ENV_VAR} all environment variables are prefix with ENV_ However, if the VAR is undefined then the text is not expanded and remains as "${VAR}" which is normally not wanted.
|
parse a ucl configuration file The configuration supports variable expansion: ${VAR} variable provided bu optional map ${ENV_VAR} all environment variables are prefix with ENV_ However, if the VAR is undefined then the text is not expanded and remains as "${VAR}" which is normally not wanted. |
constants that could be tuned
|
constants that could be tuned |
thread safe counter
|
thread safe counter |
types and functions for converting currencies to/from enumeration values
|
types and functions for converting currencies to/from enumeration values |
bitcoin
to validate bitcoin addresses
|
to validate bitcoin addresses |
litecoin
to validate litecoin addresses
|
to validate litecoin addresses |
satoshi
to convert satoshi values to integers
|
to convert satoshi values to integers |
Implement the Bitcoin difficulty value and its various encodings
|
Implement the Bitcoin difficulty value and its various encodings |
error instances Provides a single instance of errors to allow easy comparison without having to resort to partial string matches
|
error instances Provides a single instance of errors to allow easy comparison without having to resort to partial string matches |
live and test genesis blocks
|
live and test genesis blocks |
merkle tree manipulation routines
|
merkle tree manipulation routines |
a queue system to transfer transactions
|
a queue system to transfer transactions |
simple module to record the global running mode
|
simple module to record the global running mode |
miscellaneous type for payment
|
miscellaneous type for payment |
control of payment verification
|
control of payment verification |
this module handle the peer to peer network server-side: * broadcaster of block, transactions * listener for RPC requests e.g.
|
this module handle the peer to peer network server-side: * broadcaster of block, transactions * listener for RPC requests e.g. |
prepare blocks for prooferd
|
prepare blocks for prooferd |
Cache for transactions that have been verified
|
Cache for transactions that have been verified |
this is to setup and handle all of the incoming JSON RPC requests from clients requiring bitmarkd services standard golang RPC services can be used on the client side to access these services
|
this is to setup and handle all of the incoming JSON RPC requests from clients requiring bitmarkd services standard golang RPC services can be used on the client side to access these services |
Transactions: T ++ txId - confirmed transactions data: packed transaction data Assets: A ++ asset index - confirmed asset data: packed asset data Ownership: N ++ owner - next count value to use for appending to owned items data: count K ++ owner ++ count - list of owned items data: last transfer txId ++ last transfer block number ++ issue txId ++ issue block number ++ asset index D ++ owner ++ txId - position in list of owned items, for delete after transfer data: count Payment: C ++ currency(uint64) - currency processing data: latest block number (big endian uint64, 8 bytes) P ++ payId - payment confirmation (array of addresses + values) data: currency(varint) ++ txId_bytes(varint) ++ txId ++ [ count(varint) ++ address ++ value(varint) ] Testing: Z ++ key - testing data
|
Transactions: T ++ txId - confirmed transactions data: packed transaction data Assets: A ++ asset index - confirmed asset data: packed asset data Ownership: N ++ owner - next count value to use for appending to owned items data: count K ++ owner ++ count - list of owned items data: last transfer txId ++ last transfer block number ++ issue txId ++ issue block number ++ asset index D ++ owner ++ txId - position in list of owned items, for delete after transfer data: count Payment: C ++ currency(uint64) - currency processing data: latest block number (big endian uint64, 8 bytes) P ++ payId - payment confirmation (array of addresses + values) data: currency(varint) ++ txId_bytes(varint) ++ txId ++ [ count(varint) ++ address ++ value(varint) ] Testing: Z ++ key - testing data |
the structure of the transaction records includes functions to pack/unpack []byte form
|
the structure of the transaction records includes functions to pack/unpack []byte form |
miscellaneous small routines
|
miscellaneous small routines |
various comm ZMq routines shared be all commands
|
various comm ZMq routines shared be all commands |
Click to show internal directories.
Click to hide internal directories.