Pages:
Author

Topic: Stato DISASTROSO rete ethereum - page 17. (Read 7113 times)

legendary
Activity: 3318
Merit: 2962
September 27, 2021, 08:05:20 AM
ho creato un nuovo thread nella sezione altcoin internazionale.
Vediamo se a sto' giro quacuno si fa vivo.

https://bitcointalksearch.org/topic/an-attack-strategy-on-the-ethereum-network-based-on-block-stuffing-5362691
legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
September 26, 2021, 01:08:40 PM

Forse l'ho sistemato definitivamente...  ma c'erano una serie di list innestati che non ci giurerei Smiley
Grazie!

Mi pare a posto ora.
Scusami, mi era rimasto un list di troppo.
La formattazione con questi tag è un disastro appena si esce dalle cose più “canoniche”.
Ti avevo preparato un PM con tutte le correzioni, ma sei stato più veloce!
legendary
Activity: 3318
Merit: 2962
September 26, 2021, 01:03:14 PM

intendevo che sotto "Examples Code of DeathStar code" vedo un tag list di chiusura, come se mancasse quello di apertura

Forse l'ho sistemato definitivamente...  ma c'erano una serie di list innestati che non ci giurerei Smiley
Grazie!
legendary
Activity: 3845
Merit: 2053
September 26, 2021, 12:13:19 PM
C'è un problema di formattazione con un /list] di troppo nella seconda sezione.


grazie! dovrei averlo sistemato



ooops, mi sa che si è spostato nella sezione successiva Cheesy

no, ho controllato con la versione originale italiana, c'erano 3 punti di esempio, e poi sotto,
non tra i punti, la descrizione generale. Pensi che sia concettualmente sbagliato ragruppare cosi'?

Quote
Un gruppo di attaccanti potrebbe essere incentivato per svariati motivi a bruciare ethereum per mettere in difficolta' la rete, ad esempio:

- ad esempio essere i sostenitori di un'altra moneta competitor, non soggetta a queto tipo di problema (ad esempio Bitcoin)
- oppure organizzare  uno short su ethereum prima dell'attacco, congestionare la rete ethereum e ricoprirsi a prezzi piu' bassi,
  recuperndo i soldi dell'attacco e guadagnandoci
- rallentare e/o indirizzare a proprio vantaggio uno o piu' degli svariati smart contract che girano su ethereum, ad esempio 
  posticipare l'esecuzione di altri smart contract per avvantaggiarsi di certe condizioni
  (estrazioni a premi, aste online, ICO, transazioni finanziarie su DEX, Defi, ecc... come e' gia' stato fatto [2])
 
In generale qualsiasi persona o gruppo con sufficenti mezzi e con un qualsiasi tipo di interesse alla decadenza della rete ethereum
e/o degli smart contract che vi girano, potrebbe usare questa linea di attacco.


intendevo che sotto "Examples Code of DeathStar code" vedo un tag list di chiusura, come se mancasse quello di apertura
legendary
Activity: 3318
Merit: 2962
September 26, 2021, 12:09:53 PM
C'è un problema di formattazione con un /list] di troppo nella seconda sezione.


grazie! dovrei averlo sistemato



ooops, mi sa che si è spostato nella sezione successiva Cheesy

no, ho controllato con la versione originale italiana, c'erano 3 punti di esempio, e poi sotto,
non tra i punti, la descrizione generale. Pensi che sia concettualmente sbagliato ragruppare cosi'?

Quote
Un gruppo di attaccanti potrebbe essere incentivato per svariati motivi a bruciare ethereum per mettere in difficolta' la rete, ad esempio:

- ad esempio essere i sostenitori di un'altra moneta competitor, non soggetta a queto tipo di problema (ad esempio Bitcoin)
- oppure organizzare  uno short su ethereum prima dell'attacco, congestionare la rete ethereum e ricoprirsi a prezzi piu' bassi,
  recuperndo i soldi dell'attacco e guadagnandoci
- rallentare e/o indirizzare a proprio vantaggio uno o piu' degli svariati smart contract che girano su ethereum, ad esempio 
  posticipare l'esecuzione di altri smart contract per avvantaggiarsi di certe condizioni
  (estrazioni a premi, aste online, ICO, transazioni finanziarie su DEX, Defi, ecc... come e' gia' stato fatto [2])
 
In generale qualsiasi persona o gruppo con sufficenti mezzi e con un qualsiasi tipo di interesse alla decadenza della rete ethereum
e/o degli smart contract che vi girano, potrebbe usare questa linea di attacco.

legendary
Activity: 3845
Merit: 2053
September 26, 2021, 12:03:51 PM
C'è un problema di formattazione con un /list] di troppo nella seconda sezione.


grazie! dovrei averlo sistemato



ooops, mi sa che si è spostato nella sezione successiva Cheesy
legendary
Activity: 3318
Merit: 2962
September 26, 2021, 11:44:10 AM
C'è un problema di formattazione con un /list] di troppo nella seconda sezione.

A parte questo, mi aspetto che l'obiezione che verrà sollevata è nella stima di 100 gwei per il costo del gas: dal monitoraggio della rete che ho fatto nelle ultime settimane, mi aspetterei che in caso di congestione prolungata il valore possa schizzare di almeno un ordine di grandezza, rendendo l'attacco ancora più proibitivo e non sostenibile troppo a lungo.

grazie! dovrei averlo sistemato

per quel che riguarda l'obiezione, e' fondamentalmente giusta, ma considera che

in certi tipi di attacchi, tipo posticipare delle operazioni per trarne vantaggio tu il costo potrebbe essere davvero irrisorio
rispetto al risultato che ottieni. Ad esempio nle caso citato nella documentazione, uno l'ha usato per vincere una lotteria
dove la spesa che ha sostenuto per fare l'attacco era molto inferiore alla vincita.

Immaginati un po' nel mondo delle defi che casini puoi combinare.

tutto cio' detto, resta il fatto che se vuoi effettuare un attacco generico alla rete, e sei per esempio
la Cina che vuole devastare ethereum per promuovere la sua shitcoin, direi che l'aspetto economico e' totalmente marginale.

in  base a questi calcoli

Quote
Per fare una stima del costo necessario, considerare che viene minato un blocco ethereum ogni circa 15 secondi.
Stimando la dimensione del blocco media di 15.000.000 di gas, e un costo gas di 100 gwei, sono circa 1.5 ethereum per blocco.
Aggiungendo una fee del 10% per essere i piu' competitivi, potremmo stimare un costo per blocco di circa  1.65 ethereum.
A questo costo del gas, al cambio attuale di circa 4000$ per un eth un attacco della durata di 60 minuti verrebbe a costare circa 400 ethereum
ossia circa 1.600.000$ una cifra molto ridotta in rapporto al valore della rete di centinaia di miliardi di dollari

il costo di un blocco e' circa 1.65 eth a 100 gwei di costo gas. Ai valori attuali sono 5.000$ a blocco, che a me sembra una cifra
davvero irrisoria (anche se fosse 10x perche schizzano le fee), sopratutto ribadisco se sei la Cina o una banca che vuole affossare eth.

Inoltre se fai schizzare le fee, hai pur sempre ottenuto un effetto dannoso sulla rete, magari puoi farlo a sprazzi rendendo il calcolo
su una previsione delle fee praticamente impossibile (anzi chi ci dice che alcuni  non stiano GIA' facendo qualcosa di simile,
facendo elaborare smart contract a caso con il solo scopo di fare schizzare le fee e promuovere la migrazione ad altre chain?)




legendary
Activity: 3845
Merit: 2053
September 26, 2021, 11:28:11 AM
C'è un problema di formattazione con un /list] di troppo nella seconda sezione.

A parte questo, mi aspetto che l'obiezione che verrà sollevata è nella stima di 100 gwei per il costo del gas: dal monitoraggio della rete che ho fatto nelle ultime settimane, mi aspetterei che in caso di congestione prolungata il valore possa schizzare di almeno un ordine di grandezza, rendendo l'attacco ancora più proibitivo e non sostenibile troppo a lungo.
legendary
Activity: 3318
Merit: 2962
September 26, 2021, 10:27:35 AM
Grazie al prezioso lavoro di traduzione ed impaginazione di filippone, ecco l'articolo definitivo in inglese.
Se avete dei commenti segnalateli, poi lo postero' nella sezione alt-coin internazionale, poi su altre board.

-----------------------------------------------

An attack strategy on the Ethereum network based on Block Stuffing technique and the Deathstar smart contract.
By gbianchi bitcointalk.org
Translated by fillippone.

This study stems from some observations:

  • in the Ethereum network there is no concept of a "forbidden smart contract", the network is permissionless, meaning any user could possibly enter any type of code on the network, as long as the code is formally correct and pays for executing and running the code;
  • the only mechanism to "govern" the execution of the code is the fact that the execution of any smart contract costs gas, proportional to the number of instructions executed and the type of each instruction. Not necessarily each smart contract has to execute useful operations: it can create a meaningless gas-burning loop.
  • once it is entered in the network, the code is immutable, so there is no way to “get rid” of the smart contract from the network unless a hard fork-type like what happened with The DAO. But while the hacker of The Dao just exploited a bug in the contract to fund its child DAOs, Ethereum's core architecture is used here, making it really difficult to design a fairly effective hard fork.
  • Each block has a maximum size defined not by the size in Bytes, but by the maximum GAS that can be spent in the block.
    After the London hard fork, the "normal" size of the block is variable around an average of 15,000,000 of gas and can increase up to 30,000,000 of gas based on the demand of the network, with a process called tâtonnement.
    Briefly, the maximum size of a block is given by BlockGasLimit.
  • In the past, attacks have already been performed with the BlockStuffing technique and no effective structural solutions have been found. [3]

    Quote
    3.3.3 DoS with Block Stuffing (V31).
      This vulnerability was first observed from the Fomo3D contract [23].
    The vulnerability entails only the attacker's transactions being included in the newly mined blocks
    while others are abandoned by miners for a period of time. This can happen when the attacker offers a higher
    gasPrice to incentivize the miners to select the attacker's transactions. This vulnerability is caused by the greedy
    mining incentive mechanism. At the moment of writing, there is no solution to prevent this vulnerability.
  • Advanced MEV technologies can also be used [4][5] to maximize the possibility that our smart contract is included in the next block, scanning the mempool and verifying what are the fees with the highest gwei/gas to execute the transaction with the highest probability of being included.

Based on these observations, it is possible to design a "DeathStar" smart contract whose execution costs exactly the amount of gas needed to fill the block, so that it "burns" ethers only to compete with the other smart contracts for block inclusion.

Briefly, the transaction is buying the entire space of an ethereum block, and therefore does not remain any available for the execution of other smart contracts.


Reasons for a BlockStuffing attack

A group of attackers could be incentivized for various reasons to burn ethers to jeopardize the network, for example:

  • Being supporters of another competing blockchain protocol.
  • Organizing a short on Ethereum before the attack, congesting the Ethereum network and short covering at lower prices, covering the initial costs of the attack and eventually profiting from it.
  • Cause problems/slow down/ profit from one or more of the various smart contracts running on Ethereum to take advantage of certain conditions (prize draws, online auctions, ICOs, financial transactions on DEX, Defi, etc ... as it already is been done [2])

In general, any person or group with sufficient economical and technical means and with any type of interest in the decline of the Ethereum network and/or the smart contracts running on it , could use this line of attack.

To estimate the cost involved, consider that an ethereum block is mined every approximately 15 seconds. Estimating the average block size of 15,000,000 gas, and a gas cost of 100 gwei, that's about 1.5 ETH per block. Let’s add a 10% fee to be the most competitive, we could then estimate a cost per block of about 1.65 ETH. At this cost of gas, at the current exchange rate of about $ 4,000 for an eth, an attack lasting 60 minutes would cost about 400 ETH, or about $ 1,600,000, a very small figure in relation to the value of the network of hundreds of billions of dollars.

Obviously, this estimate varies according to the current cost of gas in gwei, and the eth/usd exchange rate, both of which are extremely variable.


DeathStar technical description

Using the solidity language, a smart contract is encoded executing a loop burning all the gas
passed by the calling transaction with the GasLimit parameter.

Eventually, you can create various slightly different versions of DeathStar, to make it more difficult to identify them by a possible HardFork or from a filter software added by miners or nodes, but each one of them working according to the same logic as in the examples that I will report here:

Examples Code of DeathStar code:

Code:
pragma solidity ^0.6.0;

// this version just before running out the gas stops,
// leaving a small margin of gas to execute the return instructions without error
pragma solidity ^ 0.6.0;
contract DeathStar_a
   {
   function DeathLoop_a () public payable returns (bool)
      {
      uint left = 0;
 
      while (true)
              {
              left = gasleft ();
 
              // just before finishing the gas stops,
              // leave a small margin of gas to execute the return statements without error
              if (left <1000)
                {
                break;
                }
              }
 
      return (true);
     }

Code:
// this version loops until it reaches the out of gas error.
pragma solidity ^ 0.6.0;
contract DeathStar_b
   {
   function DeathLoop_b () public payable returns (bool)
      {
      while (true)
              {
              }
 
      return (true);
     }
   }
   }


Brief description of the dynamics of the BlockStuffing attack:

1) launch your own geth node: geth --syncmode "light" --mainnet
    It will  instantly synchronize because it downloads the previous blockchain.
    We will be necessarily autonomous and not pass trough proprietary API’s that could ban us during the attack.

2) pre-load a certain number of deathStar smart-contracts on the network,
    each at a different address and with slightly different code (DeathStar_a, DeathStar_b, etc. ), to make it difficult either for mining pools to recognize us or for developer recognise the necessity of a possible hard fork,
   3) Find an adequate number of ETH, based on the duration of the attack and the current gas coast in gwei, and pre-load them on a certain number of source addresses.
   (15,000,000 average block size * (gas cost in gwei + incentive fee (Tip) to be certainly included in hte block)) / 1,000,000,000= cost in ETH for a 15 seconds attack)

4) create a script (python, perl, c, go .... or any language of your choice) that uses RPC calls on geth and does more or less the things summarized here:

Code:
# if DeathLoop_a stops working,
# switch to DeathLoop_b and so on.
CalledDeathStar = Deathloop_a

while (newly mined block)
   {
   reads the current baseFeePerGas and BlockGasLimit.  
   calculates GasBurned = BlockGasLimit-X (where X is used to leave a small space for other transactions as well, to be decided if X> 0)
   calculates the transaction fees: MaxFeePerGas (in gwei) = BaseFeePerGas + Tip  
       (where Tip is the percentage that goes to miners, let's say 20%, to be sure to be included in the next block, eventually use MEV techniques to maximize efficiency)
   create a transaction with gasLimit = GasBurned, MaxFeePerGas, which executes the CalledDeathStar smart contract from a random address selected amongst the origin address list.
       (the origin address also should vary to avoid being easily recognized and blocked )

   # optional
   while (our transaction is not included in a mined block)
     {
     use MEV techniques to check in the mempool the fees of other transactions
     If higher fees transactions have been loaded
            Eventually adjust the fees for our transaction by re-entering a transaction with the same nonce and modified fee.
     }
   }

5) run the script.


Thanks to the guys from the Italian community of bitcointalk.org (filippone, acquafredda, HostFat, jack0m and others) who gave me interesting ideas for the realization of this study.


References:

[1]ETHEREUM: A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER
[2]The Anatomy of a Block Stuffing Attack
[3]A Survey on Ethereum Systems Security: Vulnerabilities, Attacks, and Defenses
[4]How to Fix Ethereum’s MEV Problem and Give Traders the Best Price
[5]Ethereum is a Dark Forest
[6]How Bitcoin and Ethereum solved the Halting Problem differently
[7]Why is Bitcoin not Turing complete?
legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
September 24, 2021, 07:45:17 AM
@gbianchi, scusami il ritardo, ma ultimamente sono molto impegnato.
Ti ho inviato via PM la copia del messaggio tradotto e formattato.
Fammi sapere se vuoi ulteriori modifiche.

ottimo lavoro, grazie.

Io al nuovo articolo messo un titolo un po' piu' "perentorio"

"Una strategia di attacco alla rete ethereum basata sulla tecnica BlockStuffing e lo smart contract DeathStar"

perche' l'altra volta era un'ipotesi, questa volta invece e' una certezza, corredata di parecchia documentazione e riferimenti,
ma ho visto che hai lasciato il vecchio titolo. C'e' un motivo?





No scusami, una leggerezza.

Quote
Una strategia di attacco alla rete ethereum basata sulla tecnica BlockStuffing e lo smart contract DeathStar

tradurrei con:
Quote
An attack strategy on the Ethereum network based on Block Stuffing technique and the Deathstar smart contract.
legendary
Activity: 3318
Merit: 2962
September 24, 2021, 07:31:27 AM
@gbianchi, scusami il ritardo, ma ultimamente sono molto impegnato.
Ti ho inviato via PM la copia del messaggio tradotto e formattato.
Fammi sapere se vuoi ulteriori modifiche.

ottimo lavoro, grazie.

Io al nuovo articolo messo un titolo un po' piu' "perentorio"

"Una strategia di attacco alla rete ethereum basata sulla tecnica BlockStuffing e lo smart contract DeathStar"

perche' l'altra volta era un'ipotesi, questa volta invece e' una certezza, corredata di parecchia documentazione e riferimenti,
ma ho visto che hai lasciato il vecchio titolo. C'e' un motivo?


legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
September 22, 2021, 05:06:47 PM
@gbianchi, scusami il ritardo, ma ultimamente sono molto impegnato.
Ti ho inviato via PM la copia del messaggio tradotto e formattato.
Fammi sapere se vuoi ulteriori modifiche.
legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
September 15, 2021, 05:05:53 PM
sia arbitrum che solana hanno avuto problemi enormi oggi.

client out of memory, network praticamente paralizzate.

Ovviamente non e' successo un bel nulla.

Ovviamente, quello che guida il prezzo delle shitcoin non é il loro utilizzo, la funzione ultima che hanno, ma la narrazione. Quello che is pensa facciano o possano fare. ETH ed i suoi cloni lo dimostrano, dell’effettivo utilizzo di questi token non frega niente a nessuno.

Ma non preoccupiamoci, come dicevo esattamente 8148 post addietro:

<…>
Bitcoin is a huge bet but while I don’ know if in 10 years bitcoin would be worth 1 million or zero (or course I have an idea), I am absolutely sure that in 10 years every present shitcoin (all of them, but bitcoin) will be worth ZERO.
<…>
legendary
Activity: 3318
Merit: 2962
September 14, 2021, 03:12:16 PM
sia arbitrum che solana hanno avuto problemi enormi oggi.

client out of memory, network praticamente paralizzate.

Ovviamente non e' successo un bel nulla.

Io ragazzi comincio ad essere seriamente preoccupato, tutta questa
montagna di letame prima o poi franera'... e non sara' bello essere li' vicino.

Se posso darvi un consiglio... state alla larga dalle shitcoin.



Quote
Arbitrum is a Layer-2 solution for the Ethereum network that makes smart contracts scalable, fast, and private.
Arbitrum is interoperable with Ethereum, the most popular blockchain.
It allows dApp developers to easily run Ethereum-based contracts on a second layer.
Users can easily transfer Ether (ETH), or any other Ethereum-based token between Ethereum and Arbitrum, at lower costs.



https://genesisblockhk.com/what-is-solana/




legendary
Activity: 3845
Merit: 2053
September 14, 2021, 11:17:40 AM
Ormai siamo alle comiche finali: una transazione su Uniswap al modico prezzo di $1032, se siete disposti ad aspettare un po' di più... e questo sarebbe il futuro della DeFi? Huh

legendary
Activity: 3318
Merit: 2962
September 11, 2021, 08:07:46 AM

é, in practice la medesima idea di  gbianchi sul block stuffing. Nota dal 2014: mai sfruttata.


A quei tempi tutte le idee erano molto acerbe. Infatti gli risponde qualche post dopo proprio Buterin
spiegando una sorta di primordiale sistema dei gas.

Molto interessante notare che il meccanismo della spiegazione di Buterin NON E' quello poi
implementato dentro ethereum.

Comunque, resta il fatto che fin dall'inizio era stata individuata questa zona come punto debole,
e a tutti gli effetti non e' mai stata trovata una vera soluzione.

legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
September 10, 2021, 06:14:30 PM
Gavin Andresen descrive esattamente il tuo metodo:

Quote
If CPU usage to verify a transaction is NOT related to the transaction size, then you open yourself up to denial-of-service attacks. Like:

Create an Ethereum transaction with a (huge!) fee that will pay for 60 seconds of CPU execution time.
... but craft it so execution takes 61 seconds (or, heck, make it an infinite loop, maybe you'll tickle a bug in the execution termination code).

Now broadcast it.  It will be rejected for insufficient fee, but only after peers have wasted 60 seconds of CPU time. And if the transaction is rejected, the attacker won't pay the fee.

é, in pratica, la medesima idea di  gbianchi sul block stuffing. Nota dal 2014: mai sfruttata.
legendary
Activity: 3318
Merit: 2962
September 10, 2021, 06:03:00 PM
Ho trovato un ottimo thread che dimostra due cose

la prima e' perche' un bitcointalk ha un valore molto piu' alto rispetto ad una delle tante chat:
bitcointalk e' anche un archivio stracolmo di informazioni utilissime (insieme a tanto spam eh... bisogna aver voglia di cercare)


la seconda e' che... i dev di bitcoin avevano gia' dall'inizio indicato praticamente
tutti i punti deboli di ethereum che ho recentemente messo insieme con un po' di sforzo:

https://bitcointalksearch.org/topic/turing-complete-language-vs-non-turing-complete-ethereum-vs-bitcoin-431513

(concetto un po' da sgrezzare, ma ci aveva visto piu' o meno giusto)
https://bitcointalksearch.org/topic/m.4882293
legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
September 10, 2021, 04:50:55 PM
Stasera durante la sua Cryptoweek, Ametrano ha citato due interessanti articoli riguardanti ETH.
>Ne consiglio la lettura. Sebbene non molto tecnici, vanno nella stessa "direzione" di questo thread.

OP-ED: Ethereum is making the same mistakes as the Bitcoin hard fork attempts
Quote
This article follows a previous piece that began detailing how Ethereum echoes the Bitcoin Blocksize Wars.

Bitcoin Cash, the last serious iteration of the major Bitcoin hard fork attempts, was underway in 2017. Alternative cryptocurrency network Ethereum was also rising for the first time, on the back of initial coin offering (ICO) hysteria.

Although Bitcoin Cash’s market value briefly flippened Ethereum in late 2017, it’s clear today that the network effects around Ethereum are much greater than Bitcoin Cash.

In some ways, Ethereum is the next logical iteration of the Bitcoin hard fork attempts.

After all, many big block supporters are also fans of Ethereum.



BITCOIN VS. ETHEREUM AS SETTLEMENT NETWORKS

Quote
“We need to move NFTs onto the Layer 2 ecosystem to cut fees. However, doing that *right* requires good cross-rollup portability standards, so the ecosystem can avoid getting locked into one particular L2.” - Vitalik Buterin, Creator of Ethereum

Many people are familiar with the recent none-fungible token (NFT) craze that has occurred over recent months, with digital images of rocks and pixelated characters selling for millions of dollars. Bubble, fad, or the start of something much bigger? That, we cannot know, and we aren’t going to discuss the validity of NFTs as an investment (read: speculation) in today’s Daily Dive, but rather we are going to dive into the comparison of Bitcoin versus Ethereum as monetary settlement networks, as Ethereum proponents have attempted to frame ETH as “ultrasound money” increasingly over the course of 2021.

Today, we will examine various metrics comparing the volume and efficiency of settlement on the base layer of the Bitcoin and Ethereum networks.

legendary
Activity: 2380
Merit: 17063
Fully fledged Merit Cycler - Golden Feather 22-23
September 08, 2021, 11:45:59 AM

Ma con segwit + LN io sono certo che per Bitcoin e' il passato.

Per ETH ... e' il futuro


Ragazzi, c'è un motivo se per il quale Bitcoin SEMBRA non progredire mai: tutte le scelte che sono fatte, lo sono per i buon funzionamento della rete.
Invece su ETH si fanno gli upgrade, poi ci si accorge che il prezzo del Gas aumenta, allora si sente parlare di L2 su ETH...

Mettetevelo in testa: è una shitcoin.
Pages:
Jump to: