Starten på slutten. Hindenburg går opp i flammer over New York. Kilde: Wikipedia
The DAO fikk voldsom pressedekning da den kun på et par uker samlet inn den enorme verdien $200M (1,6 milliarder kr). Fenomenet kan likevel ha gått deg hus forbi så her er en
Kjapp gjennomgang
- Det finnes en ny type database som kalles blockchain. Databasen er desentralisert, distribuert og peer-to-peer.
- Den første anvendelsen av blockchain var Bitcoin i 2009
- Bitcoin gjør det mulig å overføre verdier direkte mellom personer uten en tredjepart, som en bank
- De siste årene har man begynt å undersøke “blockchain 2.0” — å gjøre blockchain ansvarlig for mer enn kun enkle overføringer, men istedet hele kontrakter. Såkalt smarte kontrakter.
- En smartkontrakt gjør det mulig å programmere en avtale og la blockchainen håndheve avtalen.
- DAO står for Decentralized Autonomous Organization, altså en selvstyrende organisasjon
Dette var det ultimate beviset på hva blockchain gjorde mulig.
Nok innledning. The DAO er utviklet som en smartkontrakt. Kontrakten fungerte som en selvstyrende organisasjon. Hele verden puttet penger inn i kontrakten og fikk stemmesedler tilbake. Organisasjonens formålsparagraf og vedtekter ble altså programmert inn og overholdes av blockchain. The DAOs formål: crowdfunde blockchain-prosjekter og (forhåpentligvis) tjene penger på resultatene. Alle som puttet penger inn kunne være med på å stemme på hva The DAOs skulle prioritere.
Strukturen på The DAO: Medlemmene stemmer på hvilke Contractors de vil ha til å lage hvilke produkter. Bestillingen kommer med en slump penger for å kunne gjennomføre forespørselen. The DAO tjener så igjen penger på det utviklede produktet. Kilde: daohub.org
Folk investerte hele 1,6 milliarder kroner i smartkontrakten The DAO. Dette er penger som ble låst inni en smartkontrakt på blockchain. Pengene ble ikke eid av noe enkeltmenneske og kunne heller ikke styres av noe annet enn et flertall. At personer fra hele verden, som ikke kjente hverandre, la inn så store verdier i en organisasjon for samarbeid viste en voldsom tillit til teknologien og var det ultimate beviset på hva blockchain gjorde mulig.
Så skjedde det som ikke måtte skje
Plutselig en dag begynte pengene å forsvinne ut av The DAO. $60M ble lekket ut av smartkontrakten i en voldsom fart. Noen av de mest prominente blockchain-utviklerne foreslo å fikse bugen før verdiene i realiteten var flyttet, og på den måten unngå at $60M ble stjålet.
Ethereums første store applikasjon gjorde et solid krasj på størrelse med Hindenburg-ulykken og dro med seg Ethereum i dragsuget.
Dette skapte furore hos rundt halvparten av alle blockchain-interesserte fordi hele poenget med blockchain var at det ikke skulle kunne stenges eller overstyres: “Koden er kontrakten!”. Ideen var at alt som var mulig å gjøre med kontrakten var lov til å gjøre.
To fix or not to fix
Se for deg en motorvei hvor alle bilene kjører i samme retning. Plutselig begynner rundt halvparten å ta av og kjøre ut på en ny motorvei. Antall biler halveres og det er uenighet om hva som er veien framover.
Kilde: www.cryptocoinsnews.com
Det ble avholdt en avstemning og det ble besluttet å rette opp feilen. Håpet var at alle skulle bli med å ta til høyre ut på den nye motorveien hvor alt var fikset, men dette er jo desentralisert peer-to-peer teknologi, så alle gjør i større grad som de vil.
Mesteparten tok til høyre og gjennomførte bugfiksen, men mange fortsatte også å kjøre rett frem. Det vi har endt opp med nå er to forskjellige blockchains: henholdsvis med navnene Ethereum og Ethereum Classic. Dette åpner for at en transaksjon i den ene blockchainen også kan være gyldig i den andre, som åpner for nye sikkerhetsproblemer.
Verdien av 1 Ether (som en Bitcoin, bare på Ethereum-blockchainen) er også forvirrende:
- 1 post-fork ETH (Ethereum) er kun 1 ETH. Perfekt
- 1 post-fork ETC (Ethereum Classic) eksisterer ikke
- 1 pre-fork ETH er både 1 ETH og 1 ETC nå, som vil si at verdien av 1 ETH (fra før forken), er verd både verdien av 1 ether og verdien av 1 ETC
Ethereums første store applikasjon gjorde et solid krasj på størrelse med Hindenburg-ulykken og dro med seg Ethereum i dragsuget.
Hva kan man lære av dette
Skal du programmere smartkontrakter er det flere tips for hvordan man kan gjøre dette sikrere. Her er en liste av de viktigste tipsene:
- Ikke bruk
send()
til å overføre verdier. Gjør det istedet slik:
if (!msg.sender.call.value(amount)())
throw;
- Gjør den faktiske pengoverføringen til slutt i kontrakten, slik:
function withdraw(string key) {
if (msg.sender == records[key].owner) { // Only owner withdraw
uint earnings = records[key].vault;
records[key].vault = 0; // Reset vault BEFORE sending!
if (!msg.sender.call.value(earnings)()) // Sending
throw;
}
}
Lær formell verifisering
Her er en video som forteller litt om det. Teknologien er ikke helt klar, så her er det bare å følge med på utviklingen.Condition-oriented programming er en måte å programmere koden som gjør at man i større grad unngår menneskelige feil i koden.
Det blir spennende å følge Ethereum-utviklingen videre. For videre lesning kan jeg anbefale R3s oppsummerings-post The Weekend Read.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @ramvi! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit