Coder Social home page Coder Social logo

qora's Introduction

Qora release

Public GIT for the Qora cryptocurrency project.

Running Qora

Run the program without any options to start the daemon.

Run the program with the -cli option to access the daemon using the API.

Advanced Installer

The Windows Installer is made with Advanced Installer on an open source license. Advanced Installer allowed us to create a feature complete installer in a user friendly environment with minimal effort.

qora's People

Contributors

agran avatar billvp avatar catbref avatar qora avatar skerberus avatar soelexicon avatar xloem avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qora's Issues

Wallet sync / DBMap ArrayIndexOutOfBoundsException

2017-11-30 10:20:35 INFO  Wallet:474 - Synchronize wallet: 412000
2017-11-30 10:20:35 INFO  Wallet:917 - Wallet not synchronized with current blockchain: synchronizing wallet.
2017-11-30 10:20:35 INFO  Wallet:498 - Resetted balances
2017-11-30 10:20:35 INFO  Block:782 - Processed block 413120
2017-11-30 10:20:35 INFO  Block:782 - Processed block 413121
2017-11-30 10:20:35 ERROR DBMap:182 - 199452659
java.lang.ArrayIndexOutOfBoundsException: 199452659
        at org.mapdb.Volume$ByteBufferVol.getByte(Volume.java:429)
        at org.mapdb.Volume.getUnsignedShort(Volume.java:109)
        at org.mapdb.StoreWAL.longStackGetPage(StoreWAL.java:1046)
        at org.mapdb.StoreWAL.longStackTake(StoreWAL.java:913)
        at org.mapdb.StoreDirect.freePhysTake(StoreDirect.java:1098)
        at org.mapdb.StoreDirect.physAllocate(StoreDirect.java:666)
        at org.mapdb.StoreWAL.update(StoreWAL.java:404)
        at org.mapdb.Caches$HashTable.update(Caches.java:270)
        at org.mapdb.BTreeMap.put2(BTreeMap.java:746)
        at org.mapdb.BTreeMap.put(BTreeMap.java:643)
        at database.DBMap.set(DBMap.java:141)
        at database.HeightMap.set(HeightMap.java:87)
        at qora.block.Block.process(Block.java:755)
        at qora.block.Block.process(Block.java:710)
        at qora.Synchronizer.process(Synchronizer.java:353)
        at qora.Synchronizer.synchronize(Synchronizer.java:205)
        at controller.Controller.update(Controller.java:1034)
        at qora.BlockGenerator.run(BlockGenerator.java:184)
2017-11-30 10:20:35 ERROR DBMap:182 - 199452659
java.lang.ArrayIndexOutOfBoundsException: 199452659
        at org.mapdb.Volume$ByteBufferVol.getByte(Volume.java:429)
        at org.mapdb.Volume.getUnsignedShort(Volume.java:109)
        at org.mapdb.StoreWAL.longStackGetPage(StoreWAL.java:1046)
        at org.mapdb.StoreWAL.longStackTake(StoreWAL.java:913)
        at org.mapdb.StoreDirect.freePhysTake(StoreDirect.java:1109)
        at org.mapdb.StoreDirect.physAllocate(StoreDirect.java:666)
        at org.mapdb.StoreWAL.update(StoreWAL.java:404)
        at org.mapdb.Caches$HashTable.update(Caches.java:270)
        at org.mapdb.BTreeMap.put2(BTreeMap.java:746)
        at org.mapdb.BTreeMap.put(BTreeMap.java:643)
        at database.DBMap.set(DBMap.java:141)
        at database.BlockMap.add(BlockMap.java:172)
        at qora.block.Block.process(Block.java:777)
        at qora.block.Block.process(Block.java:710)
        at qora.Synchronizer.process(Synchronizer.java:353)
        at qora.Synchronizer.synchronize(Synchronizer.java:205)
        at controller.Controller.update(Controller.java:1034)
        at qora.BlockGenerator.run(BlockGenerator.java:184)
2017-11-30 10:20:35 INFO  Block:782 - Processed block 413122
2017-11-30 10:20:35 INFO  Wallet:917 - Wallet not synchronized with current blockchain: synchronizing wallet.
2017-11-30 10:20:35 INFO  Wallet:453 - Resetted maps
2017-11-30 10:20:35 INFO  Wallet:474 - Synchronize wallet: 2000
2017-11-30 10:20:35 INFO  Wallet:474 - Synchronize wallet: 4000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 6000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 8000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 10000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 12000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 14000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 16000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 18000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 20000
2017-11-30 10:20:36 INFO  Wallet:474 - Synchronize wallet: 22000
2017-11-30 10:20:37 INFO  Wallet:474 - Synchronize wallet: 24000

Check for confirmation before closing

My client seems to be randomly receiving WINDOW_CLOSING events and shutting down.

I don't know why it's getting these events, but I would like for it to stay open!

Whitespace issues with editing namestorage

It seems blank lines are condensed when saving namestorage in the web UI.
This may be related to a bug I experienced where the generated patch data referenced the wrong lines. My resulting file then had some of the content shifted a few lines from where it should have been added.

java.io.IOError: java.nio.channels.ClosedChannelException

INFO: Connection successfull : /60.29.233.154
Exception in thread "Thread-24" java.io.IOError: java.nio.channels.ClosedChannelException
at org.mapdb.Volume$MappedFileVol.makeNewBuffer(Volume.java:632)
at org.mapdb.Volume$ByteBufferVol.tryAvailable(Volume.java:375)
at org.mapdb.Volume.ensureAvailable(Volume.java:67)
at org.mapdb.StoreWAL.logAllocate(StoreWAL.java:299)
at org.mapdb.StoreWAL.update(StoreWAL.java:406)
at org.mapdb.Caches$HashTable.update(Caches.java:270)
at org.mapdb.EngineWrapper.update(EngineWrapper.java:63)
at org.mapdb.BTreeMap.put2(BTreeMap.java:707)
at org.mapdb.BTreeMap.put(BTreeMap.java:643)
at database.PeerMap.addPeer(PeerMap.java:441)
at network.PeerManager.addPeer(PeerManager.java:51)
at network.Network.onConnect(Network.java:71)
at network.Peer.connect(Peer.java:137)
at network.ConnectionCreator.run(ConnectionCreator.java:118)
Caused by: java.nio.channels.ClosedChannelException
at sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:110)
at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:300)
at org.mapdb.Volume$MappedFileVol.makeNewBuffer(Volume.java:604)
... 13 more
мар 20, 2016 7:27:29 PM network.Network onDisconnect
INFO: Connection close : /203.217.62.44
мар 20, 2016 7:27:29 PM network.Network onDisconnect
INFO: Connection close : /203.217.62.44
мар 20, 2016 7:27:39 PM network.Network onDisconnect
INFO: Connection close : /60.29.233.154
мар 20, 2016 7:27:39 PM network.Network onDisconnect
INFO: Connection close : /60.29.233.154
мар 20, 2016 7:33:15 PM ntp.NTP getTime
INFO: Adjusting time with -105300 milliseconds.
мар 20, 2016 7:33:15 PM network.Network onDisconnect
INFO: Connection close : /2.95.31.184
Exception in thread "Thread-123018" java.io.IOError: java.nio.channels.ClosedChannelException
at org.mapdb.Volume$MappedFileVol.makeNewBuffer(Volume.java:632)
at org.mapdb.Volume$ByteBufferVol.tryAvailable(Volume.java:375)
at org.mapdb.Volume.ensureAvailable(Volume.java:67)
at org.mapdb.StoreWAL.logAllocate(StoreWAL.java:299)
at org.mapdb.StoreWAL.update(StoreWAL.java:406)
at org.mapdb.Caches$HashTable.update(Caches.java:270)
at org.mapdb.EngineWrapper.update(EngineWrapper.java:63)
at org.mapdb.BTreeMap.put2(BTreeMap.java:746)
at org.mapdb.BTreeMap.put(BTreeMap.java:643)
at database.DBMap.set(DBMap.java:139)
at database.TransactionMap.add(TransactionMap.java:124)
at qora.BlockGenerator.addUnconfirmedTransaction(BlockGenerator.java:123)
at qora.BlockGenerator.addUnconfirmedTransaction(BlockGenerator.java:117)
at controller.Controller.onMessage(Controller.java:920)
at network.Network.onMessage(Network.java:265)
at network.Peer.run(Peer.java:174)
Caused by: java.nio.channels.ClosedChannelException
at sun.nio.ch.FileChannelImpl.ensureOpen(FileChannelImpl.java:110)
at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:300)
at org.mapdb.Volume$MappedFileVol.makeNewBuffer(Volume.java:604)
... 15 more
мар 20, 2016 7:45:06 PM ntp.NTP getTime
INFO: Adjusting time with -105300 milliseconds.
мар 20, 2016 7:46:06 PM network.Network onDisconnect
INFO: Connection close : /80.187.102.188
мар 20, 2016 8:08:41 PM ntp.NTP getTime
INFO: Adjusting time with -105300 milliseconds.
мар 20, 2016 8:31:49 PM network.Network onDisconnect
INFO: Connection close : /85.212.14.117
мар 20, 2016 9:00:33 PM network.Network onDisconnect

error from my node mirror.qora.co.in after weeks of work

jankotek/mapdb#384

connection error causes unnecessary noise in logs?

2017-11-11 04:35:58 WARN  Network:117 - Connection error : /216.126.198.27 : Socket closed
2017-11-11 04:35:58 ERROR Controller:1037 - Block buffer error
java.lang.Exception: Block buffer error
	at qora.BlockBuffer.getBlock(BlockBuffer.java:111)
	at qora.Synchronizer.synchronize(Synchronizer.java:192)
	at controller.Controller.update(Controller.java:1034)
	at qora.BlockGenerator.run(BlockGenerator.java:184)
2017-11-11 04:35:58 WARN  Network:117 - Connection error : /216.126.198.27 : Block buffer error
2017-11-11 04:35:58 WARN  Network:117 - Connection error : /216.126.198.27 : Socket closed

Support headless mode

Qora doesn't currently support starting in headless mode. Such support would likely be a pre-requisite for exchanges to use Qora.

Another ArrayIndexOutOfBoundsException

2017-11-11 09:46:30 INFO  Controller:890 - received new valid block
2017-11-11 09:52:04 ERROR Controller:1037 - 136
java.lang.ArrayIndexOutOfBoundsException: 136
	at org.mapdb.Volume$ByteBufferVol.getDataInput(Volume.java:435)
	at org.mapdb.Volume$ByteBufferVol.getDataInput(Volume.java:315)
	at org.mapdb.StoreWAL.get2(StoreWAL.java:344)
	at org.mapdb.StoreWAL.get(StoreWAL.java:320)
	at org.mapdb.Caches$HashTable.get(Caches.java:246)
	at org.mapdb.BTreeMap.get(BTreeMap.java:602)
	at org.mapdb.BTreeMap.containsKey(BTreeMap.java:1506)
	at database.DBMap.contains(DBMap.java:238)
	at database.DBMap.contains(DBMap.java:248)
	at qora.block.Block.getHeight(Block.java:254)
	at qora.block.Block.orphan(Block.java:793)
	at qora.Synchronizer.synchronize(Synchronizer.java:65)
	at qora.Synchronizer.synchronize(Synchronizer.java:224)
	at controller.Controller.update(Controller.java:1034)
	at qora.BlockGenerator.run(BlockGenerator.java:184)
2017-11-11 09:52:04 WARN  Network:117 - Connection error : /208.115.125.68 : 136
2017-11-11 09:52:04 INFO  Controller:193 - STATUS OK
| Last Block Signature: F2s97G7FKrt5B2Ld7sBos3MAGHwJxjz4yqMogft4Rdhst8rTExXchFxSKURFeFbpUDuByDNj97EiBMv25DHPa4i2d4bA5hZCp2tcP9GFs57F4o3LgT63UonmLipYH67e9L3VzT2jYLh97QuvyrfDwUuTX3smM5qhXajFQVHe4NjS866
| Last Block Height: 408875
| Last Block Time: 11/11/2017 9:46:30 AM
| Last Block Found 5m 34s ago.

Support mounted data directory (and dataBak/wallet dirs)

If the data directory ($QORA_HOME/data) is mounted from another location, and is either empty or needs to be erased by Qora during startup (e.g. due to corruption issues), Qora fails to start. This is probably because the data directory can't be deleted (due to being mounted).

You can replicate this issue using bind mounts:

cd $QORA_HOME
rm -rf data dataBak
mkdir data
mkdir -p ~/deleteme/data
mount --bind ~/deleteme/data data
./run.sh

Changing the behavior to delete everything under the data directory, but not the data directory itself, would allow mounted directories to be used.

This might also happen with the wallet and dataBak directories; I haven't tested this.

Java resource

images and sounds dirs is not in resources folder. I think that its better to include it in jar file and get it with:

this.getClass().getResource("icon.png");

NPE in WalletTransactionsTableModel.getValueAt() during JSwing repaint

2017-11-01 07:43:17 INFO  Start:92 - Starting Qora / version: 0.26.1 / build date: 2017-09-08 / ...
2017-11-01 07:43:26 INFO  Controller:461 - restoring backup database
2017-11-01 07:58:06 ERROR WalletTransactionsTableModel:121 - 
java.lang.NullPointerException
	at gui.models.WalletTransactionsTableModel.getValueAt(WalletTransactionsTableModel.java:99)
	at javax.swing.JTable.getValueAt(Unknown Source)
	at javax.swing.JTable.prepareRenderer(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
	at javax.swing.plaf.ComponentUI.update(Unknown Source)
	at javax.swing.JComponent.paintComponent(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JViewport.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintToOffscreen(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
	at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
	at javax.swing.RepaintManager.paint(Unknown Source)
	at javax.swing.JComponent._paintImmediately(Unknown Source)
	at javax.swing.JComponent.paintImmediately(Unknown Source)
	at javax.swing.RepaintManager$4.run(Unknown Source)
	at javax.swing.RepaintManager$4.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
	at javax.swing.RepaintManager.access$1200(Unknown Source)
	at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$500(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.awt.EventQueue$3.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Also occurs at:

	at gui.models.WalletTransactionsTableModel.getValueAt(WalletTransactionsTableModel.java:103)
	at gui.models.WalletTransactionsTableModel.getValueAt(WalletTransactionsTableModel.java:107)
	at gui.models.WalletTransactionsTableModel.getValueAt(WalletTransactionsTableModel.java:115)

This may well be the cause of "white window" syndrome where the JSwing client panes go white and don't repaint.

NullPointerException during NameStorageMap.remove()

2017-11-11 04:13:27 ERROR DBMap:182 - 
java.lang.NullPointerException
	at org.mapdb.BTreeMap.put(BTreeMap.java:642)
	at database.DBMap.set(DBMap.java:141)
	at qora.web.NameStorageMap.remove(NameStorageMap.java:126)
	at utils.StorageUtils.addTxChangesToStorage(StorageUtils.java:191)
	at utils.StorageUtils.processUpdate(StorageUtils.java:147)
	at qora.transaction.ArbitraryTransaction.process(ArbitraryTransaction.java:224)
	at qora.block.Block.isValid(Block.java:695)
	at qora.block.Block.isValid(Block.java:571)
	at qora.Synchronizer.process(Synchronizer.java:349)
	at qora.Synchronizer.synchronize(Synchronizer.java:205)
	at controller.Controller.update(Controller.java:1034)
	at qora.BlockGenerator.run(BlockGenerator.java:184)

Peer synchronization requires too much trust

It looks like the synchronization code picks the peer which gives the highest block height, and then tries to synchronize only from them.

This looks very vulnerable to a misbehaving peer which has a higher block height but will not synchronize to that height. Instead the block tree should be built from all connected peers, and a peer not judged as certainly providing the highest height until it has actually provided valid blocks at that height.

See https://github.com/Qoracoin/Qora/blob/master/Qora/src/controller/Controller.java#L693

Feature Request: More pebble apis

It would be great if the interactive website feature had functionality comparable to most of the json apis. Maybe this could even be done by directly exposing API classes such as TransactionsResource or BlocksResource.

I imagine being able to make a site which procedurally generates content from the blockchain or can initiate actions such as blog posts or message sends.

Memory leaks

If the wallet is running a GUI in a few days filled with all available RAM. If run without GUI then everything is fine.

Resilient against Database Corruption

My client stopped functioning properly when my database became corrupted. I don't know how it happened, perhaps a crash at a poor time. It was detectable in that the database code was throwing an error.

Seems to me a well-behaving client would recreate the database in such a scenario. But it would want to preserve any recoverable unconfirmed transactions.

NullPointerException in namestoagehistory

See http://qora.co.in:9090/index/namestoragehistory.html?name=demo_name which throws an exception.

I'm using this patch locally:

diff --git a/Qora/src/qora/web/WebNameStorageHistoryHelper.java b/Qora/src/qora/web/WebNameStorageHistoryHelper.java
index f35bd5c..d37fef7 100644
--- a/Qora/src/qora/web/WebNameStorageHistoryHelper.java
+++ b/Qora/src/qora/web/WebNameStorageHistoryHelper.java
@@ -72,6 +72,9 @@ public class WebNameStorageHistoryHelper {

                Map<String, String> map = orphanNameStorageMap.get(tx.getSignature());

+               if (map == null)
+                       return result;
+
                Set<String> orphanKeySet = map.keySet();

                // initializing tempnamestorage with old values

But it leaves broken items on the interface.

Don't pin startup splash screen to foreground of viewport

When client starts a splash screen is shown which is pinned to foreground of viewport, blocking other windows.

Usually client takes only a few seconds to start up but occasionally not which means the splash screen causes problems.

Fix to do: don't pin splash to foreground

NPE [when block doesn't arrive from connected peer]

Process Block 17253
2016-10-14 19:30:34 ERROR Controller:1027 -
java.lang.NullPointerException
at qora.Synchronizer.process(Synchronizer.java:339)
at qora.Synchronizer.synchronize(Synchronizer.java:195)
at controller.Controller.update(Controller.java:1024)
at qora.BlockGenerator.run(BlockGenerator.java:178)
2016-10-14 19:30:34 WARN Network:117 - Connection error : /188.166.16.64 : null
2016-10-14 19:30:34 INFO Network:91 - Connection close : /188.166.16.64
2016-10-14 19:31:55 INFO Peer:146 - Failed to connect to : /2.84.51.78
2016-10-14 19:31:55 INFO ConnectionCreator:118 - Connecting to peer 2.87.113.22 proposed by 188.166.16.64 :: 3 / 20 / 20 :: Connections: 0

The problem is in network with NAT

INTERNET
  |
  |
  Q [193.242.148.251, 10.0.0.50] - Qora node 1
   \
    \
     Q [10.0.0.8] - Qora node 2

At the same time the nodes do not work or work unstable.

Feature Request: Immutable namestorage

I'd like to be able to mark a namestorage key as immutable, such that neither I nor anybody else can change it again, under any conditions; all transactions which change it are invalid.

ConnectionCreator and ConnectionAcceptor don't shutdown smoothly

On shutdown the ConnectionCreator doesn't exit swiftly and users might see this error message:

Exception in thread "Thread-24" java.lang.IllegalAccessError: DB has been closed
        at org.mapdb.EngineWrapper.checkClosed(EngineWrapper.java:155)
        at org.mapdb.Caches$HashTable.get(Caches.java:238)
        at org.mapdb.BTreeMap.get(BTreeMap.java:595)
        at org.mapdb.BTreeMap.containsKey(BTreeMap.java:1506)
        at database.PeerMap.getInfo(PeerMap.java:419)
        at database.PeerMap.isBlacklisted(PeerMap.java:427)
        at network.PeerManager.isBlacklisted(PeerManager.java:71)
        at network.ConnectionCreator.run(ConnectionCreator.java:102)

In addition, there doesn't seem to be any short-cut exit in ConnectionAcceptor if a new connection arrives during shutdown.

Feature Concept: Submitting transactions an AT will pay for

I think it would help a system like qora for visitors to be able to submit data for free, if it matched some AT that would provide the finances for the data.

Data could be submitted via API; it is then valid if there exists an AT which will sign it and pay the fee; this happens and it is broadcast, and the api call succeeds.

ClosedByInterruptException in Pinger

2018-03-06 15:00:19 INFO  Network:92 - Connection close : /213.226.223.66
Exception in thread "Pinger /213.226.223.66" java.io.IOError: java.nio.channels.
ClosedByInterruptException
        at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:977)
        at org.mapdb.StoreWAL.getLinkedRecordsFromLog(StoreWAL.java:880)
        at org.mapdb.StoreWAL.update(StoreWAL.java:380)
        at org.mapdb.Caches$HashTable.update(Caches.java:270)
        at org.mapdb.BTreeMap.put2(BTreeMap.java:707)
        at org.mapdb.BTreeMap.put(BTreeMap.java:643)
        at database.PeerMap.addPeer(PeerMap.java:446)
        at network.Peer.onPingSuccess(Peer.java:146)
        at network.Pinger.run(Pinger.java:80)
Caused by: java.nio.channels.ClosedByInterruptException
        at java.nio.channels.spi.AbstractInterruptibleChannel.end(Unknown Source
)
        at sun.nio.ch.FileChannelImpl.readInternal(Unknown Source)
        at sun.nio.ch.FileChannelImpl.read(Unknown Source)
        at org.mapdb.Volume$FileChannelVol.readFully(Volume.java:946)
        at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:974)
        ... 8 more
Exception in thread "BlockGenerator" java.io.IOError: java.nio.channels.ClosedCh
annelException
        at org.mapdb.Volume$FileChannelVol.putByte(Volume.java:920)
        at org.mapdb.StoreWAL.walIndexVal(StoreWAL.java:277)
        at org.mapdb.StoreWAL.update(StoreWAL.java:413)
        at org.mapdb.Caches$HashTable.update(Caches.java:270)
        at org.mapdb.Atomic$Var.set(Atomic.java:688)
        at database.BlockMap.setLastBlock(BlockMap.java:143)
        at qora.block.Block.process(Block.java:781)
        at qora.block.Block.process(Block.java:711)
        at qora.Synchronizer.process(Synchronizer.java:320)
        at qora.Synchronizer.synchronize(Synchronizer.java:458)
        at controller.Controller.update(Controller.java:1046)
        at qora.BlockGenerator.run(BlockGenerator.java:185)
Caused by: java.nio.channels.ClosedChannelException
        at sun.nio.ch.FileChannelImpl.ensureOpen(Unknown Source)
        at sun.nio.ch.FileChannelImpl.write(Unknown Source)
        at org.mapdb.Volume$FileChannelVol.writeFully(Volume.java:865)
        at org.mapdb.Volume$FileChannelVol.putByte(Volume.java:918)
        ... 11 more

This looks like pinger.interrupt() is being called and Pinger's run() thread calls Peer.onPingSuccess() before exiting thread. Peer.onPingSuccess() does a mapdb call and if interrupt status isn't cleared before a mapdb call then the FileChannel is closed and everything goes wrong!

NullPointerException when launching Qora on Ubuntu

2016-09-03 08:34:48 ERROR DBMap:182 - java.lang.NullPointerException at qora.transaction.DeployATTransaction.getATaccount(DeployATTransaction.java:512) at qora.transaction.DeployATTransaction.getRecipientAccounts(DeployATTransaction.java:571) at database.TransactionFinalMap$2.run(TransactionFinalMap.java:93) at database.TransactionFinalMap$2.run(TransactionFinalMap.java:1) at org.mapdb.Bind$6.update(Bind.java:438) at org.mapdb.BTreeMap.notify(BTreeMap.java:2792) at org.mapdb.BTreeMap.put2(BTreeMap.java:755) at org.mapdb.BTreeMap.put(BTreeMap.java:643) at database.DBMap.set(DBMap.java:141) at database.TransactionFinalMap.add(TransactionFinalMap.java:181) at qora.block.Block.process(Block.java:762) at qora.block.Block.process(Block.java:705) at qora.Synchronizer.process(Synchronizer.java:343) at qora.Synchronizer.synchronize(Synchronizer.java:195) at controller.Controller.update(Controller.java:1024) at qora.BlockGenerator.run(BlockGenerator.java:178)

Tried replacing 'data' and 'dataBak' folders with https://cloud.crowetic.com/s/IDzrYBiqXnhNCvg which did not resolve the problem.
Currently downloading entire chain...

Prioritize peers to resist eclipsing

An eclipse attack is when the client is provided with a mess of peers all of which misbehave, offering it a "virtual world" which is false. This can also happen by accident, in the case of a network split for example.

Resistance to this can be much stronger than simply keeping the longest-connected peers. Research into academically-reviewed solutions to these issues is the right way to go. I have not done this.

I at least, however, recommended prioritizing peers by behavior. Following priority list is in need of review:

  1. The best peers are those which have provided us other peers that are behaving well. These peers are crucial to keep us in a working network. Ideally these peers also provide items 2 and 3.
  2. Second-best peers are those which have provided us with valid blocks which contain all the transactions we have produced and broadcast since the block preceding and have the highest generating balance. This could be a % evenly distributed over the different keys signing the transactions, to resist identity censorship. Ideally these peers also provide item 3.
  3. Third-best peers are those which provide blocks containing transactions for which we are the recipient, with similar concerns as item 2.
  4. In the event of no transactions related to us in blocks on the network, peer is considered unsynchronized, and user is advised to visit faucet to verify they are on the network.

It would additionally be helpful to support proxy connections so other channels can be used in these events (web proxy, tor, i2p, sneakernet)

ArbitraryTransaction ERROR

016-03-24 17:40:33 ERROR ArbitraryTransaction:225 - org.json.simple.JSONObject cannot be cast to java.lang.String
java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to java.lang.String
at utils.StorageUtils.getKeys(StorageUtils.java:288)
at utils.StorageUtils.getAllKeysForOrphanSaving(StorageUtils.java:276)
at utils.StorageUtils.processUpdate(StorageUtils.java:136)
at qora.transaction.ArbitraryTransaction.process(ArbitraryTransaction.java:213)
at qora.block.Block.isValid(Block.java:694)
at qora.block.Block.isValid(Block.java:571)
at qora.Synchronizer.process(Synchronizer.java:339)
at qora.Synchronizer.synchronize(Synchronizer.java:195)
at controller.Controller.update(Controller.java:1024)
at qora.BlockGenerator.run(BlockGenerator.java:178)
2016-03-24 17:40:33 ERROR ArbitraryTransaction:225 - org.json.simple.JSONObject cannot be cast to java.lang.String
java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to java.lang.String
at utils.StorageUtils.getKeys(StorageUtils.java:288)
at utils.StorageUtils.getAllKeysForOrphanSaving(StorageUtils.java:276)
at utils.StorageUtils.processUpdate(StorageUtils.java:136)
at qora.transaction.ArbitraryTransaction.process(ArbitraryTransaction.java:213)
at qora.block.Block.process(Block.java:714)
at qora.block.Block.process(Block.java:705)
at qora.Synchronizer.process(Synchronizer.java:343)
at qora.Synchronizer.synchronize(Synchronizer.java:195)
at controller.Controller.update(Controller.java:1024)
at qora.BlockGenerator.run(BlockGenerator.java:178)
2016-03-24 17:40:39 INFO Network:66 - Connection successfull : /119.176.85.152

NPE in BlocksTableModel.getValueAt() during JSwing repaint

2017-12-04 14:34:58 ERROR DBMap:119 - 
java.lang.ArrayIndexOutOfBoundsException
2017-12-04 14:34:58 ERROR BlocksTableModel:109 - 
java.lang.NullPointerException
        at gui.models.BlocksTableModel.getValueAt(BlocksTableModel.java:82)
        at javax.swing.JTable.getValueAt(Unknown Source)
        at javax.swing.JTable.prepareRenderer(Unknown Source)
        at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
        at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
        at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
        at javax.swing.plaf.ComponentUI.update(Unknown Source)
        at javax.swing.JComponent.paintComponent(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JViewport.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintToOffscreen(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
        at javax.swing.RepaintManager.paint(Unknown Source)
        at javax.swing.JComponent._paintImmediately(Unknown Source)
        at javax.swing.JComponent.paintImmediately(Unknown Source)
        at javax.swing.RepaintManager$4.run(Unknown Source)
        at javax.swing.RepaintManager$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
        at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
        at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
        at javax.swing.RepaintManager.access$1200(Unknown Source)
        at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

Note that the DBMap frame may/may not be relevant!

Message TX - JSON

JSON returns true while is false
"encrypted":"true"

Example : http://127.0.0.1:9085/transactions/signature/5EstiTm1ShdJFr9Pur3VgsHZAZyn3KkBvjvFe8UPcfRsNzAupUhFZdkcysguzthYTxUPxk5iQTh6WXJC2z29vCi4

JSON :
{"reference":"uTsMrTr19GSPwWYyb9FpkntQKcS6jSAXuBf2ykYhVuA6Ag6LeTYVyTnbFTtfZM29wHr8NCv3Ej6HSYcCsrs5AQt","creator":"QUWxrwJ8AqKkz4B2b1aMc9aD83WPRcLxss","amount":1.00000000,"data":"54ubkpURFFrJc8","encrypted":"true","signature":"5EstiTm1ShdJFr9Pur3VgsHZAZyn3KkBvjvFe8UPcfRsNzAupUhFZdkcysguzthYTxUPxk5iQTh6WXJC2z29vCi4","fee":"1.00000000","recipient":"QQQ7GvQPJbLRJrD8E2EnZb22RzBSuf3hgY","type":17,"confirmations":5,"isText":"true","timestamp":1431969158248}

Security Audit Needed

Since Qora was created, there have been a number of issues identified in the basic concept of the proof-of-stake blockchain. Other projects have found solutions to these issues, but most of these solutions have not been integrated into Qora.

Qora is in need of somebody experienced in proof-of-stake issues to bring it to the same level of security as the other chains. The development focus on features has provided incredible quality here, but there should be verification that Qora does not suffer from, for example, the simple nothing-at-stake issue.

Another mapdb/interrupt issue (in Peer)

2017-10-27 18:03:46 INFO  Start:92 - Starting Qora / version: 0.26.1 / build date: 2017-09-08 / ...
2017-10-27 18:18:37 INFO  Settings:351 - Peers loaded from Internet : 4
2017-10-27 18:59:08 INFO  Settings:351 - Peers loaded from Internet : 4
2017-10-27 19:40:43 INFO  Settings:351 - Peers loaded from Internet : 4
2017-10-27 20:21:58 INFO  Settings:351 - Peers loaded from Internet : 4
2017-10-27 20:25:40 ERROR ArbitraryTransaction:236 - java.nio.channels.ClosedByInterruptException
java.io.IOError: java.nio.channels.ClosedByInterruptException
	at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:977)
	at org.mapdb.StoreWAL.getLinkedRecordsFromLog(StoreWAL.java:880)
	at org.mapdb.StoreWAL.update(StoreWAL.java:380)
	at org.mapdb.Caches$HashTable.update(Caches.java:270)
	at org.mapdb.EngineWrapper.update(EngineWrapper.java:63)
	at org.mapdb.BTreeMap.put2(BTreeMap.java:707)
	at org.mapdb.BTreeMap.put(BTreeMap.java:643)
	at database.DBMap.set(DBMap.java:141)
	at qora.web.NameStorageMap.add(NameStorageMap.java:61)
	at utils.StorageUtils.addTxChangesToStorage(StorageUtils.java:243)
	at utils.StorageUtils.processUpdate(StorageUtils.java:147)
	at qora.transaction.ArbitraryTransaction.process(ArbitraryTransaction.java:224)
	at qora.block.Block.isValid(Block.java:694)
	at qora.block.Block.isValid(Block.java:571)
	at qora.Synchronizer.process(Synchronizer.java:344)
	at controller.Controller.onMessage(Controller.java:880)
	at network.Network.onMessage(Network.java:269)
	at network.Peer.run(Peer.java:178)
Caused by: java.nio.channels.ClosedByInterruptException
	at java.nio.channels.spi.AbstractInterruptibleChannel.end(Unknown Source)
	at sun.nio.ch.FileChannelImpl.readInternal(Unknown Source)
	at sun.nio.ch.FileChannelImpl.read(Unknown Source)
	at org.mapdb.Volume$FileChannelVol.readFully(Volume.java:946)
	at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:974)
	... 17 more
2017-10-27 20:25:40 ERROR ArbitraryTransaction:236 - java.nio.channels.ClosedChannelException
java.io.IOError: java.nio.channels.ClosedChannelException
	at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:977)
	at org.mapdb.StoreWAL.getLinkedRecordsFromLog(StoreWAL.java:880)
	at org.mapdb.StoreWAL.update(StoreWAL.java:380)
	at org.mapdb.Caches$HashTable.update(Caches.java:270)
	at org.mapdb.EngineWrapper.update(EngineWrapper.java:63)
	at org.mapdb.BTreeMap.put2(BTreeMap.java:746)
	at org.mapdb.BTreeMap.put(BTreeMap.java:643)
	at database.DBMap.set(DBMap.java:141)
	at qora.web.OrphanNameStorageMap.add(OrphanNameStorageMap.java:63)
	at utils.StorageUtils.processUpdate(StorageUtils.java:140)
	at qora.transaction.ArbitraryTransaction.process(ArbitraryTransaction.java:224)
	at qora.block.Block.isValid(Block.java:694)
	at qora.block.Block.isValid(Block.java:571)
	at qora.Synchronizer.process(Synchronizer.java:344)
	at controller.Controller.onMessage(Controller.java:880)
	at network.Network.onMessage(Network.java:269)
	at network.Peer.run(Peer.java:178)
Caused by: java.nio.channels.ClosedChannelException
	at sun.nio.ch.FileChannelImpl.ensureOpen(Unknown Source)
	at sun.nio.ch.FileChannelImpl.read(Unknown Source)
	at org.mapdb.Volume$FileChannelVol.readFully(Volume.java:946)
	at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:974)
	... 16 more
2017-10-27 20:25:40 ERROR ArbitraryTransaction:236 - java.nio.channels.ClosedChannelException
java.io.IOError: java.nio.channels.ClosedChannelException
	at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:977)
	at org.mapdb.StoreWAL.getLinkedRecordsFromLog(StoreWAL.java:880)
	at org.mapdb.StoreWAL.update(StoreWAL.java:380)
	at org.mapdb.Caches$HashTable.update(Caches.java:270)
	at org.mapdb.EngineWrapper.update(EngineWrapper.java:63)
	at org.mapdb.BTreeMap.put2(BTreeMap.java:746)
	at org.mapdb.BTreeMap.put(BTreeMap.java:643)
	at database.DBMap.set(DBMap.java:141)
	at qora.web.OrphanNameStorageMap.add(OrphanNameStorageMap.java:63)
	at utils.StorageUtils.processUpdate(StorageUtils.java:140)
	at qora.transaction.ArbitraryTransaction.process(ArbitraryTransaction.java:224)
	at qora.block.Block.isValid(Block.java:694)
	at qora.block.Block.isValid(Block.java:571)
	at qora.Synchronizer.process(Synchronizer.java:344)
	at controller.Controller.onMessage(Controller.java:880)
	at network.Network.onMessage(Network.java:269)
	at network.Peer.run(Peer.java:178)
Caused by: java.nio.channels.ClosedChannelException
	at sun.nio.ch.FileChannelImpl.ensureOpen(Unknown Source)
	at sun.nio.ch.FileChannelImpl.read(Unknown Source)
	at org.mapdb.Volume$FileChannelVol.readFully(Volume.java:946)
	at org.mapdb.Volume$FileChannelVol.getLong(Volume.java:974)
	... 16 more
2017-10-27 20:32:26 INFO  Settings:351 - Peers loaded from Internet : 4

CLI mode broken

From Discord chat:

Mike Gurov - Yesterday at 10:22 PM
Hi! Iam find error with start qora on the cli mode.
Your initial API clients "ApiClient client = new ApiClient();", but not initial RPC server - "Controller.getInstance().start();"
This schem allready take "[RESULT] Invalid command! "
As RPC server not initials....

Is this project dead?

I read in another issue that the project is not dead, just the website has been taken down.

What's the real status of this project?

Thanks!

JSON issue when repopulating name storage during startup

On a second start, the program would not visibly run (it would run in a background for a few minutes (and be seen in a program manager) and would dissapear completely after that)

The log file: "STARTUP ERROR: org.json.simple.JSONObject cannot be cast to java.lang.String
... ERROR Start:37 - log4j.properties not found, search path is C:\Program Files\Qora\log4j.properties using default!"
Starting Qora / version: 0.26.2.1 / build date: 2017-11-06 / ...
...INFO  NTP:30 - Adjusting time with 860 milliseconds.
...ERROR Start:114 - org.json.simple.JSONObject cannot be cast to java.lang.String
java.lang.ClassCastException: org.json.simple.JSONObject cannot be cast to java.lang.String
   at utils.StorageUtils.getKeys(StorageUtils.java:288)
   at utils.StorageUtils.getAllKeysForOrphanSaving(StorageUtils.java:276)
   at utils.StorageUtils.processUpdate(StorageUtils.java:136)
   at utils.UpdateUtil.repopulateNameStorage(UpdateUtil.java:42)
   at controller.Controller.start(Controller.java:342)
   at Start.main(Start.java:99)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
   at java.lang.reflect.Method.invoke(Unknown Source)
   at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)"

Unicode in API

[COMMAND] POST namepayment {"amount":"1.0","fee":"1.0","sender":"QfaucettiqGtTe1yXVHgZETfrFJ4bBmSoX","recipient":"олег"}
[RESULT] {
"error":701,
"message":"The name is not registered"
}

debug gives:
String nameName = ���� (

JSONObject jsonObject1 = (JSONObject) JSONValue.parse("{"recipient":"олег"}");
String nameName = (String) jsonObject1.get("recipient");
works well

Translate with parameters

Please make
lang.lang.Translate (Message, Pars) ->

format( Message, Pars) - >
Message = "... %name% ... %item%"
Pars = { name = "MyName1", item = 1 }

and insert errors thrown if message or parameters is wrong

Database/name service error

I started QORA and got the following error:

2018-02-25 19:01:03 WARN StorageUtils:223 - Invalid name storage patch for name "2ndtest"
difflib.PatchFailedException: Incorrect Chunk: the chunk content doesn't match the target
at difflib.Chunk.verify(Chunk.java:79) ~[Qora.jar:?]
at difflib.ChangeDelta.verify(ChangeDelta.java:78) ~[Qora.jar:?]
at difflib.ChangeDelta.applyTo(ChangeDelta.java:44) ~[Qora.jar:?]
at difflib.Patch.applyTo(Patch.java:42) ~[Qora.jar:?]
at utils.DiffHelper.patch(DiffHelper.java:49) ~[Qora.jar:?]
at utils.StorageUtils.addTxChangesToStorage(StorageUtils.java:221) [Qora.jar:?]
at utils.StorageUtils.processUpdate(StorageUtils.java:150) [Qora.jar:?]
at utils.UpdateUtil.repopulateNameStorage(UpdateUtil.java:42) [Qora.jar:?]
at controller.Controller.start(Controller.java:353) [Qora.jar:?]
at Start.main(Start.java:75) [Qora.jar:?]

Now QORA keeps crashing, nothing works anymore.

Web-based name-storage page can't handle names with whitespace

When using the web-based name-storage page at http://127.0.0.1:9090/index/namestorage.html
and an entry in the "name" drop-down selection contains whitespace
then the <option>'s value attribute is malformed.

For example, with a registered name of "my name - what does it do?" the HTML is constructed thus:

<select class="form-control" id="select-name">
  <option value="my" name="" -="" what="" does="" it="" do?="">
    4.00000000 - my name - what does it do?
  </option>
</select>

The correct HTML should be:

<select class="form-control" id="select-name">
  <option value="my name - what does it do?">
    4.00000000 - my name - what does it do?
  </option>
</select>

There may be other places where this occurs so a system-wide check would be a good idea.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.