Documentation ¶
Index ¶
- func IntToHex(num int64) []byte
- type Block
- type Blockchain
- func (bc *Blockchain) AddBlock(block *Block)
- func (bc *Blockchain) FindTransaction(ID []byte) (Transaction, error)
- func (bc *Blockchain) FindUTXO() map[string]TXOutputs
- func (bc *Blockchain) GetBestHeight() int
- func (bc *Blockchain) GetBlock(blockHash []byte) (Block, error)
- func (bc *Blockchain) GetBlockHashes() [][]byte
- func (bc *Blockchain) Iterator() *BlockchainIterator
- func (bc *Blockchain) MineBlock(transactions []*Transaction) *Block
- func (bc *Blockchain) SignTransaction(tx *Transaction, privKey ecdsa.PrivateKey)
- func (bc *Blockchain) VerifyTransaction(tx *Transaction) bool
- type BlockchainIterator
- type CLI
- type ProofOfWork
- type Transaction
- func (tx *Transaction) Hash() []byte
- func (tx Transaction) IsCoinbase() bool
- func (tx Transaction) Serialize() []byte
- func (tx *Transaction) Sign(privKey ecdsa.PrivateKey, prevTXs map[string]Transaction)
- func (tx Transaction) String() string
- func (tx *Transaction) TrimmedCopy() Transaction
- func (tx *Transaction) Verify(prevTXs map[string]Transaction) bool
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Block ¶
type Block struct { Timestamp int64 Transactions []*Transaction PrevBlockHash []byte Hash []byte Nonce int Height int }
Block represents a block in the blockchain
func DeserializeBlock ¶
DeserializeBlock deserializes a block
func NewBlock ¶
func NewBlock(transactions []*Transaction, prevBlockHash []byte, height int) *Block
NewBlock creates and returns Block
func NewGenesisBlock ¶
func NewGenesisBlock(coinbase *Transaction) *Block
NewGenesisBlock creates and returns genesis Block
func (*Block) HashTransactions ¶
HashTransactions returns a hash of the transactions in the block
type Blockchain ¶
type Blockchain struct {
// contains filtered or unexported fields
}
Blockchain implements interactions with a DB
func CreateBlockchain ¶
func CreateBlockchain(address, nodeID string) *Blockchain
CreateBlockchain creates a new blockchain DB
func NewBlockchain ¶
func NewBlockchain(nodeID string) *Blockchain
NewBlockchain creates a new Blockchain with genesis Block
func (*Blockchain) AddBlock ¶
func (bc *Blockchain) AddBlock(block *Block)
AddBlock saves the block into the blockchain
func (*Blockchain) FindTransaction ¶
func (bc *Blockchain) FindTransaction(ID []byte) (Transaction, error)
FindTransaction finds a transaction by its ID
func (*Blockchain) FindUTXO ¶
func (bc *Blockchain) FindUTXO() map[string]TXOutputs
FindUTXO finds all unspent transaction outputs and returns transactions with spent outputs removed
func (*Blockchain) GetBestHeight ¶
func (bc *Blockchain) GetBestHeight() int
GetBestHeight returns the height of the latest block
func (*Blockchain) GetBlock ¶
func (bc *Blockchain) GetBlock(blockHash []byte) (Block, error)
GetBlock finds a block by its hash and returns it
func (*Blockchain) GetBlockHashes ¶
func (bc *Blockchain) GetBlockHashes() [][]byte
GetBlockHashes returns a list of hashes of all the blocks in the chain
func (*Blockchain) Iterator ¶
func (bc *Blockchain) Iterator() *BlockchainIterator
Iterator returns a BlockchainIterat
func (*Blockchain) MineBlock ¶
func (bc *Blockchain) MineBlock(transactions []*Transaction) *Block
MineBlock mines a new block with the provided transactions
func (*Blockchain) SignTransaction ¶
func (bc *Blockchain) SignTransaction(tx *Transaction, privKey ecdsa.PrivateKey)
SignTransaction signs inputs of a Transaction
func (*Blockchain) VerifyTransaction ¶
func (bc *Blockchain) VerifyTransaction(tx *Transaction) bool
VerifyTransaction verifies transaction input signatures
type BlockchainIterator ¶
type BlockchainIterator struct {
// contains filtered or unexported fields
}
BlockchainIterator is used to iterate over blockchain blocks
func (*BlockchainIterator) Next ¶
func (i *BlockchainIterator) Next() *Block
Next returns next block starting from the tip
type CLI ¶
type CLI struct {
// contains filtered or unexported fields
}
CLI responsible for processing command line arguments
type ProofOfWork ¶
type ProofOfWork struct {
// contains filtered or unexported fields
}
ProofOfWork represents a proof-of-work
func NewProofOfWork ¶
func NewProofOfWork(b *Block) *ProofOfWork
NewProofOfWork builds and returns a ProofOfWork
func (*ProofOfWork) Validate ¶
func (pow *ProofOfWork) Validate() bool
type Transaction ¶
type Transaction struct { ID []byte Vin []TXInput Vout []TXOutput }
Transaction represents a Bitcoin transaction
func DeserializeTransaction ¶
func DeserializeTransaction(data []byte) Transaction
DeserializeTransaction deserializes a transaction
func NewCoinbaseTX ¶
func NewCoinbaseTX(to, data string) *Transaction
NewCoinbaseTX creates a new coinbase transaction
func NewUTXOTransaction ¶
func NewUTXOTransaction(wallet *Wallet, to string, amount int, UTXOSet *UTXOSet) *Transaction
NewUTXOTransaction creates a new transaction
func (*Transaction) Hash ¶
func (tx *Transaction) Hash() []byte
Hash returns the hash of the Transaction
func (Transaction) IsCoinbase ¶
func (tx Transaction) IsCoinbase() bool
IsCoinbase checks whether the transaction is coinbase
func (Transaction) Serialize ¶
func (tx Transaction) Serialize() []byte
Serialize returns a serialized Transaction
func (*Transaction) Sign ¶
func (tx *Transaction) Sign(privKey ecdsa.PrivateKey, prevTXs map[string]Transaction)
Sign signs each input of a Transaction
func (Transaction) String ¶
func (tx Transaction) String() string
String returns a human-readable representation of a transaction
func (*Transaction) TrimmedCopy ¶
func (tx *Transaction) TrimmedCopy() Transaction
TrimmedCopy creates a trimmed copy of Transaction to be used in signing
func (*Transaction) Verify ¶
func (tx *Transaction) Verify(prevTXs map[string]Transaction) bool
Verify verifies signatures of Transaction inputs