区块链的原理与应用? -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);
    }
}
相关文章
|
13天前
|
存储 供应链 安全
探索区块链技术在供应链管理中的应用
【4月更文挑战第26天】 随着数字化时代的深入发展,区块链技术凭借其不可篡改性、透明度和去中心化特性,正在逐步渗透到各行各业,特别是在供应链管理领域展现出巨大潜力。本文将详细分析区块链技术如何优化供应链流程,提升效率与安全性,并探讨其在实际业务中的应用案例和面临的挑战。通过技术原理解析与实践案例相结合的方式,旨在为读者提供一个全面了解区块链在供应链管理中应用的窗口。
|
13天前
|
传感器 供应链 物联网
未来技术纵横谈:区块链、物联网与虚拟现实的新进展与融合应用
【4月更文挑战第25天】 随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)、虚拟现实(VR)等正在不断突破传统边界,引领着新一轮的产业变革。本文将深入探讨这些技术的当前发展趋势、面临的挑战以及在不同领域的创新应用场景。区块链技术以其不可篡改和去中心化的特性,在金融、供应链管理中发挥着越来越重要的作用;物联网通过智能设备的互联互通,实现数据的高效收集与分析,推动智慧城市和智能家居的发展;而虚拟现实则在游戏娱乐、教育培训等领域提供了沉浸式的体验。这些技术的融合与交叉应用,预示着一个更加互联、智能和虚拟的未来。
|
1天前
|
供应链 物联网 区块链
未来技术纵横谈:区块链、物联网及虚拟现实的新进展与应用探索
【5月更文挑战第8天】 随着科技的不断进步,新兴技术如区块链、物联网(IoT)、虚拟现实(VR)等正在重塑我们的世界。本文将深入探讨这些技术的发展趋势和多样化的应用场景,旨在为读者提供一个关于如何利用这些技术进行创新的思路。区块链技术以其不可篡改性和去中心化的特点,在金融安全、供应链管理等领域得到广泛应用。物联网通过智能设备的互联互通,推动了智能家居、智慧城市的发展。而虚拟现实则在游戏娱乐、教育培训等方面提供了沉浸式的体验。这些技术的发展不仅带来了新的挑战,也为企业和消费者创造了前所未有的价值。
|
2天前
|
供应链 区块链 数据安全/隐私保护
构建未来:区块链在供应链管理中的应用
【5月更文挑战第7天】 随着数字化浪潮的不断推进,区块链技术已从其加密货币的根源扩展到多个行业领域。特别是在供应链管理中,它的应用潜力正在逐步显现。本文将探讨区块链技术如何革新供应链管理,包括提高透明度、增强安全性和降低成本等方面。通过分析实际案例,我们揭示了这一新兴技术对传统供应链管理模式的挑战与机遇。
|
7天前
|
存储 供应链 安全
区块链技术在供应链管理中的应用及挑战
【5月更文挑战第2天】 随着数字化转型的不断深化,区块链技术作为一项创新技术,其在供应链管理领域的应用逐渐显现出独特的价值。本文将深入探讨区块链在供应链中的实际应用案例,分析其如何增强供应链透明度、提升效率以及保障商品的真实性和安全性。同时,也将剖析在实施过程中遭遇的技术挑战、法律监管问题以及与现有系统的兼容性问题,并提出相应的解决策略,以期为企业实现更高效、更安全的供应链管理提供参考。
17 1
|
8天前
|
供应链 Java API
Java 8新特性解析及应用区块链技术在供应链管理中的应用与挑战
【4月更文挑战第30天】本文将深入探讨Java 8的新特性,包括Lambda表达式、Stream API和Optional类等。通过对这些新特性的详细解析和应用实例,帮助读者更好地理解和掌握Java 8的新技术。
|
9天前
|
存储 供应链 安全
区块链技术原理及应用:深入探索分布式账本技术
【4月更文挑战第30天】区块链,从加密货币的底层技术延伸至多元领域,以其分布式账本、去中心化、不可篡改性及加密技术重塑数据存储与交易。核心组件包括区块、链和节点,应用涵盖加密货币、供应链管理、金融服务等。尽管面临扩展性等挑战,未来潜力无限。
|
10天前
|
供应链 安全 物联网
新技术趋势与应用:探讨新兴技术如区块链、物联网、虚拟现实等的发展趋势和应用场景
【4月更文挑战第29天】 随着科技的快速发展,新兴技术如区块链、物联网、虚拟现实等正在逐渐改变我们的生活。本文将深入探讨这些新兴技术的发展趋势和应用场景,以及它们如何影响我们的日常生活和工作。
|
10天前
|
人工智能 供应链 安全
探索区块链技术在供应链管理中的应用
【4月更文挑战第29天】 随着数字化转型的不断深入,传统供应链管理模式正面临诸多挑战。透明度不足、效率低下以及安全性问题成为制约供应链发展的关键因素。本文将探讨区块链技术如何为供应链管理带来革新性的影响,通过其不可篡改的数据记录、去中心化的网络结构和增强的安全性,提升整个供应链的透明度和效率。我们将分析区块链在供应链金融、产品追溯和智能合约等方面的应用实例,并讨论实施过程中面临的技术挑战及未来发展趋势。
|
10天前
|
供应链 区块链 数据安全/隐私保护
构建未来:区块链在供应链管理中的创新应用
【4月更文挑战第29天】 随着数字化转型的不断深入,区块链技术已从加密货币的阴影中走出,成为供应链管理领域创新实践的重要推动力。本文将探讨区块链如何优化供应链流程、提升透明度与效率,并保障数据安全。通过分析具体案例和最新技术进展,我们将揭示区块链对现代供应链管理的深远影响。

热门文章

最新文章