/blockchain

a simple blockchian demo

Primary LanguageJavaScript

传统记账

  1. 村长负责记账
  2. 谁收入多少
  3. 谁给谁转账

区块链记账

  1. 每个人都有记账权利
  2. 每个交易都会全网广播, 一起记录
  3. 账本每一页是一个区块
  4. 区块上有一个数 指向前一个区块
  5. 什么时候同步: 挖矿(竞争获得记账权)

交易

  1. 交易信息:小明 小红 100块钱
  2. 私钥加密信息(小明 小红 100块钱) sig(交易信息加了一个签名) 地址就是公钥,可以校验sig

矿工打包的时候,会进行每个交易的合法校验

  1. sig是签名校验合法
  2. 账号的余额够不够

P2P网络

服务器 都从这里获取 peer to peer 朋友圈 种子(公网ip)(好朋友:小明、小红) xxx:30000 yyy:40000 网件 网件 小明 《----------------------------》 小红 你好 我是小明 你好,我是小红 回复:你好,我一个好朋友小明: ip:xxx,port:30000 打洞,点对点交互,不用通过周边服务器

udp 协议

只管发,不管你有没有收到,打洞基本使用它 用node.js自带模块dgram来处理udp

多进程

监听用户输入 (yq-chain) 拍一个小弟去监听udp端口 有啥消息就回来告诉我(新增节点,新交易,新挖矿) node 自带的 child_process 新建小弟

@todo

  1. 新节点加入,同步种子节点的区块链信息
  2. 挖矿广播
  3. 交易广播