Created at 10pm, Apr 15
buaziziCrypto
0
Avalanche Scalable and Probabilistic Leaderless BFT Consensus through Metastability
Q4Cf18Q1HV54iOPuDoxnebQtUPCUG90RC1qerK08Cbo
File Type
PDF
Entry Count
134
Embed. Model
jina_embeddings_v2_base_en
Index Type
hnsw

This paper introduces a family of leaderless Byzantine faulttolerance protocols, built around a metastable mechanismvia network subsampling. These protocols provide a strongprobabilistic safety guarantee in the presence of Byzantineadversaries while their concurrent and leaderless nature enables them to achieve high throughput and scalability. Unlikeblockchains that rely on proof-of-work, they are quiescent andgreen. Unlike traditional consensus protocols where one ormore nodes typically process linear bits in the number of totalnodes per decision, no node processes more than logarithmicbits. It does not require accurate knowledge of all participantsand exposes new possible tradeoffs and improvements in safetyand liveness for building consensus protocols.

Unlike other cryptocurrencies that use graph vertices directly as votes, Avalanche only uses a DAG for the purpose of batching queries in the underlying Snowball instances. Because condence is built by collected chits, and not by just the presence of a vertex, simply ooding the network with vertices attached to the rejected side of a subgraph will not subvert the protocol.
id: b0ef164972a19e7c0857f47195803dd9 - page: 10
5.4 Communication Complexity Let the DAG induced by Avalanche have an expected branching factor of p, corresponding to the width of the DAG, and determined by the parent selection algorithm. Given the 1 and 2 decision threshold, a transaction that has just reached the point of decision will have an associated progeny Y . Let m be the expected depth of Y . If we were to let the Avalanche network make progress and then freeze the DAG at a depth y, then it will have roughly py vertices/transactions, of which p(y m) are decided in expectation. Only pm recent transactions would lack the progeny required for a decision. For each node, each query requires k samples, and therefore the total message cost per transaction is in expectation (pky)/(p(y m)) = ky/(y m). Since m is a constant determined by the undecided region of the DAG as the system constantly makes progress, message complexity per node is O(k), while the total complexity is O(kn).
id: 4d11229bb04c297bd8b3ab0cfe8a8da5 - page: 10
6 Evaluation 6.1 Setup We conduct our experiments on Amazon EC2 by running from hundreds (125) to thousands (2000) of virtual machine instances. We use c5.large instances, each of which simulates an individual node. AWS provides bandwidth of up to 2 Gbps, though the Avalanche protocol utilizes at most around 100 Mbps. Our implementation supports two versions of transactions: one is the customized UTXO format, while the other uses the 10 code directly from Bitcoin 0.16. Both supported formats use secp256k1 crypto library from bitcoin and provide the same address format for wallets. All experiments use the customized format except for the geo-replication, where results for both are given.
id: 1a8b3bfa38e51ee48d72c5faff876046 - page: 10
We simulate a constant ow of new transactions from users by creating separate client processes, each of which maintains separated wallets, generates transactions with new recipient addresses and sends the requests to Avalanche nodes. We use several such client processes to max out the capacity of our system. The number of recipients for each transaction is tuned to achieve average transaction sizes of around 250 bytes (12 inputs/outputs per transaction on average and a stable UTXO size), the current average transaction size of Bitcoin. To utilize the network eciently, we batch up to 40 transactions during a query, but maintain condence values at individual transaction granularity.
id: 314777279acb5d9c5f005af081670893 - page: 10
How to Retrieve?
# Search

curl -X POST "https://search.dria.co/hnsw/search" \
-H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"rerank": true, "top_n": 10, "contract_id": "Q4Cf18Q1HV54iOPuDoxnebQtUPCUG90RC1qerK08Cbo", "query": "What is alexanDRIA library?"}'
        
# Query

curl -X POST "https://search.dria.co/hnsw/query" \
-H "x-api-key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{"vector": [0.123, 0.5236], "top_n": 10, "contract_id": "Q4Cf18Q1HV54iOPuDoxnebQtUPCUG90RC1qerK08Cbo", "level": 2}'