Documentation ¶
Index ¶
- func Base58Decode(input []byte) []byte
- func Base58Encode(input []byte) []byte
- func CheckSum(input []byte) []byte
- func IntToHex(data int64) []byte
- func IsValidArgs()
- func IsValidForAddress(addressBytes []byte) bool
- func JSONToSlice(jsonString string) []string
- func PrintUsage()
- func Reverse(data []byte)
- func Ripemd160Hash(pubKey []byte) []byte
- func StringToHash160(address string) []byte
- type Block
- type BlockChain
- func (bc *BlockChain) AddBlock(txs []*Transaction)
- func (blockchain *BlockChain) FindSpendableUTXO(from string, amount int, txs []*Transaction) (int, map[string][]int)
- func (blc *BlockChain) Iterator() *BlockChainIterator
- func (blockchain *BlockChain) MineNewBlock(from, to, amount []string)
- func (bc *BlockChain) PrintChain()
- func (blockchain *BlockChain) SpentOutput(address string) map[string][]int
- func (blockchain *BlockChain) UnUTXOS(address string, txs []*Transaction) []*UTXO
- type BlockChainIterator
- type CLI
- type ProofOfWork
- type Transaction
- type TxInput
- type TxOutput
- type UTXO
- type Wallet
- type Wallets
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func JSONToSlice ¶
标准JSON格式转切片 windows下需要添加引号 bc.exe send -from "[\"troytan\"]" -to "[\"Alice\"]" -amount "[\"5\"]" bc.exe send -from "[\"troytan\",\"Alice\"]" -to "[\"Alice\",\"troytan\"]" -amount "[\"5\",\"2\"]" troytan ->Alice 5 -->Alice 5 troytan 5 Alice ->troytan 2 -->Alice 3 troytan 7
Types ¶
type Block ¶
type Block struct { TimeStamp int64 //区块时间戳,代表区块时间 Hash []byte //当前区块哈希 PreBlockHash []byte //前区块哈希 Height int64 //区块高度 //Data []byte //交易数据 Txs []*Transaction //交易数据(交易列表) Nonce int64 //在运行pow时生成的哈希变化值,也代表pow运行时动态修改的数据 }
区块基本结构与功能管理文件
func (*Block) HashTransaction ¶
把指定区块中所有交易结构都序列化(类Merkle的哈希计算方法)
type BlockChain ¶
区块链的基本结构
func CreateBlockChainWithGenesisBlock ¶
func CreateBlockChainWithGenesisBlock(address string) *BlockChain
初始化区块链
func (*BlockChain) FindSpendableUTXO ¶
func (blockchain *BlockChain) FindSpendableUTXO(from string, amount int, txs []*Transaction) (int, map[string][]int)
查找指定地址的可用UTXO,超过amount就中断查找 更新当前数据库中指定地址的UTXO数量 txs:缓存中的交易列表(用于多笔交易处理)
func (*BlockChain) MineNewBlock ¶
func (blockchain *BlockChain) MineNewBlock(from, to, amount []string)
实现挖矿功能 通过接收交易生成区块
func (*BlockChain) SpentOutput ¶
func (blockchain *BlockChain) SpentOutput(address string) map[string][]int
获取指定地址所有已花费输出
func (*BlockChain) UnUTXOS ¶
func (blockchain *BlockChain) UnUTXOS(address string, txs []*Transaction) []*UTXO
type BlockChainIterator ¶
迭代器基本结构
type ProofOfWork ¶
type ProofOfWork struct { //需要共识验证的模块 Block *Block // contains filtered or unexported fields }
工作量证明的结构
func (*ProofOfWork) Run ¶
func (proofOfWork *ProofOfWork) Run() ([]byte, int)
执行pow,比较哈希值 返回哈希值,以及碰撞次数
type Transaction ¶
type Transaction struct { //交易哈希(标识) TxHash []byte //输入列表 Vins []*TxInput //输出列表 Vouts []*TxOutput }
定义一个交易基本结构
func NewSimpleTransaction ¶
func NewSimpleTransaction(from string, to string, amount int, bc *BlockChain, txs []*Transaction) *Transaction
生成普通转账交易
func (*Transaction) IsCoinbaseTransaction ¶
func (tx *Transaction) IsCoinbaseTransaction() bool
判断指定的交易是否是一个coinbase交易
type TxInput ¶
type TxInput struct { //交易哈希(不是指当前交易的哈希) TxHash []byte //引用的上一笔交易的输出索引号 Vout int //数字签名 Signature []byte //公钥 PublicKey []byte }
输入结构
func (*TxInput) UnLockRipemd160Hash ¶
传递哈希160进行判断
type UTXO ¶
type UTXO struct { //UTXO对应的交易哈希 TxHash []byte //UTXO在其所属交易的输出列表中的索引 Index int //Output本身 Output *TxOutput }
UTXO结构管理
type Wallet ¶
type Wallet struct { //1.私钥 PrivateKey ecdsa.PrivateKey //2.公钥 PublicKey []byte }
钱包基本结构
Click to show internal directories.
Click to hide internal directories.