Documentation ¶
Index ¶
- Constants
- Variables
- func AckStatusString(status int) string
- func IdentityStatusString(i uint8) string
- func MessageName(Type byte) string
- func NeedsAck(t byte) bool
- func NormallyFullBroadcast(t byte) bool
- func NormallyPeer2Peer(t byte) bool
- func SetCustomCoinBaseConstants()
- func SetLocalCoinBaseConstants()
- func ShortMessageName(Type byte) string
Constants ¶
const ( AckStatusInvalid int AckStatusUnknown AckStatusNotConfirmed AckStatusACK AckStatus1Minute AckStatusDBlockConfirmed )
Ack status levels
const ( AckStatusInvalidString = "Invalid" AckStatusUnknownString = "Unknown" AckStatusNotConfirmedString = "NotConfirmed" AckStatusACKString = "TransactionACK" AckStatus1MinuteString = "1Minute" AckStatusDBlockConfirmedString = "DBlockConfirmed" )
String forms of acks returned to users
const ( EOM_MSG byte = iota // 0 ACK_MSG // 1 FULL_SERVER_FAULT_MSG // 4 COMMIT_CHAIN_MSG // 5 COMMIT_ENTRY_MSG // 6 DIRECTORY_BLOCK_SIGNATURE_MSG // 7 EOM_TIMEOUT_MSG // 8 FACTOID_TRANSACTION_MSG // 9 HEARTBEAT_MSG // 10 INVALID_ACK_MSG // 11 INVALID_DIRECTORY_BLOCK_MSG // 12 REVEAL_ENTRY_MSG // 13 REQUEST_BLOCK_MSG // 14 SIGNATURE_TIMEOUT_MSG // 15 MISSING_MSG // 16 MISSING_DATA // 17 DATA_RESPONSE // 18 MISSING_MSG_RESPONSE // 19 DBSTATE_MSG // 20 DBSTATE_MISSING_MSG // 21 ADDSERVER_MSG // 22 CHANGESERVER_KEY_MSG // 23 REMOVESERVER_MSG // 24 BOUNCE_MSG // 25 test message BOUNCEREPLY_MSG // 26 test message MISSING_ENTRY_BLOCKS // 27 ENTRY_BLOCK_RESPONSE // 28 INTERNALADDLEADER // 29 INTERNALREMOVELEADER // 30 INTERNALADDAUDIT // 31 INTERNALREMOVEAUDIT // 32 INTERNALTIMEOUT // 33 INTERNALEOMSIG // 34 INTERNALAUTHLIST // 35 VOLUNTEERAUDIT // 36 VOLUNTEERPROPOSAL // 37 VOLUNTEERLEVELVOTE // 38 INTERNALSTARTELECTION // 39 FEDVOTE_MSG_BASE // 40 SYNC_MSG // 41 NUM_MESSAGES // Not used, just a counter for the number of messages. )
Messages
const ( ECIDServerIndexNumber byte = iota // 0 Must be these values, per the specification ECIDMinuteNumber // 1 ECIDChainCommit // 2 ECIDEntryCommit // 3 ECIDBalanceIncrease // 4 )
Entry Credit Block entries
const ( // Limits for keeping inputs from flooding our execution INMSGQUEUE_HIGH = 10000 INMSGQUEUE_MED = 5000 INMSGQUEUE_LOW = 1000 DBSTATE_REQUEST_LIM_HIGH = 200 DBSTATE_REQUEST_LIM_MED = 50 ENTRY_REQUEST_LIMIT = 100 ///=============== The following are bit fields! =================== // Replay -- Dynamic Replay filter based on messages as they are processed. INTERNAL_REPLAY = 1 NETWORK_REPLAY = 1 << 1 TIME_TEST = 1 << 2 // Checks the time_stamp; Don't put actual hashes into the map with this. REVEAL_REPLAY = 1 << 3 // Checks for Reveal Entry Replays ... No duplicate Entries within our 4 hours! // FReplay -- Block based Replay filter constructed by processing the blocks, from the database // then from blocks either passed to a node, or constructed by messages. BLOCK_REPLAY = 1 << 4 // Ensures we don't add the same transaction to multiple blocks. ADDRESS_LENGTH = 32 // Length of an Address or a Hash or Public Key // length of a Private Key SIGNATURE_LENGTH = 64 // Length of a signature MAX_TRANSACTION_SIZE = 10240 // 10K like everything else? // Cross Boot Replay //================== // This is the salt filter on rebooting leaders. How long should the filter last for? CROSSBOOT_SALT_REPLAY_DURATION = time.Minute * 10 // Block //================== MARKER = 0x00 // Byte used to mark minute boundaries in Factoid blocks TRANSACTION_PRIOR_LIMIT = int64(12 * 60 * 60 * 1000) // Transactions prior to 12hrs before a block are invalid TRANSACTION_POST_LIMIT = int64(12 * 60 * 60 * 1000) // Transactions after 12hrs following a block are invalid //Entry Credit Blocks (For now, everyone gets the same cap) EC_CAP = 5 //Number of ECBlocks we start with. //Limits and Sizes //================== //Maximum size for Entry External IDs and the Data HASH_LENGTH = int(32) //Length of a Hash COMMIT_TIME_WINDOW = time.Duration(12) //Time windows for commit chain and commit entry +/- 12 hours //NETWORK constants //================== VERSION_0 = byte(0) MAIN_NETWORK_ID uint32 = 0xFA92E5A2 TEST_NETWORK_ID uint32 = 0xFA92E5A3 LOCAL_NETWORK_ID uint32 = 0xFA92E5A4 MaxBlocksPerMsg = 500 )
const ( // NETWORKS: NETWORK_MAIN int = iota // 0 NETWORK_TEST // 1 NETWORK_LOCAL // 2 NETWORK_CUSTOM // 3 )
const ( TYPE_MINUTE_NUM uint8 = 0x00 // 0 TYPE_DB_SIGNATURE uint8 = 0x01 // 1 TYPE_REVEAL_MATRYOSHKA uint8 = 0x02 // 2 TYPE_ADD_MATRYOSHKA uint8 = 0x03 // 3 TYPE_ADD_SERVER_COUNT uint8 = 0x04 // 4 TYPE_ADD_FED_SERVER uint8 = 0x05 // 5 TYPE_ADD_AUDIT_SERVER uint8 = 0x06 // 6 TYPE_REMOVE_FED_SERVER uint8 = 0x07 // 7 TYPE_ADD_FED_SERVER_KEY uint8 = 0x08 // 8 TYPE_ADD_BTC_ANCHOR_KEY uint8 = 0x09 // 9 TYPE_SERVER_FAULT uint8 = 0x0A // 10 TYPE_COINBASE_DESCRIPTOR uint8 = 0x0B // 11 TYPE_COINBASE_DESCRIPTOR_CANCEL uint8 = 0x0C // 12 TYPE_ADD_FACTOID_ADDRESS uint8 = 0x0D // 13 TYPE_ADD_FACTOID_EFFICIENCY uint8 = 0x0E // 14 )
--------------------------------------------------------------- Types of entries (transactions) for Admin Block https://github.com/FactomProject/FactomDocs/blob/master/factomDataStructureDetails.md#adminid-bytes ---------------------------------------------------------------
const ( IDENTITY_UNASSIGNED uint8 = iota // 0 IDENTITY_FEDERATED_SERVER // 1 IDENTITY_AUDIT_SERVER // 2 IDENTITY_FULL // 3 IDENTITY_PENDING_FEDERATED_SERVER // 4 IDENTITY_PENDING_AUDIT_SERVER // 5 IDENTITY_PENDING_FULL // 6 IDENTITY_SKELETON // 7 - Skeleton Identity IDENTITY_REGISTRATION_CHAIN // 8 )
--------------------------------------------------------------------- Identity Status Types ---------------------------------------------------------------------
const ( // Time window for identity to require registration: 24hours = 144 blocks IDENTITY_REGISTRATION_BLOCK_WINDOW uint32 = 144 )
Identity Timing
const ( // MaxAckHeightDelta is the maximum number of blocks in the // future we will set our HighestAckHeight too. This means // 200 = max number of blocks to set the max height too on top // of our current block height. MaxAckHeightDelta = 200 )
const MaxEntrySizeInBytes = 10240
MaxEntrySizeInBytes is the maximum entry size in bytes, here 10k
const PreBootWindow = 20 // allow an N minute window before boot where messages will be accepted
const SaveStateVersion = 13
Fast boot save state version (savestate) To be increased whenever the data being saved changes from the last version
Variables ¶
var ( // How often to create coinbase transactions // :: Default = 25 COINBASE_PAYOUT_FREQUENCY = uint32(25) // How many blocks before the coinbase does the coinbase // have to appear in the admin block // :: Default = COINBASE_PAYOUT_FREQUENCY*40 COINBASE_DECLARATION = uint32(COINBASE_PAYOUT_FREQUENCY * 40) // The maximum amount of factoshis to be issued per server per payout // :: Default = 6.4*1e8 COINBASE_PAYOUT_AMOUNT = uint64(6.4 * 1e8) // The height at which coinbase transactions will activate. // This is useful for updating without needing to take // down the network and giving an update period. COINBASE_ACTIVATION = uint32(140200) )
Not a constant because custom nets will modify these values
var ADMIN_CHAINID = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0a}
Directory Chain
var CURRENT_SEED = [32]byte{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Slices and arrays that should not ever be modified: =================================================== Used as a key in the wallet to find the current seed value.
var CheckPoints = map[uint32]string{}/* 115 elements not displayed */
--------------------------------------------------------------------- Checkpoints Directory Block KeyMR ---------------------------------------------------------------------
var D_CHAINID = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0d}
Directory Chain
var EC_CHAINID = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0c}
Entry Credit Chain
var EC_CHAINID_STRING = "000000000000000000000000000000000000000000000000000000000000000c"
The Entry Credit (EC) chain id string
var FACTOID_CHAINID = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0f}
Factoid chain
var ZERO = []byte{0}
var ZERO_HASH = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
Zero Hash
Functions ¶
func AckStatusString ¶
AckStatusString will convert the input status int to a human readable string
func IdentityStatusString ¶
func MessageName ¶
func NormallyFullBroadcast ¶
Election related messages are full broadcast
func NormallyPeer2Peer ¶
Election related messages are full broadcast
func SetCustomCoinBaseConstants ¶
func SetCustomCoinBaseConstants()
set the "constants" to values that are more useful for testing
func SetLocalCoinBaseConstants ¶
func SetLocalCoinBaseConstants()
set the "constants" to values that are more useful for testing
func ShortMessageName ¶
Types ¶
This section is empty.