BLC

package
v0.0.0-...-c7dd34c Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2021 License: AGPL-3.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IntToHex

func IntToHex(data int64) []byte

实现int64转[]byte

func IsValidArgs

func IsValidArgs()

参数数量的检测函数

func JSONToSlice

func JSONToSlice(jsonString string) []string

标准JSON格式转切片 windows下需要添加引号 bc.exe send -from "[\"troytan\"]" -to "[\"Alice\"]" -amount "[\"100\"]"

func PrintUsage

func PrintUsage()

用法展示

Types

type Block

type Block struct {
	TimeStamp    int64  //区块时间戳,代表区块时间
	Hash         []byte //当前区块哈希
	PreBlockHash []byte //前区块哈希
	Height       int64  //区块高度
	//Data      []byte  //交易数据
	Txs   []*Transaction //交易数据(交易列表)
	Nonce int64          //在运行pow时生成的哈希变化值,也代表pow运行时动态修改的数据
}

区块基本结构与功能管理文件

func CreateGenesisBlock

func CreateGenesisBlock(txs []*Transaction) *Block

生成创世区块

func DeserializeBlock

func DeserializeBlock(blockBytes []byte) *Block

区块数据反序列化

func NewBlock

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

新建区块

func (*Block) HashTransaction

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

把指定区块中所有交易结构都序列化(类Merkle的哈希计算方法)

func (*Block) Serialize

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

区块结构序列化

type BlockChain

type BlockChain struct {
	//Blocks []*Block //区块的切片
	DB *bolt.DB //数据库对象

	Tip []byte //保存最新区块的哈希值
}

区块链的基本结构

func BlockChainObject

func BlockChainObject() *BlockChain

获取一个blockchain对象

func CreateBlockChainWithGenesisBlock

func CreateBlockChainWithGenesisBlock(address string) *BlockChain

初始化区块链

func (*BlockChain) AddBlock

func (bc *BlockChain) AddBlock(txs []*Transaction)

添加区块到区块链中

func (*BlockChain) Iterator

func (blc *BlockChain) Iterator() *BlockChainIterator

创建迭代器对象

func (*BlockChain) MineNewBlock

func (blockchain *BlockChain) MineNewBlock()

实现挖矿功能 通过接收交易生成区块

func (*BlockChain) PrintChain

func (bc *BlockChain) PrintChain()

遍历数据库,输出所有区块信息

type BlockChainIterator

type BlockChainIterator struct {
	DB          *bolt.DB //迭代目标
	CurrentHash []byte   //当前接待目标的哈希
}

迭代器基本结构

func (*BlockChainIterator) Next

func (bcit *BlockChainIterator) Next() *Block

实现迭代函数next,获取到每一个区块

type CLI

type CLI struct {
	BC *BlockChain //区块链对象
}

client对象

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

创建一个POW对象

func (*ProofOfWork) Run

func (proofOfWork *ProofOfWork) Run() ([]byte, int)

执行pow,比较哈希值 返回哈希值,以及碰撞次数

type Transaction

type Transaction struct {
	//交易哈希(标识)
	TxHash []byte
	//输入列表
	Vins []*TxInput
	//输出列表
	Vouts []*TxOutput
}

定义一个交易基本结构

func NewCoinbaseTransaction

func NewCoinbaseTransaction(address string) *Transaction

实现coinbase交易

func (*Transaction) HashTransaction

func (tx *Transaction) HashTransaction()

生成交易哈希(交易序列化)

type TxInput

type TxInput struct {
	//交易哈希(不是指当前交易的哈希)
	TxHash []byte
	//引用的上一笔交易的输出索引号
	Vout int
	//用户名
	ScriptSig string
}

输入结构

type TxOutput

type TxOutput struct {

	//用户名(UTXO)的所有者
	ScriptPubkey string
	// contains filtered or unexported fields
}

输出结构

Jump to

Keyboard shortcuts

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