通过本文,你将可以做到: 创建自己的区块链 理解 hash 函数是如何保持区块链的完整性的 如何创造并添加新的块 多个节点如何竞争生成块 通过浏览器来查看整个链 所有其他关于区块链的基础知识 但是,对于比如工作量证明算法(PoW)以及权益证明算法(PoS) 这类的共识算法文章中将不会涉及。同时为了让你更清楚得查看 区块链以及块的添加,我们将网络交互的过程简化了,关于 P2P 网络比如“对等网络”等内容将在将来的文章中讲解。 让我们开始吧!
设置
我们假设你已经具备一点 Java 语言的开发经验,以及maven项目构建经验。 在安装和配置 Java 开发环境后之后,我们新建maven项目,在pom中增加一些依赖: <!--超小型web框架--> <dependency> <groupId>com.sparkjava</groupId> <artifactId>spark-core</artifactId> <version>${spark.version}</version> </dependency>
Spark-web Framework是一个基于jetty的超小型框架,我们用它来写http访问的请求处理。 <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>${commons.codec.version}</version> </dependency>
这个通用包拥有几乎所有加解密算法及常规操作 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>${gson.version}</version> </dependency>
Google的json包,当然你可以使用你喜欢的其他json包。 最后,增加log相关的包 <!--log start--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- log end -->
相关版本属性设置 <properties> <commons.codec.version>1.9</commons.codec.version> <spark.version>2.6.0</spark.version> <slf4j.version>1.6.6</slf4j.version> <log4j.version>1.2.17</log4j.version> <gson.version>2.8.2</gson.version> </properties>
数据模型