github VerusCoin/Verus-Desktop v0.7.2-6

latest releases: v1.2.1-1-testnet, v1.2.1-1, v1.2.1...
3 years ago

Announcing NON-MANDATORY upgrade v0.7.2-6, with primarily testnet improvements. Mainnet features are effectively unchanged from v0.7.2-4, with only "z*" added as a new, supported wildcard to the z_getbalance API.
This release includes the following improvements and updates for testnet:

  • Add getcurrencybalance API to get multi-currency balances on transparent/private addresses and identities.
  • Optimize multi-currency operators and UTXO selection
  • Display unlocked balance in getwalletinfo
  • Add support for "z*" wildcard in z_getbalance

The Verus DeFi Testnet -- THERE IS NO TESTNET RESET

All new 'sendcurrency' features described above now work on both mainnet and testnet. In addition, testnet can source funds for DeFi features from private z-addresses as well. Again, use of these feature in the GUI is currently accessible only from Settings->Coin settings.

This is the most groundbreaking testnet the Verus project has ever released, and we believe it holds the potential to improve and reshape the DeFi industry. There are truly so many new capabilities and blockchain firsts working now on testnet that it’s hard to adequately cover them all. Below is a list of new capabilities active on the v0.7.2 testnet that will be on mainnet in the near future when considered fully hardened, tested, and ready for worldwide, public scale. Until then, Verus testnet is a fully decentralized blockchain network with 50% proof of work, 50% proof of stake, worldwide availability, and is running all of the new Verus protocols that are being tested and hardened for mainnet. All currencies and assets on the Verus testnet have absolutely no value and may be reset at any time in the interest of testing for mainnet. If you would like a representative basket of Verus testnet currencies that you can use to try out all of the new protocols from anywhere in the world, simply visit the Verus Discord and ask in the #pbaas-development channel. You can use this link as an invite to the Verus Discord: https://discord.gg/gecZsCf

  • DeFi and cross-currency liquidity integrated with blockchain processing, fees, VerusID, and Verus PoP, 51% hash-attack resistant consensus algorithm - This is a massive set of platform capabilities that take DeFi further than any project in crypto today. We will list it here and describe it below. Using it is simple. Understanding the implications of what such a protocol can do when rent free and integrated in a truly decentralized public blockchain is a process of realizations that is likely to be similar to layers of an onion. We will do our best to explain below.

  • System-wide queries for fractional basket currencies for arbitrage, investment discovery, or conversion bargain hunting - The new RPC API, getcurrencyconverters (final name at mainnet, TBD), enables instant queries of any full node for all registered currencies above a fixed liquidity threshold that contain one or more reserve currencies. This new API enables wallets or applications to easily query the entire blockchain network of fractional currencies, determine which provides the best conversion rate at acceptable liquidity, and either convert at the best possible rates worldwide, or select only better-than-market rates and arbitrage to earn.

  • Enhanced VerusIDs with Verus Vault technology - This capability extends the already groundbreaking VerusID revocable, recoverable, provable, friendly name blockchain addresses and identities to include an advanced time lock capability that does not prevent staking on locked funds, enabling easy implementation of things like vesting, trusts, protocols for theft-proofing funds, simplifying estate planning, and much more. With Verus Vault technology, your funds, identity, and estate planning can be done in a fully self-sovereign manner, with the peace of mind in knowing you are protected from lost or stolen private keys.

  • Verus Fee Pooling technology A sustainable mining and staking fee and revenue model while strengthening, rather than creating risk of weakening blockchain security, by preserving immediate incentive to maximize per-block fees, while smoothing fee distribution to miners and stakers over time, fully addressing the legitimate concerns expressed and still not addressed by Vitalik Buterin with respect to ETH and ETH 2.0 (https://blog.ethereum.org/2016/07/27/inflation-transaction-fees-cryptocurrency-monetary-policy/). In the fee pooling model, which is an extremely powerful, yet simple solution to enabling a mining and staking economy, all fees are gathered from transactions in a block as usual, then the fees, also calculated as usual, are added to a common, persistent pool of collected fees, and the current block miner or staker takes up to 1% of the aggregate fee pool.

Verus Vault - Advanced Time Locking of Identities

On the new Verus testnet, we have introduced a capability we cal Verus Vault, which both provides options for a theft-resistant workflow of identity management, but also enables many use cases from trusts to vesting schedules, to escrow alternatives, estate planning and more. The concept is simple, but the ramifications when combined with the already unique revocation and recovery capabilities offered by VerusID on mainnet are immense.

The Verus Vault use case, which was originally described in the conception of the feature, is the ability to timelock an ID, which would prevent any spending of any funds controlled by that ID, while still allowing the ID and all its funds to be used for staking. If the timelock was set for one day when locked, the unlock operation itself will require a waiting period of one day, which can only be circumvented by a revocation followed by recovery operation. In practice, this means that even if someone compromises your private keys while an ID is locked, they cannot spend any of the funds (though they could stake them and delegate rewards to another address, which you could immediately see) unless they unlock the ID first and wait one day. If you notice that your ID has been unlocked by someone other than you, you can revoke and recover before any funds are lost at all. If you wanted to get extremely secure, to the point of covering a case where someone may steal your private keys without you knowing and then lay in wait until you unlock your identity, so they can pounce on your funds before you lock it again, you can actually modify the controlling private keys of an identity before unlocking it, which ensures that the unlocked funds become usable again under the control of freshly made, uncompromised keys. While we believe this unique Verus technology actually provides for fully theft-proof workflows and protection of all assets on the network under the control of an ID, we will generally refer to the technology as "theft-resistant" and disclaim all guarantees of fitness for any particular purpose as part of the "experimental software" disclaimer.

In addition to use cases related to theft resistance and delayed lock opening, Verus Vault can be used to provide more standard forms of time-locking by simply time locking and unlocking in one operation, leaving the unlock period immediately counting down. This capability could be used to provide time locked funds to team members, children, employees, or structured in a way to provide time locked deal and payment terms. The uses for this technology are certainly beyond those that we have already thought of, and we look forward to seeing how people leverage this powerful new protocol capability.

Verus Desktop allows CLI commands for native coins. To run CLI for VRSCTEST, go to settings, coin settings, then select Verus Testnet (VRSCTEST) from the drop-down menu

  • Time Lock:
    The timelock parameter defines the unlock height of the identity.
    run updateidentity '{"name": "ID@", "flags": 0, "timelock": <Unlock block height>, "minimumsignatures": 1, "primaryaddresses": ["t-address"]}'
    
  • Time Delay:
    The timelock parameter defines how many blocks to delay an ID's unlock when the flags are set back to an unlocked state.
    run updateidentity '{"name": "ID@", "flags": 2, "timelock": <Unlock block delay>, "minimumsignatures": 1, "primaryaddresses": ["t-address"]}'
    
  • Revoking an identity will clear its locked status, regardless of time delay or unlock height.
  • A locked identity cannot revoke itself.

Conversion Queries

The getcurrencyconverters API retrieves all currencies that have at least 1000 VRSC in reserve, are greater than 10% VRSC reserve ratio, and have all listed currencies as reserves

  • E.g. BTC ETH:
    run getcurrencyconverters btc eth
    
    Will return all currencies that have btc/eth markets at or above the liquidity threshold.

Sending and Converting Currency

Warning: All testnet coins/currencies have no value and will disappear whenever VRSCTEST is reset

The sendcurrency API can be used to send and convert funds.

  • Sending VRSCTEST from a single address (bob@) to a single recipient (alice@):
    run sendcurrency "bob@" '[{"currency":"vrsctest","address":"alice@","amount":10}]' 
    
  • Sending VRSCTEST from all wallet funds to two recipients (alice@ and bob@):
    run sendcurrency "*" '[{"currency":"vrsctest","address":"alice@","amount":10},{"currency":"VRSCTEST","address":"bob@","amount":10}]' 
    
  • Converting VRSCTEST to a fractional basket currency, VRSC-BTC:
    run sendcurrency "*" '[{"address":"bob@","amount":10, "convertto":"VRSC-BTC"}]' 
    
  • Converting VRSCTEST to another reserve, BTC through a fractional currency, VRSC-BTC:
    run sendcurrency "*" '[{"address":"bob@","amount":10, "convertto":"BTC","via":"VRSC-BTC"}]' 
    
  • Preconverting to new currency, NEWCOIN, before it is active:
    run sendcurrency "*" '[{"address":"alice@","amount":10, "convertto":"NEWCOIN", "preconvert":true, "refundto":"alice@"}]' 
    

Defining a Currency

To create a currency of a specific name, you need an ID of the same name. The controller of this ID is the only one who can create a currency of that name, and they can only do so once.
So, let's hypothetically assume I have 3 IDs, one named gold@, one named mycoin@, and one named mike@. I would like to have one currency, gold@,
that I somehow launch in a way that maps it in a way that can be widely trusted to a specific, auditable store of gold.
I also would like to launch a token called mycoin@, which is something like a Kickstarter, where a business, "my", offers to attribute the coins some utility or product value if the purchase exceeds a certain level.
First, I could define the currency "gold" as follows:

./run definecurrency '{"name":"gold","options":96,"currencies":["vrsctest"],"conversions":[0.01],"minpreconversion":[1000],"preallocations":[{"mike@":50000000.00000000}]}'

of course, since this is a test currency, I send myself some to start. The identity of the currency must be funded with at least 10 VRSCTEST before sending the transaction returned from this command to
initiate a currency launch that will start at 50 blocks from when it was made (default), and that must have 1000 VRSCTEST preconverted at 0.01 VRSCTEST per GOLD in order to launch.
all of this happens as part of the mining process, since mining the blocks that launch a currency earn the 0.025% conversion fees of participation
in the launch, converting VRSCTEST to GOLD. I could send the following command before the block where GOLD token launches.
After it launches, the only way at present to create new tokens is with a centralized issuance option. To convert VRSCTEST to GOLD, you could issue the command:

./run sendcurrency "*" '[{"address":"mike@","convertto":"gold","preconvert":1,"amount":100}]'

that would effectively park my conversion until the token launches, at which point, I will either find 0.975 GOLD in my wallet, or I will have my VRSCTEST back.
Assuming it launches, and I later want to create mycoin, which can be converted to with either GOLD or VRSCTEST, I can create mycoin with:

./run definecurrency '{"name":"mycoin","options":97, "proofprotocol":2,"currencies":["vrsctest", "gold"],"minpreconversion":[10000,5.1298]}, "initialsupply":[20000]'

In "mycoin", I set proofprotocol to 2, which is PROOF_CHAINID. That means that the controller of the chain ID can mint new coins as follows:

./run sendcurrency "mycoin@" '[{"address":"mike@","currency":"mycoin","mintnew":1,"amount":10000}]'

Launching the testnet:

./verusd -chain=VRSCTEST

Disclaimer

This is experimental and unfinished software. Use at your own risk! No warranty for any kind of damage!
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The enclosed copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

MacOS:
https://www.virustotal.com/#/file/e06893a7697389dfe81e83a21423146b2e1053a8802b2ffbf553b0cc83ac560a/detection
Linux-x86-64: https://www.virustotal.com/#/file/aaa27ae73a10b7b22bff51d825b7f9f610f1a6e8de65f05abc39fa9051679740/detection
Linux-ARM64: https://www.virustotal.com/#/file/067d70924d1a1e4ee1e17418a570e99d23f5f6d9ed903ed01d92e7228d95cdd4/detection
Windows:
https://www.virustotal.com/#/file/6ef52937640dea9148dbc58a2e9695394523dd4c841db4be2f246e1c6c46ff0f/detection

Avast and Kaspersky may flag the software as "not-a-virus" or "PUP". These are warnings that you are installing mining software, which may be installed by a third party to exploit your PC.
To find out more about the false positives, review the following resources:
https://blog.malwarebytes.com/detections/pup-optional-bitcoinminer/
https://www.kaspersky.com/blog/not-a-virus/18015/

Verifying Downloads

A txt file containing the signer, standard sha256 file checksum, and signature, is included for each download. These packages have been signed with the identity "Verus Coin Foundation Releases@".

  1. Extract downloaded archive
  2. Verify signature for the extracted app or installer using the extracted textfile.
  3. Run installer or place appimage in desired directory

Don't miss a new Verus-Desktop release

NewReleases is sending notifications on new releases.