\Q      !"#$%&'()*+,-./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[7KeyPairs are used to store and sign transactions. The a piece is used as the public address on the blockchain where funds can be sent to and from. The z is used to sign transactions, which provides a guarantee that the transaction was initiated by the owner of the address. Generates a new . The ! can be shared openly, while the  should be kept secret.   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[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.k-Isomorphic - useful for sending api responsesl2Adds a block to a validated blockchain. Returns a O9 if block is not able to be inserted into the blockchain.6OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs%OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs!O PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsNone !"569;IT[[!"#$%&'()*,+-./01234567<89:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs[fedgh`abc\]^_OPQRSTUVWXYZ[ijklmnopqrs?@ABC6789:;<=>DEFGHIJKLMN0123-./)*+,%&'(!"#$45None !"569;IT[x6Create a transaction from a single public key address.tuvwxHKeyPair for source address. PrivateKey will be used to sign transaction.Target addressTransaction valueFeeValidated blockchaintuvwxtuvwxtuvwxNone !"569;IT[y  !"#$%&'()*,+-./01234567<89:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxNone !"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 blockchain~4PublicKey address where coinbase reward will be sentValidated blockchain{|}~{|}~None !"569;IT[RCreates a blockchain from the given config. This includes mining a genesis block.None !"569;IT[{|}~{|}~           ! " " # $ $ % & & ' ( ( ) * + , - . . / 0 1 1 2 3 4 4 5 6 7 7 8 9 9 : ; < =>>?@ABCDEFFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcddefghijklmnopqrstuvwxyz{|}~?   g,'blockchain-0.0.3-B6M8cyvqobVDH0prNNm9JFData.Blockchain.TypesData.Blockchain.CryptoData.Blockchain.BuilderData.Blockchain.MiningPaths_blockchainData.Blockchain.Types.Hex&Data.Blockchain.Types.BlockchainConfigdifficulty1Target Data.Blockchain.Types.DifficultyData.Blockchain.Crypto.HashData.Blockchain.Crypto.HashTreeData.Blockchain.Crypto.ECDSA!Data.Blockchain.Types.TransactionData.Blockchain.Types.Block Data.Blockchain.Types.BlockchainData.BlockchainData.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 constructvalidate unvalidateaddBlockvalidateTransactionvalidateTransactionsblockHeaderHashDifficulty addressValuesunspentTransactionOutputs longestChainflattenCreateTransactionExceptionSourceAddressEmptySourceAddressInsufficientFundsInvalidPrivateKeycreateSimpleTransaction$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 maybeToEitherstripFieldPrefix$fToJSONBlockchainNode$fFromJSONBlockchainNode$fToJSONBlockchain$fFromJSONBlockchainmineBlockInternal mineHeaderincNonce