BLC

package
v0.0.0-...-afd30a4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DBExists

func DBExists() bool

DBExists 判断数据库是否存在

func Int64ToBytes

func Int64ToBytes(num int64) []byte

func JsonToArray

func JsonToArray(jsonString string) []string

Types

type Block

type Block struct {
	// 区块高度
	Height int64
	// 当前区块 HASH 值
	Hash []byte
	// 上一个区块的 HASH 值
	PrevBlockHash []byte
	// 交易数据
	Txs []*Transaction
	// 时间戳
	Timestamp int64
	// Nonce 用于工作量整蒙
	Nonce int64
}

func CreateGenesisBlock

func CreateGenesisBlock(txs []*Transaction) *Block

CreateGenesisBlock 单独写一个方法,生成创世区块

func DeserializeBlock

func DeserializeBlock(blockBytes []byte) *Block

DeserializeBlock 反序列化区块

func NewBlock

func NewBlock(txs []*Transaction, height int64, prevBlockHash []byte) *Block

NewBlock 创建新的区块

func (*Block) HashTransactions

func (block *Block) HashTransactions() []byte

HashTransactions 将 transactions 转化为 []byte

func (*Block) Serialize

func (block *Block) Serialize() []byte

Serialize 将区块序列化成字节数组

type BlockChain

type BlockChain struct {
	Tip []byte   // 最新的区块的 Hash
	DB  *bolt.DB // 数据库
}

func CreateBlockchainWithGenesisBlock

func CreateBlockchainWithGenesisBlock(address string) *BlockChain

CreateBlockchainWithGenesisBlock 创建带有创世区块的区块链

func GetBlockChainFromBolt

func GetBlockChainFromBolt() *BlockChain

func (*BlockChain) AddBlockToBlockchain

func (blc *BlockChain) AddBlockToBlockchain(txs []*Transaction)

AddBlockToBlockchain 增加区块到区块链里面

func (*BlockChain) GetBalance

func (blc *BlockChain) GetBalance(address string) int64

func (*BlockChain) Iterator

func (blc *BlockChain) Iterator() *BlockChainIterator

func (*BlockChain) MineNewBlock

func (blc *BlockChain) MineNewBlock(from []string, to []string, amount []string) *BlockChain

MineNewBlock 挖掘新的区块

func (*BlockChain) PrintBlockChain

func (blc *BlockChain) PrintBlockChain()

PrintBlockChain 遍历输出所有区块的信息

func (*BlockChain) UnUTXOs

func (blc *BlockChain) UnUTXOs(address string) []*TXOutput

UnUTXOs 如果一个地址对应的 TxOutput 未花费,那么这个 Transaction 就应该添加到数组中返回

type BlockChainIterator

type BlockChainIterator struct {
	CurrentHash []byte
	DB          *bolt.DB
}

func (*BlockChainIterator) Next

func (blcIterator *BlockChainIterator) Next() *Block

type CLI

type CLI struct {
}

func (*CLI) Run

func (cli *CLI) Run()

type ProofOfWork

type ProofOfWork struct {
	Block *Block // 当前要验证的区块
	// contains filtered or unexported fields
}

func NewProofOfWork

func NewProofOfWork(block *Block) *ProofOfWork

func (ProofOfWork) Run

func (proofOfWork ProofOfWork) Run() ([]byte, int64)

type TXInput

type TXInput struct {
	// 交易的 Hash
	TxHash []byte
	// 存储 TXOutput 在 Vout 里面的索引
	Vout int
	// 用户名
	ScriptSig string
}

func (*TXInput) UnLockWithAddress

func (txInput *TXInput) UnLockWithAddress(address string) bool

UnLockWithAddress 判断当前的消费是谁的钱

type TXOutput

type TXOutput struct {
	Money        int64
	ScriptPubKey string // 公钥
}

func (*TXOutput) UnLockScriptPubKeyWithAddress

func (txOutput *TXOutput) UnLockScriptPubKeyWithAddress(address string) bool

UnLockScriptPubKeyWithAddress 解锁

type Transaction

type Transaction struct {
	TxHash []byte
	Vins   []*TXInput
	Vouts  []*TXOutput
}

Transaction UTXO

func NewCoinbaseTransaction

func NewCoinbaseTransaction(address string) *Transaction

NewCoinbaseTransaction 1. 创世区块创建时的 Transaction

func NewSimpleTransaction

func NewSimpleTransaction(from string, to string, amount int) *Transaction

NewSimpleTransaction 2. 转账时产生的 Transaction

func (*Transaction) HashTransaction

func (tx *Transaction) HashTransaction()

func (*Transaction) IsCoinbaseTransaction

func (tx *Transaction) IsCoinbaseTransaction() bool

IsCoinbaseTransaction 判断当前交易是否是 Coinbase 交易

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL