T_H      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None !"569;IT[  None !"569;IT[ZCreate a Hex256 value with the specificed amount of leading zeros. Useful for creating a   when creating a blockchain.hex256LeadingZeros 4@0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff   None !"569;IT[ None !"569;IT[     None !"569;IT[ None !"569;IT[   None !"569;IT[    None !"569;IT[$Address of where funds go%$Pointer to a specific TransactionOut,CSignature from prev transaction, using pubkey from prev transaction$!"#$%&'()*+,-./012345!"#$%&'()*,+-./012345!"#$%&'()*+,-./012345None !"569;IT[6789:;<=>?@ABC67<89:;=>?@ABC6789:;<=>?@ABCNone !"569;IT[LA reasonable default config to use for testing. Mines blocks quickly and changes difficulty and rewards frequently. Note: reward will go to zero after 1100 blocks, which will take about 180 minutes of mining. ^defaultConfig :: BlockchainConfig defaultConfig = BlockchainConfig { initialDifficulty = Difficulty 1 , difficulty1Target = hex256LeadingZeros 4 , targetSecondsPerBlock = 10 , difficultyRecalculationHeight = 50 , initialMiningReward = 1024 , miningRewardHalvingHeight = 100 } MFCalculates the target reward for a blockchain. Uses the longest chain.NJCalculates the target difficulty for a blockchain. Uses the longest chain. DEFGHIJKLMN DEFGHIJKLMNDEFGHIJKLMNNone !"569;IT[6!"#$%&'()*,+-./01234567<89:;=>?@ABCDEFGHIJKLMN6?@ABC6789:;<=>DEFGHIJKLMN0123-./)*+,%&'(!"#$45None !"569;IT[dCore blockchain data type. Uses a validation tag to declare if it is known to abide by expected blockchain rules. Will be either d f or d e. Note: both d f and d e( can be serialized to json, while only d e can be deserialized from json.iConstructs an unvalidated blockchain from a config and a node. Allows arbitrary blockchains to be constructed. However, blockchains are generally not useful until validated.j"Validates a blockchain. Returns a \5 if provided blockchain does not meet expected rules.k2Adds a block to a validated blockchain. Returns a O9 if block is not able to be inserted into the blockchain.5OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv$OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr$fedgh`abc\]^_OPQRSTUVWXYZ[ijklmnopqr O PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvNone !"569;IT[6Create a transaction from a single public key address.HKeyPair for source address. PrivateKey will be used to sign transaction.Target addressTransaction valueFeeValidated blockchainNone !"569;IT[|Finds the next block of a blockchain. Depending on blockchain configuration, this function may take a long time to complete.Finds the next block of a blockchain, without including any transactions. Most useful for testing - removes the invariant of an invalid transaction list. Depending on blockchain configuration, this function may take a long time to complete.Finds the first block of a blockchain. Depending on blockchain configuration, this function may take a long time to complete. Note: this generates a keypair but throws away the private key. Coinbase reward in genesis block cannot never be spent.4PublicKey address where coinbase reward will be sent.List of transactions to include in transactionValidated blockchain4PublicKey address where coinbase reward will be sentValidated blockchainNone !"569;IT[RCreates a blockchain from the given config. This includes mining a genesis block.None !"569;IT[            ! ! " # # $ % % & ' ' ( ) * + ,--./00123345667889:;<==>?@ABCDEEFGHIIJ KLMNOPQRSTUVWXYZ[\]^_`abccdefghijklmnopqrstuvwxyz{|}~>   f+'blockchain-0.0.2-GnNnMI3zKhj6LOZvdPorJXData.Blockchain.Core.TypesData.Blockchain.Core.CryptoData.Blockchain.Core.BlockchainData.Blockchain.Core.BuilderData.Blockchain.MiningPaths_blockchainData.Blockchain.Core.Types.Hex+Data.Blockchain.Core.Types.BlockchainConfigdifficulty1Target%Data.Blockchain.Core.Types.Difficulty Data.Blockchain.Core.Crypto.Hash$Data.Blockchain.Core.Crypto.HashTree!Data.Blockchain.Core.Crypto.ECDSA&Data.Blockchain.Core.Types.Transaction Data.Blockchain.Core.Types.BlockData.Blockchain.Mining.Block!Data.Blockchain.Mining.BlockchainHex256unHex256hex256LeadingZeroshex256 Difficulty unDifficultyToHashhashHash hashToHexfromByteStringunsafeFromByteString HashTreeRootunHashTreeRoot hashTreeRoot PrivateKey unPrivateKey PublicKey unPublicKey Signature unSignatureKeyPair publicKey privateKeysignverifygenerateTransactionOutvaluesignaturePubKeyTransactionOutReftransactionHashtransactionOutIndex TransactionIntransactionOutRef signatureCoinbaseTransactioncoinbaseTransactionOut Transaction transactionIntransactionOutsignTransactionverifyTransactionSignature BlockHeaderversionprevBlockHeaderHashcoinbaseTransactionHashtransactionHashTreeRoottime difficultynonceBlock blockHeadercoinbaseTransaction transactionsBlockchainConfiginitialDifficultytargetSecondsPerBlockdifficultyRecalculationHeightinitialMiningRewardminingRewardHalvingHeight defaultConfig targetRewardtargetDifficultyBlockExceptionBlockAlreadyExists NoParentFoundTimestampTooOldTimestampTooFarIntoFutureInvalidDifficultyReferenceInvalidDifficultyInvalidCoinbaseTransactionHashInvalidTransactionHashTreeRootInvalidCoinbaseTransactionValueInvalidTransactionValuesTransactionOutRefNotFoundInvalidTransactionSignatureValidationExceptionGenesisBlockHasTransactionsGenesisBlockExceptionBlockValidationExceptionBlockchainNode nodeBlock nodeNodes Blockchain Unvalidated ValidatedblockchainConfigblockchainNode constructvalidateaddBlockvalidateTransactionvalidateTransactionsblockHeaderHashDifficulty addressValuesunspentTransactionOutputs longestChainflatten$fToJSONBlockchainNode$fFromJSONBlockchainNode$fToJSONBlockchain$fFromJSONBlockchain$fGenericBlockchainNode$fEqBlockchainNode$fShowBlockchainNode$fGenericBlockchain$fEqBlockchain$fShowBlockchain$fEqBlockException$fShowBlockException$fEqValidationException$fShowValidationExceptionCreateTransactionExceptionSourceAddressEmptySourceAddressInsufficientFundsInvalidPrivateKeycreateSimpleTransaction$fEqCreateTransactionException $fShowCreateTransactionExceptionMineBlockExceptionInvalidTransactionList mineBlockmineEmptyBlockmineGenesisBlockmineBlockchaincatchIObindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName readHexMaybeshowHex zeroPadded$fFromJSONHex256$fToJSONHex256$fBoundedHex256 $fShowHex256$fBoundedDifficultyunHash$fToHashByteString $fMonoidHash$fFromJSONHash $fToJSONHash $fShowHash$fHashableHashhashTypecurve parseHex256parseHex256Tuplehex256FromInteger$fFromJSONPrivateKey$fToJSONPrivateKey$fShowPrivateKey$fFromJSONPublicKey$fToJSONPublicKey$fShowPublicKey$fHashablePublicKey$fFromJSONSignature$fToJSONSignature$fShowSignature$fToHashTransactionOut$fToJSONTransactionOut$fFromJSONTransactionOut$fToJSONTransactionOutRef$fFromJSONTransactionOutRef$fHashableTransactionOutRef$fToHashTransactionIn$fFromJSONTransactionIn$fToJSONTransactionIn$fToHashCoinbaseTransaction$fToJSONCoinbaseTransaction$fFromJSONCoinbaseTransaction$fToHashTransaction$fToJSONTransaction$fFromJSONTransaction$fToHashBlockHeader$fToJSONBlockHeader$fFromJSONBlockHeader $fToJSONBlock$fFromJSONBlock$fToJSONBlockchainConfig$fFromJSONBlockchainConfig_config_nodevalidateBlockDifficultyvalidateBlockCreationTimevalidateBlockHeaderReferencesvalidateBlockTransactions txOutValuevalidateTransactionInternal!unspentTransactionOutputsInternal maybeToEitherstripFieldPrefixmineBlockInternal mineHeaderincNonce