Skip to content

Changelog Epic Server

Jhelison Uchoa edited this page Jan 23, 2023 · 7 revisions

Epic - 3.3.2

The epic-server is the application that connects with the EPIC’s network as a node. Through the epic-server, the users are able to synchronize with the blockchain, use an API to get some information about the blockchain or the entire network, connect epic-wallet to mine EPICs, and so on.

The current official epic-server version is v3.0.0. This release document specifies the improvements made for the application and defines a new alpha version as v3.0.9~alpha-1.

This document is structured into three sections: Improvements, New Features, and Bugs Fixed.

Improvements

Fast usernet

Sometimes the user wants to test/simulate an EPIC environment without using real EPIC coins, and in a private network. That is the main idea of usernet, which is a private and local network that works just as the mainnet but only on the local machine allowing all testing to be done safely and isolated from the main net. In most cases, the users just want to test new features or just want to see how EPIC works, and it should be faster to mine some EPICs and store them in a testing wallet, to than start using the mainnet.

By thinking about that, we reduced the difficulty of mining on the usernet, in order to accept more blocks. Basically, a single miner can now mine approximately 80 blocks/min and add the rewards in a testing wallet to make some transactions, test new features, and so on.

All you need to setup the local epic node is to execute the following command:

epic --usernet --onlyrandomx

Where:

  • epic is the binary for execution;
  • --usernet is the flag that defines that the node will be for the testing network;
  • --onlyrandomx is a new policy to accept block from algorithms that accept only blocks that comes from randomx algorithm.

There is also the need for a testing wallet to simulate on usernet. The epic-wallet also accepts the --usernet flag.

Foundation file

As EPIC has a foundation wallet, there is the foundation.json file that stores the transaction to this specific wallet. When we updated epic-server from v2.17 to v3.0.0, there was a problem of using the correct foundation.json file. Many times we needed to change it manually. So, from now the correct file is used.

New features

Algorithm arbitration policies

In order to apply a fair reward distribution over the miner users, the epic-server has a policy that specifies from what algorithm the next block must come. Currently, there are three algorithms of proof-of-work that the epic-miner is able to do: RandomX (CPU-only), ProgPow (GPU-only), and Cuckatoo (GPU-only). The default policy applies a percentage of block acceptance from each one of the three algorithms. The default policy is currently applied on mainnet, and was previously applied also on floonet.

In order to facilitate for users to mine as faster as possible, we added two new arbitration policies available for floonet and usernet: onlyradomx and noprogpow.

The onlyrandomx is the one that we mentioned that can be used on usernet as a flag like this:

epic --usernet --onlyrandomx

It only expects blocks that come from RandomX proof-of-work. However, if the user wants to test also with a GPU-only algorithm, besides de CPU-only, it can be used the noprogpow policy. Like this:

epic --usernet --noprogpow

This other policy expects blocks that come from RandomX and Cuckatoo.

NOTE: Currently, the floonet node is operating with the noprogpow policy. So, if you want to make tests on floonet, you need to run your node like this:

epic --floonet --noprogpow

API methods

The epic-server provides a set of API methods that the users can integrate with their own applications to get some details about the blockchain and the network used. Basically, they are POST and GET methods from the HTTP protocol, and can respond with the current chain height; the current status of the node; how many peers are connected; and so on.

In this new release, we added two new methods: get_blocks and get_last_n_kernels.

The get_blocks respond with a list of the reachable blocks on the chain, before the pruning, in a specified range. As it is a POST method, it requires a JSON input that contains the requested details to access the blocks subset. This is the requested JSON:

{
	"jsonrpc": "2.0",
	"method": "get_blocks",
	"params": [<START_HEIGHT>, <END_HEIGHT>, <HASH>, <COMMIT>],
	"id": 1
}

The parameters needed are: START_HEIGHT: the number of the initial block on the range; END_HEIGHT: the number of the final block on the range; HASH (optional): the block’s hash; COMMIT (optional): the block’s commit;

It is similar to the get_block method. However, it responds with a list of more than one element.

For the get_last_n_kernels, it is similar to the get_kernel method, but it responds with a list of the last n kernels starting from the current chain height. As it is also a POST method, it requires another JSON as input. Here is the JSON:

{
	"jsonrpc": "2.0",
	"method": "get_last_n_kernels",
	"params": [<N>],
	"id": 1
}

The parameter N is the number of kernels the user wants to list.

Bugs fixed

CMake version

There was a problem that when we tried to clone the epic-server from the Github repository, and apply all dependencies, the cmake version required didn’t allow the instillation to be succeeded.

We fixed this problem by requesting to install version 3.18.4 or 3.19.3 of CMake.

Cucumber automated tests

After applying the changes to this new version, some cucumber automated tests were broken. So basically, we adapted them to work with our current changes.

Full changelog

  • V3 custom config for testnets
    • Enable the new PolicyConfig for onlyrandomx and noprogpow please use one-off new arguments
  • Changes on the usernet
    • Mine more blocks per second
  • Added feedback if foundations are broken
  • Add get blocks and get last n kernels endpoints
    • Get blocks returns all the mined blocks
    • Last n kernels returns all the available kernels
  • Add Testnet configuration file
  • Reproducible builds
  • New readme

epic 3.0.9-alpha-1

  • Add --onlyrandomx and --noprogpow for testnet
  • Fix: mining on usernet
  • Feat: speed up mine blocks on usernet
  • Fix: Variable Reference
  • Update build.md
  • Create testnet_configuration.md
  • Feat: Add get_blocks and get_last_n_kernels
  • #21 Add simple print to indicate the foundation is broke
  • Fix: cucumber tests
  • Add CDN

epic 3.0.0

  • #50 Fix: Address issue Breaks windows build
  • #46 Merge pull request from acosta-brickabode/feature/gh-action-linux
  • #45 Merge pull request from acosta-brickabode/fix/log-level-syncer
  • Fix: Replace pancurses-backend feature with termion-backend to fix ncurses rendering issues
  • Refactor: Remove libssl-dev as build requirement
  • Fix: Replace log::info feature with log::debug to fix overprinting sync messages
  • Feat: Implement Github Action for generating Linux artifact
  • #40 Doubling the value of the MAINNET_FIRST_HARD_FORK constant
  • Fix: Update croaring to a fork that doesn't use -march=native that was causing the illegal instruction errors
  • #38 Retry connecting to the seed servers when there is no connected peers
  • Test(config): Add unit tests to check compatibility with v2 and v3 values for log-levels
  • Fix(config): Use custom deserialization function that accepts log-level values from both v2 and v3
  • #35 Merge pull request from EpicCash/fix/floonet-foundation
  • Fix(floonet): Make foundation_floonet.json the same as foundation.json
  • #34 Merge pull request from EpicCash/feature/create-block-fees-submodule
  • Move the BlockFeeds type a separate location for better reusage: the wallets can use it there
  • Increasing the FLOONET_FIRST_HARD_FORK to 25800
  • #33 Merge pull request from EpicCash/fix/cmake-error
  • #32 Merge pull request from EricShimizuKarbstein/update-docs
  • Update randomx-rust
  • Update build instructions
  • Fix: more chunk size for header sync
  • Fix: add missing shutdown info in cmd mode
  • Refactor: update zeroise macro keychain, utils
  • #29 Update epic cargo docs and wrong comments in code
  • #28 Fix: update some deps in keychain
  • #27 Merge pull request from hdmark/patch-1
  • Fix: update header sync; remove dublicate check bad header; remove debug output from graph weight
  • Fix: move reset stalling, sync peer reset
  • remove unused debug output
  • change header sync ban action
  • Fix: windows foundation height
  • #26 Removing verifier caches
  • make small peers sync improvements
  • Fix: make header sync faster
  • update foundation sha for unix
  • update foundation hash; peers v2 to v3 sync
  • P2P: better handling of mpsc channel and initial handshake messages with other peers
  • Chain: Better output PMMR handling and Chain DB index. Improve stability and DB crashes.
  • New Header Version 7 and better Header Version Switch
  • Tui:
    • Some TUI improvements.
    • Lists can be scrolled now.
  • Split of File and Console output and cleanup
  • API:
    • API enhancements and new API v3 for Wallet communication

epic (3.0.0-beta)

  • changing algo mix for next block era 3
  • split stdout logformat from file log; stdout cosmetics

epic (3.0.0-alpha-6)

  • rewind #3045
  • rewind Read header_head and sync_head from header MMRs directly
  • addd missing chain setup
  • additional code changes v3
  • pipe changes
  • add header hash to header info
  • check store for block sums
  • remove fixed size
  • change db store consts
  • add missing code v3
  • change zeroise to 1.3.x
  • change zerois to 1.x
  • change floonet era height; fix MAINNET_DIFFICULTY_ERA height
  • change current header version to 6
  • change cursive version
  • alpha6 finalize for testing
  • change stratum rpc id value
  • change floonet seed
  • fix v3 #3268

epic (3.0.0-alpha-5)

  • change floonet first hardfork to header version 7 to blockheight 5760
  • change header back to v7
  • fix windows compatibility
  • add badblock script from 2.15;cursive tui update;version checker; set to v3.0.0
  • update ser because of serde::export private
  • Merge pull request #15 from johanneshahn/develop
  • Update build.md
  • Update build.md
  • Add missing 222 to FOUNDATION_LEVY
  • add missing foundation levy 222
  • API client basic authorization.
  • Adding cucumber tests - trying to spend foundation coins
  • Merge pull request #7 from EpicCash/fix-foudation-levy

epic (3.0.0-alpha-4)

  • Merge branch 'fix-emission-schedule' into 'develop'
  • Update emission schedule
  • Merge branch 'fix--duration-tui' into 'develop'
  • Fix wrong duration on tui
  • Merge branch 'fix-floonet-foundation' into 'develop'
  • Fix floonet foundation on windows

epic (3.0.0-alpha-3)

  • Fixing the communication between server and wallet
  • Update build.md -> remove "brew install llvm" for build with Mac. Mac ships own llvm

epic (3.0.0-alpha-2)

  • Fixing conflict with EpicWallet

epic (3.0.0-alpha-1)

  • This patch only affects floonet
  • Integrates grin 3.0.0 codebase into ours
  • Fixes some synchronization problems
  • Adjusts the difficulty adjustment a bit
  • Introduces a hard-fork in floonet at height 2880

epic (3.0.0-alpha)

  • Merge branch 'develop'
  • Merge branch '1st-hard-fork' into develop
  • Add foundation for floonet
  • Add height for mainnet hardfork
  • Fix load foundation for differents version
  • Fix display of the difficulty
  • Fixing some core tests.
  • Add build foundation command
  • Fix p2p and wallet signature
  • Update package version
  • Fix txhashset keeping with invalid block hash
  • Fix legacy transactions on cucumber tests
  • Fix many cucumber tests
  • Every test is compiling now.
  • Fixing loading of previous block
  • Compiling pool.
  • Compiling core tests.
  • Fixing compilation for cucumber tests
  • Fixing compilation for chain tests.
  • Fixing API tests.
  • Fix log
  • Update tui
  • Add function missing on core
  • Update server version
  • Update api version
  • p2p and pool now compiling.
  • epic_core is now compiling.
  • epic_util should be compiling.
  • epic_store should be compiling.
  • epic_core should be compiling.
  • Fast Sync initial files
  • Merge branch 'update-floonet' into 'develop'
  • Merge branch 'update_macos_build_instructions' into 'develop'
  • Modify files for first Hard Fork
  • Update Floonet DNS seeds

epic (2.4.0)

  • Add 240 foundation slips

epic (2.3.1-1)

  • Make header sync timeout user-configurable
  • Change the default header sync timeout
  • Improve the broadcasting of mined blocks

epic (2.3.0-2)

  • Fix package generation on rust 1.36.0
  • Updating submodules before building

epic (2.3.0-1)

  • Update documentation
  • Fix epic-server link
  • Add windows documentation
  • Fix sync threshold bug
  • Fix sync difficulty bug

epic (2.2.3-1)

  • Update DNS

epic (2.2.2-1)

  • Release version

epic (2.1.0-1)

  • Changing the genesis block

epic (2.0.0-1)

  • Fix stratum server overflow
  • Recovering the old copyright notices
  • Official foundation.json file.
  • Add sha256 verification to the foundation.json
  • Updating the sha256sum with the new foundation.json
  • Increase block version

epic (1.6.0-1)

  • Fix test for accept pow
  • Change the timestamp computation
  • Improve the readability of cucumber tests
  • Remove unnecessary prints
  • Generate new timestamp for each job
  • Fix some tests
  • Decrease the control constant of progpow
  • Increase header version to 4
  • Fix node sending double jobs for miner
  • Fix load fundation in the windows
  • Fix cursive for windows and foundation path
  • Add tests for load foundation file
  • Fix mining duration time in TUI
  • Update the foundation rewards
  • Add assert to invalid heights
  • Fix more display errors in the TUI
  • Update foundation.json
  • Fix genesis test
  • Fix select fork with difficulty
  • Fix infinite loop in the cucumber test
  • Add tests for fork based in the difficulty
  • Fix some cucumber errors
  • Add scripts for windows installer
  • Update progpow and randomx version
  • Fix installer version
  • Fix select fork with difficulty
  • Fix infinite loop in the cucumber test
  • Add tests for fork based in the difficulty
  • Fix some cucumber errors
  • Add current difficulty in the job template
  • Change develop version
  • Fix ProgPow average not being displayed
  • Fix tests with invalid pow

epic (1.5.0-1)

  • Reenable Continuous Integration.
  • Adding a cache for faster builds.
  • Remove md5 test and fix some proofs
  • Share the cache between all branches.
  • Fixing genesis hash in tests.
  • New cache configuration.
  • More genesis hash fixes.
  • Update documentation and change some defaults
  • Update submodules.
  • Add next algorithm in the job template
  • Add cucumber difficulty adjustment tests
  • Add more tests for multi algo difficulty adjustment
  • Change cuckoo initial difficulty
  • update randomx rust
  • Fix all tests
  • Change block version

epic (1.4.0-2)

  • Fixing postinst script

epic (1.4.0-1)

  • Fix extra time for difficulty
  • Add const global for change block version
  • Change version serialize
  • Changing the directory of foundation.json
  • Add dns version checker
  • Add version struct
  • Add version.rs file
  • Improve the error message

epic (1.3.1-1)

  • Fix dns address

epic (1.3.0-1)

  • Add multi-gpu mining instructions
  • Fix seed validation when it is synchronizing
  • Fix cuckatoo reversing difficulty of progpow and randomx
  • Improving dpkg documentation.
  • Add floonet dns seed

epic (1.2.0-1)

  • Fix almost all grin tests
  • Fix indentation
  • Add cargo lock for p2p fuzz tests
  • Fix all no-cucumber tests
  • Add support for multi policy
  • Add cursor for search block with same policy and update config
  • A bug report tool for Epic.
  • Adding (untested) Windows commands to get cpuinfo and lspci.
  • Reduce the height for coinbase maturity in the floonet
  • Add randomx seed changing in each epochs
  • Fix validation and load multiples epochs
  • Remove conflict tag
  • Remove condition repeated
  • Change the rewards to match the whitepaper
  • Fix non-cucumber tests
  • Improve cucumber tests names
  • Add foundation height for floonet
  • Increase floonet foundation height
  • Remove genesis reward
  • Fix genesis hash test
  • Update randomx rust
  • Fix invalid seed in tests
  • Adding epic-bugreport to the package.
  • Add policies matching the white paper
  • Fix calc for seed height
  • change randomx epochs
  • Aborting the package build in case of an error.
  • Change the default min share difficulty
  • Fix diff factor for randomx and decrease progpow difficulty

epic (1.1.0-1)

  • Documentation on how to submit bug reports.
  • Adjust build block with first block timestamp
  • Increase progpow difficulty and diff factor
  • Run all tests script.
  • Increase progpow difficulty
  • Adjust difficulty

epic (1.0.5-1)

  • Fix ovefflow in difficultyiter

epic (1.0.4-1)

  • Update randomx rust
  • Fix pow rejected
  • Fix Randomx control algo
  • Fix selection of algo in blockchain
  • Update the selection of timestamps from the blockchain
  • Fix cargo build
  • Correct difficulty difference
  • Fix calc for differents timestamp
  • Fix get list of old difficulty
  • Update the link to the packages
  • Fix total difficulty calc
  • Fix return of prev header when none
  • Fix interator prev
  • Fix i64 values in the DifficultyIter

epic (1.0.3-3)

  • Fixing the doc for testnet reset.
  • It's chain_data, not /chain/data
  • Todd's review of the testnet reset doc.
  • Update testnet reset instructions
  • Add specific height for foundation reward
  • Add mine using only cpu
  • Add mine using only cpu
  • Update links and checksum
  • Fix the height sent to the wallet API
  • Update progpow rust
  • Update RandomX config
  • Installing foundation.json with write permissions.
  • Maintainance script for epic.

epic (1.0.2-1)

  • Fixing bugs with progpow

epic (1.0.0-2)

  • Fixing the dependencies
  • Removing the pipe from the network

epic (1.0.0-1)

  • Initial release