Releases: Veil-Project/veil
v1.1.0.1
Version 1.1.0.1
This is a mandatory upgrade. Version 1.1.0.1 includes a hard fork that will activate on 05:00:00PM GMT - October 31st.
Please update your wallets before this date.
Overview
Version 1.1.0.1 includes Proof-of-Work consensus change, various improvements, optimizations, bug fixes, and GUI changes.
Proof-of-Work consensus changes
GPU mining with ProgPoW
- Aims for 70% of all PoW blocks averaging 504 blocks per day.
CPU mining with RandomX
- Aims for approximately 20% of all PoW blocks averaging 144 blocks per day.
ASIC mining with SHA-256D
- Aims for approximately 10% of all PoW blocks averaging 72 blocks per day.
Note: PoW will continue to target 50% of blocks alongside PoS’s 50%. This division can deviate with varying hash power.
[Performance] Rework orphan pruning (#727)
The PoS algorithm has a much greater potential to have several stakers submitting a valid block, even though eventually only one will end up being chosen by the consensus to be the official chain. All others that submit a block that doesn't end up in the chain will see orphans. These orphans reside in the memory of the core daemons until they are purged. As a result, the number of tips (as seen with veil-cli getchaintips) will continue to grow until it reaches a threshold of 1000.
RPC Changes
Mining
mine=<algo>
- (new) Mine blocks using the selected algorithm. Options are randomx|progpow|sha256d (default: randomx)pprpcheader
- (new) The header hash that can be used by the local GPU miner to mine a block (using -miningaddress) as the destination for the coinbase tx\n"pprpcepoch
- (new) The epoch of the ProgPoW pprpcheader given to user to be used by the local GPU miner
Network
getblockchaininfo
- (modified) Added difficulty value for each consensus algorithmgetchainalgostats
- (new) Returns the blocks found by each algo over the [blocks] blocks leading up to
CLI
stdinwalletpassphrase
- (new) Read RPC password from standard input as a single linewalletpassphrase
- (modify) Let 0 be max walletpassphrase unlock
Wallet
getbalance
- (modify) Fixed to get all coin typeslistunspent
- (modify) Corrected listunspent for ct, ringct and zerocoinlistaddresses
- (new) Lists addresses in the wallet Address Booksendrawtransaction
- (modify) Fixed Dandelion default option
Changelog:
- #c6c457a0a [PoW] change dag size init and epoch length (Cave Spectre)
- #8751220f1 [Fork] Push testnet 2 more days (Cave Spectre)
- #995b15afc [Fork] Push out a week (Cave Spectre)
- #86e3235a9 [Chain] Set fork dates (Cave Spectre)
- #0e43338dd [Chain] Change min peer proto rules (codeofalltrades)
- #19eb939e3 [Build] Black out failing build (Cave Spectre)
- #2efa5b4e1 [Build] Add boost library reference (Cave Spectre)
- #4f85043b8 [build] Fix RandomX for 32 bit builds and add more actions (Cave Spectre)
- #d756db588 [Budget] Move to a future block prior to next SB (Cave Spectre)
- #279ef10a2 [Budget] update multisig budget address (Cave Spectre)
- #dcdf29606 [DWG] Make sure OneBack exists (Cave Spectre)
- #c50ea71e0 [PoS] Fine tune PoS difficulty adjustments (Cave Spectre)
- #25263cf32 [Chain] added checkpoint blocks (codeofalltrades)
- #31773fbea [Compatability] Maintain backwards capatability to current chain (Cave Spectre)
- #719578e27 [PoS][PoW] Refine PoS to manage overall chain spacing (Cave Spectre)
- #c82d5a76c [Regtest] Align difficulties closer to devnet, fix early PoS crashes (Cave Spectre)
- #d056f002f [Chain] Match limits for genesis block (Cave Spectre)
- #1f00d3aa1 [PoW][RPC] Correct Sha256 Nonce incrementation (Cave Spectre)
- #7646cb8c2 [PoW] disable algo-check on blockcreate, add mining state to getblocktemplate (Cave Spectre)
- #446dee302 [RPC] Let 0 be max walletpassphrase unlock (Cave Spectre)
- #cc13d0999 [PoW] disable algo-check on blockcreate, add mining state to getblocktemplate (Cave Spectre)
- #b60e9ca6d [RPC] Let 0 be max walletpassphrase unlock (Cave Spectre)
- #424689e7f [RPC] Add listaddresses (Cave Spectre)
- #77cb43888 [GUI] Update veil_en.ts - remove references to x16rt mining algorithm (codeofalltrades)
- #91e5bdc40 [RPC] Add listaddresses (Cave Spectre)
- #3f3322c2f [GUI] Disallow stealth mining addresses (Cave Spectre)
- #2095195ec [PoW] Fix crash on multiple ProgPoW threads without hack (blondfrogs)
- #f000f872a [Regtest] fix genesis block (Cave Spectre)
- #c890dc3ce [RPC] Handle getchainalgostats when less than 1440 blocks in chain (Cave Spectre)
- #fde38760d [PoW] Refine the overflow check to cover < 2x and simplify it (Cave Spectre)
- #554d80b0d [ProgPow] Make starting multiple threads work (Cave Spectre)
- #2625ced73 [RPC] Update getchainalgostats to take parameters (Cave Spectre)
- #17b47fc0b [RPC] add times to getchainalgostats (Cave Spectre)
- #592a08c11 [PoS] Don't try to stake txs below nStakeMinAge (Cave Spectre)
- #66469d62a [Debug] Change UpdateTip message to have type= (Cave Spectre)
- #7a5c11cd9 [PoW] Rework Dark Gravity Wave to work in our model (Cave Spectre)
- #be91c814b [PoW] Correct randomx stop and ProgPoW thread interrupt (Cave Spectre)
- #fa600bf83 [PoS] Don't try to stake txs below nStakeMinAge (Cave Spectre)
- #4ed73e596 [RandomX] Debug log nit (Cave Spectre)
- #4b8026dd4 [Core] Squash division by zero (Cave Spectre)
- #8ff920396 [Test] Correct Regtest parameters and nVersion stomping (Cave Spectre)
- #1d59acb04 [PoW] Correct difficulty limit checks (Cave Spectre)
- #0246671cb [GUI] Adjust stretch factor (Cave Spectre)
- #8a2bb0713 [Build] Remove Travis CI build state badge (Cave Spectre)
- #9308ce282 [RPC] Rework difficulty reporting in getblockchaininfo (Cave Spectre)
- #59b816634 [PoW] Disallow stealth mining addresses (Cave Spectre)
- #798318777 [Build] Update for ARM builds (Cave Spectre)
- #2b07d4970 [Build] Fix apt updates (Cave Spectre)
- #b0be30af3 [PoW][RandomX] Don't check RandomX PoW until checking the block (Cave Spectre)
- #9ff07a603 [Logging] remove FindTx txid mismatch error when expected (Cave Spectre)
- #322138302 [PoW] Align difficulty and spacing for mainnet (Cave Spectre)
- #1c1d1a2f1 [Build] Fix Implicit Declaration Warnings (Cave Spectre)
- #4d4ea5886 [Trivial] Cleanup lingering stdout messages (Cave Spectre)
- #c7915b5da [RPC] Add RPC command 'getchainalgostats' to get block count for each algo (codeofalltrades)
- #a17ca8a1b [Build] Remove constant string warnings (Cave Spectre)
- #c8a6ae1c9 [Build] Fix Travis randomx needs (Cave Spectre)
- #e185e2c01 [Build] Created Github Actions CI for Veil (Cave Spectre)
- #c4e408fab [GUI] Adjust stretch factor (PeterL73)
- #69a60b90c [Doc] Remove Travis CI build state badge (GitHub)
- #86a88bc6c [Test][Build][CI] Github Actions CI for Veil (GitHub)
- #2138614d9 [Build] Created Github Actions CI for Veil (Cave Spectre)
- #7f5c8a0f8 [PoW] Update PoW Diff to use last blocktime (blondfrogs)
- #2ed7ff4d3 Update code formatting (Cave Spectre)
- #deb585a46 [PoW] Update miner algo selection (Cave Spectre)
- #23d10a188 Move functions and update files (Cave Spectre)
- #47f36c33c [RPC] Fix getbalance to get all coin types (Cave Spectre)
- #133493b7f [Pos] Get rid of precompute. (Cave Spectre)
- #27e0d2bf5 [RPC] Add carriage return after stdin input (Cave Spectre)
- #0bdcb6b16 [trivial] Cleanup old bitcoin text (Cave Spectre)
- #8a824860d [GUI] Fix RingCT Coin Control for minted change (Cave Spectre)
- #870520767 [PoS] Fix proof of stake veil data hash error (blondfrogs)
- #57b1dcc98 [] Update Points of Contact (GitHub)
- #e1545f8d1 [Core] Getblock: do not hold cs_main. (sinetek)
- #d79d58d7c [Logging] Rework exceptions where reference is missing. (sinetek)
- #51280df92 []Correct incorrect usage of string arithmetic. (sinetek)
- #a984e6061 [Build] ensure we aren't using GNU extensions (sinetek)
- #e19a58bcd [Core] Prevent UB when computing abs value for num opcode serialize (sinetek)
- #4edd9651e [PoW] New diff lookback spacing (blondfrogs)
- #a8a8e0a94 [GUI] Fix leak in CoinControlDialog::updateView (sinetek)
- #9206a5582 [ReSync] Skip RingCT TX computation during resynching (Cave Spectre)
- #f5b92aa6f [PoW] Allow for caching of local mining headers (blondfrogs)
- #5416ae07f [Logging] Do not use Qt's debugging information in the log handler. (Cave Spectre)
- #85491fe6c [RPC] Clean up mine= argument (blondfrogs)
- #705a92fe0 [PoW] Allow large nonces in pprpcsb (blondfrogs)
- #1c94ee2cf [Chain] Restart devnet (blondfrogs)
- #94c31e240 [RPC] Fix RPC related typos. (sinetek)
- #968977ff9 [RPC] add -stdinwalletpassphrase for (slightly more) secure CLI (sinetek)
- #deb203ac3 [RPC] add stdin helpers for password input support (sinetek)
- #cd99fae61 [PoW] remove mandatory old block versions (blondfrogs)
- #a3cfa9d2e [PoW] Remove extra height read write (blondfrogs)
- #4d1bbed5f [PoW] Fix POW block indexes (blondfrogs)
- #fd65b1691 [Core] script: fix SCRIPT_ERR_SIG_PUSHONLY error string (sinetek)
- #a9bffafec [GUI] macOS: Disable the Dark Mode feature of recent mac versions. (sinetek)
- #9558cfeb2 [PoW] Move to veil ProgPoW (blondfrogs)
- #60a8bab61 [PoW] Move to 0.9.4 Progpow (blondfrogs)
- #d2c11b4da [Build] Leave 30 minutes for the full build, instead of 20 (Cave Spectre)
- #02e93fa0f [RingCT] Increase max inputs to 50 (Cave Spectre)
- #33e26455f [CLI] Fix typo in rescanringctwallet (Cave Spectre)
- #eac30fa25 [Core] Replace boost::bind with std::bind (sinetek)
- #8c3232720 [RPC] Added a difficulty property for each of the new algo types (codeofalltrades)
- #d4af3c981 [PoW] Get POS working again (blondfrogs)
- #4e36ec58c [RingCT] Fix IsSpent check (Cave Spectre)
- #82546bd06 [Chain][Performance] Rework orphan pruning (Cave Spectre)
- #ae2f2a476 [GUI] Fix coin control crashes (Cave Spectre)
- #a6100350b [GUI] Fix sending page crashes (Cave Spectre)
- #d1ce080c6 [Chain] Update chainparams for devnet fork (blon...
v1.0.4.8
Version 1.0.4.8
This is a recommended upgrade, but it is not mandatory and includes no consensus based changes.
Overview
Version 1.0.4.8 adds various improvements, optimizations, bug fixes, and GUI changes. One of the most important changes is the core code was updated to have a full list of nodes managed by the project DNS, with a few backups duplicated amoung the code developers; to protect in the event of a DNS failure for veil-project.com.
Changelog:
- #705
af76e5bcf
Update master branch to 1.0.4.99 (Cave Spectre) - #703
921740046
[Network] Update seed nodes (Cave Spectre) - #677
49be04163
Remove or update of Zerocoin privacy mentions (Strontium) - #632
a607cbf5e
[UI] Adding new wallet lock/unlock tab to FAQ. (Mat Waller) - #694
6bfee5a64
[Security] Update keys for publicly verifiable veil developers (Cave Spectre) - #687
ae247970c
[Qt] Remove hide() on hideEvents to prevent them from not showing after being minimized (Cave Spectre) - #689
f5095fa70
Correct tooltip style (codeofalltrades) - #664
c5722cad9
Update gitian docs to reference docker based process (codeofalltrades) - #683
25d176134
[RPC] Add zerocoin opcode names (Cave Spectre) - #681
b7af39341
Explicitly disable Dark Mode appearance on macOS (codeofalltrades) - #680
6041cd400
Add lightzerocoin spend to testnet params (blondfrogs) - #676
2063f0c7b
Update testnet params and fix amount (blondfrogs) - #669
a57ccfbf8
[RPC] getzerocoinsupply height not required (Mimir) - #666
4dceafbfc
Corrected TravisCI badge, added release version and date badges (codeofalltrades)
Authors:
- blondfrogs
- Cave Spectre
- codeofalltrades
- Mat Waller
- Mimir
- presstab
- Strontium
v1.0.4.7
Non Mandatory Update
- Bug and Performance fixes
v1.0.4.6
v1.0.4.5
v1.0.4.4
Version 1.0.4.4
This is a mandatory upgrade, and has consensus enforcement that requires immediate upgrading of the wallet. Note that 1.0.4.3 was the original mandatory version to have, but because of a miscode in the new stake modifier protocol it resulted in the chain becoming stuck. An upgrade to v1.0.4.4, which fixes the miscode, is required to be in sync with the blockchain.
Overview
Version 1.0.4.4 is a mandatory update. It includes the patching of a vulnerability in Veil's zerocoin implementation that allowed malformed transactions to claim a different zerocoin denomination than was being redeemed. This update adds a banlist to remaining coins that were not shuffled through Veil's RingCt protocol.
Protocol Changes:
Light Zerocoin
Zerocoin will now have its reliance on zero knowledge proofs completely disabled. A zerocoin will now behave much more like a normal UTXO based transaction does. This results in a large reduction in transaction size, much quicker transaction validation, and fast transaction creation.
New Budget Addresses
The multisignature addresses that the general budget and the foundation budget get paid to have been updated to reflect a group of key holders that are more active in the community.
Zerocoin Overspend Attack and an Updated Inflation Schedule (Removed Founders Reward After 13th Payment)
The overspending of zerocoin denominations occurred slowly and over several months. The attacker did not spend other people's coins, they overspent their own coins and were able to redeem more value than the zerocoins were worth. This overspending attack inflated the supply by 12,441,690 coins. Through cooperation with exchanges that trade Veil, we were able to learn that around 9 million coins had been sold through several anonymous accounts. Overtime the rest of the coins were washed through the RingCt protocol in a way that was not easily traced and not easily able to be blacklisted. We were able to blacklist 282,125 basecoin and 46,810 in zerocoin. We also blacklisted 29 unspent stealth outputs that have a blinded value, so we cannot be sure of their total value. RingCt had over 5,000 outputs blacklisted, but we do not know if any of those coins have already been spent or the value of the coins.
To offset the inflation that was added by the malicious overspending of zerocoin denominations, it has been offered (and accepted) that the founder's reward be removed after payment 13. This removes approximately 10.02 million coins from being added to the supply, offsetting much of the inflation added by the overspend attack. Furthermore, Veil plans to publicly burn excess funds that are being held in the general budget address to offset the remaining 2.1 million coins (counting the blacklist offset). The inflation created by the overspend attack is something that alters coin emission schedule in a way that was much more rapid than designed, but offsetting the inflation is the best way to get the emission schedule close to its original design.
The overspend attack is a reminder that Veil needs to be diligent and continue to make rapid progress replacing the zerocoin based staking protocol with a RingCt based staking protocol.
Stake Modifier Redesigned
To prevent an issue called "stake grinding", the stake modifier code for Veil has been rewritten to make any type of stake grinding much more difficult. A stake modifier is a source of deterministic entropy that is added into the inputs that are hashed to create the proof of stake proof hash. The modifier effectively is in place to prevent the ability to see what a stake hash will be in the future and resend coins until there is a favourable amount of potential stake at some point in the future.
Make Modifier Entropy Bound To Sources That Do Not Grind Well
In order to make it more difficult to have influence over what the stake modifier will be at a point in the future, the entropy collected for the stake modifier has to be something that can't be "ground" easily. For example if the modifier were to be based on transaction hashes, then someone could just keep changing arbitrary parts of the transaction until the transaction hash results in a value that changes the modifier in a favourable way for the grinder. Veil's new modifier protocol now will use the proof-of-work hash (which is bound by computation) when entropy is collected from a PoW block and will use the proof-of-stake hash (which is bound by time and competition) for entropy collected from a PoS block.
Multi-Source Deterministic Entropy Collection
Many Proof of Stake cryptocurrencies have changed their protocol to collect the stake modifier entropy from a one or two places. For example PIVX recently updated their modifier to the same stake modifier protocol that QTUM uses, which grabs the modifier from the previous block and hashes it with the proof hash from next block. Before this update, Veil's modifier code was grabbed by a single source, and that was the accumulator value of a particular block in relation to the block being staked.
If not enough sources of entropy are collected it can create the ability to grind an entropy source. For example if a wallet has significant enough stake weight (for QTUM and PIVX this would just mean a few very very large UTXO's) then a grinder could find many proof hashes that would work for a particular block, the grinder would withhold from submitting a block that would not result in a modifier that makes them also win the next block. Although this grinding would require significant funds, it could potentially lead to a situation where a grinder could get a large amount of consecutive blocks and perform a double spend attack by causing chain reorganizations.
Veil's new modifier collects its entropy from 10 different blocks over the last 370 blocks. For example the modifier of block 1001 would first sample from the block that is 100 blocks from the chain tip, block 900
. The next block is the height of the last sampled block 900
minus the sampled count (1) multiplied by 6. That would give the second sampling a block height of 894. The third would be 882
. And so on. The end result is a modifier that is collected from many blocks, all of which are below the chain reorganization depth so cannot be changed, and have a very small chance of all being determined by a single source that could grind the entropy.
Use a Curved Entropy Selection Based on Height
Even if entropy is collected from multiple block sources, if the last block that the entropy comes from has a large amount of entropy bits sampled, then it allows from a grinder to have a large amount of entropy to grind. For example say that each block has 256 bits of entropy sampled from it (the full proof hash), and that the entropy is hashed to create the final modifier value. In the example above, the only real entropy that would matter is the entropy from block 900, since 2^256 has so many possibilities. This number would still be bound to a hard to grind source (as mentioned above), but at this point there would be no purpose of having multi-source entropy collection.
To solve this issue, Veil samples a small amount of entropy from the more recent blocks and gradually more bits from each sampling until the 7th sampling. After the 7th sampling the 8th-10th sampling reduce the number of bits sampled. Using Veil's scheme, if a grinder were going to grind a block to make their modifier favourable for their next stake (which would occur 101 block in the future), the grinder would only be able to grind it to 4 different values because only 2 bits are collected as entropy from that block (which can hold 4 possible values).
Why reduce the sampling at the end? Reducing the sampling on sources 8-10 makes longer range prediction of the modifier more difficult. If you are trying to predict what a modifier will look like at the chain tip + 370, you will know only a smaller portion of the entropy collected for the modifier, there will still be so much entropy added to the final modifier that you could not brute force computation of all of the potential results. If you are trying to predict what the modifier of the chain tip + 101 would be, you would have all of the modifier except for 4 of the bits, at which point you could see all 4 potential modifiers. In this regard, Veil's new protocol makes the final modifier become clearer and clearer the closer it gets (which is why we made the minimum stake age 1,000 blocks).
An example of a modifier for block 1001:
Initialize Modifier to 0.
Block 900 -> Hash(proofhash) -> Take 2 bits from result.
Modifier = Hash(Modifier and 2 sample bits)
Block 894 -> Hash(proofhash) -> Take 4 bits from result.
Modifier = Hash(Modifier and 4 sample bits)
Block 882 -> Hash(proofhash) -> Take 8 bits from result.
Modifier = Hash(Modifier and 8 sample bits)
Block 864 -> Hash(proofhash) -> Take 16 bits from result.
Modifier = Hash(Modifier and 16 sample bits)
Block 840 -> Hash(proofhash) -> Take 32 bits from result.
Modifier = Hash(Modifier and 32 sample bits)
Block 810 -> Hash(proofhash) -> Take 64 bits from result.
Modifier = Hash(Modifier and 64 sample bits)
Block 774 -> Hash(proofhash) -> Take 128 bits from result.
Modifier = Hash(Modifier and 128 sample bits)
Block 732 -> Hash(proofhash) -> Take 64 bits from result.
Modifier = Hash(Modifier and 64 sample bits)
Block 684 -> Hash(proofhash) -> Take 32 bits from result.
Modifier = Hash(Modifier and 32 sample bits)
Block 630 -> Hash(proofhash) -> Take 16 bits from result.
v1.0.4.3
v1.0.4.1
v1.0.3.1
Version 1.0.3.1
This is a recommended upgrade, but it is not mandatory and includes no consensus based changes.
Overview
Version 1.0.3.1 adds various improvements, optimizations, bug fixes, and GUI changes. One of the most important changes is that previous versions of zerocoin spends could get added to the mempool of a staking or mining node, and then cause any block created by that node to include the packaged tx and be rejected. The mempool now checks for old zerocoin transactions and rejects them. There has also been a lot of time and effort put into improving the usability of the GUI. Less time where the GUI is frozen waiting for background processes (although still not perfect), improvements made to various operating system specific issues, and more.
New Features:
AutoSpend
Autospend allows users to setup there wallet To try and spend zerocoin of a specific denomination every 5 minutes. This is helpful for users that want to continually spend zerocoin without having to sit at there computer
Block Explorer Links In Tx Detail View
Within the transaction detail dialog, users are now able to click a button that will link them to the block explorer website.
Progress Bar Added for searchdeterministiczerocoin RPC
The searchdeterministiczerocoin
RPC call can take quite some time to complete, users will now see a progress bar displaying the progress % of the process.
RingCT Input Information
getrawtransaction
and gettransaction
will now display a list of RingCT inputs (all decoys/inputs used in a RingCT transaction)
Transaction List Filtering
The GUI now allows for transactions to be filtered by: sent, received, mint, mined, stake, basecoin, ringct, ct, zerocoin, all.
Transaction Compute Time Display
Adds Compute Time to Wallet Transaction Record and Transaction Details Dialog
Changelog:
- #636
5628c4204
Checkpoint block 248600. (presstab) - #623
43d16e51f
[GUI] Status bar – Horizontally center the sync status button (Code of All Trades) - #569
bd6398865
[Wallet] Add ability to autospend zerocoin denominations (blondfrogs) - #620
e5873d193
[RPC] Fix rescanzerocoinwallet help message (JSKitty) - #556
10739f26b
[Wallet] Remove check for amount less than 10 (blondfrogs) - #609
3ec3c8331
Update Veil logos to the actual logo version (Mister K) - #611
e054218a7
[Qt][Wallet]Make send dialog more asynchronous. (presstab) - #614
ff0aba35f
Reject < v4 zerocoin from mempool (presstab) - #485
dffee177a
[Qt] Add hyperlink for txid in transaction detail view. (drag0ng) - #594
ba798fb49
Add ReturnPressed event to labels (drag0ng) - #608
248f84590
Added Veil Copyright MIT notices to a lot of files (Kolby Moroz) - #597
26f16b7c7
[Wallet][RPC]Fix missing RingCt Blinds. Add RingCt inputs print to getrawtransaction. (presstab) - #588
67c7d0ac2
[RPC] SpendZeroCoin Address Validation (blondfrogs) - #579
bcf068649
[Wallet] searchdeterministiczerocoin progressbar (PeterL73) - #599
a1dccc8a9
[GUI] Prefences tab - revert background to allow native OS styling (Code of All Trades) - #482
560822a6a
[Qt] Add mouse leave event to balance buttons. (drag0ng) - #589
419435251
[RPC] Correcting help format ofrescanringctwallet
(Mathew Waller) - #583
7337f4cca
[GUI] Extending clickable area of Staking & Precompute toggle switch. (Mathew Waller) - #582
29264b0b1
[GUI] Lock button focus & signal blocking fix. (Mathew Waller) - #581
dc0875dec
[GUI] Add transaction list filtering (Mathew Waller) - #580
f4d7f50b8
Remove bit 2 warning. (presstab) - #574
5b644e161
[RPC]Addinggetspendablebalance
RPC Call. (Mathew Waller) - #522
f001fe3a3
[RPC] Allow all address types in spendzerocoinmints (blondfrogs) - #483
46949fe27
[Qt] Add warning label if zero coin balance is less than minimum. (drag0ng) - #576
603a9a9b7
[Consensus]Add a more recent checkpoint for mainnet. (presstab) - #573
e91cc2b96
[Wallet] Add Transaction Size to Transaction Detail Dialog (PeterL73) - #575
c151d4310
[Validation]Lock CheckZerocoinMint() (presstab) - #549
c4b0005f3
[GUI] Updating confusing button label. (Mat Waller) - #516
f3facbc2f
[RPC] Add RPCConvertParam (PeterL73) - #528
557e9e2e9
[Miner] Filter out BIP30 enforced tx from new blocks. (presstab) - #517
d1f40fe58
[Qt] Update pay amount text box (blondfrogs) - #543
6fb603b58
[GUI] Sync progress ui additions (Mathew Waller) - #529
7b8f15dd0
[Wallet] Add Transaction Compute Time (PeterL73) - #515
834a1d0cf
[Qt] Fixes cut off tool tip text across the application (Code of All Trades) - #524
cd3a6e5c0
[Qt] Reset translations for Transifex integration (Fuzzbawls) - #511
9c9bf1700
[Qt] Show rescanning percentage on splash screen (drag0ng) - #560
150e05d11
Fix regtest chainparams (blondfrogs) - #484
535630c6c
Make the push buttons in Advanced Preferences look more clickable (drag0ng)
Authors:
- Code of All Trades
- Fuzzbawls
- JSKitty
- Kolby Moroz
- Mathew Waller
- Mister K
- PeterL73
- Tom Bradshaw (presstab)
- blondfrogs
- drag0ng
v1.0.3.0
Version 1.0.3.0 : Mandatory Update
This is a mandatory upgrade with an extremely quick transition period until enforcement. Update immediately.
Overview
Due to disclosures made by ZCoin, and lots of analysis done with other teams such as ZCoin and PIVX, Veil will be placing its zerocoin protocol into a functional but not anonymous state. The transition will occur rapidly and be done using bit signalling in the block header.
Every zerocoin spend/stake will have no longer have any privacy associated with it and should be considered as transparent as a basecoin transaction. More details will follow soon that will provide a complete detailed breakdown and analysis of why these changes are being made.
Important Notes:
- This puts zerocoin into what we call limp mode.
- The privacy of both CT and RingCT are not impacted by this.
How Normal Zerocoin Operates
Every zerocoin mint has an identifier that gets added to the cryptographic accumulator. During normal operation of zerocoin, when someone goes to spend their mint they create a zero knowledge proof that their mint's identifier has been added to the accumulator. The proof does not reveal the mint, and the spent mint is indistinguishable from all other mints of that same denomination. This is the mechanism that makes the zerocoin protocol private and removes the link between mint and spend.
How Limp Mode Operates
Limp Mode is being used by Veil to allow the payment protocol of zerocoin to function, while disabling the privacy aspect of zerocoin. Each zerocoin spend will also include its mint identifier so that it can be linked by Veil's blockchain database to ensure that it is a valid zerocoin that has been accumulated. This effectively removes any privacy aspect of the zerocoin protocol.
Limp Mode is useful in times that call for zerocoin to be disabled because of concerns over the ability to spend coins that have not been accumulated. For Veil this is especially critical because a large majority of the coin supply is held in zerocoins, and the proof of stake consensus system relies on zerocoin. Veil's limp mode allows staking to continue and zerocoin transactions to continue to take place.
This is should be seen as a temporary protocol that allows Veil to have more time to work on creating the best solutions to some complex problems that may not be solved in such a short time span, and especially not solved with the level of quality we would like it to be.
Thanks To:
-
The team at ZCoin, specifically Peter and Reuben for promptly notifying members of the Veil team as well as a few other trusted developers, as well as doing the tedious work of identifying the errors and figuring out how to reproduce the errors.
-
random-zebra, a contributor to both Veil and PIVX, who spent countless hours over the last week analyzing the complex and sensitive cryptography in
libzerocoin
and coming up with a solution that lets users safely send and receive zerocoin transactions without privacy aspects enabled. -
blondfrogs, a core developer for Veil, who helped test and implement the blockchain's transition to Limp Mode.