πSECURITY ANALYSIS
Though blockchain technology integrates security throughout, the networks still come under attack by cybercriminals. Malicious parties may attack the network for financial gain or disrupting the network. In this section we define likely attacks and the measures Friddy takes to prevent the attacks.
i. Sybil Attack
A Sybil attack is an attack wherein a reputation system is subverted by creating multiple identities [15]. In Friddy, this equates to a malicious party creating hundreds on nodes to gain disproportionately large influence. Since the voting system is based on weighted account balance, adding extra nodes does not corelate to extra votes. There is no advantage from a Sybil attack.
ii. Denial-of-Service (DoS) Attack
Denial-of-Service is an attack against systems availability. By flooding the network with unnecessary, but valid, transactions, the attackers attempt to saturate the network. In Friddy, with no transaction fees, attackers may continue the attack indefinitely. However, the PoW required for all four transactions (open, send, receive, change), will limit the transaction rate vis-Γ -vis the computational resources required. Since the nodes can prune the older transactions and neednβt maintain the entire history of the ledger, the impact on storage is also limited.
iii. Penny Flooding Attack
Another form of DoS attack on blockchain includes spamming the network with low valued dust transactions. This attack is called the penny-flooding attack [16]. While the mitigation options are the same as Denial-of-Service attacks, additionally, the attackers will have to create a large number of users. To combat this risk, nodes can prune aggressively β below a statistical metric and based on access frequency. Given the low footprint, the permanent storage space required for additional 8 million users is ~1GB.
iv. Network Amplification Attack
Amplification attacks are used to magnify the bandwidth consumption in the network [17]. This is another form of DoS, but involves amplified network bandwidth usage, instead of flooding with transactions. In Friddy, if a node observes a garbage block (e.g., the block has not referenced the previous block), then the node has two options.
The node can ignore the block as garbage or request a resync with another node. In case of resync, a TCP connection is established with the other node, resulting in increased traffic within the network.
If the block was garbage indeed, then the resync was unnecessary. Therefore, the protocol is designed for the nodes to wait until a threshold of votes is observed on the garbage block. If the block doesnβt receive enough votes, it is assumed junk and ignored, instead of initiating a resync.
v. POW Attack
Proof-of-Work attack is another form of Denial-of-Service attacks. Since the user-chain can only be updated by the owner, a malicious node can compute sequential blocks along with the PoW, without broadcasting to the network. Once the attacker has generated a large number of valid transactions, with practically no value, the blocks are flooded into the network. Limiting the transactions via rate or time [18] are potential mitigation options available.
vi. Bootstrap Poisoning
Bootstrapping nodes [19] provide initial configuration information to newly joining nodes so that they may successfully join the network. Letβs consider a scenario where a bootstrapping node held sufficient balance, and therefore, a certain weightage in voting compared to other nodes at that time. A malicious bootstrapping node may hold on to the older representation (balance and voting stake), even though the network representation has changed.
If a new node in the network rendezvous with the malicious bootstrap node, the voting decisions will oscillate towards the malicious node. When the new node interacts with other nodes in the network, all transactions of the new nodes will be denied. Malicious nodes can waste time and resources of new nodes by corrupting information.
To prevent bootstrap poisoning, new nodes can be paired with an initial database of users and known-good block heads. The closer the download is to current, the higher the probability of accurately defending against this attack.
vii. 51% Attack
In Friddy, consensus is achieved via balanced weight voting system. If a malicious actor gains >50% voting strength, it may lead to break down of the network. In this section, we outline a couple of scenarios and mitigation actions for 51% attack.
Disincentivizing attack: With a PoS, the attacker needs to get 51% of the cryptocurrency (to earn majority voting rights) to carry out an attack. Unlike PoW, in PoS the attacker has staked his/her wealth in the network. Therefore, an attack is a disincentive. Honesty is rewarded and any attempts to tamper the ledger would destroy the attacker's wealth.
Cost of the attack: The cost of the attack on the network is proportional to the market capitalization. The cost of attacking the system scales with the network.
Voting quorum: PoS relies on voting to reach consensus on the current state of a proposed block. Yet, there remains a vulnerability caused by nodes abstaining either accidentally or maliciously from voting. The reasons for nodes abstaining could be nodes are out of sync, offline, are attacked. Representative voting overcomes these challenges. Users can choose a representative to vote on their behalf, if the users themselves are unavailable. By maximizing the number and diversity of nodes, the network resiliency increases.
Unwanted forks: Forking issues are rapidly resolved in Friddy. There may be a possibility when a non-malicious user receives a block from a malicious actor. Nodes wanting to protect themselves from block forks can choose to wait longer before receiving from a user who generated forks. Or nodes can opt to never receive at all.
8. GLOSSARY OF TERMS
This section serve as a glossary of terminology applicable to Friddy Coin (USDR). The glossary will facilitate consistency in describing the network and its components.
Address: A blockchain address is the location to or from which transactions occur on the blockchain. This is like a URL.
Alt-coin: Any coin or token other than Bitcoin.
Bitcoin: The first and most popular cryptocurrency.
Block: A group of transactions entered in a blockchain, like pages in a ledger. In Friddy, every block contains only one transaction.
Block Interval: Not applicable in Friddy, as updates on user-chains can be performed asynchronously.
Blockchain: A mathematical structure for storing digital transactions or data in an immutable, distributed, decentralized digital ledger comprising blocks that are linked via cryptographic signature that is nearly impossible to fake, hack or disrupt.
Block-Lattice: Friddy uses a directed acyclic graph (DAG) ledger structure called block-lattice. In a block-lattice structure, every user (public key) gets their own chain (user-chain).
Consensus Mechanism / Protocol: The process used to validate a transaction across a distributed blockchain network to achieve Byzantine Fault Tolerance.
Directed Acyclic Graph (DAG): DAGs are directed graphs with no directed cycles. DAGs comprise vertices and edges, with each edge directed from one vertex to another, such that following those directions will never form a closed loop.
Disk Capacity: Depending on the user demands and different configurations, Friddy nodes require different storage requirements.
Disk Capacity - Current: Friddy keeps the accumulated balances with blocks. Therefore, nodes only need to keep the latest or head blocks for each user to take part in consensus. In the current mode, a node is uninterested in keeping a full history & opts to keep only the head blocks.
Disk Capacity - Historical: A Friddy node interested in keeping a full historical record of all transactions. This node will require the maximum amount of storage.
Disk Capacity - Light: In Friddy, a light node keeps no local ledger data and only participates in the network to observe activity among users/accounts in which it is interested. Optionally, light nodes may create new transactions with the private keys it holds.
Double Spending: A unique problem to cryptocurrency where the same coins or tokens are spent or traded twice.
Ethereum: A public blockchain that supports smart contracts.
Fiat: Legal tender the value for which is backed by a government or governmental body (e.g., US dollars, Euros).
Fork: A collectively agreed upon software update by all nodes in a distributed network. Sometimes, the previous version continues in parallel with the new version.
Genesis Block : The first or first few blocks of a blockchain.
Hash Function: A function that receives an input of any size and returns a unique string of a uniform length.
Hashing Algorithm: Hashing algorithm is used to prevent network spam. Friddy uses Blake2b as a digest algorithm against block contents [22].
Identity: The information on an entity used by computer systems to uniquely represent a person, organization, application, or device.
Immutable/Immutability: The property of being unchangeable. Once a transaction has been added to a block and written to a blockchain, it cannot be changed and therefore is immutable.
IPv6 and Multicast: Building on top of connection-less UDP allows future implementations to use IPv6 multicast as a replacement for traditional transaction flooding and vote broadcast. This will reduce network bandwidth consumption and give more policy flexibility to nodes going forward.
Key Derivation Function: To protect ASIC cracking attempts, the keys keys are encrypted by a password and the password is fed through a key derivation function [23].
Ledger: A database or a record book kept to provide evidence of individual transactions.
Liquidity: The ease of converting an asset (cryptocurrency here) to cash (fiat).
Node: A computer which holds a copy of the blockchain ledger.
Node - Bootstrap : Bootstrapping nodes provide initial configuration information to newly joining nodes so that they may successfully join the network. This is done over a TCP connection rather than UDP because of large amount of data transfer required initially.
Node - Light: A light node is also a trusting node that only observes traffic for accounts in which it is interested allowing minimal network usage.
Node - Observer: An observer node doesnβt generate its own votes. Since signature generation overhead is minimal, the CPU requirements are almost identical to running a representative node.
Node - Representative: A representative must verify signatures for blocks, votes, and also produce its own signatures to participate in consensus. The amount of CPU resources for a representative node is significantly less than transaction generating and should work with any single CPU in a contemporary computer.
Node - Trusting: A trusting node observes vote traffic from one representative it trusts to correctly perform consensus. This cuts down on the amount of inbound vote traffic from representatives going to this node.
Node - Trustless: A trustless node is like a representative node but is only an observer, it doesnβt contain a representative account private key and does not publish votes of its own.
Off-chain: Data stored external to the blockchain.
On-chain: Data stored within the blockchain.
Peer-to-Peer (P2P): A direct connection between two participants in a system - can be computer to computer or person to person.
Performance: Performance is measured in the order of seconds. A current reference implementation operating on commodity SSDs can process over 10,000 transactions per second.
Proof of Stake (PoS): PoS is a consensus mechanism, where network participants stake their cryptocurrency (USDR) in order to increase their chances of being selected to validate a block. The stake is locked up as a deposit to ensure the miner validates the block according to the rules. If the miner violates the rules, the deposit will be "burned" or destroyed. PoS is less resource intensive than PoW since fewer miners are racing to solve the mathematical formula.
Proof of Work (PoW): PoW is a consensus mechanism, where miners solve a solution that is difficult to find but is easy to verify. The miner solving first is rewarded.
Public/Private Key: A public key is a unique string of characters, derived from a private key, which is used to encrypt a message or data. The private key is used to decrypt the message or data.
Signing Algorithm: ED25519 elliptic curve algorithm with Blake2b hashing is used for all signatures. ED25519 was chosen for its high-speed, high-security signatures [21].
Stablecoin: A cryptocurrency which is underwritten by an asset or assets (e.g., fiat currency, commodities, etc.) designed to minimize the volatility of the price of the coin/token.
Transactions Per Second (TPS): A measurement of the speed of a blockchain.
Trust: Confidence in the integrity of an entity (e.g., person, organization, etc.).
Trustless: The elimination of trust from a transaction. Blockchain is called a trustless system because the two entities performing a transaction do not need to trust one another. The properties of blockchain - digital signatures, cryptography, etc. - provide the trust.
UDP Message Protocol: Friddy is a stateless, light-weight protocol. All messages fit within a single UDP packet. TCP is used only for new peers when they want to bootstrap the block chain.
User Chain: Every user (account) in Friddy has their own Blockchain. These individual blockchains are user chains.
Users: Users are the participants in the network. Users are identified by the public-key address.
Last updated