2021年6月

实现的功能

  • 多线程实现包含多节点的区块链网络
  • 客户端可向区块链网络提交交易
  • 区块链节点含有交易池,打包区块时从交易池中提取交易。
  • 客户端使用ECDSA算法对交易进行签名,并用JSON序列化交易
  • 交易池可维护节点内未加入区块链的交易
  • 使用POW工作量证明生成区块,并在区块链网络中进行共识
  • 使用最长链原则作为区块链分叉的解决方案
  • 存储模块打印落盘日志
  • 执行模块仅模拟执行交易,并不具备实际意义
  • 存储模块仅在内存中进行存储,不涉及磁盘存储
  • 不包含网络通信

- 阅读剩余部分 -

简介

  • 本文主要使用keytool分别为服务端与客户端生成公私钥对,并利用java.security包下的工具读取Keystore中的Key,用于创建基于SSL/TLS双向认证的Socket连接,并Java.net包下的Socket与ServerSocket实现一个简单的服务端与客户端之间的通信,该通信模型为BIO模型
  • 在本项目中,服务端采用线程池维护一定数量的线程,用以保持与客户端间的通信。
  • 不使用SSL/TLS加密可查看此文章:使用Java进行Socket编程

- 阅读剩余部分 -

前置知识域

Keytool

Keytool简介

  • Keytool是Java数据证书的管理工具,该工具位于JDK的安装目录下。所有的数字证书采用alias(别名)进行区分,并存入到Keystore中,Keystore中的每个证书包含该条证书的私钥、公钥与对应的数字证书信息。
  • Keystore中的一个Key可以导出为数字证书文件,包括主题信息与对应公钥。
  • Trusted certificate entries为可信任的证书实体,一般只包含信任的公钥。
  • keypass是keystore中key的密码,该密码可以获取公私钥对
  • storepass是kestore的密码,该密码可以获得存储在keystore中的key

- 阅读剩余部分 -