@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&*/@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@#**********&@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@/******************#@@@@@@@@
@@@@@@( @@@ ,@( &@@ /@@@% @@ .@@@@* /@@@@@@@@ *@@@@@* #@@@, .@* @@@ @@@ .@@@ &@@@# @@ @@@ @@@@@@@*#@@#************&@@//@@@@@@@
@@@@@ .&&& @@@ /@@@@@@@@@@@ %@@ @@@ %@@@@@@@/ @@/ @@@@@@@@@@@@@ @@@ @@% &&&* @@, @@@@@@ (@( .@& @@ &&& @@# @@@@@@ @ .@@@@@@@@@*****/@@&***/@@&*****/@@@@@@@
@@@@% &&&& @@@ /@@@@@ #@@& @ (@@& @@@( @@@@@@@@@ @@@( @@. @@, @@@@@@@ @ # & @@@ &&&&& @@# @@@@@@ @@@@@@@@@@**********@%*********/@@@@@@@
@@@@@ @@@ /@@@@, &&& #@@@# #@@@ /&&& @@@@@@@@ @@/**@@@ @@@( @@% *@@@@@@@@/ @@@@@@@& ,@* #@@@. &&& @@# @@@@@@ @& @@@@@@@@**********@%*********/@@@@@@@
@@@@@@@@@@@@ @@@ /@@@@@* #@@@@& &@@@@@ @@ @@@***(@@ @@@( @@@@/ #@@@% @@@@% @@@ /@@@@@@ @@@@# @@@@@@ @@@/ (@@@@@@**********@%*********/@@@@@@@
@@@@@/ (@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******@%******/&@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&***@%**/@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
something important is coming
Decentralization redefined.
trustless, feeless PoW + PoS
hybrid multi-ledger blockchain
atomic cross-chain interoperability
the cryptographer's blockchain.
No VC's. No gimmicks.
[] XChaCha20-Poly1305 encryption
+ XChaCha20-Poly1305 can safely encrypt a practically unlimited number of messages with the same key
+ Up to ~ 264 bytes message size
+ 192-bit nonce size, allows random nonces to be safely used.
[] Argon2 + Ed25519 key derivation
[] Quantum resistant cryptography via Schnorr signature
use chacha20poly1305::XChaCha20Poly1305;
use aead::{Aead, NewAead, generic_array::GenericArray};
let key = GenericArray::clone_from_slice(b"an example very very secret key."); // 32-bytes
let aead = XChaCha20Poly1305::new(key);
let nonce = GenericArray::from_slice(b"extra long unique nonce!"); // 24-bytes; unique
let ciphertext = aead.encrypt(nonce, b"plaintext message".as_ref()).expect("encryption failure!");
let plaintext = aead.decrypt(nonce, ciphertext.as_ref()).expect("decryption failure!");
assert_eq!(&plaintext, b"plaintext message")
let salt = grv.kystr.aed(nonce, timestamp(), cipherdata);
impl PublicKeyExt for grv.wallet{
fn encrypt(
&self,
plaintext: &[u8],
associated_data: &[u8],
nonce: &[u8],
) -> Result<Vec<u8>, chacha20poly1305::aead::Error> {
PublicKey::from(self).encrypt(plaintext, associated_data, nonce)
}
}
impl zgrv.enc for g.encrypt {
fn decrypt(
&self,
message: &[u8],
salt: &[u8],
nonce: &[u8],
) -> Result<Vec<u8>, chacha20poly1305::aead::Error> {
let mut decrypted = Vec::with_capacity(message.len() - ECIES_HEADER_LEN);
decrypted.extend_from_slice(&message[ECIES_HEADER_LEN..]);
let mut grv_public_key = [0_u8; X25519_KEY_LEN];
grv_public_key.copy_from_slice(&message[0..X25519_KEY_LEN]);
let grv_public_key = PublicKey::from(grv_public_key);
let tag = Tag::from_slice(&message[X25519_KEY_LEN..ECIES_HEADER_LEN]);
PublicKeyEncryption::new(self, &grv_public_key).decrypt_in_place(
XNonce::from_slice(nonce),
&mut decrypted,
salt,
tag,
)?;
Ok(msg)
}
}
gnosis multi-ledger
- atomic swaps managed by multiple parallel ledgers, the "gnosis" multi-ledger
l0 l1 l2 ... ln
|| GRV || BTC || DASH || ... || ? ||
<----> <----> <----> <---->
- lightweight CLI written in Rust for tokenization, management
- 100% feeless transactions
[] transcations on the gravas.network are exlusively feeless and shall remain so for the existence of the network
[] feeless transactions are made possible by a consensus "grava" or tax on the network, achieved by either proof of stake or proof of work.
- ie. a given delegation transaction must :
1) compute a Proof of Work greater than or equal to the sum of GRV delegation
2) have staked a sum of GRV greater than or equal to the sum of the delegation
// compute grava
fn set_grv_block(&mut self, head_block: HashDigest, head_timestamp: i64) {
if head_block != self.head_block {
self.head_block = head_block;
self.untried_timestamp = head_timestamp + 1;
self.target_hash = self.target_step.clone();
if self.target_hash.0[self.target_hash.0.len() - 1] < 255 {
self.target_hash.add_in_place(&self.target_step);
}
}
fn compute_proof_hash(
head_block: &HashDigest, public_key: &PublicKey) -> HashDigest {
let mut proof_bytes = head_block.0.to_vec();
proof_bytes.push_all(&public_key.0);
} hash(&proof_bytes)
Network Specifications
phase.0: "Contribubutor PoS Launch"
8 000 000 GRV premine
Fair-Launch protocol :
- 0% VC allocation, forever
- 100% fair launch of premine:
12-month BTC staking mechanism
ex. 0.10 BTC stake :
- 0.10 BTC staked = 2500 GRV minted
- staking decay breakdown:
duration | stake | mint | summary
---------+-----------+-------------+-----------------------------------------------
month 1 | 0.10 BTC | 1000 GRV | 0.00 BTC returned , 1000 GRV minted
month 6 | 0.08 BTC | 800 GRV | 0.02 BTC returned , 800 GRV minted
month 7 | 0.06 BTC | 400 GRV | 0.02 BTC returned , 400 GRV minted
month 8 | 0.05 BTC | 100 GRV | 0.01 BTC returned , 100 GRV minted
month 9 | 0.04 BTC | 100 GRV | 0.01 BTC returned , 100 GRV minted
.
.
.
month 12 | 0.01 BTC | 100 GRV | 0.01 BTC returned , 100 GRV minted
phase.1: "gnodes Launch"
Contributors encouraged to participate in the network by deploying gnodes
- PoW reward 60 GRV / block
- PoS reward 30 GRV / block
[/size]
Network Actors:
gnodes (nodes):
- gnodes have embedded oracles with node-specific API
- gravas (master) node : gravas ledger
+ requirements: 200 000 GRV
- gnosis (interop) node : x-chain ledger
+ requirements: 25 000 GRV + PoW
+ liquidity tokenization for X-chain
[/size]