栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java玩转区块链-基础篇(1)-账户

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java玩转区块链-基础篇(1)-账户

java玩转区块链-基础篇--账户
    • java环境配置
    • 基础概念
    • 账户
    • maven包引用
    • 创建账户代码
        • 代码解释
          • (1)
          • (2)
          • (3)
          • (4)

可以不让搞,但是不允许你不会

java环境配置
  1. jdk版本,jdk1.8+;
  2. IDE环境,ideas;
  3. 依赖包,web3;
  4. 区块链网路,开发网,Ganache;
基础概念

区块链网络: 提供区块链交易的网络,测试网和正式网由以太坊提供,开发网络可以本地安装,ganache,Hardhat是两个可以本地安装的区块链服务器,ganache是本教程使用的开发区块链服务器。
web3:与区块链进行交互的网络协议,web3目前有python,nodejs,java,typescript等语言实现
账户:区块链上的一个token
钱包:管理用户拥有token的dapp

账户

区块链中所有的资源都是token,这些token就是我们所谓的账户。账户分为两类:

  • 外部拥有的帐户,由私钥控制并且没有与之关联的代码
  • 合约账户,由其合约代码控制并具有与其关联的代码

每个账户由 余额、nonce、storageRoot 和 codeHash 等信息组成的状态,并由一个 20 字节的地址标识。

ganache(不清楚ganache安装的请参考环境搭建)上查看账户信息方式如下。

图中(1)是账户的地址(token),(2)点击查看具体信息。

图中privateKey为私钥。

区块链上只有token信息没有归属人信息,区块链并不知道这个token是谁的资产,所以已经拥有了token资产的同学看紧自己的钱袋子,不能把privateKey泄漏给其他人。

maven包引用

        8
        8
    

    

        
            org.web3j
            core
            5.0.0
        
        
            org.apache.commons
            commons-lang3
            3.12.0
        
        
        
            org.web3j
            web3j-unit
            4.8.1
        
        
            com.google.guava
            guava
            23.0
        
    
    
        
            
                org.web3j
                web3j-maven-plugin
                4.6.5
                
                    
                
            
        
    
    
        
            central
            central
            https://maven.aliyun.com/repository/central
            
                true
            
            
                false
            
        
        
            jcenter
            jcenter
            http://jcenter.bintray.com/
            
                true
            
            
                false
            
        
        
            maven-net-cn
            Maven China Mirror
            https://dl.bintray.com/ethereum/maven
            
                true
            
            
                false
            
        
    
创建账户代码

package com.eth.account;

import org.web3j.crypto.Credentials;
import org.web3j.crypto.WalletUtils;
import org.web3j.model.documentRegistry;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.http.HttpService;
import org.web3j.tx.gas.StaticGasProvider;

import java.io.File;
import java.math.BigInteger;

public class CreateAccount {
    public static void main(String[] args) throws Exception {
        String walletPassword = "mypassword";  //(1)
        String walletDirectory = "/Users/beijixiongzzj/documents";  //(2)
        String filename = WalletUtils.generateNewWalletFile(walletPassword, new File(walletDirectory));  //(3)

        System.out.println("生成密钥文件:" + walletDirectory + "/" + filename);
        System.out.println("开始解析密钥->:");
        Credentials credentials = WalletUtils.loadCredentials(walletPassword, walletDirectory + "/" + filename); //(4)

        System.out.println("Account address: " + credentials.getAddress()); //(5)
        System.out.println("Account private key: " + credentials.getEcKeyPair().getPrivateKey().toString(16));  //(6)
        System.out.println("Account public key: " + credentials.getEcKeyPair().getPublicKey().toString(16));  //(7)
    }
}

执行结果

生成密钥文件:/Users/beijixiongzzj/documents/UTC–2021-10-01T12-33-54.33000000Z–a8a97958d136c1656b9dbd83f28c8238d97265ba.json
开始解析密钥->:
Account address: 0xa8a97958d136c1656b9dbd83f28c8238d97265ba
Account private key: ca448f923bd5886ce1213b5ba831580324b9b56422199aa3486db5f04f1f4627
Account public key: 29627a520b60b0c2c61f0896199bbbe711063c4027204325d14c5f48d8087fedbff3a6408a4f7aa154801fa13a85c1b726fdd5bf04100c7b765f861d106188ba

代码解释

以下为代码块中注释的代码行的解释

(1)

定义一个变量“walletPassword“,这个密码用户为生成的密钥文件进行加密

(2)

定义一个变量,代表的是“/Users/beijixiongzzj/documents“这个目录,是生成加密文件存在的本地目录

(3)

WalletUtils.generateNewWalletFile该api用户生成一个密钥文件,返回的是生成的密钥文件的地址

(4)

加载密钥文件解析出公钥私钥

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/284208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号