Aurem is a confidential proof-of-stake ("CPoS") mechanism that builds on the work of Aleph Zero's AlephBFT and Dusk Network's PoBB mechanism. It DAG-based aBFT consensus that ensures three vital parameters in digital currencies.
- Complete privacy of your bid (stake) making sure no network participant can see how much currency was staked.
- Instant finality in a round, ensuring fast, reliable, confirmation of a transaction.
- Unpermissioned committees, allowing anyone to become a validator through Aleph's randomness beacon with the head minter selected based on their bid.
Aurem also enforces ring-member selection enforcement at the consensus layer, guaranteeing transaction uniformity to the distribution, selected by the decoy selection algorithm ("DSA"), and provides stronger guarantees that all clients conform to the specification. This greatly mitigates the effects of dusting/flooding attacks for the network, and helps increase privacy for older unspent UTXOs.
These instructions assume:
libffheader files are located at/usr/local/include/libfflibffis located at/usr/local/lib- .NET 7.0 is installed. It should also work with .NET 6.0, though.
- Linux.
Instructions:
- Install libff
- Set desired parameters in
config.jsonnumNodes: how many nodes to simulate in the networkfixedRounds:-1to run forever,fixedRounds > 0to run a finite number of roundsgraphsDirectory: the name of the directory (inside$HOME) to store the generated chDAGs
dotnet build -p:StartupObject=Aurem.Program- To compile
AuremCore:
g++ -shared -fPIC -I/usr/local/include/libff -L/usr/local/lib -Wl,-rpath=/usr/local/lib AuremCore/AuremCore.cpp -lff -lgmp -o bin/Debug/net7.0/AuremCore.sodotnet run./graphs.sh compileto create PNGs from the generated Graphviz dotfiles./graphs.sh cleanto delete the graphs directory and its contents
A recommendation is to run
./graphs.sh clean && dotnet run && ./graphs.sh compileto remove previous graphs, and generate and compile new ones.
To run tests:
dotnet test -p:StartupObject=Aurem.Program- For now, any experimental or debugging features is contained in
Program.cs(entry-point). For instance, the rest of the source code files never access any of the configuration parameters stored inconfig.json. graphs.shonly works for *nix systems.- The current repository does not represent the final state of Aurem.