# README
Blockchain in Go
A blockchain implementation in Go, as described in these articles:
# Functions
Base58Decode decodes Base58-encoded data.
Base58Encode encodes a byte array to Base58.
CreateBlockchain creates a new blockchain DB.
DeserializeBlock deserializes a block.
DeserializeOutputs deserializes TXOutputs.
DeserializeTransaction deserializes a transaction.
HashPubKey hashes public key.
IntToHex converts an int64 to a byte array.
NewBlock creates and returns Block.
NewBlockchain creates a new Blockchain with genesis Block.
NewCoinbaseTX creates a new coinbase transaction.
NewGenesisBlock creates and returns genesis Block.
NewMerkleNode creates a new Merkle tree node.
NewMerkleTree creates a new Merkle tree from a sequence of data.
NewProofOfWork builds and returns a ProofOfWork.
NewTXOutput create a new TXOutput.
NewUTXOTransaction creates a new transaction.
NewWallet creates and returns a Wallet.
NewWallets creates Wallets and fills it from a file if it exists.
ReverseBytes reverses a byte array.
StartServer starts a node.
ValidateAddress check if address if valid.
# Structs
Block represents a block in the blockchain.
Blockchain implements interactions with a DB.
BlockchainIterator is used to iterate over blockchain blocks.
CLI responsible for processing command line arguments.
MerkleNode represent a Merkle tree node.
MerkleTree represent a Merkle tree.
ProofOfWork represents a proof-of-work.
Transaction represents a Bitcoin transaction.
TXInput represents a transaction input.
TXOutput represents a transaction output.
TXOutputs collects TXOutput.
UTXOSet represents UTXO set.
Wallet stores private and public keys.
Wallets stores a collection of wallets.