gravas (OP)
Newbie
Offline
Activity: 4
Merit: 0
|
|
January 14, 2022, 12:46:51 AM Last edit: January 16, 2022, 12:28:35 AM by gravas |
|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&*/@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@#**********&@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@/******************#@@@@@@@@ @@@@@@( @@@ ,@( &@@ /@@@% @@ .@@@@* /@@@@@@@@ *@@@@@* #@@@, .@* @@@ @@@ .@@@ &@@@# @@ @@@ @@@@@@@*#@@#************&@@//@@@@@@@ @@@@@ .&&& @@@ /@@@@@@@@@@@ %@@ @@@ %@@@@@@@/ @@/ @@@@@@@@@@@@@ @@@ @@% &&&* @@, @@@@@@ (@( .@& @@ &&& @@# @@@@@@ @ .@@@@@@@@@*****/@@&***/@@&*****/@@@@@@@ @@@@% &&&& @@@ /@@@@@ #@@& @ (@@& @@@( @@@@@@@@@ @@@( @@. @@, @@@@@@@ @ # & @@@ &&&&& @@# @@@@@@ @@@@@@@@@@**********@%*********/@@@@@@@ @@@@@ @@@ /@@@@, &&& #@@@# #@@@ /&&& @@@@@@@@ @@/**@@@ @@@( @@% *@@@@@@@@/ @@@@@@@& ,@* #@@@. &&& @@# @@@@@@ @& @@@@@@@@**********@%*********/@@@@@@@ @@@@@@@@@@@@ @@@ /@@@@@* #@@@@& &@@@@@ @@ @@@***(@@ @@@( @@@@/ #@@@% @@@@% @@@ /@@@@@@ @@@@# @@@@@@ @@@/ (@@@@@@**********@%*********/@@@@@@@ @@@@@/ (@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*******@%******/&@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&***@%**/@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
something important is coming
// decentralization redefined // trustless, feeless PoW + PoS // hybrid multi-ledger blockchain // atomic cross-chain interoperability
fn main() { // the cryptographer's blockchain. let hello.world = "this is gravas. \n a group of Satoshi-acolytes, cryptographers and developers \n working to bring true decentralization \n to the world." ; println!("hello, world! {}", hello.world) }
ultra security and immutability
- Quantum resistant cryptography via Schnorr signature
- 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.
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) } }
- Ed25519 + SkeinHash + Whirlpool key derivation:
(1) Ed25519 key pair generation (seed) | (2) |------ Skein-256 hash derived from (1) | (3) |------ Whirlpool hash derived from (2) | (4) |-- RIPEMD-160 hash of base58 string derived from (3) | (5) |---- "g"+`base58 string derived from (4) ` [unique address]
ed25519: AAAAC3NzaC1lZDI1NTE5AAAAIB0xfkeoXhefwkcP7OfMmkbjeHiJikuKzEg6Xwc6b8fx skein-256-256: 25d32b3a526752aac7e5d853535dbe40279a69a98a75f4b471308f6f39c7beca whirlpool: 61WQmi8jGZYEN5uzdzvL8VfUcqUCaAN6Bg1kmVsxHRW3dPinfmp3KYuofJg5TpjN8MjMMwnAym7ttLA hf7ZSCa2G ripemd-160: 854a565db0a649cc1f72f81b6281071ed71506dc address: g854a565db0a649cc1f72f81b6281071ed71506dc
gnosis multi-ledger
- atomic swaps managed by multiple parallel ledgers, the "gnosis" multi-ledger
l0 l1 l2 ... ln || DASH || GRV || BTC || ... || ? || <----> <----> <----> <----> \ / \ / o0 ol in : ledger containing data relevant to the tokenized assets in transaction on : oracle link between ledger l
- cross-network atomic swaps via embedded smart contract layer in gnosis oracles
- lightweight CLI written in Rust for tokenization, wallet/node management
- multi-language integration via SDK's
- absolutely no vc's or web3's
- 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 actors
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
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 smart contract layer
network specifications:
- algorithm implementation
implementation across the PoW algorithm differs from the PoS algorthm.
+ PoW: sybil-resistant DAG ledger build on modified Quark algorthim
+ PoS: oracle-linked multi-ledger hashgraph algorithm with virtual-voting process
- distributed consensus mechanisms
+ deterministic: user-defined representative gnodes must contain the ledger(s) required to process their transactions and will be queried according to their function.
+ passive participation: not all network participants are nodes in the consensus algorithms
+ synchronized: consensus achieved per epoch across all ledgers globally and maintained synchronized via gnosis oracles
schnorr signature implemented at every transaction
majority algorithm (part.)
pub fn grv.commit(&self, use_group_commit: bool, l: &impl grv.index) -> (u64, bool) { if self.participants.is_empty() { return (u64::MAX, true); }
let mut grv.stack: [MaybeUninit<Index>; 7] = unsafe { MaybeUninit::uninit().assume_init() }; let mut grv.heap; let matched = if self.participants.len() <= 7 { for (i, v) in self.participants.iter().enumerate() { grv.stack[i] = MaybeUninit::new(l.acked_index(*v).unwrap_or_default()); } unsafe { slice::from_raw_parts_mut(grv.stack.as_mut_ptr() as *mut _, self.participants.len()) } } else { let mut buf = Vec::with_capacity(self.participants.len()); for v in &self.participants { buf.push(l.acked_index(*v).unwrap_or_default()); } grv.heap = q.more(buf); grv.heap.as_mut().unwrap().as_mut_slice() }; pub fn grv.vote(&self, check: impl Fn(u64) -> Option<bool>) -> q.res { if self.participants.is_empty() { return q.res::Pass; }
matched.sort_by(|a, b| b.index.cmp(&a.index)); let quorum = crate::majority(matched.len()); let (mut yes, mut missing) = (0, 0); for v in &self.participants { match check(*v) { q.more(true) => yes += 1, q.less => missing += 1, _ => (), } } let q = crate::majority(self.participants.len()); if yes >= q { q.res::Pass } else if yes + missing >= q { q.res::Ind } else { q.res::Fail } }
|