用Java来实现区块链原理并简单模拟开发一个小工具

这篇具有很好参考价值的文章主要介绍了用Java来实现区块链原理并简单模拟开发一个小工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前几天心血来潮,用Java模拟实现了一个区块链小工具,该工具是单机版的,没有实现联网功能,属于是单节点的工具,但是对于区块链的核心wk逻辑功能都实现了,如:wk、钱包、转账、记账等功能。界面实现用到了Java的swing包。

下面先看下运行的效果:

主界面:

用Java来实现区块链原理并简单模拟开发一个小工具

转账:

用Java来实现区块链原理并简单模拟开发一个小工具

 下面来看看代码:

首先是界面:文章来源地址https://www.toymoban.com/news/detail-508776.html

package com.yuanlrc.app;

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;

import com.yuanlrc.model.Block;
import com.yuanlrc.model.Transaction;
import com.yuanlrc.thread.MinBlockThread;
import com.yuanlrc.util.CryptoUtil;

public class App extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField recieverAddressTextField;
	private JTextArea showRstTextArea;
	
	private String address;//当前钱包地址
	
	private List<Block> blockChain;//区块链
	
	private MinBlockThread minBlockThread;
	
	private List<Transaction> txs = new ArrayList<>();
	
	public JProgressBar currentStatusProgressBar;
	private JTextField amountTextField;
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					App frame = new App();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public App() {
		try {
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		address = UUID.randomUUID().toString();
		
		setTitle("【\u733F\u5E01\u6316\u77FF\u5DE5\u5177】钱包地址:" + address +"【当前余额:0】" );
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 717, 571);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		JPanel panel = new JPanel();
		panel.setBorder(new TitledBorder(null, "\u524D\u7F6E\u52A8\u4F5C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		
		JPanel panel_1 = new JPanel();
		panel_1.setBorder(new TitledBorder(null, "\u8F6C\u8D26\u64CD\u4F5C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		
		JPanel panel_2 = new JPanel();
		panel_2.setBorder(new TitledBorder(null, "\u6316\u77FF\u7ED3\u679C", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		
		JPanel panel_3 = new JPanel();
		panel_3.setBorder(new TitledBorder(null, "\u5F53\u524D\u72B6\u6001", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		GroupLayout gl_contentPane = new GroupLayout(contentPane);
		gl_contentPane.setHorizontalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(Alignment.TRAILING, gl_contentPane.createSequentialGroup()
					.addGap(18)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING, false)
						.addComponent(panel_2, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
						.addComponent(panel_3, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
						.addComponent(panel_1, GroupLayout.DEFAULT_SIZE, G

到了这里,关于用Java来实现区块链原理并简单模拟开发一个小工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模拟实现一个简单的计算器

    2024年02月11日
    浏览(52)
  • 使用Java开发一个自己的区块链产品、联盟链

    来源:虾库网 xiaqo.com 公司要开发区块链,原本是想着使用以太坊开发个合约或者是使用个第三方平台来做,后来发现都不符合业务需求。原因很简单,以太坊、超级账本等平台都是做共享账本的,有代币和挖矿等模块。而我们需要的就是数家公司组个联盟,来共同见证、记

    2024年01月17日
    浏览(46)
  • Java实现简单的区块链

    区块链可以简单抽象成将一个个区块存放在一个链表中,每新增一个块就把它放置在链表尾端,并通过区块之间信息的传递形成独一无二的hash,来确保区块链的数据未被篡改过。 区块的实现 区块的基本属性有: 当前区块的hash值 前一个区块的hash值 当前区块的数据值 当前块

    2024年02月11日
    浏览(32)
  • 区块链java开发智能合约nf(部署第一个NFT智能合约)

    手把手教你区块链java开发智能合约nft-第二篇(部署第一个NFT智能合约) 刚搞区块链开发真的是太累了,自己摸石头过河,动不动就报错,网上搜索错误,一律看不出什么问题,或者报错的信息太少,问同事同事不鸟,问领导,领导也烦,无奈,对于英文不好的我,只能被迫

    2024年02月12日
    浏览(53)
  • 仅仅用java就能简单实现区块链(BlockChain)

    区块链逻辑:根据所需信息创建一个区块,再利用定义的计算hash值方法,不断进行计算,直到达到想要的结果,再通过层层验证,加入到我们的区块链中。 所谓挖矿,就是进行不断地计算,直到“挖到”,而这步算法我们是借助hash算法完成的。 老实说,“挖矿”这件事本身

    2024年02月02日
    浏览(42)
  • python区块链简单模拟【02】

    引入共识机制(PoW) `# 先定义一个区块 b = Block(data=“测试”, prev_hash=“”) w = ProofOfWork(b)`

    2024年02月04日
    浏览(34)
  • python区块链简单模拟【04】

    区块链网络是去中心化的,区块链不是基于一个中心节点产生的,而是由很多去中心化的节点一起参与维护的 我们要实现一个简单地去中心化网络,该模拟实验,多个节点可以运行在同一个计算机上,只是每个节点使用了不同的本地端口号,每个节点都是使用一个独立的线程

    2024年02月04日
    浏览(34)
  • python区块链简单模拟【03】

    引入钱包,账户地址,公私钥 `import hashlib from datetime import datetime class Block: “”\\\" 区块结构 prev_hash: 父区块哈希值 transactions: 交易列表 timestamp: 区块创建时间 hash: 区块哈希值 Nonce: 随机数 “”\\\" def init (self, transactions, prev_hash): # 将传入的父哈希值和数据保存到类变量中 self.pr

    2024年02月03日
    浏览(35)
  • python区块链简单模拟【05】

    新增内容:构建去中心化网络 node1.print_blockchain()

    2024年02月03日
    浏览(36)
  • Java模拟实现一个基于文本界面的《记账软件》

    /* *@author: Noiimplant *@version: 1.0 */ 根据尚硅谷java教程进行练习 记录家庭支出、收入,打印收支明细表 使用分级菜单的方式 原文链接: 尚硅谷java教程链接

    2023年04月25日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包