Skip to content

record one block chain experiment and try my best to improve the function

Notifications You must be signed in to change notification settings

wxk2024/homework_BlockChain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

区块链实验

实验流程

1.python net_node.py :五个节点启动

2.python generate.py :向五个节点发送交易


  • 交易验证使用 pay-to-public-key
  • 钱包公私钥地址计算使用椭圆曲线
  • 网络路由节点抽象成 Router,公共端口 8333
    • MinerNode 继承 Router,对广播的交易进行验证打包上链
    • 挖矿部分没有实现,Difficult 字段没用到计算上
  • ./data 中包括创世区块和创世交易
  • 区块中 merkle_tree 需要实现
  • 根据 merkle_tree 重新计算 hash 值
  • 如果 8333 连接不上,需要投票选出新节点
  • 新来的孤儿区块,需要暂存起来而不是直接抛出异常
  • 当两个节点对新区块产生了不同的意见,会分叉
  • SPV 钱包节点的实现

学习笔记:

  1. 防止双花攻击的措施
  • 时间戳机制:一个交易并不是在被矿工写到一个区块上时就生效了,而是要等这条链真正的成为了链上的最长链之后,才认为交易真正不可逆。这也就是为什么每次转账后,都建议等待 六次确认,交易所在区块之后每新增一个区块,就是一次确认,等待六次确认之后,大部分矿工都承认这条链是最长链,交易将不可逆转。
  • 最长链原则 :由于随机数和网络延迟等原因,可能会出现两个矿工同一时间挖出区块,如果他们一起参与记账,就会造成区块链分叉。系统会根据最长链进行取舍,哪条链上新产生的区块可以使得区块链变得更长,哪条便是最长链(主链),而短链则被所有矿工淘汰,矿工通过记账来换取挖矿奖励,即使部分节点矿工作恶修改账本,其节点也不会承认,从而避免双花。

About

record one block chain experiment and try my best to improve the function

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages