Search in sources :

Example 1 with ECKey

use of org.tron.common.crypto.ECKey in project java-tron by tronprotocol.

the class Args method getGeneratedNodePrivateKey.

private static String getGeneratedNodePrivateKey() {
    String nodeId;
    try {
        File file = new File(INSTANCE.outputDirectory + File.separator + INSTANCE.storage.getDirectory(), "nodeId.properties");
        Properties props = new Properties();
        if (file.canRead()) {
            try (Reader r = new FileReader(file)) {
                props.load(r);
            }
        } else {
            ECKey key = new ECKey();
            props.setProperty("nodeIdPrivateKey", Hex.toHexString(key.getPrivKeyBytes()));
            props.setProperty("nodeId", Hex.toHexString(key.getNodeId()));
            file.getParentFile().mkdirs();
            try (Writer w = new FileWriter(file)) {
                props.store(w, "Generated NodeID. To use your own nodeId please refer to 'peer.privateKey' config option.");
            }
            logger.info("New nodeID generated: " + props.getProperty("nodeId"));
            logger.info("Generated nodeID and its private key stored in " + file);
        }
        nodeId = props.getProperty("nodeIdPrivateKey");
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    return nodeId;
}
Also used : FileWriter(java.io.FileWriter) Reader(java.io.Reader) InputStreamReader(java.io.InputStreamReader) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) FileReader(java.io.FileReader) ECKey(org.tron.common.crypto.ECKey) IOException(java.io.IOException) Properties(java.util.Properties) File(java.io.File) FileWriter(java.io.FileWriter) Writer(java.io.Writer)

Example 2 with ECKey

use of org.tron.common.crypto.ECKey in project java-tron by tronprotocol.

the class ManagerTest method fork.

@Test
public void fork() {
    Args.setParam(new String[] { "--witness" }, Configuration.getByPath(Constant.NORMAL_CONF));
    long size = dbManager.getBlockStore().dbSource.allKeys().size();
    String key = "00f31db24bfbd1a2ef19beddca0a0fa37632eded9ac666a05d3bd925f01dde1f62";
    byte[] privateKey = ByteArray.fromHexString(key);
    final ECKey ecKey = ECKey.fromPrivate(privateKey);
    byte[] address = ecKey.getAddress();
    WitnessCapsule witnessCapsule = new WitnessCapsule(ByteString.copyFrom(address));
    dbManager.addWitness(witnessCapsule);
    dbManager.addWitness(witnessCapsule);
    dbManager.addWitness(witnessCapsule);
    IntStream.range(0, 5).forEach(i -> {
        try {
            dbManager.generateBlock(witnessCapsule, System.currentTimeMillis(), privateKey);
        } catch (ValidateSignatureException | ContractValidateException | ContractExeException | UnLinkedBlockException e) {
            logger.debug(e.getMessage(), e);
        }
    });
    try {
        long num = dbManager.getDynamicPropertiesStore().getLatestBlockHeaderNumber();
        BlockCapsule blockCapsule1 = new BlockCapsule(num, dbManager.getHead().getParentHash().getByteString(), System.currentTimeMillis(), witnessCapsule.getAddress());
        blockCapsule1.generatedByMyself = true;
        BlockCapsule blockCapsule2 = new BlockCapsule(num + 1, blockCapsule1.getBlockId().getByteString(), System.currentTimeMillis(), witnessCapsule.getAddress());
        blockCapsule2.generatedByMyself = true;
        logger.error("******1*******" + "block1 id:" + blockCapsule1.getBlockId());
        logger.error("******2*******" + "block2 id:" + blockCapsule2.getBlockId());
        dbManager.pushBlock(blockCapsule1);
        dbManager.pushBlock(blockCapsule2);
        logger.error("******in blockStore block size:" + dbManager.getBlockStore().dbSource.allKeys().size());
        logger.error("******in blockStore block:" + dbManager.getBlockStore().dbSource.allKeys().stream().map(ByteArray::toHexString).collect(Collectors.toList()));
        Assert.assertNotNull(dbManager.getBlockStore().get(blockCapsule1.getBlockId().getBytes()));
        Assert.assertNotNull(dbManager.getBlockStore().get(blockCapsule2.getBlockId().getBytes()));
        Assert.assertEquals(dbManager.getBlockStore().get(blockCapsule2.getBlockId().getBytes()).getParentHash(), blockCapsule1.getBlockId());
        Assert.assertEquals(dbManager.getBlockStore().dbSource.allKeys().size(), size + 6);
        Assert.assertEquals(dbManager.getBlockIdByNum(dbManager.getHead().getNum() - 1), blockCapsule1.getBlockId());
        Assert.assertEquals(dbManager.getBlockIdByNum(dbManager.getHead().getNum() - 2), blockCapsule1.getParentHash());
        Assert.assertEquals(blockCapsule2.getBlockId().getByteString(), dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash());
        Assert.assertEquals(dbManager.getHead().getBlockId().getByteString(), dbManager.getDynamicPropertiesStore().getLatestBlockHeaderHash());
    } catch (ValidateSignatureException | ContractValidateException | ContractExeException | UnLinkedBlockException e) {
        logger.debug(e.getMessage(), e);
    }
    dbManager.getWitnesses().clear();
}
Also used : WitnessCapsule(org.tron.core.capsule.WitnessCapsule) ValidateSignatureException(org.tron.core.exception.ValidateSignatureException) ContractValidateException(org.tron.core.exception.ContractValidateException) ECKey(org.tron.common.crypto.ECKey) ByteString(com.google.protobuf.ByteString) UnLinkedBlockException(org.tron.core.exception.UnLinkedBlockException) BlockCapsule(org.tron.core.capsule.BlockCapsule) ContractExeException(org.tron.core.exception.ContractExeException) Test(org.junit.Test)

Example 3 with ECKey

use of org.tron.common.crypto.ECKey in project java-tron by tronprotocol.

the class WalletTest method testGetAddress.

@Test
public void testGetAddress() {
    ECKey ecKey = new ECKey(Utils.getRandom());
    Wallet wallet = new Wallet(ecKey);
    logger.info("ecKey address = {}", ByteArray.toHexString(ecKey.getAddress()));
    logger.info("wallet address = {}", ByteArray.toHexString(wallet.getAddress()));
    assertArrayEquals(wallet.getAddress(), ecKey.getAddress());
}
Also used : Wallet(org.tron.core.Wallet) ECKey(org.tron.common.crypto.ECKey) Test(org.junit.Test)

Example 4 with ECKey

use of org.tron.common.crypto.ECKey in project java-tron by tronprotocol.

the class WitnessService method init.

/**
 * Initialize the local witnesses
 */
@Override
public void init() {
    Args.getInstance().getLocalWitnesses().getPrivateKeys().forEach(key -> {
        byte[] privateKey = ByteArray.fromHexString(key);
        final ECKey ecKey = ECKey.fromPrivate(privateKey);
        byte[] address = ecKey.getAddress();
        WitnessCapsule witnessCapsule = this.db.getWitnessStore().get(address);
        // need handle init witness
        if (null == witnessCapsule) {
            logger.warn("WitnessCapsule[" + address + "] is not in witnessStore");
            witnessCapsule = new WitnessCapsule(ByteString.copyFrom(address));
        }
        this.privateKeyMap.put(witnessCapsule.getAddress(), privateKey);
        this.localWitnessStateMap.put(witnessCapsule.getAddress(), witnessCapsule);
    });
}
Also used : WitnessCapsule(org.tron.core.capsule.WitnessCapsule) ECKey(org.tron.common.crypto.ECKey)

Example 5 with ECKey

use of org.tron.common.crypto.ECKey in project java-tron by tronprotocol.

the class ConfigurationTest method testGetEcKey.

@Test
public void testGetEcKey() {
    ECKey key = ECKey.fromPrivate(Hex.decode("1cd5a70741c6e583d2dd3c5f17231e608eb1e52437210d948c5085e141c2d830"));
    // log.debug("address = {}", ByteArray.toHexString(key.getOwnerAddress()));
    assertEquals("125b6c87b3d67114b3873977888c34582f27bbb0", ByteArray.toHexString(key.getAddress()));
}
Also used : ECKey(org.tron.common.crypto.ECKey) Test(org.junit.Test)

Aggregations

ECKey (org.tron.common.crypto.ECKey)10 Test (org.junit.Test)4 ByteString (com.google.protobuf.ByteString)3 ECDSASignature (org.tron.common.crypto.ECKey.ECDSASignature)2 Wallet (org.tron.core.Wallet)2 WitnessCapsule (org.tron.core.capsule.WitnessCapsule)2 BufferedReader (java.io.BufferedReader)1 File (java.io.File)1 FileReader (java.io.FileReader)1 FileWriter (java.io.FileWriter)1 IOException (java.io.IOException)1 InputStreamReader (java.io.InputStreamReader)1 Reader (java.io.Reader)1 Writer (java.io.Writer)1 URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1 Properties (java.util.Properties)1 Node (org.tron.common.overlay.discover.Node)1 BlockCapsule (org.tron.core.capsule.BlockCapsule)1 Args (org.tron.core.config.args.Args)1