Per carità non iniziamo a parlare di filosofia!
Premesso che la maggior parte delle applicazioni distribuite(DAPP) sono
basate su Ethereum, vale la pena approfondire la sua architettura. Nel caso si decida di unire gli sforzi per progettare nuovo hardware, sarebbe bene mirare il lavoro su soluzioni per la convalida di blocchi su blockchain sottostanti ad infrastrutture turing-complete, come è il caso della blockchain Ethereum.
La resistenza all' ASIC di Ethereum è derivante da due caratteristiche di quest'ultimo. La prima è la turing-completezza, ossia, la capacità di eseguire qualsiasi tipo di computazione eseguibile da una comune unità di calcolo.
Ethereum White Paper ha scritto:A commonly asked question is "where" contract code is executed, in terms of physical hardware. This has a simple answer: the process of executing contract code is part of the definition of the state transition function, which is part of the block validation algorithm, so if a transaction is added into block B the code execution spawned by that transaction will be executed by all nodes, now and in the future, that download and validate block B.
La seconda caratteristica è che la proof-of-work (PoW) di Ethereum richiede una grande quantità di memoria.
Ethereum White Paper ha scritto:The current intent at Ethereum is to use a mining algorithm where miners are required to fetch random data from the state, compute some randomly selected transactions from the last N blocks in the blockchain, and return the hash of the result. This has two important benefits. First, Ethereum contracts can include any kind of computation, so an Ethereum ASIC would essentially be an ASIC for general computation - ie. a better CPU. Second, mining requires access to the entire blockchain, forcing miners to store the entire blockchain and at least be capable of verifying every transaction.
Quindi un ASIC per Ethereum dovrà avere sicuramente una parte dedicata all'esecuzione di algoritmi generali, ma può avere delle funzionalità speciali dedicate a questo tipo di attività. Per dirla terra terra, si deve pensare ad una cpu con una alu che riesca a gestire operazioni più complesse, come le funzioni di hash, piuttosto che le solite quattro operazioni aritmetiche.
un altro frangente interessante su cui si può ottimizzare è quello delle operazioni più frequenti, è ragionevole pensare che la maggior parte delle operazioni elaborate in una infrastruttura per DAPP sia di tipo finanziario(almeno sin'ora). Questo tipo di operazioni sono un sottoinsieme molto ristretto di tutte le operazioni possibili in un calcolatore. Implementandole direttamente via hardware si potrebbe raggiungere un'efficienza maggiore. Ma naturalmente studi statistici sono da condursi prima di inoltrarsi in questa via.
Narcolex ha scritto:Esiste tutte una serie di altri dispositivi necessari al mining con gpu... schede madri, riser, alimentatori super affidabili.. Potremmo partire ad esempio progettando un alimentatore ATX capace di restare acceso h24 in qualsiasi condizione, oppure non una matherboard, ma un semplice PCB con attacchi PCIex dove poter inserire le gpu etc
Condivido, progettare un chip è un pochino fuori portata, anche se non impossibile. Naturalmente senza alcuna pretesa, si inizia da qualche parte e si vede dove si arriva. Comunque, ideare una scheda madre o un alimentatore sembra un punto di attacco più accessibile. Per quanto riguarda il frangente alimentatori, non saprei proprio, dal momento che le mie conoscenze di elettronica di potenza sono piuttosto base.
Sul lato schede madri c'è senz'altro da lavorare, le soluzioni che si adottano ora sono molto alla Dr. Frankenstein.
Interessante sarebbe anche un sistema di raffreddamento ad olio minerale, a convezione forzata per mezzo di pompe, che se di grandi dimensioni potrebbero rivelarsi più economicamente efficienti dei sistemi di raffreddamento ad aria. Anche in questo caso simulazioni termodinamiche sono da condursi.
Mi piacerebbe che questa conversazione mantenga un carattere tecnico e per quanto possibile oggettivo.
Questa discussione vuole essere centrata sul'hardware necessario ad implementare la soluzione PoW al problema dei generali bizantini. Argomento di questa discussione non sono le criptovalute. Vi lascio con una lettura interessante:
Re: Bitcoin P2P e-cash paper ha scritto:> It is not sufficient that everyone knows X. We also
> need everyone to know that everyone knows X, and that
> everyone knows that everyone knows that everyone knows X
> - which, as in the Byzantine Generals problem, is the
> classic hard problem of distributed data processing.
The proof-of-work chain is a solution to the Byzantine Generals' Problem. I'll
try to rephrase it in that context.
A number of Byzantine Generals each have a computer and want to attack the
King's wi-fi by brute forcing the password, which they've learned is a certain
number of characters in length. Once they stimulate the network to generate a
packet, they must crack the password within a limited time to break in and
erase the logs, otherwise they will be discovered and get in trouble. They
only have enough CPU power to crack it fast enough if a majority of them attack
at the same time.
They don't particularly care when the attack will be, just that they all agree.
It has been decided that anyone who feels like it will announce a time, and
whatever time is heard first will be the official attack time. The problem is
that the network is not instantaneous, and if two generals announce different
attack times at close to the same time, some may hear one first and others hear
the other first.
They use a proof-of-work chain to solve the problem. Once each general
receives whatever attack time he hears first, he sets his computer to solve an
extremely difficult proof-of-work problem that includes the attack time in its
hash. The proof-of-work is so difficult, it's expected to take 10 minutes of
them all working at once before one of them finds a solution. Once one of the
generals finds a proof-of-work, he broadcasts it to the network, and everyone
changes their current proof-of-work computation to include that proof-of-work
in the hash they're working on. If anyone was working on a different attack
time, they switch to this one, because its proof-of-work chain is now longer.
After two hours, one attack time should be hashed by a chain of 12
proofs-of-work. Every general, just by verifying the difficulty of the
proof-of-work chain, can estimate how much parallel CPU power per hour was
expended on it and see that it must have required the majority of the computers
to produce that much proof-of-work in the allotted time. They had to all have
seen it because the proof-of-work is proof that they worked on it. If the CPU
power exhibited by the proof-of-work chain is sufficient to crack the password,
they can safely attack at the agreed time.
The proof-of-work chain is how all the synchronisation, distributed database
and global view problems you've asked about are solved.
---------------------------------------------------------------------
The Cryptography Mailing List