基于POW共识的区块链系统
- git clone https://github.com/SteveWooo/swc
- cd swc
- git checkout v1.0.0
- npm i
- 窗口1 : node ./startup.js
- 窗口2 : node ./startup.js c1 7001
- 窗口3 : node ./union_test/miner_web.js
- 浏览器打开 http://localhost:7002/static/index.html
./node startup.js {全局唯一客户端编号(beta版本会自动分配)} {p2p节点端口号}
参数:交易数据,公密钥
交易内容传递给所有节点,然后节点缓存交易
根据prev_block,计算nonce
计算完nonce,把当前本地缓存的所有交易绑定到区块中
把区块数据+交易数据广播到p2p网络中
p2p网络中的节点接受到区块信息后,验证区块签名与所有交易签名正确无误后,写入本地
- 1:网络层(传输数据)
- 2:持久层(持久存储数据)
- 3:表示层(解析交易数据)
- 4:应用层(后谈)
- 主链作用:用于记录主链货币,侧链app的新区块markle_root;
- app:指侧链,目的是在用户需要使用这个app时才去下载该app的区块信息。
- app同步:如果2个app数据需要进行交互,则在两个app的新区块中加入带sync事件的新区块。
- (记录同步区块的矿工必须同时下载两个app到本地,并且在遇到sync事件时,校验两个app是否同步拥有这个交易。
- 挖矿:app独立挖矿,主链公开挖矿。app挖矿需要指定给特定的挖矿账号才能使用。