Our work

An overview of what we are working on and have worked on. We try to be as detailed as possible, but our work is not predictable. This means that sometimes we have to solve a bug quickly or provide support. These actions are not recorded.

We are now working on

Converting Electron for Florin to Gulden
Time worked: 418 hours

From this phase everyone can contribute to the development of the Gulden Wallet. Progress and code: https://github.com/Gulden/gulden-official/tree/2.3_development

Electron interface system
Time worked: 2318 hours

The new wallet interface will use Electron. This means that our backend must be able to connect to all functions on the frontend. All those connections need to be built. A new system always brings bugs and they have to be fixed. There is a known bug where windows wallets crash during mining and holding. Unfortunately, there is still too little information to fix this bug. This means monitoring and testing, which takes quite a lot of time.

Up next

Excluding unexpected bug fixes or urgent functionality requests.
Gulden NFT

Unique application of NFT functionality on the Gulden blockchain.

Recent work

Time worked: 456 hours
Last action: 20.04

This build aims to be the final 2.4.x series release after issues were found that prevented 2.4.8 from being so.
As such it will likely represent the final Qt UI release with 2.5 series of builds replacing Qt with the electron UI.

CORE – Implement several important fixes to the fast path of the “index based” portion of the coin cache, these issues would have resulted in nodes temporarily falling out of sync (until restarted) in some instances had the fast path been turned on however it has been off until now
CORE – Turn on the fast path for “index based” portion of the coin caches, this should drastically improve node performance in some instances
CORE – Introduce optimised sha256 implementations to take advantage of available CPU features (SSE4, neon etc.) when available/possible
CORE – Various performance improvements, removal of lock contention in some instances
CORE – Various improvements to mutexes to make it easier to spot issues as well as for better performance
CORE – Improved debug logging in various places throghout the program
CORE – Update linux builds to GCC 11
CORE – Update macOS builds to clang 14 (sdk 12)
CORE – Update android builds to clang 12 (ndk r23b)
CORE – Update windows builds to GCC 10
CORE – Switch to guix instead of gitian for official builds (all except macOS which will switch also for subsequent releases)
CORE – With all compilers updated we are now able to target C++20
CORE – Update libraries (boost 1.77.0; zmq 4.3.4; univalue 1.0.4; leveldb 1.22+)
CORE – Flush chainstate more frequently to prevent nodes having to resync if they terminate uncleanly after a full sync etc.
LITE – Fix issue that was preventing lite wallet from functioning on testnet
LITE – Fix a crash on macOS at program exit
LITE – Fix/improve behaviour of loading/synchronisation screen and make it smoother
LITE – Native M1/arm64 builds macOS
RPC – Add a ‘loaded’ paramater to results of ‘getmempoolinfo’ command
RPC – Improve/fix ‘fundrawtransaction’ command that failed in some instances
RPC – Improve/fix help text for several commands
QA – Introduction of more unit and functional tests

Dozens of other stability, code quality, build system, testing etc. related fixes and improvements.

Time worked: 38 hours
Last action: 01.12

Final maintenance release ahead of upcoming 2.5 series of builds; 2.5 will fully activate witness sync and drop the deprecated Qt UI in favour of the electron one

Time worked: 96 hours
Last action: 25.08

CORE – Fix an issue that would cause witness loop to terminate under some error conditions
CORE – Remove behaviour that would cause a complete resync under some error conditions, only do this on mobile/spv wallets and favour a plain assert on regular wallets instead
RPC РImprove output for validateaddress command when used on witness addresses
MISC – Various minor logging improvements to help with stability and user support

Time worked: 16 hours
Last action: 20.08

Introduce a discount on relay fees for transactions that contain mining/witness rewards

Time worked: 55 hours
Last action: 21.07

Chain stability fix for rare issue experienced by some peers

Time worked: 190 hours
Last action: 06.07

CONSENSUS – Fix an issue with fresh syncs stalling, regression was introduced in 2.4.1 release
CONSENSUS – Fix a rare issue with index based utxo getting corrupted (memory only, disk data remained valid)
CORE – Fix an issue that was causing unnecessarily frequent flushing to disk; this should bring large performance improvements for machines with slow disks
CORE – CORE: Major load time performance increase on large wallets, especially on machines with slower disks
CORE – Introduce some code that makes it easier for users that missed the fork to update with any manual intervention
CORE – Introduce some performance improvements to the code
CORE – Various regtest/testing improvements and general codebase cleanup

Time worked: 266 hours
Last action: 16.06

Implement proposed reward reductions and halving, as decided by community and GAB
Reward changes to take place at block 1’400’000
Halvings every 842’500 blocks, this is roughly four years assuming stable block times (a tiny fraction over in order to make things work out smoothly)
Very minor truncation based rounding applied when halving in order to keep numbers clean and end on a clean supply amount
Final supply of 700’000’000 with last reward mined on block 17’727’500
CORE: Implement a new/simplified way of tracking the witness specific portion of the UTXO set, this improves code simplicity as well as efficiency in a variety of ways
CORE: Implement methods/functionality to track/encode witness set “deltas” (changes) between blocks
CONSENSUS: Store the witness set delta as part of each header, this allows for a very efficient syncing method which we are calling “witness sync”
CONSENSUS: Enable spending of addresses with uncompressed keys again
CONSENSUS: Allow renewal of multiple parts of the same witness account in a single transaction instead of requiring a renewal for each part
CORE/UI: Introduce a separate mining parameter for number of threads to use for “arena setup” when mining so that this can be set independently of “mining threads”
CORE: Fix a sync issue that would sometimes cause new installs to get stuck when syncing the first few blocks
CORE: Apply some optimisations to ConnectBlock calls that should improve performance quite substantially on some machines
RPC: “setgenerate” gains an extra parameter for the above, all miners should be aware of this as previous setgenerate syntax may fail
RPC: New command “setwitnessrewardaddress”
RPC: New command “restoreaccount”
RPC: Improve behaviour of “deleteaccount” to permanently remove/purge accounts from the wallet if they are readonly accounts; as opposed to the regular behaviour of just hiding accounts that applies to other account types
RPC: Fix return value of “enablenetwork” command
RPC: Add “selected_shavite_implementation”, “selected_echo_implementation” and “selected_argon_implementation” to “getmininginfo” output
UI: Show “elapsed” time to current date for witness accounts
ZMQ: Add a new ZMQ channel “zmqpubwallettx”

And a variety of other small performance, stability and code quality enhancements, general maintenance etc. many of which are backported from the Florin project.

Time worked: 24 hours
Last action: 05.05

RPC – Add ‘selected_witness_index’ info to ‘getwitnessoutput’ command
Debug – Introduce split debug uploads for all linux/windows builds and add documentation on how to utilise it
Bench – Add some additional benchmark info to “bench_sigma” tool

Time worked: 152 hours
Last action: 17.04

Reduce eventual supply to a total of 750’000’000 coins as first step in implementing the supply reduction that has been requested by community/GAB; The intention is for the rewards to also change (as requested) however this will take place in a later release after a bit more time has been allowed for technical consideration of the implications.

MISC – Minor performance improvements to witnessing
RPC – New RPC command “submitheader”
RPC – Fix an issue where “rotatewitnessaddress” would fail if used on account that has never performed any witness actions
RPC – Introduce “forcesigseg” command (Only useful for development)
RPC – Add command “repairwalletfromutxo”
RPC – New command “decodeblock”
RPC – New “defrag” command, this can be used to recombine lots of small “dust” outputs into one single output again
RPC – New command “invalidateunwitnessedblocksatheight”

This build contains quite a large variety of misc. bug fixes, code improvements and stability fixes, quite a few backported from Novo development.

Time worked: 38 hours
Last action: 13.03

MISC – New URI handlers “guldenlite:” and “guldenpro:” for specific targeting of lite/pro apps; “gulden:” URI handler still remains and will be used to target whichever app is installed
UI – Add in-app sell functionality (as companion to recent buy functionality); In collaboration with Blockhut

Time worked: 12 hours
Last action: 01.02

RPC: Fix ‘*’ behaviour in listaccounts command
RPC: Give ‘decodescript’ the ability to decode old phase3 transactions

Gulden LITE
Time worked: 188 hours
Last action: 27.01

A blazing fast SPV wallet for desktop. Not everyone needs witness or mining features, which is why we created a lightweight desktop wallet.

Android wallet update
Time worked: 16 hours
Last action: 31.12

Update for Android app that solves synchronization problems.

iOS wallet synchronisation issue
Time worked: 43 hours
Last action: 01.12

Since the last unity version, the wallet for iOS had synchronization problems. We have been able to find out what caused this and make adjustments.

Time worked: 40 hours
Last action: 14.11

CORE: Fix a crash in SIGMA verification code that could be triggered in some (relatively rare) instances
RPC: Hide various “hidden” developer RPC commands from the autocomplete
RPC: Introduce a new command “repairwitnessaddress” that can be used to repair a wallet if the witness key for a witness address is not available while wallet is locked (which is required for witnessing)
RPC: Extend “validateaddress” command to give more information for witness addresses
CORE: Minor improvement when renewing witness accounts; check for and repair any instances of missing witness key when doing a renewal

Fee inconsistency with exchange withdrawal
Time worked: 16 hours
Last action: 29.10

Needs investigation.

Checkpoint system removal hard fork
Time worked: 31 hours
Last action: 15.10

Gulden used a checkpoint system to increase the security of the network. The implementation of PoW2 makes this system unnecessary. The Gulden Advisory Board decided that the checkpoint system could be removed. This required a change in the software and a hard fork.

New wallet feature for Bittrex
Time worked: 48 hours
Last action: 14.10

Bittrex required a special functionality in the Gulden Wallet. This was developed and we provided support for its implementation. The Gulden wallet was in maintenance mode at Bittrex during this period. As a result, we prioritized this development and were able to realize it within a few days.

PoW2 Phase 5 improvements
Time worked: 480 hours
Last action: 27.08

With the full implementation of Phase 5, the code had to be cleaned up and stripped of parts aimed at the transition and previous phases. Various optimizations were also implemented.

Delta improvements
Time worked: 240 hours
Last action: 16.07

DELTA was changed to using witness timestamps (which are more accurate than PoW timestamps) for difficulty adjustment, as per the original PoW2 whitepaper. Also better accounting for difficulty drop in previous long blocks when calculating difficulty and to soften up some of the rules that were necessary to counteract jump pools. This makes difficulty adjustment smoother.

Last updated: 04.12. Time worked is indicative. Only work done by our blockchain developers is included. Excluding user support.