|9nT      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None+345 None!"+3457=>CL None+3453Checkpoints from bitcoind reference implementation src(checkpoints.cpp presented as an IntMap.3Checkpoints from bitcoind reference implementation src%checkpoints.cpp presented as a list.iVerify that a block hash at a given height either matches an existing checkpoint or is not a checkpoint.None +3457>IN!DNumber of blocks on average between difficulty cycles (2016 blocks).Genesis block.^Initialize the block header chain by inserting the genesis block if it doesn't already exist.Connect a block header to this block header chain. Corresponds to bitcoind function ProcessBlockHeader and AcceptBlockHeader in main.cpp.A more efficient way of connecting a list of block headers than connecting them individually. The list of block headers have must form a valid chain.+Returns True if the action is a best chain.,Returns True if the action is a chain reorg.+Returns True if the action is a side chain.,Returns True if the action is a known chain.5Returns a BlockLocator object for a given block hash.)Verify block header conforms to protocol.7Create a block node data structure from a block header.Return blockchain action to connect given block with best block. Count will limit the amount of blocks building up from split point towards the best block.Find the split point between two nodes. It also returns the two partial chains leading from the split point to the respective nodes. Tuples must contain a block node and the count of nodes that should be returned from the split towards that block. 0 means all. Finds the parent of a block.!Get all children for a block*Get the last checkpoint that we have seen.Returns the work required for a block header given the previous block. This coresponds to bitcoind function GetNextWorkRequired in main.cpp.Computes the work required for the next block given a timestamp and the current block. The timestamp should come from the block that matched the last jump in difficulty (spaced out by 2016 blocks in prodnet).Returns True if the difficulty target (bits) of the header is valid and the proof of work of the header matches the advertised difficulty target. This function corresponds to the function CheckProofOfWork from bitcoind in main.cpp.AReturns the proof of work of a block header as an Integer number.Returns the work represented by this block. Work is defined as the number of tries needed to solve a block in the average case with respect to the target.-Chain for new block building on a parent node#/Get node height and chain common to both given.$Put single block in database.% Put multiple blocks in database.1Get multiple blocks corresponding to given hashes(0Get ancestor of specified block at given height.)3Get ancestors for specified block at given heights.*Get a range of block headers building up to specified block. If specified height is too large, an empty list will be returned.+9Get node immediately at or after timestamp in main chain.,-Get blocks at specified height in all chains.FEvaluate block action for provided best block and chain of new blocks.:     Parent block header Timestamps of previous 11 blocksPrevious difficulty change Height of most recent checkpointLast MinWork (e.g. Testnet3) Current timeBlock header to validateParent block nodeChain number for new node Best blockStart of window Window count ! " Parent node#$%&'( Best block) Best block* Best blockCount (0 for all)Height from (including)+,*  !"#$%&'()*+,.  &"' +!()*,$%#3       ! "#$%&'()*+,None +3457>IN37True if the peer is connected (completed the handshake)4;Contains the version message that we received from the peer5 Current known height of the peer6,Message channel to send messages to the peer7$Host to which this peer is connected8 Peer ThreadId9'Merkle block/Merkle transaction channel: Time at which we requested pings;,Ping scores for this peer (round trip times)?*Map of all active peers and their sessions@4The peer that is currently syncing the block headersA!The current height of the networkBBlock headers sent from a peerCPeer currently syncing headersD(Peer currently downloading merkle blocksE"Lock on the header syncing processFOur best block headerGOur best merkle block's heightHList of Tx GetData requestsI Bloom filterJ<Channel containing all the block tickles received from peersKTransaction channelL7Rescan requests from a timestamp or from a block heightMDid we do a Mempool sync ?S@Important host log messages that should appear in status command~-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~v-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`defghijklmnopqrsvwxyz{|}~ZYXWTUVc[\]^_`OPQRSb=>?@ABCDEFGHIJKLMN<123456789:;a-./0uustdefghijklmnopqrvwxyz{|}~6-./01 23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None +3457Decode messages sent from the remote host and send them to the peers main message queue for processing. If we receive invalid messages, this function will also notify the PeerManager about a misbehaving remote host.6Encode message that are being sent to the remote host.Timeout value in seconds*Action to run if the main action times out%Action to run until the time runs outNone +3457Sync one batch of headers from the given peer. Accept the result of a previous peerHeaderSync to correctly compute block locators in the presence of side chains.      !"#$%&'()*+,-./012345567889:;<=>?@ABCCDEFGHIJKLMNOPQRSTTUVWXXYZ[\]^_`abcdefgghijklmnopqrstuvwxxyz{|}~      hasko_Cr6n2cQmAihI3jJSKmPZDSNetwork.Haskoin.Node.HeaderTree Network.Haskoin.Node.CheckpointsNetwork.Haskoin.Node.STMNetwork.Haskoin.Node.PeerNetwork.Haskoin.Node.BlockChain%Network.Haskoin.Node.HeaderTree.Types%Network.Haskoin.Node.HeaderTree.Model Timestamp BlockHeight NodeBlocknodeBlockHeightmigrateHeaderTree checkpointMapcheckpointListverifyCheckpointBlockChainAction BestChain actionNodes ChainReorgactionSplitNodeactionOldNodes SideChain KnownChain nodeHeadernodeHashnodePrev nodeTimestamp genesisBlockinitHeaderTree connectHeaderconnectHeaders isBestChain isChainReorg isSideChain isKnownChain blockLocator nodeBlockgetBlockWindow splitChainsgetParentBlockgetChildBlocksgetHeads splitBlockputBlock putBlocks getBestBlockgetBlockByHashgetBlockByHeightgetBlocksByHeightgetBlocksFromHeightgetBlockAfterTimegetBlocksAtHeightPeerHostpeerHostpeerPort PeerSessionpeerSessionConnectedpeerSessionVersionpeerSessionHeightpeerSessionChanpeerSessionHostpeerSessionThreadIdpeerSessionMerkleChanpeerSessionPingspeerSessionScore PingNonceSharedNodeState sharedPeerMap sharedHostMapsharedNetworkHeight sharedHeaderssharedHeaderPeersharedMerklePeersharedSyncLocksharedBestHeadersharedBestBlocksharedTxGetDatasharedBloomFiltersharedTickleChan sharedTxChan sharedRescan sharedMempoolsharedSqlBackendPeerHostSessionpeerHostSessionScorepeerHostSessionReconnectpeerHostSessionLog ShowPeerId getShowPeerId PeerHostScorePeerIdNodeT MerkleTxsrunSql runSqlNodeT getNodeStaterunNodeT withNodeTatomicallyNodeT$fNFDataPeerSession$fNFDataPeerHostSession$fShowShowPeerId PeerStatuspeerStatusPeerIdpeerStatusHostpeerStatusConnectedpeerStatusHeightpeerStatusProtocolpeerStatusUserAgentpeerStatusPingpeerStatusDoSScorepeerStatusHaveMerklespeerStatusHaveMessagepeerStatusPingNoncespeerStatusReconnectTimer peerStatusLogpeerHostString$fNFDataPeerHost$fFromJSONPeerHost NodeStatusnodeStatusPeersnodeStatusNetworkHeightnodeStatusBestHeadernodeStatusBestHeaderHeightnodeStatusBestBlocknodeStatusBestBlockHeightnodeStatusBloomSizenodeStatusHeaderPeernodeStatusMerklePeernodeStatusHaveHeadersnodeStatusHaveTicklesnodeStatusHaveTxsnodeStatusGetDatanodeStatusRescannodeStatusMempoolnodeStatusSyncLock$fFromJSONPeerStatus NodeExceptionNodeExceptionBannedNodeExceptionConnectedNodeExceptionInvalidPeerNodeExceptionPeerNotConnectedtryGetPeerSessiongetPeerSessionnewPeerSessionmodifyPeerSessionremovePeerSessiongetHostSessionmodifyHostSessionnewHostSession bannedScoreminorDoS moderateDoS severeDoSisHostScoreBanned orElseNodeT readTVarS writeTVarS takeTMVarS readTMVarS tryReadTMVarS putTMVarS tryPutTMVarS swapTMVarS isEmptyTMVarSisNodeExceptioncatchAny catchAny_$fExceptionNodeException$fFromJSONNodeStatusminProtocolVersion startPeerstartReconnectPeer startPeerPidisPeerHostBannedisPeerHostConnected decodeMessageprocessMessageprocessInvMessage encodeMessagepeerPingisBloomDisabled peerHandshakewaitPeerVersiondisconnectPeerwaitPeerAvailablewaitBloomFiltersendBloomFiltergetMedianHeightupdateNetworkHeightgetPeersgetConnectedPeersgetPeersAtNetHeightgetPeersAtHeighttrySendMessage sendMessagesendMessageAllgetNetworkHeight misbehaving raceTimeout formatPid startSPVNodetxSource handleGetData broadcastTxsrescanTs rescanHeightmerkleDownloadmerkleCheckSync waitHeightwaitFastCatchup waitNewBlocktryMerkleDwnHeighttryMerkleDwnTimestamptryMerkleDwnBlockpeerMerkleDownloadprocessTickles waitTickle syncedHeight headerSyncpeerHeaderSyncLimitpeerHeaderSyncFullareBlocksSyncedareHeadersSyncedpeerHeaderSync nodeStatus peerStatus NodeHeader getNodeHeaderWork ShortHash$fPersistFieldSqlNodeHeader$fPersistFieldNodeHeader NodeBlockId nodeBlockHashnodeBlockHeader nodeBlockWorknodeBlockChain UniqueHash UniqueChain NodeBlockKeyunNodeBlockKey NodeBlockHashNodeBlockHeader NodeBlockWorkNodeBlockHeightNodeBlockChain$TFCo:R:PersistEntityBackendNodeBlock diffIntervalverifyBlockHeaderlastSeenCheckpointnextWorkRequiredworkFromInterval isValidPOW headerPOW headerWorkgetChaingetBlocksByHash evalNewChainMinWork shortHashgetVerifyParams findMinWork isMinWork splitKnownchainPathQuery getPivotsgetChainLowest pruneChain