国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用Java來(lái)實(shí)現(xiàn)區(qū)塊鏈原理并簡(jiǎn)單模擬開(kāi)發(fā)一個(gè)小工具

這篇具有很好參考價(jià)值的文章主要介紹了用Java來(lái)實(shí)現(xiàn)區(qū)塊鏈原理并簡(jiǎn)單模擬開(kāi)發(fā)一個(gè)小工具。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前幾天心血來(lái)潮,用Java模擬實(shí)現(xiàn)了一個(gè)區(qū)塊鏈小工具,該工具是單機(jī)版的,沒(méi)有實(shí)現(xiàn)聯(lián)網(wǎng)功能,屬于是單節(jié)點(diǎn)的工具,但是對(duì)于區(qū)塊鏈的核心wk邏輯功能都實(shí)現(xiàn)了,如:wk、錢(qián)包、轉(zhuǎn)賬、記賬等功能。界面實(shí)現(xiàn)用到了Java的swing包。

下面先看下運(yùn)行的效果:

主界面:

用Java來(lái)實(shí)現(xiàn)區(qū)塊鏈原理并簡(jiǎn)單模擬開(kāi)發(fā)一個(gè)小工具

轉(zhuǎn)賬:

用Java來(lái)實(shí)現(xiàn)區(qū)塊鏈原理并簡(jiǎn)單模擬開(kāi)發(fā)一個(gè)小工具

?下面來(lái)看看代碼:

首先是界面:文章來(lái)源地址http://www.zghlxwxcb.cn/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;//當(dāng)前錢(qián)包地址
	
	private List<Block> blockChain;//區(qū)塊鏈
	
	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】錢(qián)包地址:" + address +"【當(dāng)前余額: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

到了這里,關(guān)于用Java來(lái)實(shí)現(xiàn)區(qū)塊鏈原理并簡(jiǎn)單模擬開(kāi)發(fā)一個(gè)小工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 模擬實(shí)現(xiàn)一個(gè)簡(jiǎn)單的計(jì)算器
  • 使用Java開(kāi)發(fā)一個(gè)自己的區(qū)塊鏈產(chǎn)品、聯(lián)盟鏈

    來(lái)源:蝦庫(kù)網(wǎng) xiaqo.com 公司要開(kāi)發(fā)區(qū)塊鏈,原本是想著使用以太坊開(kāi)發(fā)個(gè)合約或者是使用個(gè)第三方平臺(tái)來(lái)做,后來(lái)發(fā)現(xiàn)都不符合業(yè)務(wù)需求。原因很簡(jiǎn)單,以太坊、超級(jí)賬本等平臺(tái)都是做共享賬本的,有代幣和挖礦等模塊。而我們需要的就是數(shù)家公司組個(gè)聯(lián)盟,來(lái)共同見(jiàn)證、記

    2024年01月17日
    瀏覽(15)
  • Java實(shí)現(xiàn)簡(jiǎn)單的區(qū)塊鏈

    區(qū)塊鏈可以簡(jiǎn)單抽象成將一個(gè)個(gè)區(qū)塊存放在一個(gè)鏈表中,每新增一個(gè)塊就把它放置在鏈表尾端,并通過(guò)區(qū)塊之間信息的傳遞形成獨(dú)一無(wú)二的hash,來(lái)確保區(qū)塊鏈的數(shù)據(jù)未被篡改過(guò)。 區(qū)塊的實(shí)現(xiàn) 區(qū)塊的基本屬性有: 當(dāng)前區(qū)塊的hash值 前一個(gè)區(qū)塊的hash值 當(dāng)前區(qū)塊的數(shù)據(jù)值 當(dāng)前塊

    2024年02月11日
    瀏覽(17)
  • 區(qū)塊鏈java開(kāi)發(fā)智能合約nf(部署第一個(gè)NFT智能合約)

    手把手教你區(qū)塊鏈java開(kāi)發(fā)智能合約nft-第二篇(部署第一個(gè)NFT智能合約) 剛搞區(qū)塊鏈開(kāi)發(fā)真的是太累了,自己摸石頭過(guò)河,動(dòng)不動(dòng)就報(bào)錯(cuò),網(wǎng)上搜索錯(cuò)誤,一律看不出什么問(wèn)題,或者報(bào)錯(cuò)的信息太少,問(wèn)同事同事不鳥(niǎo),問(wèn)領(lǐng)導(dǎo),領(lǐng)導(dǎo)也煩,無(wú)奈,對(duì)于英文不好的我,只能被迫

    2024年02月12日
    瀏覽(30)
  • 僅僅用java就能簡(jiǎn)單實(shí)現(xiàn)區(qū)塊鏈(BlockChain)

    區(qū)塊鏈邏輯:根據(jù)所需信息創(chuàng)建一個(gè)區(qū)塊,再利用定義的計(jì)算hash值方法,不斷進(jìn)行計(jì)算,直到達(dá)到想要的結(jié)果,再通過(guò)層層驗(yàn)證,加入到我們的區(qū)塊鏈中。 所謂挖礦,就是進(jìn)行不斷地計(jì)算,直到“挖到”,而這步算法我們是借助hash算法完成的。 老實(shí)說(shuō),“挖礦”這件事本身

    2024年02月02日
    瀏覽(22)
  • python區(qū)塊鏈簡(jiǎn)單模擬【03】

    python區(qū)塊鏈簡(jiǎn)單模擬【03】

    引入錢(qián)包,賬戶(hù)地址,公私鑰 `import hashlib from datetime import datetime class Block: “”\\\" 區(qū)塊結(jié)構(gòu) prev_hash: 父區(qū)塊哈希值 transactions: 交易列表 timestamp: 區(qū)塊創(chuàng)建時(shí)間 hash: 區(qū)塊哈希值 Nonce: 隨機(jī)數(shù) “”\\\" def init (self, transactions, prev_hash): # 將傳入的父哈希值和數(shù)據(jù)保存到類(lèi)變量中 self.pr

    2024年02月03日
    瀏覽(17)
  • python區(qū)塊鏈簡(jiǎn)單模擬【02】

    python區(qū)塊鏈簡(jiǎn)單模擬【02】

    引入共識(shí)機(jī)制(PoW) `# 先定義一個(gè)區(qū)塊 b = Block(data=“測(cè)試”, prev_hash=“”) w = ProofOfWork(b)`

    2024年02月04日
    瀏覽(17)
  • python區(qū)塊鏈簡(jiǎn)單模擬【05】

    python區(qū)塊鏈簡(jiǎn)單模擬【05】

    新增內(nèi)容:構(gòu)建去中心化網(wǎng)絡(luò) node1.print_blockchain()

    2024年02月03日
    瀏覽(17)
  • python區(qū)塊鏈簡(jiǎn)單模擬【04】

    區(qū)塊鏈網(wǎng)絡(luò)是去中心化的,區(qū)塊鏈不是基于一個(gè)中心節(jié)點(diǎn)產(chǎn)生的,而是由很多去中心化的節(jié)點(diǎn)一起參與維護(hù)的 我們要實(shí)現(xiàn)一個(gè)簡(jiǎn)單地去中心化網(wǎng)絡(luò),該模擬實(shí)驗(yàn),多個(gè)節(jié)點(diǎn)可以運(yùn)行在同一個(gè)計(jì)算機(jī)上,只是每個(gè)節(jié)點(diǎn)使用了不同的本地端口號(hào),每個(gè)節(jié)點(diǎn)都是使用一個(gè)獨(dú)立的線(xiàn)程

    2024年02月04日
    瀏覽(13)
  • Java模擬實(shí)現(xiàn)一個(gè)基于文本界面的《記賬軟件》

    /* *@author: Noiimplant *@version: 1.0 */ 根據(jù)尚硅谷java教程進(jìn)行練習(xí) 記錄家庭支出、收入,打印收支明細(xì)表 使用分級(jí)菜單的方式 原文鏈接: 尚硅谷java教程鏈接

    2023年04月25日
    瀏覽(15)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包