forked from Qortal/qortal
Qortal Core - Main Code Repository
Decentralized Data Network - Blockchain - TRUE Cross-Chain Trading - Application and Website Hosting - Much More - Qortal is the future internet infrastructure for the global digital world.
fbdc1e1cdb
Adding support for GET_ONLINE_ACCOUNTS_V3 to Controller, which calls OnlineAccountsManager. With OnlineAccountsV3, instead of nodes sending their list of known online accounts (public keys), nodes now send a summary which contains hashes of known online accounts, one per timestamp + leading-byte combo. Thus outgoing messages are much smaller and scale better with more users. Remote peers compare the hashes and send back lists of online accounts (for that timestamp + leading-byte combo) where hashes do not match. Massive rewrite of OnlineAccountsManager to maintain online accounts. Now there are three caches: 1. all online accounts, but split into sets by timestamp 2. 'hashes' of all online accounts, one hash per timestamp+leading-byte combination Mainly for efficient use by GetOnlineAccountsV3 message constructor. 3. online accounts for the highest blocks on our chain to speed up block processing Note that highest blocks might be way older than 'current' blocks if we're somewhat behind in syncing. Other OnlineAccountsManager changes: * Use scheduling executor service to manage subtasks * Switch from 'synchronized' to 'concurrent' collections * Generally switch from Lists to Sets - requires improved OnlineAccountData.hashCode() - further work needed * Only send V3 messages to peers with version >= 3.2.203 (for testing) * More info on which online accounts lists are returned depending on use-cases To test, change your peer's version (in pom.xml?) to v3.2.203. |
||
---|---|---|
.github/workflows | ||
lib | ||
src | ||
tools | ||
WindowsInstaller | ||
.gitignore | ||
AutoUpdates.md | ||
DATABASE.md | ||
Dockerfile | ||
log4j2.properties | ||
pom.xml | ||
README.md | ||
run.sh | ||
start.sh | ||
stop.sh | ||
TestNets.md |
Qortal Project - Official Repo
Build / run
- Requires Java 11. OpenJDK 11 recommended over Java SE.
- Install Maven
- Use Maven to fetch dependencies and build:
mvn clean package
- Built JAR should be something like
target/qortal-1.0.jar
- Create basic settings.json file:
echo '{}' > settings.json
- Run JAR in same working directory as settings.json:
java -jar target/qortal-1.0.jar
- Wrap in shell script, add JVM flags, redirection, backgrounding, etc. as necessary.
- Or use supplied example shell script: start.sh