区块链的原理与应用? -2

简介: 接着上一篇.上一篇还没有输出,其实加入了index在实体类中.package com.sha256.sha256.bean;import com.sha256.sha256.utils.SHA256Util;import lombok.

接着上一篇.
上一篇还没有输出,其实加入了index在实体类中.

package com.sha256.sha256.bean;

import com.sha256.sha256.utils.SHA256Util;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Block {

    private long index;
    private String hash; // our signature
    private String previousHash; // the hash of previous block
    private String data; //our data will be a simple message.
    private long timeStamp; //as number of milliseconds since 1/1/1970.

    //Block Constructor
    public Block(long index,String data,String previousHash){
        this.index = index;
        this.data = data;
        this.previousHash = previousHash;
        this.timeStamp = new Date().getTime();
        this.hash = SHA256Util.calculateHash(this); //Making sure we do this after we set the other values.
    }
}

测试类:

package com.sha256.sha256.test;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
import com.sha256.sha256.bean.Block;
import com.sha256.sha256.utils.SHA256Util;

import java.util.ArrayList;
import java.util.Random;

public class TestSHA256 {

    //声明一个区块链,用于添加Block实体
    public static ArrayList<Block> blockChain = new ArrayList<>();

    public static void main(String[] args) {
        //test1 测试三个被加密字符串 加密后的hash值的差别
        /**
         * 虽然第三条信息仅仅多一个".",但加密后的数据hash相差极大
         */
//        String message0 = "我是要被加密的信息";
//        String message1 = "我是要被加密的信息";
//        String message2 = "我是要被加密的信息.";
//        String encryptionMessage0 = SHA256Util.applySha256(message0);
//        String encryptionMessage1 = SHA256Util.applySha256(message1);
//        String encryptionMessage2 = SHA256Util.applySha256(message2);
//        System.out.println(encryptionMessage0);
//        System.out.println(encryptionMessage1);
//        System.out.println(encryptionMessage2);
//
//        //test2 创建区块链逻辑, 因为第一个块没有上一个块的hash头部值,所以输入0 作为前一个块的previous hash
//        /**
//         * 由于在{@link SHA256Util#calculateHash(Block)}
//         * 中对同时产生的new Date().getTime() (timestamp)
//         * 也加入进行了hash加密,所以固有的message (data)及
//         * previoushash之和进行了加密.
//         */
//        Block genesisBlock = new Block(0,"这是第一个区块中的要被加密的信息和交易信息","0");
//        String hash1 = genesisBlock.getHash();
//        System.out.println("Hash for block 1 : "+hash1);
//
//        Block secondBlock = new Block(1,"这是第二个区块,以及其中信息!!!它的前区块头部hash我们拿上一个的来使用",hash1);
//        String hash2 = secondBlock.getHash(); //
//        System.out.println("Hash for block 2 : "+hash2);
//
//        Block thirdBlock = new Block(2,"这是第三个区块,它的hash应该已经被前两个的信息纳入进来了,它的hash如果对不上,那么说明前面的信息被改动过了",hash2);
//        String hash3 = thirdBlock.getHash();
//        System.out.println("Hash for block 3 : "+hash3);
//
////        test3 add our blocks to the blockchain ArrayList :
//        blockChain.add(new Block(0,"区块链上第一小节","0"));
//        blockChain.add(new Block(1,"区块链第二小节",blockChain.get(blockChain.size()-1).getHash()));
//        blockChain.add(new Block(2,"区块链第三小节",blockChain.get(blockChain.size()-1).getHash()));
        int chainNumber = 24;
        int index = 0;
        while (chainNumber > 0) {
            System.out.println("blockChain.size():" + blockChain.size());
            if (blockChain.size() == 0) {
                blockChain.add(new Block(0, "创世块", "0"));
            }
            index++;
            blockChain.add(new Block(index, "区块内容" + blockChainMessage(index), blockChain.get(blockChain.size() - 1).getHash()));
            chainNumber--;
        }

//        JSONArray blockChainJson1 = (JSONArray)JSONArray.toJSON(blockChain); //JSONArray是不排版的
//        System.out.println(blockChainJson1);
        String blockChainJson = new GsonBuilder().setPrettyPrinting().create().toJson(blockChain);

        System.out.println(blockChainJson);
    }


    //模拟一些交易信息
    private static String blockChainMessage(int getNumber) {
        Random random = new Random(getNumber);
        long l = random.nextLong();
        System.out.println("blockChainMessage:" + l);
        return String.valueOf(l);
    }
}
相关文章
|
17天前
|
存储 传感器 监控
未来智能城市中的区块链技术应用
随着城市化进程不断加速,智能城市成为了未来城市发展的主要趋势之一。区块链技术作为一种去中心化、安全可靠的数据传输和存储方式,将在智能城市建设中发挥关键作用。本文将探讨区块链技术在智能城市中的应用场景,并分析其对城市管理、信息共享和安全保障等方面的积极影响。
14 2
|
24天前
|
存储 供应链 区块链
区块链技术在供应链管理中的应用与展望
随着区块链技术的不断发展,其在供应链管理领域的应用愈发广泛。本文将深入探讨区块链技术在供应链管理中的具体应用及未来发展趋势,分析其对供应链透明度、可追溯性和安全性的影响,并展望区块链技术在未来供应链管理中的潜在作用和挑战。
17 0
|
27天前
|
供应链 安全 区块链
区块链技术在供应链管理中的应用与挑战
传统的供应链管理面临着信息不对称、数据共享困难等问题,而区块链技术的出现为供应链管理带来了新的解决方案。本文将介绍区块链技术在供应链管理中的应用情况,探讨其优势和挑战,并提出未来发展的方向。
39 2
|
1月前
|
供应链 监控 安全
构建未来:区块链技术在供应链管理中的应用
【2月更文挑战第24天】 随着数字化转型的深入发展,区块链技术已从加密货币的阴影下走出,成为创新供应链管理模式的前沿技术。本文将探讨区块链在供应链管理中的具体应用,包括提高透明度、优化库存管理、加强溯源能力以及增进多方信任等方面。通过分析实际案例,我们将揭示区块链技术如何助力企业实现更高效、更安全、更透明的供应链体系。
|
27天前
|
存储 人工智能 供应链
区块链技术在供应链管理中的应用
传统的供应链管理系统存在着诸多问题,如信息不对称、数据可信度低等。区块链技术作为一种分布式账本技术,在供应链管理中具有独特优势。本文将探讨区块链技术在供应链管理中的应用,介绍其原理和优势,并分析实际案例以及未来发展趋势。
|
27天前
|
存储 传感器 物联网
新技术驱动未来:区块链、物联网、虚拟现实的蓬勃发展与创新应用
随着科技的迅猛发展,新兴技术如区块链、物联网、虚拟现实等正成为当今社会关注的焦点。本文将探讨这些新技术的发展趋势和广泛应用场景,展示它们在不同领域中的潜力与创新价值。
|
5天前
|
供应链 算法 安全
区块链技术的应用与前景展望
区块链技术的应用与前景展望
|
16天前
|
供应链 安全 区块链
区块链技术在供应链管理中的应用与前景
传统的供应链管理存在着信息不对称、数据篡改等问题,而区块链技术的去中心化、不可篡改、可追溯等特点为解决这些问题提供了新的可能性。本文将探讨区块链技术在供应链管理中的应用现状及未来前景,分析其对供应链透明性、效率和安全性的提升,以及面临的挑战和发展趋势。
20 5
|
22天前
|
供应链 监控 物联网
新技术浪潮:区块链、物联网与虚拟现实的发展趋势与应用探讨
在当今数字化时代,新兴技术如区块链、物联网和虚拟现实正以惊人的速度改变着我们的生活和工作方式。本文将探讨这些新技术的发展趋势和应用场景,分析它们在不同领域中的潜力和影响。
17 4
|
24天前
|
供应链 物联网 5G
新兴科技探索:区块链、物联网、虚拟现实的未来应用前景
在当今数字化快速发展的时代,新兴技术如区块链、物联网、虚拟现实等正逐渐改变我们的生活方式和商业模式。本文将深入探讨这些新技术的发展趋势和多样化应用场景,展望其在未来的巨大潜力。

热门文章

最新文章