Announcing Veldspar, thinking differently and more co-operatively.
Purpose:To think about block chain currencies differently (in this case to try to solve the issues that currently affect coin systems in production).
To use PoW & PoS to good affect. The PoS actually being the amount in hash power you apply to the network.
The concept (still in development as problems are discovered and overcome):There are two parallel parts to the chain;
- the ORE to be mined
- the traditional transactions block chain
To mimic real life (resource based / effort based), there is ORE to mine, but this does not go away, you can mine this forever trying to find tokens. Once found the miner can claim that token as theirs and it will be entered into the block chain as the originating owner of that token. The token value is based on a likelihood gate, and then what is essentially a pattern match against a table of magic beans. Exponential value based on complexity resulted in too many low value tokens and the network can only ever work well with a good mix of denominations.
Because ORE can be mined forever, hash rate will be spread across the entire block chain not just used to crack a single block. Miners may wish to mine only a single block of ORE for many months, trying to find the highest possible value token they can, before moving onto a new one.
Tokens are defined as addresses describing the position within the ore they were found in, and a reproducible path to the discovery of the pattern. Once a token has been found, it is submitted to the network with the miners’ details and an agreed timestamp (by consensus). If that miner was the first to find that token then it is written into the ledger, and that token is created, and its journey starts.
The block chain itself is signed/sealed on a fixed time basis, so every X seconds the all of the outstanding transactions in arrears will be selected, signed and entered into the chain. Once this has been done, the hash for the block is distributed to all connected nodes, and the originating nodes will receive other nodes' hashes. Then quorum is established. If the hash you supply is outvoted by a significant proportion of the other nodes, then that block is not written to the local store, and instead a copy of the transactions is gained from several sources, compared, and the process is run again.
Benefits?Distributed
Block chain itself is just transactions, so small and fast to synchronise
ORE system, means hash rate is distributed across entire chain, therefore stopping anyone smashing the network with nicehash/asic rigs.
No fixed reward and no fixed supply. Only a likelihood of reward/total supply, based on the amount of effort used to mine the ore. This stops early adopters from getting anything more than late adopters, because they are not rewarded for being first other than the low value easy tokens.
ORE does not need to be stored on all nodes, but transactions will. This will allow for space limited installations of nodes.
You are not fighting other miners, your effort is directly rewarded with wealth. People who apply more hash-rate get proportionally more reward.
Downsides?Low value tokens will be extremely numerous, so sending large transaction may have many 1000's of tokens within it.
As above, tokens mimic real word money, in that you can have T0.01, T0.20 & T1.00, but you could not send T0.30 to someone as you do not have the denomination to do so. The network would have to try to distribute large and small tokens to make sure there was always enough "change" to have transactions succeed.
Tokens?Tokens are described as the positional information of their location within the ore, the method used to generate it, and the value signature.
And example would be:
<height><algorithm><value><add1>..<add n>
Which looks, for a 64bit token with 8 paths, like:
00000001-0000-00000001-00046411-00005839-0002C3CD-000B5BA9-00010B6F-00002AEA-0007E24D-000EC5F6
AlgorithmThis would be an enumeration of 0-65534 possible algorithms ... Becoming ever more CPU intensive to derive more value from the find, allowing for deprecation and replacement over time.
The tokens should be hard to find, but very fast to validate, as the nodes will be required to validate all the finds, so they can be incorporated into the ledger at a point in the future.
EconomyThis is tricky, as it mimics real world resource availability and therefore there are no fixed emissions of tokens, it is purely what is found in the ore provided, which is of course entirely random.
FairnessAs it is impossible (or at least not-likely) for developers to pre-mine the token, other than "knowing" about the coin first, there is no fixed pay-out, only a reward for effort applied so this should reduce the amount of bag holding that early adopters have traditionally amassed. You also never loose out to other miners with far more horsepower.
Sequential mining is discouraged as you will be likely to find blocks which have already been claimed, therefore, randomised mining of the ore would yield the best possible return for effort.
MiningSo mining, consists of finding tokens within the ore. By default, a block of ore is 1mb of data. The miner has to try 8 x 64 byte sections of that ore, using one of 2 initial methods (prepend & append), then one of 4 hash algorithms will be used to try to find a valid token. This gives possibilities to try of approximately 1.19^58 combinations. But with there being up to 65534 algorithms, all operating on the same block of ore the possibilities are numerous. Ore blocks follow a different release schedule, so may well be every 10k blocks, or 100k.
TransparencyThis is a tricky one for me to really wrap my head around, personally I love the idea of entirely anonymous currencies free from the outside snooping on what you have. But in a fair and balanced society, everyone should be held to account for what they hold. As only when something is free and open can trust be established. Also, if you are looking to create a crypto currency that is welcomed with open arms by payment providers and governments, a certain amount of auditing must be possible whist still allowing some anonymity.
This will be a tricky problem to solve as you wish to balance the two, and ensure you are protecting both sides but still allowing the network to be entirely independent and beyond the control of any single individual or agency.
MethodThere will be two data structures underlying the chain.
The blockchain itself, containing <Blocks>, tied together with SHA512 hash of all it's transactions + previous block hash
Ledger, the in/out record for all tokens in the chain. Ownership can be established by looking at the last allocation of a token, and tested before spending that token. Also, registration of a token can be tested by the non-existence of an existing allocation for that token.
Because there will be no proof of work for the blockchain, we must secure it via consensus. With the seed nodes being authoritative whilst the network size is insufficient or quorum cannot be achieved.
Consensus is based (due to timing anomalies) on transactions being submitted to the network with a target block membership, which is far enough in the future to ensure it’s distribution around the network in sufficient time (say at least 1 min). Then when the next block is due to be produced the nodes will gather the outstanding transactions for the block, order the transactions by their identifier and hash them, then hash that result against the previous block.
The node will then send this final hash around to other nodes to gain consensus, each node will record the number of hits/misses of that hash it receives and write that into the blockchain as a record of the network quorum for that block. In the case where there is significant disagreement, then the seed nodes become authoritative, although this should never happen or be inconsequentially irregular as to not be a problem.
In the case where a node becomes outnumbered in it’s resolution of a block, it will not commit that block into the store, and will instead ask another node (likely a seed node) for all it’s transactions for a block, then re-process that block and check the hash now matches the consensus and if it passes then write the block into the datastore.
Roadmap:v0.1.x - Initial seed node created, mining active, wallets created, no replication to other nodes.
v0.2.x - Live replication, p2p to other nodes, Seed nodes authoritive on token registration and spends
v0.3.x - Quorum introduced, seed nodes no longer authoritive unless 50/50 decision requires adjudication.
v0.4.x - Introduce ledger compaction, only allocation and previous allocation required to be kept past a certain point.
When does it go live?Monday 6th August 2018, 0:00.
But there is no point rushing to be first, as there is no reward for being first over last (unless my calculations are wrong!).
Why release alpha?Because this codebase needs the feedback and the mining to test all the concepts:
Where is the projecthttps://github.com/editfmah/VeldsparWhy does it only work on Mac & UbuntuBecause this is a prototype and the miners & wallet will be ported to JavaScript at some point soon so people can use the network, and the Nodes will be made available to Windows at some point in the future as well.
I will try to answer any questions on here, but bear in mind this is Alpha and until we hit version 0.4.xx I wouldn't take it too seriously as there will be plenty of dev work to do. So far there is a simple miner, wallet & node service.
Support and talkhttps://discord.gg/95VHjn3Many thanks.