# tokencore
**Repository Path**: galaxyzxcv/tokencore
## Basic Information
- **Project Name**: tokencore
- **Description**: The core components of the blockchain wallet backend, support a variety of blockchain address generation and offline signatures
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: http://galaxyzxcv.xyz/
- **GVP Project**: No
## Statistics
- **Stars**: 50
- **Forks**: 28
- **Created**: 2020-08-11
- **Last Updated**: 2023-04-14
## Categories & Tags
**Categories**: blockchain
**Tags**: None
## README
  tokencore
  
     
  
  
     
  
  
     
  
  
     
  
  
     
  
# 联系方式
- [我的Telegram](https://t.me/xzadcx) / @Telegram
# 语言选择
- en [English](README.md)
- zh_CN [简体中文](README_zh_CN.md)
# 使用案例
交易所钱包后台 https://github.com/galaxyzxcv/java-wallet
# tokencore介绍
##### 区块链钱包后台核心组件,支持BTC,OMNI,ETH,ERC20,TRX,TRC20,BCH,BSV,DOGE,DASH,LTC,FILECOIN
# tokencore使用方式
#### 引入本库
- gradle方式 在你的build.gradle里面
```
    repositories {
        maven { url 'https://jitpack.io' }
    }
    
    dependencies {
        compile 'com.github.galaxyzxcv:tokencore:1.2.7'
    }
```
- maven方式
```
	
		
		    bintray
		    https://dl.bintray.com/tronj/tronj
		
		
		    jitpack.io
		    https://jitpack.io
		
	
	
	
	    com.github.galaxyzxcv
	    tokencore
	    1.2.7
	
```
#### 测试样例
[https://github.com/paipaipaipai/tokencore/blob/master/src/test/java/org/consenlabs/tokencore/Test.java](https://github.com/paipaipaipai/tokencore/blob/master/src/test/java/org/consenlabs/tokencore/Test.java)
#### 初始化身份
```java
    try{
        Files.createDirectories(Paths.get("${keyStoreProperties.dir}/wallets"))
        }catch(Throwable ignored){
        }
        //KeystoreStorage是接口,实现它的getdir方法
        WalletManager.storage=KeystoreStorage();
        WalletManager.scanWallets();
        String password="123456";
        Identity identity=Identity.getCurrentIdentity();
        if(identity==null){
        Identity.createIdentity(
        "token",
        password,
        "",
        Network.MAINNET,
        Metadata.P2WPKH
        );
        }
```
#### 生成钱包
```java
        Identity identity = Identity.getCurrentIdentity();
        String password = "123456";
        Wallet wallet = identity.deriveWalletByMnemonics(
        ChainType.BITCOIN,
        password,
        MnemonicUtil.randomMnemonicCodes()
        );
        System.out.println(wallet.getAddress());
```
#### 离线签名
- 比特币
```java
        String password = "123456";
        String toAddress = "33sXfhCBPyHqeVsVthmyYonCBshw5XJZn9";
        int changeIdx = 0;
        long amount = 1000L;
        long fee = 555L;
        //utxos需要去节点或者外部api获取
        ArrayList utxos = new ArrayList();
        BitcoinTransaction bitcoinTransaction = new BitcoinTransaction(
        toAddress,
        changeIdx,
        amount,
        fee,
        utxos
        );
        Wallet wallet = WalletManager.findWalletByAddress(ChainType.BITCOIN, "33sXfhCBPyHqeVsVthmyYonCBshw5XJZn9");
        TxSignResult txSignResult = bitcoinTransaction.signTransaction(
        String.valueOf(ChainId.BITCOIN_MAINNET),
        password,
        wallet
        );
        System.out.println(txSignResult);
```
- 波场
```java
        String from = "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8";
        String to = "TF17BgPaZYbz8oxbjhriubPDsA7ArKoLX3";
        long amount = 1;
        String password = "123456";
        Wallet wallet = WalletManager.findWalletByAddress(ChainType.BITCOIN, "TJRabPrwbZy45sbavfcjinPJC18kjpRTv8");
        TronTransaction transaction = new TronTransaction(from, to, amount);
        //离线签名,不建议签名和广播放一块
        TxSignResult txSignResult = transaction.signTransaction(String.valueOf(ChainId.BITCOIN_MAINNET), password, wallet);
        System.out.println(txSignResult);
```
#### 注意:这只是一个数字货币的功能组件!!!只供学习使用,不提供完整的区块链业务功能