java区块链blockchain中区块block的hash值的计算

     2022-03-29     454

关键词:

Java 区块链中区块的hash值的计算

计算方法有多种,如,可以直接String拼接,也可以用stringbuffer,或者stringbuilder 。这里采用了速度较快的stringbuilder,自己编程的时候可采用stringbuffer。
其中index是区块BLOCK的索引,timestamp是区块BLOCK的时间戳,data是区块BLOCK内包含的数据,nonce为该区块的难度系数。总体计算代码如下:

 /**
     * 计算hash服务
     * @param index 索引
     * @param previousHash 前一个区块的hash值
     * @param timestamp 时间戳
     * @param data 数据
     * @param nonce 难度系数
     * @return 当前hash
     */
    private String calculateHash(int index, String previousHash, long timestamp, String data,long nonce) {
        StringBuilder builder = new StringBuilder(index);
        builder.append(previousHash).append(timestamp).append(data).append(nonce);
        return CryptoUtil.getSHA256(builder.toString());
    }

Java区块链中SHA-256算法的简单实现

java 的SHA-256工具类的实现,用jdk自带工具MessageDigest.getInstance("SHA-256");

package cn.wenwuyi.blockchain.util;

import java.security.MessageDigest;

/**
 * 
 * 类名:CryptoUtil.java
 * 描述:TODO
 * 时间:2018年3月12日 下午7:06:04 
 * @author cn.wenwuyi
 * @version 1.0
 */
public class CryptoUtil {
    private CryptoUtil() {
    }

    public static String getSHA256(String str) {
        MessageDigest messageDigest;
        String encodeStr = "";
        try {
            messageDigest = MessageDigest.getInstance("SHA-256");
            messageDigest.update(str.getBytes("UTF-8"));
            encodeStr = byte2Hex(messageDigest.digest());
        } catch (Exception e) {
            System.out.println("getSHA256 is error" + e.getMessage());
        }
        return encodeStr;
    }

    private static String byte2Hex(byte[] bytes) {
        StringBuilder builder = new StringBuilder();
        String temp;
        for (int i = 0; i < bytes.length; i++) {
            temp = Integer.toHexString(bytes[i] & 0xFF);
            if (temp.length() == 1) {
                builder.append("0");
            }
            builder.append(temp);
        }
        return builder.toString();
    }
}

快速理解区块链

  区块链(英语:blockchain或blockchain)是借由密码学串接并保护内容的串连交易记录(又称区块)。每一个区块包含了前一个区块的加密散列、相应时间戳记以及交易数据(通常用默克尔树算法计算的散列值表示),这样... 查看详情

比特币与区块链的前世今生

...前算力确定。区块链:每一个网络中的用户不需要完整的blockchain,不过拥有完整blockchain数据的节点数算是一条blockchain的健康程度的指标之一。奖励:这个奖励初始是50每隔4年减半一次,到2140年最后一次减半后,奖励的币太小... 查看详情

java实现区块链中的区块,block的实现

1、区块是区块链的基础单元区块链由若干个区块组成,区块是区块链的基础单元2、区块链中区块的基本属性区块6个属性的说明-Index区块的索引值,区块链中的唯一键区块6个属性的说明-Timestamp区块的时间戳,用于区分区块的产... 查看详情

了解区块链(代码片段)

尽管有人认为区块链(blockchain)是一个答案先于问题的技术,但毫无疑问,这项新的技术已然是一个计算的奇迹。不过,到底区块链是什么呢 区块链   一个随时间增长,记录比特币或其他加密货币的交易的公开数字账本... 查看详情

blockchain初识(代码片段)

区块链介绍区块链最早是在比特币项目中,为比特币的运行提供一个分布式的记账平台。而区块链技术发展到现在,对于区块链的定义为,一个区块链是一个分布式的数据库,该数据库维持一个持续增长的数据记... 查看详情

漫画:什么是区块链?

...内涵的文章第一时间送达!什么是区块链?区块链,英文Blockchain,本质上是一种去中心化的分布式数据库。任何人只要架设自己的服务器,接入区块链网络,都可以成为这个庞大网络的一个节点。区块链既然本质是数据库,里... 查看详情

从零开始学区块链

...师 区块链的定义、特征与发展一、定义  区块链(Blockchain)是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。该技术方案主要让参与系统中的任意多个节点,通过一串使用密码学方法相关联产生的... 查看详情

谈谈目前我对区块链(blockchain)的认识

从IBMBluemix云平台的过程中,发现了 Blockchain这个服务,我才知道有这样一种强大火热的技术存在;只前只是知道有比特币,还申请过一个账户也想去挖矿,但后来也是不了了之了,并没有去研究过它背后的技术。前些天看到... 查看详情

以太坊区块和交易存储(代码片段)

...储是由leveldb完成的,leveldb的数据是以键值对存储的。//BlockChain表示了一个规范的链,这个链通过一个包含了创世区块的数据库指定.BlockChain管理了链的插入,还原,重建等操作.//插入一个区块需要通过一系列指定的规则指定的两阶... 查看详情

安装blockchain-explorer区块浏览器(代码片段)

...的信息。好在hyperledger官方提供了一个区块浏览器(也就是blockchain-explorer),也就不用自己对照API进行开发了。目前网上的区块链博客相对较少,关于此区块浏览器的安装资料还停留在1.4版本(本文基于hyperledgerfabric 查看详情

用python构建一个极小的区块链(代码片段)

...,并被添加到一个不可变的链chain中(因此被称为区块链blockchain),之前添加的数据也在该链中。对于比特 查看详情

区块链教程

https://www.tutorialspoint.com/python_blockchain/python_blockchain_developing_client.htm 查看详情

区块链原理入门(代码片段)

...块的hash值@TestpublicvoidtestNewBlock()//区块链List<Block>blockChain=newLinkedList<>();//先生成个创世区块 查看详情

区块链原理入门(代码片段)

...块的hash值@TestpublicvoidtestNewBlock()//区块链List<Block>blockChain=newLinkedList<>();//先生成个创世区块 查看详情

blockchain技术之区块链的概念和起源以及区块链的运行方式发展前景和应用领域分析

一、什么是“区块链”?区块链起源于中本聪的比特币,作为比特币的底层技术,本质上是一个去中心化的数据库,是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案。区块链技术是一种不依... 查看详情

chiafullnoderpc奇亚全节点(代码片段)

全节点RPC目录:获取区块链状态get_blockchain_state获取区块get_block获取指定范围的区块get_blocks通过高度获取区块记录get_block_record_by_height通过哈希获取区块记录get_block_record获取指定范围的区块记录get_block_records获取未完成区块... 查看详情

hyperledger:概念

...到确认的交易信息的整体,准备被共识加入到区块链中。Blockchain(区块链):由多个区块链接而成的链表结构,除了首个区块,每个区块都包括前继区块内容的hash值。CertificateAutho 查看详情

golang区块链开发002-初始化区块链与pow挖矿实现

...性一.初始化区块链1.代码结构Block.go:定义区块结构与方法BlockChain.go:定义区块链结构与方法help.go:将常 查看详情