Hi Guest

More contents, please log on!

Bitmere.com 区块链前沿 Content

挖矿流程及代码实现笔记

伤心骑士口
17 0 0
transaction.go 文件引入了一个新的结构体 Transaction,一个交易包含很多输入输出。
发币交易coinbase:用于奖励挖矿成功的交易
交易记录对象的属性:
交易记录
交易输入
交易输出
把比特币从一个地址发转到另一个地址(转账交易/普通交易)是什么意思?
存在区块链查询是否有足够的余额
输出
系统找零
比特币要么你不花,要么全花掉,然后系统找零。
交易记录这张图是理解的关键

来源:5-1 交易记账原理及过程
没花掉是什么意思?
首先到区块链中遍历所有的区块,把余额/没有花出去的Output找出来,然后把余额累加出来,先看看够不够资格转账,如果够资格,则按照Output一笔笔往外转就可以了,如果需要找零则在新的交易里面做一个Output来找零
数字地址(必须唯一):叫做比特币的钱包
为什么比特币的数量是有限?一直挖下去不是无限吗?
为什么交易的输入和输出不可能相同?
初始化 bitcoin_part4 839d69e
添加命令行主命令 d40bf3e
添加命令行主命令的选项参数 b4caf5
解析主命令并获得全部选项参数到命令对象中去 54637fd
根据解析结果调用函数,调用了查询余额的函数,调用了创建区块链的函数(挖矿)
添加CLI对象的成员函数 createBlockchain 和 getBalance ,成员函数再调用核心库函数 744f01a
创建发币交易函数 NewCoinbaseTX(to, data string) *Transaction 6c7bb05
交易对象的成员函数设置交易序号 (tx *Transaction) SetID() 4a5bab6
交易序号使用哈希值可以验证输入输出有没有被改变过
完成命令行函数 (cli *CLI) printUsage() b58dcbb
NewUTXOTransaction(from, to string, amount int, bc *Blockchain) *Transaction 3f8be71

Go语法
log.Panic("…")
结构体编码为字节数组的方法
var encoded bytes.Buffer //字符数组缓冲器对象,encoded.Bytes()
enc : gob.NewEncoder(&encoded) //传递进指针
err := gob.Encode(tx)
if err != nil {
    log.Panic(err)
}
hash = sha256.Sum256(encoded.Bytes())
tx.ID = hash[:]
结构体的初始化 []TXInput{}
const subsidy = 10
算法
疑问
挖矿成功奖励的10个比特币来自哪里?挖矿成功是什么意思?区块的Data部分存放的是真实的Transaction结构体?
现在使用真实的交易记录结构体取代描述占位符
每次进行交易就要创建区块?创建区块链和发币是什么关系?每个区块和钱包地址是什么关系?交易不是应该记录在每个区块上,还是说区块链存在在每个区块上?怎么知道有交易的?有交易了就开始挖矿?原来的区块都不能在有任何改动了?奖励交易是最简单的交易,只要挖矿就会存储这么一个交易?多个人同时挖矿不是资源浪费吗?NewBlockchain 和 CreateBlockchain 有什么区别呢, 注释都是一样的?
CreateBlockchain 这个要先于 NewBlockchain 存在, CreateBlockchain 用于创建创世区块区块链, NewBlockchain 的作用应该就是获取区块链信息.
为什么send里面调用的是NewBlockchain(from)?NewBlockchain 和 MineBlock 有什么区别?
MineBlock 意思更明确
为什么交易输入里面有交易序号Txid,交易输出TXOutput没有交易序号?做完了?haha

小结
理解的话还是要看那个视频课程。有代码的情况下,一定要忍住不要找其他资料,没有任何资料会比写代码的人更懂过程原理。拿个笔和纸随便写写,有利于启发思路。记得太乱了
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

伤心骑士口 初中生
  • Follow

    0

  • Following

    0

  • Articles

    21

Promoted