Ethereum Whitepaper | planetcryptos.org
top of page
Ethereum Whitepaper

Ang panimulang papel na ito ay orihinal na na-publish noong 2013 ni Vitalik Buterin, ang nagtatag ng Ethereum , bago ilunsad ang proyekto noong 2015. Mahalagang tandaan na ang Ethereum, tulad ng maraming mga proyekto sa software na bukas-pinagmulan ng komunidad na hinimok ng komunidad, ay umunlad mula pa noong unang pagsisimula.

Habang maraming taong gulang, pinapanatili namin ang papel na ito dahil patuloy itong nagsisilbing isang kapaki-pakinabang na sanggunian at tumpak na representasyon ng Ethereum at ang paningin nito. Upang malaman ang tungkol sa pinakabagong mga pagpapaunlad ng Ethereum, at kung paano ginawa ang mga pagbabago sa protocol, inirerekumenda namin ang patnubay na ito .

Isang Susunod na Pagbuo ng Smart Kontrata at Desentralisadong Platform ng Application

Ang pag-unlad ng Satoshi Nakamoto ng Bitcoin noong 2009 ay madalas na pinarangalan bilang isang radikal na pag-unlad sa pera at pera, ang pagiging unang halimbawa ng isang digital na asset na sabay na walang suporta o intrinsic na halaga at walang sentralisadong nagbigay o may kontrol. Gayunpaman, isa pa - mas masasabing mas mahalaga - bahagi ng eksperimento sa Bitcoin ay ang napapailalim na teknolohiya ng blockchain bilang isang tool ng pamamahagi ng pinagkasunduan, at ang pansin ay mabilis na nagsisimulang lumipat sa ibang aspeto ng Bitcoin. Karaniwang nabanggit na mga kahaliling application ng teknolohiyang blockchain ay kasama ang paggamit ng mga digital na asset na on-blockchain upang kumatawan sa mga pasadyang pera at mga instrumento sa pananalapi (mga may kulay na barya ), ang pagmamay-ari ng isang pinagbabatayan na pisikal na aparato ( matalinong pag-aari ), mga hindi nakaka-fungal na assets tulad ng mga domain name (Namecoin) pati na rin ang mas kumplikadong mga aplikasyon na kinasasangkutan ng pagkakaroon ng mga digital na assets na direktang kinokontrol ng isang piraso ng code na nagpapatupad ng di-makatwirang mga panuntunan ( matalinong mga kontrata ) o kahit na mga desentralisadong autonomous na samahan (DAO) na nakabatay sa blockchain. Ang balak na ibigay ng Ethereum ay isang blockchain na may built-in na ganap na wika ng kumpletong Turing na magagamit na maaaring magamit upang lumikha ng "mga kontrata" na maaaring magamit upang ma-encode ang di-makatwirang mga pagpapaandar ng paglipat ng estado, na pinapayagan ang mga gumagamit na lumikha ng anuman sa mga sistemang inilarawan sa itaas , pati na rin ang marami pa na hindi pa namin naisip, sa pamamagitan lamang ng pagsulat ng lohika sa ilang linya ng code.

Nyawang

Panimula sa Bitcoin at Mga Umiiral na Konsepto

Nyawang

Kasaysayan

Nyawang

Ang konsepto ng desentralisadong digital na pera, pati na rin mga kahaliling aplikasyon tulad ng mga pagrerehistro sa pag-aari, ay nasa mga dekada na. Ang mga hindi nagpapakilalang mga protokol ng e-cash noong 1980s at 1990s, na karamihan ay nakasalalay sa isang cryptographic primitive na kilala bilang Chaumian blinding, ay nagbigay ng pera na may mataas na antas ng privacy, ngunit ang mga protokol ay higit na nabigo upang makakuha ng traksyon dahil sa kanilang pag-asa sa isang sentralisadong tagapamagitan. . Noong 1998, ang b-pera ni Wei Dai ay naging unang panukala upang ipakilala ang ideya ng paglikha ng pera sa pamamagitan ng paglutas ng mga puzzle sa computational pati na rin ang desentralisadong pinagkasunduan, ngunit ang panukala ay kulang sa mga detalye kung paano talaga maipatupad ang desentralisadong pinagkasunduan. Noong 2005, ipinakilala ni Hal Finney ang isang konsepto ng muling magagamit na mga patunay ng trabaho , isang sistema na gumagamit ng mga ideya mula sa b-money kasama ang mga mahirap na pagkalkula ng Hashcash na mga palaisipan ni Adam Back upang lumikha ng isang konsepto para sa isang cryptocurrency, ngunit muling nagkulang sa ideyal sa pamamagitan ng pag-asa sa pinagkakatiwalaang computing bilang isang backend. Noong 2009, ang isang desentralisadong pera ay para sa kauna-unahang pagkakataon na ipinatupad sa pagsasanay ng Satoshi Nakamoto, na pinagsasama ang mga itinatag na primitibo para sa pamamahala ng pagmamay-ari sa pamamagitan ng pampublikong key cryptography na may isang pinagkasunduang algorithm para sa pagsubaybay sa kung sino ang nagmamay-ari ng mga barya, na kilala bilang "patunay ng trabaho".

Ang mekanismo sa likod ng patunay ng trabaho ay isang tagumpay sa kalawakan sapagkat sabay-sabay nitong nalutas ang dalawang problema. Una, nagbigay ito ng isang simple at katamtamang mabisang algorithm ng pinagkasunduan, pinapayagan ang mga node sa network na sama-sama na sumang-ayon sa isang hanay ng mga canonical na pag-update sa estado ng ledger ng Bitcoin. Pangalawa, nagbigay ito ng isang mekanismo para sa pagpapahintulot sa libreng pagpasok sa proseso ng pinagkasunduan, paglutas ng problemang pampulitika ng pagpapasya kung sino ang makakaimpluwensya sa pinagkasunduan, habang sabay na pinipigilan ang mga pag-atake ng sybil. Ginagawa ito sa pamamagitan ng pagpapalit ng isang pormal na hadlang sa paglahok, tulad ng kinakailangan na mairehistro bilang isang natatanging nilalang sa isang partikular na listahan, na may hadlang sa ekonomiya - ang bigat ng isang solong node sa proseso ng pagboto ng pinagkasunduan ay direktang proporsyonal sa kapangyarihan ng computing dala ng node. Mula noon, iminungkahi ang isang alternatibong diskarte na tinawag na patunay ng taya, kinakalkula ang bigat ng isang node bilang proporsyonal sa mga hawak nito sa pera at hindi mga mapagkukunan ng computational; ang talakayan tungkol sa kamag-anak na merito ng dalawang diskarte ay lampas sa saklaw ng papel na ito ngunit dapat pansinin na ang parehong mga diskarte ay maaaring magamit upang magsilbing gulugod ng isang cryptocurrency.

Narito ang isang post sa blog mula kay Vitalik Buterin, ang nagtatag ng Ethereum, sa pre-history ng Ethereum . Narito ang isa pang post sa blog na may higit na kasaysayan.

Nyawang

Bitcoin Bilang Isang Sistema ng Pagbabagong Estado

Mula sa isang teknikal na pananaw, ang ledger ng isang cryptocurrency tulad ng Bitcoin ay maaaring isipin bilang isang sistema ng paglipat ng estado, kung saan mayroong isang "estado" na binubuo ng katayuan ng pagmamay-ari ng lahat ng mga mayroon nang bitcoins at isang "function ng paglipat ng estado" na tumatagal ng isang estado at isang transaksyon at naglalabas ng isang bagong estado na kung saan ay ang resulta. Sa isang karaniwang sistema ng pagbabangko, halimbawa, ang estado ay isang balanse, ang isang transaksyon ay isang kahilingan na ilipat ang $ X mula sa A hanggang B, at ang pagpapaandar ng paglipat ng estado ay binabawasan ang halaga sa account ng A ng $ X at pinapataas ang halaga sa B's account sa pamamagitan ng $ X. Kung ang account ng A ay may mas mababa sa $ X sa una, ang pagpapaandar ng paglipat ng estado ay nagbabalik ng isang error. Samakatuwid, maaaring pormal na tukuyin ang isa:

APPLY (S, TX) -> S 'o ERROR

Sa sistemang pagbabangko na tinukoy sa itaas:

MAG-APPLY ({Alice: $ 50, Bob: $ 50}, "magpadala ng $ 20 mula kay Alice hanggang Bob") = {Alice: $ 30, Bob: $ 70}

Ngunit:

MAG-APPLY ({Alice: $ 50, Bob: $ 50}, "magpadala ng $ 70 mula kay Alice hanggang Bob") = ERROR

Ang "estado" sa Bitcoin ay ang koleksyon ng lahat ng mga barya (ayon sa teknikal, "hindi ginagamit na mga output ng transaksyon" o UTXO) na na-minahan at hindi pa nagastos, na ang bawat UTXO ay mayroong isang denominasyon at isang may-ari (tinukoy ng isang 20-byte address na ay mahalagang isang cryptographic public key fn. 1 ). Naglalaman ang isang transaksyon ng isa o higit pang mga pag-input, kasama ang bawat input na naglalaman ng isang sanggunian sa isang mayroon nang UTXO at isang lagda ng cryptographic na ginawa ng pribadong key na nauugnay sa address ng may-ari, at isa o higit pang mga output, na may bawat output na naglalaman ng isang bagong UTXO upang maidagdag sa ang estado.

Ang pag-andar ng paglipat ng estado na APPLY (S, TX) -> S 'ay maaaring tukuyin nang tinukoy tulad ng sumusunod:

  1. Para sa bawat input sa TX:

    • Kung ang naka-refer na UTXO ay wala sa S, bumalik ng isang error.

    • Kung ang ibinigay na pirma ay hindi tugma sa may-ari ng UTXO, bumalik ng isang error.

  2. Kung ang kabuuan ng mga denominasyon ng lahat ng input na UTXO ay mas mababa kaysa sa kabuuan ng mga denominasyon ng lahat ng output UTXO, bumalik ng isang error.

  3. Ibalik ang S 'sa lahat ng input na UTXO na tinanggal at naidagdag ang lahat ng output UTXO.

Pinipigilan ng unang kalahati ng unang hakbang ang mga nagpadala ng transaksyon mula sa paggastos ng mga barya na wala, ang pangalawang kalahati ng unang hakbang ay pumipigil sa mga nagpadala ng transaksyon na gumastos ng mga barya ng ibang tao, at ang pangalawang hakbang ay nagpapatupad ng pangangalaga ng halaga. Upang magamit ito para sa pagbabayad, ang protokol ay ang mga sumusunod. Ipagpalagay na nais ni Alice na magpadala ng 11.7 BTC kay Bob. Una, hahanapin ni Alice ang isang hanay ng magagamit na UTXO na pagmamay-ari niya na umaabot sa hindi bababa sa 11.7 BTC. Makatotohanang, hindi makakakuha ng eksaktong 11.7 BTC si Alice; sabihin na ang pinakamaliit na makukuha niya ay 6 + 4 + 2 = 12. Lumilikha siya pagkatapos ng isang transaksyon kasama ang tatlong mga input at dalawang output. Ang unang output ay 11.7 BTC na may address ni Bob bilang may-ari nito, at ang pangalawang output ay ang natitirang 0.3 BTC "pagbabago", na ang may-ari ay si Alice mismo.

Nyawang

Nyawang

crainuslogo.png

Pagmimina

Kung may access kami sa isang mapagkakatiwalaang sentralisadong serbisyo, ang sistemang ito ay hindi gaanong ipapatupad; maaari itong naka-code nang eksakto tulad ng inilarawan, gamit ang isang hard drive ng isang sentralisadong server upang subaybayan ang estado. Gayunpaman, sa Bitcoin sinusubukan naming bumuo ng isang desentralisadong sistema ng pera, kaya kakailanganin naming pagsamahin ang sistema ng paglipat ng estado sa isang sistemang pinagkasunduan upang matiyak na ang lahat ay sumasang-ayon sa pagkakasunud-sunod ng mga transaksyon. Ang desentralisadong proseso ng pinagkasunduan ng Bitcoin ay nangangailangan ng mga node sa network upang patuloy na subukang makagawa ng mga pakete ng mga transaksyon na tinatawag na "blocks". Ang network ay inilaan upang makabuo ng halos isang bloke bawat sampung minuto, sa bawat bloke na naglalaman ng isang timestamp, isang nonce, isang sanggunian sa (ie. Hash ng) ang nakaraang bloke at isang listahan ng lahat ng mga transaksyon na naganap mula noong nakaraang harangan Sa paglipas ng panahon, lumilikha ito ng isang paulit-ulit, patuloy na lumalaking, "blockchain" na patuloy na ina-update upang kumatawan sa pinakabagong estado ng ledger ng Bitcoin.

Ang algorithm para sa pag-check kung ang isang bloke ay wasto, na ipinahayag sa tularan na ito, ay ang mga sumusunod:

  1. Suriin kung ang nakaraang pag-block na isinangguni ng pag-block ay mayroon at wasto.

  2. Suriin na ang timestamp ng bloke ay mas malaki kaysa sa nakaraang block fn. 2 at mas mababa sa 2 oras sa hinaharap

  3. Suriin na ang patunay ng trabaho sa bloke ay wasto.

  4. Hayaan ang S [0] na maging estado sa pagtatapos ng nakaraang bloke.

  5. Ipagpalagay na ang TX ay listahan ng transaksyon ng block na may n mga transaksyon. Para sa lahat ng nasa 0 ... n-1, itakda ang S [i + 1] = APPLY (S [i], TX [i]) Kung may anumang aplikasyon na nagbabalik ng isang error, lumabas at bumalik na hindi totoo.

  6. Ibalik ang totoo, at irehistro ang S [n] bilang estado sa pagtatapos ng bloke na ito.

Mahalaga, ang bawat transaksyon sa bloke ay dapat magbigay ng isang wastong paglipat ng estado mula sa kung ano ang kanonikal na estado bago ang transaksyon ay naisakatuparan sa ilang bagong estado. Tandaan na ang estado ay hindi naka-encode sa bloke sa anumang paraan; ito ay pulos isang abstraction na maaalala ng nagpapatunay na node at maaari lamang (ligtas) na makalkula para sa anumang bloke sa pamamagitan ng pagsisimula mula sa estado ng genesis at sunud-sunod na paglalapat ng bawat transaksyon sa bawat bloke. Bilang karagdagan, tandaan na ang pagkakasunud-sunod kung saan ang minero ay nagsasama ng mga transaksyon sa mga bagay na bloke; kung mayroong dalawang mga transaksyon A at B sa isang bloke tulad ng ang B ay gumastos ng isang UTXO nilikha ng A, kung gayon ang bloke ay magiging wasto kung ang A ay dumating bago ang B ngunit hindi sa kabilang banda.

Ang isang kundisyon ng bisa na naroroon sa listahan sa itaas na hindi matatagpuan sa iba pang mga system ay ang kinakailangan para sa "patunay ng trabaho". Ang tumpak na kundisyon ay ang dobleng-SHA256 hash ng bawat bloke, na itinuturing bilang isang 256-bit na numero, ay dapat mas mababa sa isang target na binago ang pabagu-bago, na sa oras ng pagsulat na ito ay humigit-kumulang 2187. Ang layunin nito ay upang harangan ang paglikha ng computationally "mahirap", sa gayon pinipigilan ang sybil attackers mula sa muling paggawa ng buong blockchain sa kanilang pabor. Dahil ang SHA256 ay dinisenyo upang maging isang ganap na hindi mahuhulaan na pagpapaandar na pseudorandom, ang tanging paraan upang lumikha ng isang wastong bloke ay simpleng pagsubok at error, paulit-ulit na nagpapalaki ng hindi pagkilala at nakikita kung ang bagong tugma sa hash.

Sa kasalukuyang target na ~ 2187, ang network ay dapat gumawa ng isang average ng ~ 269 pagsubok bago ang isang wastong bloke ay natagpuan; sa pangkalahatan, ang target ay muling binago ng network sa bawat 2016 na mga bloke upang sa average na isang bagong bloke ay ginawa ng ilang node sa network tuwing sampung minuto. Upang mabayaran ang mga minero para sa gawaing computational na ito, ang minero ng bawat bloke ay may karapatang magsama ng isang transaksyon na nagbibigay sa kanilang sarili ng 12.5 BTC na wala saanman. Bilang karagdagan, kung ang anumang transaksyon ay may mas mataas na kabuuang denominasyon sa mga input nito kaysa sa mga output nito, ang pagkakaiba ay napupunta din sa minero bilang isang "bayarin sa transaksyon". Hindi sinasadya, ito rin ang tanging mekanismo kung saan inilabas ang BTC; ang estado ng genesis ay naglalaman ng walang mga barya sa lahat.

Upang mas maunawaan ang layunin ng pagmimina, suriin natin kung ano ang mangyayari sa kaganapan ng isang nakakahamak na umaatake. Dahil ang pinagbabatayan ng cryptography ng Bitcoin ay kilalang ligtas, mai-target ng magsasalakay ang isang bahagi ng sistemang Bitcoin na hindi protektado ng direktang cryptography: ang pagkakasunud-sunod ng mga transaksyon. Ang diskarte ng umaatake ay simple:

  1. Magpadala ng 100 BTC sa isang merchant kapalit ng ilang produkto (mas mabuti ang isang mabilis na paghahatid ng digital na mahusay)

  2. Hintayin ang paghahatid ng produkto

  3. Gumawa ng isa pang transaksyon na nagpapadala ng parehong 100 BTC sa kanyang sarili

  4. Subukang kumbinsihin ang network na ang kanyang transaksyon sa kanyang sarili ay ang nauna.

Kapag ang hakbang (1) ay naganap, pagkatapos ng ilang minuto ang ilang mga minero ay isasama ang transaksyon sa isang bloke, sabihin ang bilang ng bloke 270. Pagkatapos ng halos isang oras, limang iba pang mga bloke ang idaragdag sa kadena pagkatapos ng bloke na iyon, sa bawat isa sa ang mga bloke na iyon nang hindi direktang pagturo sa transaksyon at sa gayon ay "kinumpirma" ito. Sa puntong ito, tatanggapin ng merchant ang pagbabayad bilang finalized at ihahatid ang produkto; dahil ipinapalagay namin na ito ay isang digital na mahusay, ang paghahatid ay instant. Ngayon, ang umaatake ay lumilikha ng isa pang transaksyon na ipinapadala ang 100 BTC sa kanyang sarili. Kung palabasin lamang ito ng mananalakay sa ligaw, hindi mapoproseso ang transaksyon; tatangkaing patakbuhin ng mga minero ang APPLY (S, TX) at mapansin na ang TX ay kumokonsumo ng isang UTXO na wala na sa estado. Kaya sa halip, ang umaatake ay lumilikha ng isang "tinidor" ng blockchain, nagsisimula sa pamamagitan ng pagmimina ng isa pang bersyon ng block 270 na tumuturo sa parehong block 269 bilang isang magulang ngunit may bagong transaksyon kapalit ng luma. Dahil iba ang data ng pag-block, nangangailangan ito ng muling paggawa ng patunay ng trabaho. Bukod dito, ang bagong bersyon ng magsasalakay ng block 270 ay may iba't ibang hash, kaya't ang orihinal na mga bloke na 271 hanggang 275 ay hindi "tumuturo" dito; kaya, ang orihinal na kadena at ang bagong kadena ng umaatake ay ganap na magkahiwalay. Ang panuntunan ay sa isang tinidor ang pinakamahabang blockchain ay tinanggap na katotohanan, at sa gayon ang mga lehitimong minero ay gagana sa 275 chain habang nag-iisa ang umaatake ay nagtatrabaho sa 270 chain. Upang maipahaba ng umaatake ang kanyang blockchain, kakailanganin niyang magkaroon ng higit na lakas sa computational kaysa sa natitirang network na pinagsama upang makahabol (samakatuwid, "51% na atake").

Nyawang

Mga Puno ng Merkle

Kaliwa: sapat na upang magpakita lamang ng isang maliit na bilang ng mga node sa isang puno ng Merkle upang magbigay ng isang patunay ng bisa ng isang sangay.

Kanan: ang anumang pagtatangka na baguhin ang anumang bahagi ng puno ng Merkle ay hahantong sa isang hindi pagkakapare-pareho sa isang lugar sa kadena.

Ang isang mahalagang tampok sa kakayahang sumukat ng Bitcoin ay ang block ay naka-imbak sa isang multi-level na istraktura ng data. Ang "hash" ng isang bloke ay talagang ang hash ng header ng bloke, isang halos 200-byte na piraso ng data na naglalaman ng timestamp, nonce, nakaraang block hash at ang root hash ng isang istraktura ng data na tinatawag na Merkle tree na nagtatago ng lahat ng mga transaksyon sa bloke. Ang Merkle tree ay isang uri ng puno ng binary, na binubuo ng isang hanay ng mga node na may maraming bilang ng mga node ng dahon sa ilalim ng puno na naglalaman ng pinagbabatayan ng data, isang hanay ng mga intermediate node kung saan ang bawat node ay ang hash ng dalawang anak nito, at sa wakas isang solong node ng ugat, nabuo din mula sa hash ng dalawang anak nito, na kumakatawan sa "tuktok" ng puno. Ang layunin ng puno ng Merkle ay payagan ang data sa isang bloke upang maihatid sa piraso: ang isang node ay maaaring mag-download lamang ng header ng isang bloke mula sa isang mapagkukunan, ang maliit na bahagi ng puno na nauugnay sa kanila mula sa isa pang mapagkukunan, at sigurado pa rin na ang lahat ng data ay tama. Ang dahilan kung bakit ito gumagana ay ang pag-hash up ng paitaas: kung ang isang nakakahamak na gumagamit ay nagtatangkang magpalit ng isang pekeng transaksyon sa ilalim ng isang puno ng Merkle, ang pagbabagong ito ay magdudulot ng pagbabago sa node sa itaas, at pagkatapos ay isang pagbabago sa node sa itaas na , sa wakas ay binabago ang ugat ng puno at samakatuwid ay ang hash ng bloke, na sanhi ng protokol na iparehistro ito bilang isang ganap na magkakaibang bloke (halos tiyak na may isang hindi wastong patunay ng trabaho).

Ang Merkle tree protocol ay masasabing mahalaga sa pangmatagalang pagpapanatili. Ang isang "buong node" sa Bitcoin network, isa na nag-iimbak at pinoproseso ang kabuuan ng bawat bloke, ay tumatagal ng hanggang 15 GB ng disk space sa Bitcoin network noong Abril 2014, at lumalaki ng higit sa isang gigabyte bawat buwan. Sa kasalukuyan, ito ay mabubuhay para sa ilang mga desktop computer at hindi mga telepono, at sa paglaon sa hinaharap ang mga negosyo at libangan lamang ang maaaring lumahok. Ang isang protokol na kilala bilang "pinasimple na pag-verify sa pagbabayad" (SPV) ay nagbibigay-daan para sa isa pang klase ng mga node na magkaroon, na tinatawag na "light node", na nag-download ng mga header ng block, i-verify ang patunay ng trabaho sa mga block header, at pagkatapos ay i-download lamang ang "mga sanga "naiugnay sa mga transaksyong nauugnay sa kanila. Pinapayagan nito ang mga light node na matukoy sa isang malakas na garantiya ng seguridad kung ano ang katayuan ng anumang transaksyon sa Bitcoin, at ang kanilang kasalukuyang balanse, habang nagda-download lamang ng napakaliit na bahagi ng buong blockchain.

Mga kahaliling Application ng Blockchain

Ang ideya ng pagkuha ng pinagbabatayan ideya ng blockchain at ilapat ito sa iba pang mga konsepto ay mayroon ding mahabang kasaysayan. Noong 1998, lumabas si Nick Szabo na may konsepto ng mga ligtas na pamagat ng pag-aari na may awtoridad ng may-ari , isang dokumento na naglalarawan kung paano papayagan ng isang "bagong pagsulong sa replica na teknolohiya ng database" para sa isang sistemang nakabatay sa blockchain para sa pag-iimbak ng isang pagpapatala kung sino ang nagmamay-ari ng anong lupa, lumilikha ng isang detalyadong balangkas kasama ang mga konsepto tulad ng homesteading, salungat na pagmamay-ari at buwis sa lupa ng Georgia. Gayunpaman, sa kasamaang palad ay walang mabisang replicated database system na magagamit sa oras, at sa gayon ang protokol ay hindi naipatupad sa pagsasanay. Gayunpaman, pagkatapos ng 2009, sa sandaling ang disentralisadong pinagkasunduan ng Bitcoin ay binuo ng isang bilang ng mga kahaliling aplikasyon na mabilis na nagsimulang lumitaw.

  • Namecoin - nilikha noong 2010, ang Namecoin ay pinakamahusay na inilarawan bilang isang desentralisadong database ng pagpaparehistro ng pangalan. Sa mga desentralisadong protokol tulad ng Tor, Bitcoin at BitMessage, kailangang magkaroon ng ilang paraan ng pagkilala ng mga account upang ang ibang mga tao ay maaaring makipag-ugnay sa kanila, ngunit sa lahat ng mga umiiral na solusyon ang nag-iisang uri ng makikilalang magagamit ay isang pseudorandom hash tulad ng 1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWy. Sa isip, nais ng isang magkaroon ng isang account na may isang pangalan tulad ng "george". Gayunpaman, ang problema ay kung ang isang tao ay maaaring lumikha ng isang account na pinangalanang "george" kung gayon ang ibang tao ay maaaring gumamit ng parehong proseso upang irehistro ang "george" para sa kanilang sarili din at gayahin sila. Ang tanging solusyon ay isang unang-sa-file na paradaym, kung saan ang unang nagparehistro ay nagtagumpay at ang pangalawang nabigo - isang problema na perpektong angkop para sa Bitcoin consensus protocol. Ang Namecoin ay ang pinakaluma, at pinakamatagumpay, na pagpapatupad ng isang sistema ng pagpaparehistro ng pangalan gamit ang gayong ideya.

  • Ang mga may kulay na barya - ang layunin ng mga may kulay na barya ay upang maglingkod bilang isang protokol upang payagan ang mga tao na lumikha ng kanilang sariling mga digital na pera - o, sa mahalagang walang kabuluhang kaso ng isang pera na may isang yunit, mga digital na token, sa Bitcoin blockchain. Sa may kulay na mga coin protocol, isang "naglalabas" ng isang bagong pera sa pamamagitan ng paglaan sa publiko ng isang kulay sa isang tukoy na Bitcoin UTXO, at recursively na tinutukoy ng protocol ang kulay ng iba pang UTXO na kapareho ng kulay ng mga input na ginugol ng transaksyong ginugol ng mga ito. (ang ilang mga espesyal na panuntunan ay nalalapat sa kaso ng mga mixed-color input). Pinapayagan nito ang mga gumagamit na panatilihin ang mga pitaka na naglalaman lamang ng UTXO ng isang tukoy na kulay at ipadala ang mga ito sa paligid tulad ng mga regular na bitcoin, pag-backtrack sa pamamagitan ng blockchain upang matukoy ang kulay ng anumang UTXO na natanggap nila.

  • Metacoins - ang ideya sa likod ng isang metacoin ay upang magkaroon ng isang protokol na nakatira sa tuktok ng Bitcoin, gamit ang mga transaksyon sa Bitcoin upang maiimbak ang mga transaksyon sa metacoin ngunit pagkakaroon ng ibang pag-andar ng paglipat ng estado, APPLY '. Dahil ang metacoin protocol ay hindi mapipigilan ang hindi wastong mga transaksyong metacoin mula sa paglitaw sa Bitcoin blockchain, idinagdag ang isang patakaran na kung ang APPLY '(S, TX) ay nagbabalik ng isang error, ang mga default na protocol ay mag-APPLY' (S, TX) = S. Nagbibigay ito ng madaling mekanismo para sa paglikha ng isang di-makatwirang cryptocurrency protocol, potensyal na may mga advanced na tampok na hindi maipapatupad sa loob ng Bitcoin mismo, ngunit may napakababang gastos sa pag-unlad dahil ang mga kumplikado ng pagmimina at networking ay pinangasiwaan ng Bitcoin protocol. Ginamit ang mga Metacoins upang magpatupad ng ilang mga klase ng mga kontrata sa pananalapi, pagpaparehistro ng pangalan at desentralisadong palitan.

Kaya, sa pangkalahatan, mayroong dalawang mga diskarte patungo sa pagbuo ng isang consensus protocol: pagbuo ng isang independiyenteng network, at pagbuo ng isang protocol sa tuktok ng Bitcoin. Ang dating diskarte, habang makatuwirang matagumpay sa kaso ng mga aplikasyon tulad ng Namecoin, ay mahirap ipatupad; ang bawat indibidwal na pagpapatupad ay kailangang mag-bootstrap ng isang independiyenteng blockchain, pati na rin ang pagbuo at pagsubok ng lahat ng kinakailangang paglipat ng estado at networking code. Bilang karagdagan, hinuhulaan namin na ang hanay ng mga aplikasyon para sa desentralisadong teknolohiyang pinagkasunduan ay susundan sa isang pamamahagi ng batas sa kapangyarihan kung saan ang karamihan sa mga aplikasyon ay magiging napakaliit upang mag-garantiya ng kanilang sariling blockchain, at tandaan namin na mayroong maraming mga klase ng desentralisadong mga aplikasyon, partikular na desentralisadong autonomous mga samahan, na kailangang makipag-ugnay sa bawat isa.

Ang diskarte na batay sa Bitcoin, sa kabilang banda, ay may kamalian na hindi nito minana ang pinasimple na mga tampok sa pag-verify ng pagbabayad ng Bitcoin. Gumagana ang SPV para sa Bitcoin dahil maaari itong gumamit ng lalim ng blockchain bilang isang proxy para sa bisa; sa ilang mga punto, sa sandaling ang mga ninuno ng isang transaksyon ay bumalik sa malayo, ligtas na sabihin na sila ay lehitimong bahagi ng estado. Ang mga meta-protocol na nakabatay sa Blockchain, sa kabilang banda, ay hindi maaaring pilitin ang blockchain na huwag isama ang mga transaksyon na hindi wasto sa loob ng konteksto ng kanilang sariling mga protokol. Samakatuwid, ang isang ganap na ligtas na pagpapatupad ng meta-protocol ng SPV ay kakailanganin upang paatras na i-scan hanggang sa simula ng Bitcoin blockchain upang matukoy kung wasto ang ilang mga transaksyon. Sa kasalukuyan, ang lahat ng "magaan" na pagpapatupad ng mga meta-protokol na nakabatay sa Bitcoin ay umaasa sa isang pinagkakatiwalaang server upang maibigay ang data, masasabing isang lubos na suboptimal na resulta lalo na kapag ang isa sa pangunahing layunin ng isang cryptocurrency ay upang maalis ang pangangailangan para sa pagtitiwala.

Nyawang

Nyawang

Pag-iskrip

Kahit na walang anumang mga extension, ang Bitcoin protocol ay talagang pinapabilis ang isang mahinang bersyon ng isang konsepto ng "matalinong mga kontrata". Ang UTXO sa Bitcoin ay maaaring pagmamay-ari hindi lamang ng isang pampublikong susi, kundi pati na rin ng isang mas kumplikadong script na ipinahayag sa isang simpleng wika ng programa na nakabatay sa stack. Sa tularan na ito, isang paggasta sa transaksyon na dapat magbigay ang UTXO ng data na nagbibigay-kasiyahan sa script. Sa katunayan, kahit na ang pangunahing mekanismo ng pagmamay-ari ng pangunahing key ng publiko ay ipinatupad sa pamamagitan ng isang script: ang script ay tumatagal ng isang elliptic curve signature bilang input, napatunayan ito laban sa transaksyon at sa address na nagmamay-ari ng UTXO, at ibabalik ang 1 kung matagumpay ang pag-verify at 0 kung hindi man. Ang iba pa, mas kumplikado, mga script ay umiiral para sa iba't ibang mga karagdagang kaso ng paggamit. Halimbawa, ang isa ay maaaring bumuo ng isang script na nangangailangan ng mga lagda mula sa dalawa sa isang naibigay na tatlong mga pribadong key upang patunayan ("multisig"), isang setup na kapaki-pakinabang para sa mga corporate account, ligtas na mga account sa pagtitipid at ilang mga sitwasyon ng escrow ng merchant. Maaari ring magamit ang mga script upang magbayad ng mga bounties para sa mga solusyon sa mga problema sa computational, at maaari pa ring bumuo ng isang script na nagsasabing tulad ng "ang Bitcoin UTXO na ito ay sa iyo kung maaari kang magbigay ng isang patunay ng SPV na nagpadala ka ng isang transaksyon sa Dogecoin ng denominasyong ito sa akin" , mahalagang pinapayagan ang disentralisadong cross-cryptocurrency exchange.

Gayunpaman, ang wika ng scripting tulad ng ipinatupad sa Bitcoin ay may maraming mahahalagang limitasyon:

  • Kakulangan ng Pagkumpleto ng Turing - ibig sabihin, habang mayroong isang malaking subset ng pagkalkula na sinusuportahan ng wika ng scripting ng Bitcoin, hindi nito halos suportahan ang lahat. Ang pangunahing kategorya na nawawala ay mga loop. Ginagawa ito upang maiwasan ang walang katapusang mga loop sa panahon ng pag-verify ng transaksyon; teoretikal na ito ay isang malalampasan na balakid para sa mga programmer ng script, dahil ang anumang loop ay maaaring gayahin sa pamamagitan ng simpleng pag-uulit ng napapailalim na code nang maraming beses sa isang kung pahayag, ngunit humantong ito sa mga script na napaka-walang epekto. Halimbawa, ang pagpapatupad ng isang alternatibong elliptic curve signature algorithm ay malamang na mangailangan ng 256 na paulit-ulit na pag-ikot ng pag-ikot ng lahat ng indibidwal na kasama sa code.

  • Value-blindness - walang paraan para sa isang script ng UTXO upang makapagbigay ng mahusay na kontrol sa dami na maaaring bawiin. Halimbawa, ang isang malakas na kaso ng paggamit ng isang kontrata ng orakulo ay magiging isang kontrata ng hedging, kung saan ang A at B ay naglagay ng $ 1000 na halaga ng BTC at pagkatapos ng 30 araw na ang script ay nagpapadala ng $ 1000 na halaga ng BTC sa A at ang iba pa sa B. Mangangailangan ito ng orakulo upang matukoy ang halaga ng 1 BTC sa USD, ngunit kahit na ito ay isang napakalaking pagpapabuti sa mga tuntunin ng tiwala at inprastrakturang kinakailangan sa ganap na sentralisadong mga solusyon na magagamit na ngayon. Gayunpaman, dahil ang UTXO ay wala-lahat, ang tanging paraan upang makamit ito ay sa pamamagitan ng napaka-episyentong pag-hack ng pagkakaroon ng maraming UTXO ng iba't ibang mga denominasyon (hal. Isang UTXO ng 2k para sa bawat k hanggang 30) at pagkakaroon ng O pumili kung aling UTXO ipadala sa A at alin sa B.

  • Kakulangan ng estado - ang isang UTXO ay maaaring magastos o hindi magamit ; walang pagkakataon para sa mga multi-yugto na kontrata o script na pinapanatili ang anumang iba pang panloob na estado na lampas doon. Pinahihirapan itong gumawa ng mga kontrata ng mga pagpipilian na multi-yugto, desentralisadong alok ng palitan o dalawang yugto ng mga cryptographic na mga protocol na pangako (kinakailangan para sa ligtas na mga pagbibigay ng computational). Nangangahulugan din ito na ang UTXO ay maaari lamang magamit upang makabuo ng simple, one-off na mga kontrata at hindi mas kumplikadong "stateful" na mga kontrata tulad ng desentralisadong mga samahan, at ginagawang mahirap ipatupad ang mga meta-protocol. Ang estado ng binary na sinamahan ng pagkabulag-halaga ay nangangahulugan din na ang isa pang mahalagang aplikasyon, mga limitasyon sa pag-atras, ay imposible.

  • Blockchain-blindness - Ang UTXO ay bulag sa data ng blockchain tulad ng nonce, timestamp at nakaraang block hash. Mahigpit nitong nililimitahan ang mga aplikasyon sa pagsusugal, at maraming iba pang mga kategorya, sa pamamagitan ng pag-agaw sa wika ng scripting ng isang potensyal na mahalagang mapagkukunan ng pagiging random.

Kaya, nakikita namin ang tatlong mga diskarte sa pagbuo ng mga advanced na application sa tuktok ng cryptocurrency: pagbuo ng isang bagong blockchain, gamit ang scripting sa tuktok ng Bitcoin, at pagbuo ng isang meta-protocol sa tuktok ng Bitcoin. Ang pagbuo ng isang bagong blockchain ay nagbibigay-daan para sa walang limitasyong kalayaan sa pagbuo ng isang tampok na itinakda, ngunit sa gastos ng oras ng pag-unlad, pagsisikap ng bootstrapping at seguridad. Ang paggamit ng scripting ay madaling ipatupad at gawing pamantayan, ngunit napaka-limitado sa mga kakayahan nito, at mga meta-protocol, habang madali, ay nagdurusa mula sa mga pagkakamali sa kakayahang sumukat. Sa Ethereum, nilalayon naming bumuo ng isang alternatibong balangkas na nagbibigay ng kahit na mas malaking mga nadagdag sa kadalian ng pag-unlad pati na rin ang mas malakas na mga pag-aari ng kliyente, habang sabay na pinapayagan ang mga application na magbahagi ng isang pang-ekonomiyang kapaligiran at seguridad ng blockchain.

Ethereum

Ang hangarin ng Ethereum ay upang lumikha ng isang alternatibong protocol para sa pagbuo ng desentralisadong mga aplikasyon, na nagbibigay ng iba't ibang hanay ng mga tradeoffs na sa tingin namin ay magiging kapaki-pakinabang para sa isang malaking klase ng mga desentralisadong aplikasyon, na may partikular na diin sa mga sitwasyon kung saan ang mabilis na oras ng pag-unlad, seguridad para sa maliit at bihirang ginagamit na mga application, at ang kakayahan ng iba't ibang mga application upang mas mahusay na makipag-ugnay, ay mahalaga. Ginagawa ito ng Ethereum sa pamamagitan ng pagbuo ng kung ano ang mahalaga ang panghuli abstract foundational layer: isang blockchain na may built-in na Turing-kumpletong wika ng programa, na pinapayagan ang sinuman na magsulat ng mga matalinong kontrata at desentralisadong mga aplikasyon kung saan makakalikha sila ng kanilang sariling mga di-makatwirang alituntunin para sa pagmamay-ari, mga format ng transaksyon at pagpapaandar ng paglipat ng estado. Ang isang hubad na buto na bersyon ng Namecoin ay maaaring nakasulat sa dalawang linya ng code, at iba pang mga protokol tulad ng mga pera at mga sistema ng reputasyon ay maaaring mabuo sa ilalim ng dalawampu. Ang mga matalinong kontrata, mga "kahon" na cryptographic na naglalaman ng halaga at i-unlock lamang ito kung ang ilang mga kundisyon ay natutugunan, maaari ding maitayo sa tuktok ng platform, na may higit na lakas kaysa sa inaalok ng Bitcoin scripting dahil sa mga idinagdag na kapangyarihan ng Turing-pagkakumpleto, pagkilala sa halaga, kamalayan ng blockchain at estado.

Pilosopiya

Ang disenyo sa likod ng Ethereum ay inilaan upang sundin ang mga sumusunod na prinsipyo:

  1. Pagiging simple: ang Ethereum protocol ay dapat na kasing simple hangga't maaari, kahit na sa gastos ng ilang pag-iimbak ng data o kawalan ng kakayahan sa oras. fn 3 Ang isang average na programmer ay dapat na sundin at ipatupad ang buong detalye, fn. 4 upang lubos na mapagtanto ang walang uliran demokratikong potensyal na dinadala ng cryptocurrency at karagdagang ang paningin ng Ethereum bilang isang protokol na bukas sa lahat. Ang anumang pag-optimize na nagdaragdag ng pagiging kumplikado ay hindi dapat isama maliban kung ang pag-optimize ay nagbibigay ng napakalaking benepisyo.

  2. Pamantasan: isang pangunahing bahagi ng pilosopiya ng disenyo ng Ethereum ay ang Ethereum ay walang "mga tampok". fn 5 Sa halip, nagbibigay ang Ethereum ng panloob na wika ng scripting na kumpleto sa Turing, na maaaring magamit ng isang programmer upang makabuo ng anumang matalinong kontrata o uri ng transaksyon na maaaring matukoy sa matematika. Nais mo bang likhain ang iyong sariling derivative sa pananalapi? Sa Ethereum, magagawa mo. Nais mo bang gumawa ng iyong sariling pera? I-set up ito bilang isang kontrata sa Ethereum. Nais bang mag-set up ng isang buong-scale Daemon o Skynet? Maaaring kailanganin mong magkaroon ng ilang libong magkakaugnay na mga kontrata, at siguraduhin na pakainin sila nang sagana, upang gawin iyon, ngunit walang pumipigil sa iyo sa Ethereum sa iyong mga kamay.

  3. Modularity: ang mga bahagi ng Ethereum protocol ay dapat na idinisenyo upang maging kasing modular at mapaghihiwalay hangga't maaari. Sa kurso ng pag-unlad, ang aming layunin ay upang lumikha ng isang programa kung saan kung ang isa ay gumawa ng isang maliit na pagbabago ng protocol sa isang lugar, ang application stack ay magpapatuloy na gumana nang walang anumang karagdagang pagbabago. Ang mga Innovation tulad ng Ethash (tingnan ang Yellow Paper Appendix o artikulong wiki ), binago ang mga puno ng Patricia ( Yellow Paper , wiki ) at RLP ( YP , wiki ) ay dapat na, at ipinatupad bilang magkahiwalay, kumpletong tampok na mga aklatan. Ito ay upang kahit na ang mga ito ay ginagamit sa Ethereum, kahit na ang Ethereum ay hindi nangangailangan ng ilang mga tampok, ang mga naturang tampok ay magagamit pa rin sa iba pang mga protokol. Ang pag-unlad ng Ethereum ay dapat na maximum na gawin upang makinabang ang buong ecosystem ng cryptocurrency, hindi lamang mismo.

  4. Liksi: ang mga detalye ng Ethereum protocol ay hindi nakatakda sa bato. Kahit na magiging labis kaming matalino tungkol sa paggawa ng mga pagbabago sa mga mataas na antas na konstruksyon, halimbawa kasama ang sharding roadmap , abstracting pagpapatupad, na may kakayahang magamit lamang ang data na nakalagay sa pinagkasunduan. Ang mga pagsubok sa computational sa paglaon sa proseso ng pag-unlad ay maaaring humantong sa amin upang matuklasan na ang ilang mga pagbabago, hal. Sa arkitektura ng protocol o sa Ethereum Virtual Machine (EVM), ay lubos na magpapabuti sa kakayahang sumukat o seguridad. Kung may anumang mga nasabing opurtunidad na matatagpuan, pagsasamantalahan natin ang mga ito.

  5. Hindi diskriminasyon at hindi pag-censor: ang protokol ay hindi dapat magtangkang aktibong paghigpitan o hadlangan ang mga tukoy na kategorya ng paggamit. Ang lahat ng mga mekanismo ng pagkontrol sa proteksyon ay dapat na idinisenyo upang direktang makontrol ang pinsala at huwag subukang salungatin ang mga partikular na hindi kanais-nais na aplikasyon. Ang isang programmer ay maaaring magpatakbo ng isang walang katapusang loop script sa tuktok ng Ethereum hangga't handa silang panatilihin ang pagbabayad ng per-computational-step na bayarin sa transaksyon.

Mga Ethereum Account

Sa Ethereum, ang estado ay binubuo ng mga bagay na tinatawag na "account", na ang bawat account ay mayroong 20-byte address at mga paglipat ng estado na direktang paglipat ng halaga at impormasyon sa pagitan ng mga account. Naglalaman ang isang Ethereum account ng apat na larangan:

  • Ang nonce, isang counter na ginamit upang matiyak na ang bawat transaksyon ay maaari lamang maproseso nang isang beses

  • Ang kasalukuyang balanse sa ether ng account

  • Ang code ng kontrata ng account, kung mayroon

  • Ang imbakan ng account (walang laman bilang default)

Ang "Ether" ay ang pangunahing panloob na crypto-fuel ng Ethereum, at ginagamit upang magbayad ng mga bayarin sa transaksyon. Sa pangkalahatan, mayroong dalawang uri ng mga account: panlabas na pag-aari ng mga account, kinokontrol ng mga pribadong key, at mga account sa kontrata, kinokontrol ng kanilang code ng kontrata. Ang isang panlabas na pagmamay-ari na account ay walang code, at ang isa ay maaaring magpadala ng mga mensahe mula sa isang panlabas na pagmamay-ari na account sa pamamagitan ng paglikha at pag-sign ng isang transaksyon; sa isang account sa kontrata, sa tuwing makakatanggap ang isang account ng kontrata ng isang mensahe ang code nito ay aktibo, pinapayagan itong basahin at sumulat sa panloob na imbakan at magpadala ng iba pang mga mensahe o lumikha ng mga kontrata sa pagliko.

Tandaan na ang "mga kontrata" sa Ethereum ay hindi dapat makita bilang isang bagay na dapat "matupad" o "sumunod"; sa halip, mas katulad sila ng "mga autonomous na ahente" na nakatira sa loob ng kapaligiran ng pagpapatupad ng Ethereum, palaging nagpapatupad ng isang tukoy na piraso ng code kapag "sinundot" ng isang mensahe o transaksyon, at pagkakaroon ng direktang kontrol sa kanilang sariling balanse ng ether at kanilang sariling key / halaga ng tindahan upang subaybayan ang mga paulit-ulit na variable.

Nyawang

Nyawang

Nyawang

Nyawang

Mga Mensahe at Transaksyon

Nyawang

Ang terminong "transaksyon" ay ginagamit sa Ethereum upang mag-refer sa naka-sign na package ng data na nag-iimbak ng isang mensahe na ipapadala mula sa isang panlabas na pagmamay-ari na account. Naglalaman ang mga transaksyon:

  • Ang tatanggap ng mensahe

  • Isang lagda na kinikilala ang nagpadala

  • Ang halaga ng eter upang ilipat mula sa nagpadala sa tatanggap

  • Isang opsyonal na patlang ng data

  • Isang halaga ng STARTGAS, na kumakatawan sa maximum na bilang ng mga hakbang sa computational na pinapayagan na gawin ang pagpapatupad ng transaksyon

  • Isang halaga ng GASPRICE, na kumakatawan sa bayad na binabayaran ng nagpadala bawat hakbang sa computational

Ang unang tatlo ay karaniwang mga larangan na inaasahan sa anumang cryptocurrency. Ang patlang ng data ay walang pagpapaandar sa pamamagitan ng default, ngunit ang virtual machine ay may isang opcode na maaaring magamit ng isang kontrata upang ma-access ang data; bilang isang halimbawa ng paggamit ng kaso, kung ang isang kontrata ay gumagana bilang isang on-blockchain na serbisyo sa pagpaparehistro ng domain, maaaring gusto nitong bigyang-kahulugan ang data na ipinapasa dito bilang naglalaman ng dalawang "mga patlang", ang unang patlang ay isang domain upang magparehistro at ang pangalawa patlang ang pagiging IP address upang irehistro ito. Basahin ng kontrata ang mga halagang ito mula sa data ng mensahe at naaangkop na ilagay ang mga ito sa imbakan.

Ang mga patlang ng STARTGAS at GASPRICE ay mahalaga para sa anti-denial ng modelo ng serbisyo ng Ethereum. Upang mapigilan ang hindi sinasadya o pagalit na walang katapusan na mga loop o iba pang pag-aaksaya ng computational sa code, kinakailangan ang bawat transaksyon upang magtakda ng isang limitasyon sa kung gaano karaming mga hakbang sa computational ng pagpapatupad ng code na maaari itong magamit. Ang pangunahing yunit ng pagkalkula ay "gas"; kadalasan, ang isang hakbang sa computational ay nagkakahalaga ng 1 gas, ngunit ang ilang mga pagpapatakbo ay nagkakahalaga ng mas mataas na halaga ng gas dahil mas mahal sila sa computationally, o taasan ang dami ng data na dapat na nakaimbak bilang bahagi ng estado. Mayroon ding bayad na 5 gas para sa bawat byte sa data ng transaksyon. Ang layunin ng sistema ng bayad ay upang mangailangan ng isang umaatake na magbayad nang proporsyonal para sa bawat mapagkukunan na kinukonsumo nila, kabilang ang pagkalkula, bandwidth at pag-iimbak; samakatuwid, ang anumang transaksyon na humahantong sa network na kumakain ng isang mas malaking halaga ng anuman sa mga mapagkukunang ito ay dapat magkaroon ng isang gas fee na halos katimbang sa pagtaas.

Mga mensahe

Ang mga kontrata ay may kakayahang magpadala ng "mga mensahe" sa iba pang mga kontrata. Ang mga mensahe ay mga virtual na bagay na hindi na-serialize at umiiral lamang sa kapaligiran ng pagpapatupad ng Ethereum. Naglalaman ang isang mensahe ng:

  • Ang nagpadala ng mensahe (implicit)

  • Ang tatanggap ng mensahe

  • Ang halaga ng eter upang ilipat sa tabi ng mensahe

  • Isang opsyonal na patlang ng data

  • Isang halagang SIMULA

Mahalaga, ang isang mensahe ay tulad ng isang transaksyon, maliban na ito ay ginawa ng isang kontrata at hindi isang panlabas na artista. Ang isang mensahe ay ginawa kapag ang isang kontrata na kasalukuyang nagpapatupad ng code ay nagpapatupad ng CALL opcode, na gumagawa at nagpapatupad ng isang mensahe. Tulad ng isang transaksyon, humahantong ang isang mensahe sa tatanggap na account na tumatakbo ang code nito. Sa gayon, ang mga kontrata ay maaaring magkaroon ng mga pakikipag-ugnay sa iba pang mga kontrata sa eksakto sa parehong paraan na maaari ang panlabas na mga aktor.

Tandaan na ang allowance ng gas na itinalaga ng isang transaksyon o kontrata ay nalalapat sa kabuuang gas na natupok ng transaksyong iyon at lahat ng mga sub-pagpapatupad. Halimbawa, kung ang isang panlabas na aktor na A ay nagpapadala ng isang transaksyon sa B na may 1000 gas, at si B ay kumonsumo ng 600 gas bago magpadala ng mensahe sa C, at ang panloob na pagpapatupad ng C ay kumonsumo ng 300 gas bago bumalik, pagkatapos ay maaaring gumastos ang B ng isa pang 100 gas bago tumakbo walang gasolina.

Pag-andar ng Transisyon ng Estado ng Ethereum

Ang pagpapaandar ng paglipat ng estado ng Ethereum, APPLY (S, TX) -> S 'ay maaaring tukuyin tulad ng sumusunod:

  1. Suriin kung ang transaksyon ay mahusay na nabuo (hal. Ay may tamang bilang ng mga halaga), ang lagda ay wasto, at ang nonce ay tumutugma sa nonce sa account ng nagpadala. Kung hindi, bumalik ng isang error.

  2. Kalkulahin ang bayarin sa transaksyon bilang StartGAS * GASPRICE, at tukuyin ang pagpapadala ng address mula sa lagda. Ibawas ang bayad mula sa balanse ng account ng nagpadala at dagdagan ang nonce ng nagpadala. Kung walang sapat na balanse na gugugol, bumalik ng isang error.

  3. Pasimulan ang GAS = StartGAS, at mag-alis ng isang tiyak na dami ng gas bawat byte upang mabayaran ang mga byte sa transaksyon.

  4. Ilipat ang halaga ng transaksyon mula sa account ng nagpadala sa tumatanggap na account. Kung ang account na tumatanggap ay wala pa, likhain ito. Kung ang tumatanggap na account ay isang kontrata, patakbuhin ang code ng kontrata alinman sa makumpleto o hanggang sa maubusan ng gas ang pagpapatupad.

  5. Kung nabigo ang paglipat ng halaga dahil walang sapat na pera ang nagpadala, o naubos na ang pagpapatupad ng code ng gas, ibalik ang lahat ng mga pagbabago sa estado maliban sa pagbabayad ng mga bayarin, at idagdag ang mga bayarin sa account ng minero.

  6. Kung hindi man, i-refund ang mga bayarin para sa lahat ng natitirang gas sa nagpadala, at ipadala ang bayad na binayaran para sa gasong natupok sa minero.

Halimbawa, ipagpalagay na ang code ng kontrata ay:

if! self.storage [calldataload (0)]:

self.storage [calldataload (0)] = calldataload (32)

Tandaan na sa katotohanan ang code ng kontrata ay nakasulat sa mababang antas ng EVM code; ang halimbawang ito ay nakasulat sa Ahas, isa sa aming mga mataas na antas na wika, para sa kalinawan, at maaaring maiipon sa EVM code. Ipagpalagay na ang imbakan ng kontrata ay nagsisimula nang walang laman, at ang isang transaksyon ay ipinadala na may 10 ether na halaga, 2000 gas, 0.001 ether gasprice, at 64 bytes ng data, na may mga byte 0-31 na kumakatawan sa bilang 2 at bytes 32-63 na kumakatawan sa string CHARLIE . fn 6 Ang proseso para sa pagpapaandar ng paglipat ng estado sa kasong ito ay ang mga sumusunod:

  1. Suriin na ang transaksyon ay wasto at mahusay na nabuo.

  2. Suriin na ang nagpadala ng transaksyon ay may hindi bababa sa 2000 * 0.001 = 2 eter. Kung ito ay, pagkatapos ay ibawas ang 2 eter mula sa account ng nagpadala.

  3. Pinasimulan ang gas = 2000; sa pag-aakalang ang transaksyon ay 170 bytes ang haba at ang byte-fee ay 5, ibawas ang 850 upang may natitirang 1150 gas.

  4. Ibawas ang 10 pang ether mula sa account ng nagpadala, at idagdag ito sa account ng kontrata.

  5. Patakbuhin ang code. Sa kasong ito, ito ay simple: sinusuri nito kung ginamit ang imbakan ng kontrata sa index 2, napansin na hindi ito, at sa gayon itinakda nito ang imbakan sa index 2 sa halagang CHARLIE. Ipagpalagay na tumatagal ito ng 187 gas, kaya ang natitirang halaga ng gas ay 1150 - 187 = 963

  6. Magdagdag ng 963 * 0.001 = 0.963 eter pabalik sa account ng nagpadala, at ibalik ang nagresultang estado.

Kung walang kontrata sa pagtanggap ng pagtatapos ng transaksyon, kung gayon ang kabuuang bayarin sa transaksyon ay magiging katumbas ng ibinigay na GASPRICE na pinarami ng haba ng transaksyon sa mga byte, at ang data na ipinadala sa tabi ng transaksyon ay magiging walang katuturan.

Tandaan na ang mga mensahe ay gumagana nang pantay-pantay sa mga transaksyon sa mga term ng pagbawi: kung ang isang pagpapatupad ng mensahe ay maubusan ng gas, pagkatapos ay ang pagpapatupad ng mensahe na iyon, at lahat ng iba pang pagpapatupad na pinalitaw ng pagpapatupad na iyon, ibalik, ngunit hindi dapat na ibalik ang mga pagpapatupad ng magulang. Nangangahulugan ito na ito ay "ligtas" para sa isang kontrata na tumawag sa isa pang kontrata, na parang tinawag ng A na B na may G gas kung gayon ang pagpapatupad ng A ay ginagarantiyahan na mawalan ng karamihan sa G gas. Panghuli, tandaan na mayroong isang opcode, LILIKHA, na lumilikha ng isang kontrata; ang mga mekanika ng pagpapatupad nito sa pangkalahatan ay katulad ng TAWAG, maliban sa output ng pagpapatupad na tumutukoy sa code ng isang bagong nilikha na kontrata.

Pagpapatupad ng Code

Ang code sa mga kontrata ng Ethereum ay nakasulat sa isang mababang antas, batay sa stack na wika ng bytecode, na tinukoy bilang "Ethereum virtual machine code" o "EVM code". Ang code ay binubuo ng isang serye ng mga byte, kung saan ang bawat byte ay kumakatawan sa isang operasyon. Sa pangkalahatan, ang pagpapatupad ng code ay isang walang katapusang loop na binubuo ng paulit-ulit na pagpapatupad ng operasyon sa kasalukuyang counter ng programa (na nagsisimula sa zero) at pagkatapos ay pagdaragdag ng counter ng programa ng isa, hanggang sa maabot ang pagtatapos ng code o isang error o STOP o nakita ang tagubilin na Bumalik. Ang mga operasyon ay may access sa tatlong uri ng puwang kung saan maiimbak ang data:

  • Ang stack, isang huling-sa-unang-lalabas na lalagyan kung saan ang mga halaga ay maaaring itulak at mag-pop

  • Memorya, isang walang katapusang napapalawak na byte array

  • Ang pangmatagalang imbakan ng kontrata, isang pangunahing tindahan / susi. Hindi tulad ng stack at memorya, na naka-reset pagkatapos magtapos ng pagkalkula, nagpapatuloy ang imbakan para sa pangmatagalang panahon.

Maaari ring ma-access ng code ang halaga, nagpadala at data ng papasok na mensahe, pati na rin ang block na data ng header, at ang code ay maaari ring ibalik ang isang byte na hanay ng data bilang isang output.

Ang pormal na modelo ng pagpapatupad ng EVM code ay nakakagulat na simple. Habang tumatakbo ang Ethereum virtual machine, ang buong estado ng computational na ito ay maaaring tukuyin ng tuple (block_state, transaksyon, mensahe, code, memorya, stack, pc, gas), kung saan ang block_state ay ang pandaigdigang estado na naglalaman ng lahat ng mga account at may kasamang balanse at pag-iimbak . Sa pagsisimula ng bawat pag-ikot ng pagpapatupad, ang kasalukuyang pagtuturo ay matatagpuan sa pamamagitan ng pagkuha ng pc-th byte ng code (o 0 kung pc> = len (code)), at ang bawat tagubilin ay may sariling kahulugan sa kung paano ito nakakaapekto sa tuple Halimbawa, ang ADD ay nag-pop ng dalawang item mula sa stack at itinulak ang kanilang kabuuan, binabawasan ang gas ng 1 at nadagdagan ang pc ng 1, at ang SSTORE ay nag-pop ng nangungunang dalawang mga item mula sa stack at ipinasok ang pangalawang item sa imbakan ng kontrata sa index na tinukoy ng unang item. Bagaman maraming mga paraan upang ma-optimize ang pagpapatupad ng virtual machine ng Ethereum sa pamamagitan ng pagsasama-sama lamang sa oras, isang pangunahing pagpapatupad ng Ethereum ay maaaring gawin sa ilang daang mga linya ng code.

Nyawang

Nyawang

Blockchain at Pagmimina

Ang Ethereum blockchain ay sa maraming mga paraan na katulad sa Bitcoin blockchain, bagaman mayroon itong ilang mga pagkakaiba. Ang pangunahing pagkakaiba sa pagitan ng Ethereum at Bitcoin tungkol sa arkitektura ng blockchain ay na, hindi katulad ng Bitcoin (na naglalaman lamang ng isang kopya ng listahan ng transaksyon), ang mga bloke ng Ethereum ay naglalaman ng isang kopya ng parehong listahan ng transaksyon at ang pinakabagong estado. Bukod dito, ang dalawang iba pang mga halaga, ang numero ng bloke at ang kahirapan, ay nakaimbak din sa bloke. Ang pangunahing algorithm ng pagpapatunay ng block sa Ethereum ay ang mga sumusunod:

  1. Suriin kung ang nakaraang pag-refer sa block ay mayroon at wasto.

  2. Suriin na ang timestamp ng bloke ay mas malaki kaysa sa na-refer na nakaraang block at mas mababa sa 15 minuto sa hinaharap

  3. Suriin na ang numero ng block, kahirapan, ugat ng transaksyon, ugat ng tiyuhin at gas (iba't ibang mga konsepto na tukoy sa antas ng Ethereum na may mababang antas) ay wasto.

  4. Suriin na ang patunay ng trabaho sa bloke ay wasto.

  5. Hayaan ang S [0] na maging estado sa pagtatapos ng nakaraang bloke.

  6. Hayaan ang TX na maging listahan ng transaksyon ng block, na may mga transaksyon. Para sa lahat ng nasa 0 ... n-1, itakda ang S [i + 1] = APPLY (S [i], TX [i]). Kung ang anumang aplikasyon ay nagbabalik ng isang error, o kung ang kabuuang gas na natupok sa block up hanggang sa lumagpas sa puntong ito ang GASLIMIT, bumalik ng isang error.

  7. Hayaan ang S_FINAL na maging S [n], ngunit ang pagdaragdag ng gantimpala sa block na binayaran sa minero.

  8. Suriin kung ang ugat ng puno ng Merkle ng estado na S_FINAL ay katumbas ng pangwakas na ugat ng estado na ibinigay sa block header. Kung ito ay, wasto ang bloke; kung hindi man, hindi ito wasto.

Ang diskarte ay maaaring mukhang lubos na hindi mabisa sa unang tingin, sapagkat kailangan nitong iimbak ang buong estado sa bawat bloke, ngunit sa katunayan ang kahusayan ay dapat maihambing sa Bitcoin. Ang dahilan dito ay ang estado ay nakaimbak sa istraktura ng puno, at pagkatapos ng bawat bloke ay maliit na bahagi lamang ng puno ang kailangang palitan. Kaya, sa pangkalahatan, sa pagitan ng dalawang katabing mga bloke ang karamihan sa mga puno ay dapat na pareho, at samakatuwid ang data ay maaaring maimbak nang isang beses at sumangguni ng dalawang beses gamit ang mga pointers (ie. Hashes ng mga subtree). Ang isang espesyal na uri ng puno na kilala bilang isang "puno ng Patricia" ay ginagamit upang magawa ito, kasama ang isang pagbabago sa konsepto ng puno ng Merkle na nagpapahintulot sa mga node na maipasok at matanggal, at hindi lamang binago, mahusay. Bilang karagdagan, dahil ang lahat ng impormasyon ng estado ay bahagi ng huling bloke, hindi na kailangang iimbak ang buong kasaysayan ng blockchain - isang diskarte na kung mailalapat sa Bitcoin, maaaring kalkulahin upang makapagbigay ng 5-20x na pagtitipid sa kalawakan.

Ang isang karaniwang tinanong ay "kung saan" ang code ng kontrata ay naisakatuparan, sa mga tuntunin ng pisikal na hardware. Ito ay may isang simpleng sagot: ang proseso ng pagpapatupad ng code ng kontrata ay bahagi ng kahulugan ng pagpapaandar ng paglipat ng estado, na bahagi ng algorithm ng pagpapatunay ng pag-block, kaya kung ang isang transaksyon ay idinagdag sa bloke B ang pagpapatupad ng code na nanganak ng transaksyong iyon ay naisakatuparan ng lahat ng mga node, ngayon at sa hinaharap, ang pag-download at pagpapatunay ng block B.

Mga Aplikasyon

Sa pangkalahatan, mayroong tatlong uri ng mga application sa tuktok ng Ethereum. Ang unang kategorya ay mga aplikasyon sa pananalapi, na nagbibigay sa mga gumagamit ng mas malakas na paraan ng pamamahala at pagpasok sa mga kontrata gamit ang kanilang pera. Kasama rito ang mga sub-currency, derivatives sa pananalapi, kontrata ng hedging, mga wallet sa pagtitipid, mga kalooban, at sa huli kahit na ang ilang mga klase ng mga buong-scale na kontrata sa trabaho. Ang pangalawang kategorya ay mga aplikasyon na semi-pampinansyal, kung saan kasangkot ang pera ngunit mayroon ding isang mabibigat na bahagi na hindi pang-pera sa kung ano ang ginagawa; isang perpektong halimbawa ay ang pagpapatupad ng sarili ng mga bounties para sa mga solusyon sa mga problema sa computational. Panghuli, may mga aplikasyon tulad ng online na pagboto at desentralisadong pamamahala na hindi naman pampinansyal.

Mga Sistema ng Token

Ang mga on-blockchain token system ay may maraming mga aplikasyon mula sa mga sub-currency na kumakatawan sa mga assets tulad ng USD o ginto sa mga stock ng kumpanya, mga indibidwal na token na kumakatawan sa matalinong pag-aari, ligtas ang mga hindi matatawaran na mga kupon, at kahit na mga system ng token na walang ugnayan sa maginoo na halaga sa lahat, ginamit bilang punto mga system para sa incentivization. Ang mga system ng token ay nakakagulat na madaling ipatupad sa Ethereum. Ang pangunahing punto upang maunawaan ay ang isang pera, o token system, panimula ay isang database na may isang operasyon: ibawas ang mga X na yunit mula sa A at bigyan ang mga X ng mga yunit sa B, na may pagkakaloob na (1) A ay mayroong hindi bababa sa X na mga yunit bago ang transaksyon at (2) ang transaksyon ay naaprubahan ng A. Ang lahat ng kinakailangan upang maipatupad ang isang token system ay ipatupad ang lohika na ito sa isang kontrata.

Ang pangunahing code para sa pagpapatupad ng isang token system sa Ahas ay ganito ang sumusunod:

def magpadala (sa, halaga):

kung self.storage [msg.sender]> = halaga:

self.storage [msg.sender] = self.storage [msg.sender] - halaga

self.storage [to] = self.storage [to] + halaga

Ito ay mahalagang isang literal na pagpapatupad ng "banking system" na pagpapaandar ng paglipat ng estado na inilarawan sa itaas sa dokumentong ito. Ang ilang dagdag na mga linya ng code ay kailangang idagdag upang maibigay para sa paunang hakbang ng pamamahagi ng mga unit ng pera sa unang lugar at ilang iba pang mga kaso ng gilid, at perpektong isang pag-andar ay idagdag upang ipaalam sa iba pang mga kontrata na magtanong para sa balanse ng isang address . Ngunit iyon lang ang mayroon dito. Sa teoretikal, ang mga sistemang token na nakabatay sa Ethereum na kumikilos bilang mga sub-currency ay maaaring potensyal na isama ang isa pang mahalagang tampok na kakulangan ng mga meta-currency na batay sa Bitcoin: ang kakayahang direktang magbayad ng mga bayarin sa transaksyon sa pera na iyon. Ang paraang ipatutupad nito ay ang kontrata ay mapanatili ang isang balanse ng eter kung saan ibabalik nito ang ether na ginamit upang magbayad ng mga bayarin sa nagpadala, at pupunan muli ang balanse na ito sa pamamagitan ng pagkolekta ng mga panloob na yunit ng pera na kinukuha sa mga bayarin at muling pagbebenta sa kanila sa isang palaging tumatakbo na subasta. Sa gayon ay kakailanganin ng mga gumagamit na "buhayin" ang kanilang mga account sa ether, ngunit kapag nandiyan ang ether ay magagamit muli dahil ibabalik ito ng kontrata sa bawat oras.

Mga derivatibo sa pananalapi at Mga Pera na Halaga ng Matatag

Ang pinansiyal na derivatives ay ang pinakakaraniwang aplikasyon ng isang "matalinong kontrata", at isa sa pinakasimpleng ipatupad sa code. Ang pangunahing hamon sa pagpapatupad ng mga kontrata sa pananalapi ay ang karamihan sa kanila ay nangangailangan ng sanggunian sa isang panlabas na ticker ng presyo; halimbawa, ang isang kanais-nais na application ay isang matalinong kontrata na nagtatanggol laban sa pagkasumpungin ng ether (o ibang cryptocurrency) na patungkol sa dolyar ng US, ngunit ang paggawa nito ay nangangailangan ng kontrata upang malaman kung ano ang halaga ng ETH / USD. Ang pinakasimpleng paraan upang gawin ito ay sa pamamagitan ng isang kontrata na "feed ng data" na pinapanatili ng isang tukoy na partido (hal. NASDAQ) na idinisenyo upang ang partido na iyon ay may kakayahang i-update ang kontrata kung kinakailangan, at magbigay ng isang interface na nagbibigay-daan sa ibang mga kontrata upang magpadala ng isang mensahe sa kontratang iyon at bumalik ng isang tugon na nagbibigay ng presyo.

Dahil sa kritikal na sangkap na ito, ang kontrata ng hedging ay magiging hitsura ng mga sumusunod:

  1. Maghintay para sa partido A na maglagay ng 1000 eter.

  2. Maghintay para sa partido B upang maglagay ng 1000 eter.

  3. Itala ang halaga ng USD na 1000 eter, na kinakalkula sa pamamagitan ng pag-query sa kontrata ng feed ng data, sa imbakan, sabihin na ito ay $ x.

  4. Pagkatapos ng 30 araw, payagan ang A o B na "muling buhayin" ang kontrata upang makapagpadala ng $ x na halaga ng ether (kinakalkula sa pamamagitan ng pagtatanong muli sa kontrata ng feed ng data upang makuha ang bagong presyo) sa A at ang natitira sa B.

Ang nasabing kontrata ay magkakaroon ng makabuluhang potensyal sa crypto-commerce. Ang isa sa mga pangunahing problema na binanggit tungkol sa cryptocurrency ay ang katunayan na ito ay pabagu-bago ng isip; bagaman maraming mga gumagamit at mangangalakal ay maaaring gusto ang seguridad at kaginhawaan ng pagharap sa mga cryptographic na assets, maaaring hindi nila hilingin na harapin ang inaasahang pagkawala ng 23% ng halaga ng kanilang mga pondo sa isang araw. Hanggang ngayon, ang pinakakaraniwang iminungkahing solusyon ay ang mga assets na sinusuportahan ng nagbigay ng isyu; ang ideya ay ang isang nagpalabas ay lumilikha ng isang sub-currency kung saan may karapatan silang mag-isyu at bawiin ang mga yunit, at magbigay ng isang yunit ng pera sa sinumang magbigay sa kanila (offline) ng isang yunit ng isang tinukoy na napapailalim na assets (hal. ginto , USD). Nangangako ang nag-isyu na magkakaloob ng isang yunit ng pinagbabatayan na pag-aari sa sinumang magpapadala ng isang yunit ng crypto-asset. Pinapayagan ng mekanismong ito ang anumang hindi-cryptographic na assets na "maiangat" sa isang cryptographic asset, sa kondisyon na ang taong nagbigay ay maaaring pagkatiwalaan.

Gayunpaman, sa pagsasagawa, ang mga nagpalabas ay hindi palaging mapagkakatiwalaan, at sa ilang mga kaso ang imprastraktura sa pagbabangko ay masyadong mahina, o masyadong galit, para sa mga nasabing serbisyo. Ang mga derivatives sa pananalapi ay nagbibigay ng isang kahalili. Dito, sa halip na isang nag-iisang tagapagbigay na nagbibigay ng mga pondo upang mai-back up ang isang asset, isang desentralisadong merkado ng mga ispekularyo, na pusta na ang presyo ng isang cryptographic reference asset (hal. ETH) ay tataas, ginagampanan ang papel na iyon. Hindi tulad ng mga nagbigay, ang mga speculator ay walang pagpipilian na mag-default sa kanilang panig ng bargain dahil ang hedging contract ay humahawak sa kanilang pondo sa escrow. Tandaan na ang diskarte na ito ay hindi ganap na desentralisado, dahil ang isang pinagkakatiwalaang mapagkukunan ay kinakailangan pa rin upang maibigay ang ticker ng presyo, kahit na masasabi pa rin na ito ay isang napakalaking pagpapabuti sa mga tuntunin ng pagbawas ng mga kinakailangan sa imprastraktura (hindi katulad ng isang nagbigay, ang pag-isyu ng isang feed ng presyo ay hindi nangangailangan ng mga lisensya. at maaaring maikategorya bilang malayang pagsasalita) at binabawasan ang potensyal para sa pandaraya.

Mga Sistema ng Pagkakakilanlan at Reputasyon

Ang pinakamaagang alternatibong cryptocurrency sa lahat, ang Namecoin , ay nagtangkang gumamit ng isang tulad ng Bitcoin na blockchain upang magbigay ng isang sistema ng pagpaparehistro ng pangalan, kung saan maaaring irehistro ng mga gumagamit ang kanilang mga pangalan sa isang pampublikong database kasabay ng iba pang data. Ang pangunahing kaso ng binanggit na paggamit ay para sa isang DNS system, ang pagmamapa ng mga pangalan ng domain tulad ng "bitcoin.org" (o, sa kaso ni Namecoin, "bitcoin.bit") sa isang IP address. Kasama sa iba pang mga kaso ng paggamit ang pagpapatotoo sa email at potensyal na mas advanced na mga system ng reputasyon. Narito ang pangunahing kontrata upang magbigay ng isang tulad ng Namecoin na sistema ng pagpaparehistro ng pangalan sa Ethereum:

def register (pangalan, halaga):

kung! self.storage [pangalan]:

self.storage [pangalan] = halaga

Napaka-simple ng kontrata; lahat ng ito ay isang database sa loob ng network ng Ethereum na maaaring idagdag sa, ngunit hindi binago o inalis mula sa. Kahit sino ay maaaring magrehistro ng isang pangalan na may ilang halaga, at ang pagpaparehistro na pagkatapos ay mananatili magpakailanman. Ang isang mas sopistikadong kontrata sa pagpaparehistro ng pangalan ay magkakaroon din ng isang "sugnay sa pag-andar" na pinapayagan ang iba pang mga kontrata na i-query ito, pati na rin ang isang mekanismo para sa "may-ari" (ibig sabihin. Ang unang nagparehistro) ng isang pangalan upang baguhin ang data o ilipat ang pagmamay-ari. Maaari ring magdagdag ng reputasyon at pag-andar ng web-of-trust sa itaas.

Desentralisadong File Storage

Sa nakaraang ilang taon, may lumitaw na isang bilang ng mga tanyag na pagsisimula ng pag-imbak ng online na file, ang pinakatanyag na Dropbox, na hinahangad na payagan ang mga gumagamit na mag-upload ng isang backup ng kanilang hard drive at iimbak ng serbisyo ang backup at payagan ang gumagamit na i-access ito kapalit ng buwanang bayad. Gayunpaman, sa puntong ito ang merkado ng imbakan ng file ay minsan hindi epektibo; isang panandaliang pagtingin sa iba't ibang mga umiiral na mga solusyon ay ipinapakita na, partikular sa antas ng "hindi nakakagulat na lambak" 20-200 GB kung saan hindi sumisipa ang mga libreng quota o mga diskwento sa antas ng enterprise, ang buwanang mga presyo para sa pangunahing gastos sa pag-iimbak ng file ay tulad na nagbabayad ka para sa higit pa kaysa sa gastos ng buong hard drive sa isang solong buwan. Maaaring payagan ng mga kontrata ng Ethereum ang pagbuo ng isang desentralisadong ecosystem ng pag-iimbak ng file, kung saan ang mga indibidwal na gumagamit ay maaaring kumita ng maliit na dami ng pera sa pamamagitan ng pag-upa ng kanilang sariling mga hard drive at ang hindi nagamit na puwang ay maaaring magamit upang higit na mapababa ang mga gastos sa pag-iimbak ng file.

Ang susi ng pangunahing batayan ng naturang aparato ay ang tinatawag naming "desentralisadong kontrata ng Dropbox". Gumagawa ang kontratang ito tulad ng sumusunod. Una, hatiin ng isa ang nais na data hanggang sa mga bloke, i-encrypt ang bawat bloke para sa privacy, at bubuo ng isang Merkle tree mula rito. Gumagawa ang isang kontrata sa panuntunan na, bawat bloke ng N, pipili ang kontrata ng isang random index sa puno ng Merkle (gamit ang nakaraang block hash, mapupuntahan mula sa code ng kontrata, bilang mapagkukunan ng pagiging random), at bigyan ang X ether sa unang nilalang na nagbibigay ng isang transaksyon na may isang pinasimple na tulad ng pag-verify sa pagbabayad na patunay ng pagmamay-ari ng bloke sa partikular na index sa puno. Kapag nais ng isang gumagamit na muling i-download ang kanilang file, maaari silang gumamit ng isang micropayment channel protocol (hal. Magbayad ng 1 szabo bawat 32 kilobytes) upang mabawi ang file; ang pinaka-mahusay na diskarte sa bayad ay para sa nagbabayad na hindi mai-publish ang transaksyon hanggang sa wakas, sa halip ay palitan ang transaksyon ng isang medyo mas kapaki-pakinabang na isa sa parehong nonce pagkatapos ng bawat 32 kilobytes.

Ang isang mahalagang tampok ng protokol ay, bagaman maaaring mukhang ang isa ay nagtitiwala sa maraming mga random node na hindi magpasya na kalimutan ang file, maaaring mabawasan ang panganib na hanggang sa halos zero sa pamamagitan ng paghati sa file sa maraming mga piraso sa pamamagitan ng lihim na pagbabahagi, at nanonood ng mga kontrata upang makita ang bawat piraso ay nasa pag-aari pa rin ng ilang node. Kung ang isang kontrata ay nagbabayad pa rin ng pera, nagbibigay iyon ng isang patunay na cryptographic na ang isang tao doon ay nag-iimbak pa rin ng file.

Desentralisadong Autonomous na Mga Organisasyon

Ang pangkalahatang konsepto ng isang "desentralisadong autonomous na samahan" ay ang isang virtual na nilalang na mayroong isang tiyak na hanay ng mga miyembro o shareholder na, marahil na may 67% na nakararami, ay may karapatang gastusin ang mga pondo ng entidad at baguhin ang code nito. Ang mga kasapi ay sama-sama na magpapasya sa kung paano ilalaan ng samahan ang mga pondo nito. Ang mga pamamaraan para sa paglalaan ng mga pondo ng DAO ay maaaring saklaw mula sa mga bounties, suweldo sa mas maraming mga kakaibang mekanismo tulad ng isang panloob na pera upang gantimpalaan ang trabaho. Mahalagang kinopya nito ang ligal na mga trapping ng isang tradisyunal na kumpanya o nonprofit ngunit gumagamit lamang ng cryptographic blockchain technology para sa pagpapatupad. Sa ngayon ang karamihan sa usapan sa paligid ng DAOs ay nasa paligid ng "kapitalista" na modelo ng isang "desentralisadong autonomous corporation" (DAC) na may mga shareholder na tumatanggap ng dividend at mga tradable na pagbabahagi; ang isang kahalili, na maaaring inilarawan bilang isang "desentralisadong autonomous na pamayanan", ay magkakaroon ng lahat ng mga kasapi na magkaroon ng pantay na bahagi sa paggawa ng desisyon at hilingin sa 67% ng mga mayroon nang mga kasapi na sumang-ayon na magdagdag o magtanggal ng isang miyembro. Ang kinakailangan na ang isang tao ay maaaring magkaroon lamang ng isang pagiging kasapi pagkatapos ay kailangang ipatupad nang sama-sama ng pangkat.

Ang isang pangkalahatang balangkas para sa kung paano i-code ang isang DAO ay ang mga sumusunod. Ang pinakasimpleng disenyo ay isang piraso lamang ng self-modifying code na nagbabago kung ang dalawang katlo ng mga miyembro ay sumasang-ayon sa isang pagbabago. Bagaman ang code ay hindi nabago ang teoretikal, madali itong maililibot at magkaroon ng de-facto na kakayahang mabago sa pamamagitan ng pagkakaroon ng mga tipak ng code sa magkakahiwalay na mga kontrata, at pagkakaroon ng address kung aling mga kontrata ang tatawaging nakaimbak sa nababago na imbakan. Sa isang simpleng pagpapatupad ng naturang kontrata ng DAO, magkakaroon ng tatlong uri ng transaksyon, na nakikilala sa pamamagitan ng data na ibinigay sa transaksyon:

  • [0, i, K, V] upang magparehistro ng isang panukala na may index i upang palitan ang address sa storage index K sa halagang V

  • [1, i] upang magrehistro ng isang boto na pabor sa panukala i

  • [2, i] upang tapusin ang panukala i kung may sapat na mga boto na nagawa

Ang kontrata ay magkakaroon ng mga sugnay para sa bawat isa sa mga ito. Mapapanatili nito ang isang tala ng lahat ng bukas na mga pagbabago sa imbakan, kasama ang isang listahan ng kung sino ang bumoto para sa kanila. Magkakaroon din ito ng isang listahan ng lahat ng mga miyembro. Kapag ang anumang pagbabago sa pag-iimbak ay umabot sa dalawang katlo ng mga kasapi na bumoto para dito, maaaring maisagawa ng isang pinal na transaksyon ang pagbabago. Ang isang mas sopistikadong balangkas ay magkakaroon din ng built-in na kakayahan sa pagboto para sa mga tampok tulad ng pagpapadala ng isang transaksyon, pagdaragdag ng mga miyembro at pag-aalis ng mga miyembro, at maaaring magbigay pa para sa Liquid Democracy -style na delegasyon ng boto (ibig sabihin. Ang sinuman ay maaaring magtalaga ng isang tao upang bumoto para sa kanila, at takdang-aralin palipat kaya kung ang A ay nagtatalaga ng B at B ay nagtatalaga ng C kung gayon ang C ay tumutukoy sa boto ni A). Papayagan ng disenyo na ito ang DAO na lumago ng organiko bilang isang desentralisadong pamayanan, na nagpapahintulot sa mga tao na magtalaga sa kalaunan ng gawain ng pagsala kung sino ang isang miyembro sa mga dalubhasa, kahit na hindi katulad sa mga "kasalukuyang sistema" na ang mga espesyalista ay madaling mag-pop in at out ng pagkakaroon sa paglipas ng panahon habang binabago ng mga indibidwal na miyembro ng pamayanan ang kanilang mga pagkakahanay.

Ang isang kahaliling modelo ay para sa isang desentralisadong korporasyon, kung saan ang anumang account ay maaaring magkaroon ng zero o higit pang pagbabahagi, at dalawang third ng mga pagbabahagi ay kinakailangan upang magpasya. Ang isang kumpletong balangkas ay magsasangkot sa pag-andar ng pamamahala ng pag-aari, ang kakayahang gumawa ng alok na bumili o magbenta ng mga pagbabahagi, at ang kakayahang tumanggap ng mga alok (mas mabuti na may mekanismo ng pagtutugma ng order sa loob ng kontrata) Ang delegasyon ay magkakaroon din ng istilo ng Liquid Democracy, na gawing pangkalahatan ang konsepto ng isang "board of director".

Nyawang

Nyawang

Karagdagang mga Aplikasyon

1. Mga pitaka sa pag-save. Ipagpalagay na nais ni Alice na panatilihing ligtas ang kanyang mga pondo, ngunit nag-aalala na mawawala siya o may mag-hack ng kanyang pribadong key. Inilagay niya ang ether sa isang kontrata kasama si Bob, isang bangko, tulad ng sumusunod:

  • Si Alice lamang ang makakakuha ng maximum na 1% ng mga pondo bawat araw.

  • Si Bob na nag-iisa ay maaaring mag-withdraw ng maximum na 1% ng mga pondo bawat araw, ngunit si Alice ay may kakayahang gumawa ng isang transaksyon sa kanyang pangunahing pagsasara sa kakayahang ito.

  • Sina Alice at Bob na magkakasama ay maaaring mag-alis ng anuman.

Karaniwan, 1% bawat araw ay sapat na para kay Alice, at kung nais ni Alice na mag-withdraw ng higit pa maaari kang makipag-ugnay kay Bob para sa tulong. Kung ang susi ni Alice ay na-hack, tumakbo siya kay Bob upang ilipat ang mga pondo sa isang bagong kontrata. Kung mawala sa kanya ang kanyang susi, makukuha ni Bob ang mga pondo sa paglaon. Kung naging mapanira si Bob, maaari niyang patayin ang kanyang kakayahang umatras.

2. I-crop ang seguro. Ang isang madaling makagawa ng isang kontrata sa derivatives sa pananalapi sa pamamagitan ng paggamit ng isang feed ng data ng panahon sa halip na anumang index ng presyo. Kung ang isang magsasaka sa Iowa ay bumili ng isang derivative na nagbabayad ng kabaligtaran batay sa ulan sa Iowa, kung gayon kung may pagkauhaw, awtomatikong tatanggap ang pera ng magsasaka at kung may sapat na ulan ang magsasaka ay matutuwa dahil ang kanilang mga pananim ay magiging maayos. Maaari itong mapalawak sa natural na segurong sakuna sa pangkalahatan.

3. Isang desentralisadong feed ng data. Para sa mga kontrata sa pananalapi para sa pagkakaiba, maaari talagang posible na ma-desentralisa ang feed ng data sa pamamagitan ng isang protokol na tinatawag na SchellingCoin . Karaniwang gumagana ang SchellingCoin tulad ng sumusunod: N ang lahat ng mga partido ay inilalagay sa system ang halaga ng isang naibigay na datum (hal. Ang presyo ng ETH / USD), ang mga halaga ay pinagsunod-sunod, at lahat sa pagitan ng ika-25 at ika-75 porsyento ay nakakakuha ng isang token bilang isang gantimpala. Ang bawat isa ay may insentibo upang ibigay ang sagot na ibibigay ng iba pa, at ang tanging halaga na ang isang malaking bilang ng mga manlalaro ay maaaring makatotohanang pagsang-ayon ay ang halatang default: ang totoo. Lumilikha ito ng isang desentralisadong protokol na maaaring teoretikal na magbigay ng anumang bilang ng mga halaga, kabilang ang presyo ng ETH / USD, ang temperatura sa Berlin o kahit na ang resulta ng isang partikular na mahirap na pagkalkula.

4. Smart multisignature escrow. Pinapayagan ng Bitcoin ang multisignature na mga kontrata sa transaksyon kung saan, halimbawa, tatlo sa isang naibigay na limang susi ang maaaring gumastos ng mga pondo. Pinapayagan ng Ethereum ang higit na granularity; halimbawa, apat sa lima ang maaaring gastusin lahat, tatlo sa lima ang maaaring gumastos ng hanggang 10% bawat araw, at dalawa sa lima ang maaaring gumastos ng hanggang sa 0.5% bawat araw. Bilang karagdagan, ang Ethereum multisig ay hindi magkakasabay - maaaring iparehistro ng dalawang partido ang kanilang mga lagda sa blockchain sa iba't ibang oras at ang huling pirma ay awtomatikong magpapadala ng transaksyon.

5. Cloud computing. Maaari ding magamit ang teknolohiyang EVM upang lumikha ng isang napatunayan na kapaligiran ng computing, pinapayagan ang mga gumagamit na tanungin ang iba na magsagawa ng mga pagkalkula at pagkatapos ay opsyonal na humingi ng mga patunay na ang mga pagkalkula sa ilang mga piniling random na checkpoint ay nagawa nang tama. Pinapayagan nito ang paglikha ng isang cloud computing market kung saan ang sinumang gumagamit ay maaaring lumahok sa kanilang desktop, laptop o dalubhasang server, at ang pag-check-point kasama ang mga security deposit ay maaaring magamit upang matiyak na ang sistema ay mapagkakatiwalaan (ibig sabihin. Ang mga node ay hindi maaaring kumita nang mabuti) . Kahit na tulad ng isang sistema ay maaaring hindi angkop para sa lahat ng mga gawain; ang mga gawain na nangangailangan ng isang mataas na antas ng komunikasyon sa pagitan ng proseso, halimbawa, ay hindi madaling magawa sa isang malaking ulap ng mga node. Gayunpaman, ang iba pang mga gawain ay mas madaling i-parallelize; ang mga proyekto tulad ng SETI @ home, natitiklop na @ home at mga algorithm ng genetiko ay madaling maipatupad sa tuktok ng naturang platform.

6. Pagsusugal ng peer-to-peer. Ang anumang bilang ng mga peer-to-peer na mga protocol sa pagsusugal, tulad ng Frank Stajano at Richard Clayton's Cyberdice , ay maaaring ipatupad sa Ethereum blockchain. Ang pinakasimpleng protocol sa pagsusugal ay talagang isang kontrata para sa pagkakaiba sa susunod na block hash, at ang mga mas advanced na protokol ay maaaring maitayo mula doon, lumilikha ng mga serbisyo sa pagsusugal na may halos-zero na bayarin na walang kakayahang manloko.

7. Mga merkado ng hula. Nagbigay ng isang orakulo o SchellingCoin, ang mga merkado ng hula ay madaling ipatupad din, at ang mga merkado ng hula kasama ang SchellingCoin ay maaaring patunayan na maging pangunahing pangunahing aplikasyon ng futarchy bilang isang governance protocol para sa desentralisadong mga samahan.

8. On-chain desentralisadong mga merkado, gamit ang pagkakakilanlan at sistema ng reputasyon bilang isang batayan.

Miscellanea At Mga Alalahanin

Binago ang Pagpapatupad ng GHOST

Ang "Greedy Heaviest Obsaced Subtree" (GHOST) na protokol ay isang pagbabago na unang ipinakilala nina Yonatan Sompolinsky at Aviv Zohar noong Disyembre 2013 . Ang pagganyak sa likod ng GHOST ay ang mga blockchain na may mabilis na oras ng pagkumpirma na kasalukuyang nagdurusa mula sa nabawasan na seguridad dahil sa isang mataas na lipas na rate - dahil ang mga bloke ay tumatagal ng isang tiyak na oras upang palaganapin sa pamamagitan ng network, kung ang mga minahan ng A mine ng isang bloke at pagkatapos ay ang minahan B ay nangyayari upang mina ng isa pang bloke bago ang bloke ng minero A ay lumaganap sa B, ang bloke ng minero B ay magtatapos na nasayang at hindi mag-aambag sa seguridad ng network. Bukod dito, mayroong isang isyu sa sentralisasyon: kung ang minero A ay isang mining pool na may 30% hashpower at ang B ay may 10% hashpower, ang A ay magkakaroon ng peligro na makabuo ng isang stale block 70% ng oras (mula sa iba pang 30% ng oras Ang A ay gumawa ng huling bloke at sa gayon ay makakakuha kaagad ng data ng pagmimina) samantalang ang B ay magkakaroon ng peligro na makabuo ng isang lipas na bloke na 90% ng oras. Kaya, kung ang agwat ng block ay sapat na maikli para sa stale rate na maging mataas, ang A ay higit na magiging mas mahusay sa pamamagitan lamang ng laki nito. Sa pinagsamang dalawang epektong ito, ang mga blockchain na mabilis na gumagawa ng mga bloke ay malamang na humantong sa isang mining pool na mayroong sapat na porsyento ng hashpower ng network na magkaroon ng de facto na kontrol sa proseso ng pagmimina.

Tulad ng inilarawan ng Sompolinsky at Zohar, nalulutas ng GHOST ang unang isyu ng pagkawala ng seguridad ng network sa pamamagitan ng pagsasama ng mga stale block sa pagkalkula ng kung aling kadena ang "pinakamahabang"; iyon ay upang sabihin, hindi lamang ang magulang at karagdagang mga ninuno ng isang bloke, kundi pati na rin ang mga lipas na inapo ng ninuno ng bloke (sa Ethereum jargon, "mga tiyuhin") ay idinagdag sa pagkalkula kung aling mga bloke ang may pinakamalaking kabuuang patunay ng pag-back ng trabaho ito Upang malutas ang pangalawang isyu ng bias ng sentralisasyon, lumalagpas kami sa protocol na inilarawan ng Sompolinsky at Zohar, at nagbibigay din ng mga gantimpala sa block sa stales: ang isang stale block ay tumatanggap ng 87.5% ng base reward nito, at ang pamangkin na kasama ang stale block ay natatanggap ang natitira 12.5%. Gayunpaman, ang mga bayarin sa transaksyon ay hindi iginawad sa mga tiyuhin.

Nagpapatupad ang Ethereum ng isang pinasimple na bersyon ng GHOST na bumababa lamang sa pitong antas. Partikular, tinukoy ito tulad ng sumusunod:

  • Dapat na tukuyin ng isang bloke ang isang magulang, at dapat itong tukuyin ang 0 o higit pang mga tiyuhin

  • Ang isang tiyuhin na kasama sa block B ay dapat magkaroon ng mga sumusunod na katangian:

  • Dapat itong isang direktang anak ng k-th na ninuno ng B, kung saan 2 <= k <= 7.

  • Hindi ito maaaring maging ninuno ng B

  • Ang isang tiyuhin ay dapat na isang wastong header ng block, ngunit hindi kailangang maging isang naunang na-verify o kahit na wastong bloke

  • Ang isang tiyuhin ay dapat na naiiba mula sa lahat ng mga tiyuhin na kasama sa nakaraang mga bloke at lahat ng iba pang mga tiyuhin na kasama sa parehong bloke (hindi doble-isama)

  • Para sa bawat tiyuhin U sa block B, ang nagmimina ng B ay nakakakuha ng karagdagang 3.125% na idinagdag sa gantimpalang coinbase nito at ang minero ng U ay nakakuha ng 93.75% ng isang karaniwang gantimpala ng coinbase.

Ang limitadong bersyon ng GHOST, na may mga uncles na maisasama lamang hanggang sa 7 henerasyon, ay ginamit sa dalawang kadahilanan. Una, ang walang limitasyong GHOST ay magsasama ng masyadong maraming mga komplikasyon sa pagkalkula kung aling mga tiyuhin para sa isang naibigay na bloke ang may bisa. Pangalawa, ang walang limitasyong GHOST na may kompensasyon tulad ng ginamit sa Ethereum ay nagtanggal ng insentibo para sa isang minero sa minahan sa pangunahing kadena at hindi ang kadena ng isang publiko na umaatake.

Bayarin

Sapagkat ang bawat transaksyon na nai-publish sa blockchain ay nagpapataw sa network ng gastos na kinakailangan upang i-download at i-verify ito, mayroong pangangailangan para sa ilang mekanismo ng regulasyon, karaniwang kinasasangkutan ng mga bayarin sa transaksyon, upang maiwasan ang pang-aabuso. Ang default na diskarte, ginamit sa Bitcoin, ay upang magkaroon ng pulos boluntaryong bayarin, umaasa sa mga minero upang kumilos bilang mga gatekeepers at magtakda ng mga pabagu-bagong minimum. Ang diskarte na ito ay natanggap nang kanais-nais sa pamayanan ng Bitcoin partikular dahil ito ay "batay sa merkado", na pinapayagan ang supply at demand sa pagitan ng mga minero at nagpadala ng transaksyon na matukoy ang presyo. Ang problema sa linya ng pangangatuwiran na ito ay, gayunpaman, ang pagproseso ng transaksyon ay hindi isang merkado; kahit na ito ay intuitively kaakit-akit upang ipahiwatig ang pagproseso ng transaksyon bilang isang serbisyo na inaalok ng minero sa nagpadala, sa katunayan ang bawat transaksyon na isinasama ng isang minero ay kailangang maproseso ng bawat node sa network, kaya ang karamihan sa gastos ng transaksyon ang pagpoproseso ay pinapasan ng mga third party at hindi ang minero na nagpapasya kung isasama o hindi ito. Samakatuwid, ang mga problema sa trahedya-ng-ng-commons ay malamang na mangyari.

Gayunpaman, dahil lumalabas ang kamalian na ito sa mekanismo na nakabatay sa merkado, kapag binigyan ng isang partikular na hindi tumpak na pagpapagaan ng palagay, mahiwagang kinakansela ang sarili nito. Ang argumento ay ang mga sumusunod. Ipagpalagay na:

  1. Ang isang transaksyon ay humahantong sa mga pagpapatakbo ng k, na nag-aalok ng gantimpala kR sa anumang minero na kasama dito kung saan ang R ay itinakda ng nagpadala at ang k at R ay (halos) nakikita ng minero bago pa.

  2. Ang isang operasyon ay may gastos sa pagpoproseso ng C sa anumang node (hal. Lahat ng mga node ay may pantay na kahusayan)

  3. Mayroong mga N mining node, bawat isa ay may eksaktong katumbas na kapangyarihan sa pagproseso (hal. 1 / N ng kabuuang)

  4. Walang umiiral na mga buong node na hindi nagmimina.

Ang isang minero ay handang magproseso ng isang transaksyon kung ang inaasahang gantimpala ay mas malaki kaysa sa gastos. Kaya, ang inaasahang gantimpala ay kR / N dahil ang minero ay may 1 / N na pagkakataong iproseso ang susunod na bloke, at ang gastos sa pagpoproseso para sa minero ay simpleng kC. Samakatuwid, isasama ng mga minero ang mga transaksyon kung saan kR / N> kC, o R> NC. Tandaan na ang R ay ang bayad sa bawat operasyon na ibinigay ng nagpadala, at sa gayon ay isang mas mababang obligasyon sa benepisyo na nakukuha ng nagpadala mula sa transaksyon, at ang NC ang gastos sa buong network na magkasama sa pagproseso ng isang operasyon. Samakatuwid, ang mga minero ay may insentibo na isama lamang ang mga transaksyong iyon kung saan ang kabuuang benepisyo sa paggamit ay lumalagpas sa gastos.

Gayunpaman, maraming mga mahihirap na paglihis mula sa mga pagpapalagay sa katotohanan:

  1. Ang minero ay nagbabayad ng mas mataas na gastos upang maproseso ang transaksyon kaysa sa iba pang mga node na nagpapatunay, dahil ang pagkaantala ng karagdagang oras sa pag-verify ay naantala ang paglaganap ng block at sa gayon ay nagdaragdag ng pagkakataon na ang block ay maging isang luma.

  2. Mayroong umiiral na mga hindi buong pagmimina na buong node.

  3. Ang pamamahagi ng kapangyarihan ng pagmimina ay maaaring magtapos sa radikal na inegalitarian sa pagsasanay.

  4. Ang mga speculator, kaaway ng politika at mga baliw na ang pag-andar ng utility ay nagsasama ng sanhi ng pinsala sa network na mayroon, at maaari silang matalinong mag-set up ng mga kontrata kung saan ang kanilang gastos ay mas mababa kaysa sa gastos na binayaran ng iba pang mga node na nagpapatunay.

(1) ay nagbibigay ng isang kaugaliang para sa minero na isama ang mas kaunting mga transaksyon, at (2) pagtaas ng NC; samakatuwid, ang dalawang mga epekto ng hindi bababa sa bahagyang kanselahin ang bawat isa out. Paano? (3) at (4) ang pangunahing isyu; upang malutas ang mga ito, nagsasagawa lamang kami ng isang lumulutang na takip: walang bloke ang maaaring magkaroon ng mas maraming pagpapatakbo kaysa sa BLK_LIMIT_FACTOR beses sa pangmatagalang exponential average na paglipat. Partikular:

blk.oplimit = sahig ((blk.parent.oplimit \ * (EMAFACTOR - 1) +

sahig (parent.opcount \ * BLK \ _LIMIT \ _FACTOR)) / EMA \ _FACTOR)

Ang BLK_LIMIT_FACTOR at EMA_FACTOR ay mga Constant na itatakda sa 65536 at 1.5 sa ngayon, ngunit malamang na mabago pagkatapos ng karagdagang pagsusuri.

Mayroong isa pang kadahilanan na disincentivizing ng malalaking sukat ng pag-block sa Bitcoin: ang mga bloke na malaki ay tatagal nang mas matagal upang maipalaganap, at sa gayon ay may mas mataas na posibilidad na maging mga stales. Sa Ethereum, ang mga bloke na labis na nakakakuha ng gas ay maaari ding magtagal upang maipalaganap ang pareho dahil sila ay pisikal na mas malaki at dahil mas matagal sila upang maproseso ang mga transisyon ng estado ng transaksyon upang mapatunayan. Ang pagkaantala ng disentibo na ito ay isang makabuluhang pagsasaalang-alang sa Bitcoin, ngunit mas mababa sa Ethereum dahil sa GHOST na protokol; samakatuwid, ang pag-asa sa kinokontrol na mga limitasyon ng block ay nagbibigay ng isang mas matatag na baseline.

Pagkalkula At Turing-Pagkumpleto

Ang isang mahalagang tala ay ang Ethereum virtual machine ay kumpletong Turing; nangangahulugan ito na ang EVM code ay maaaring i-encode ang anumang pagkalkula na maaaring maisip na isinasagawa, kabilang ang walang katapusang mga loop. Pinapayagan ng EVM code ang pag-loop sa dalawang paraan. Una, mayroong isang tagubilin sa JUMP na nagpapahintulot sa programa na tumalon pabalik sa isang nakaraang lugar sa code, at isang tagubilin sa JUMPI na gawin ang kondisyong paglukso, na pinapayagan ang mga pahayag tulad ng habang <<27: x = x * 2. Pangalawa, maaari ang mga kontrata tumawag sa iba pang mga kontrata, potensyal na nagpapahintulot sa looping sa pamamagitan ng recursion. Ito ay natural na humahantong sa isang problema: maaari bang i-shut down ng mga nakakahamak na gumagamit ang mga minero at buong node sa pamamagitan ng pagpwersa sa kanila na pumasok sa isang walang katapusang loop? Ang isyu ay lumitaw dahil sa isang problema sa computer science na kilala bilang pagtigil sa problema: walang paraan upang masabi, sa pangkalahatang kaso, kung ang isang naibigay na programa ay titigil o hindi.

Tulad ng inilarawan sa seksyon ng paglipat ng estado, gumagana ang aming solusyon sa pamamagitan ng paghingi ng isang transaksyon upang magtakda ng isang maximum na bilang ng mga hakbang sa computational na pinapayagan itong gawin, at kung ang pagpapatupad ng mas matagal na pagkalkula ay ibabalik ngunit binabayaran pa rin ang mga bayarin. Gumagana ang mga mensahe sa parehong paraan. Upang maipakita ang pagganyak sa likod ng aming solusyon, isaalang-alang ang mga sumusunod na halimbawa:

  • Ang isang umaatake ay lumilikha ng isang kontrata na nagpapatakbo ng isang walang katapusang loop, at pagkatapos ay nagpapadala ng isang transaksyon na nagpapagana ng loop na iyon sa minero. Mapoproseso ng minero ang transaksyon, patakbuhin ang walang katapusang loop, at hintayin itong maubusan ng gas. Kahit na ang pagpapatupad ay naubusan ng gas at huminto sa kalahati, may bisa pa rin ang transaksyon at inaangkin pa rin ng minero ang bayad mula sa umaatake para sa bawat hakbang sa computational.

  • Lumilikha ang isang magsasalakay ng isang napakahabang walang katapusan na loop na may hangarin na pilitin ang minero na panatilihin ang pag-compute para sa isang mahabang panahon na sa pagtatapos ng pagkalkula ng oras maraming mga bloke ang lalabas at hindi posible para sa minero na isama ang transaksyon upang makuha ang bayad. Gayunpaman, ang magsasalakay ay kinakailangan na magsumite ng isang halaga para sa StartGAS na naglilimita sa bilang ng mga hakbang sa computational na maaaring gawin ng pagpapatupad, kaya malalaman ng minero nang maaga na ang pagkalkula ay kukuha ng labis na bilang ng mga hakbang.

  • Ang isang umaatake ay nakakakita ng isang kontrata na may code ng ilang form tulad ng send (A, contract.storage [A]); contract.storage [A] = 0, at nagpapadala ng isang transaksyon na may sapat na gas lamang upang patakbuhin ang unang hakbang ngunit hindi ang pangalawa (ibig sabihin. paggawa ng isang pag-atras ngunit hindi pinababayaan ang balanse). Ang may-akda ng kontrata ay hindi kailangang mag-alala tungkol sa pagprotekta laban sa mga naturang pag-atake, dahil kung ang pagpapatupad ay tumitigil sa kalahati ng mga pagbabago ay maibabalik sila.

  • Gumagawa ang isang kontrata sa pananalapi sa pamamagitan ng pagkuha ng panggitna ng siyam na pagmamay-ari na mga feed ng data upang mabawasan ang panganib. Kinukuha ng isang umaatake ang isa sa mga feed ng data, na idinisenyo upang mabago sa pamamagitan ng mekanismo ng variable-address-call na inilarawan sa seksyon sa DAOs, at pinapalit ito upang magpatakbo ng isang walang katapusang loop, sa gayon ay tinatangkang pilitin ang anumang mga pagtatangka na mag-claim ng mga pondo mula sa ang kontrata sa pananalapi upang maubusan ng gas. Gayunpaman, ang kontrata sa pananalapi ay maaaring magtakda ng isang gas limit sa mensahe upang maiwasan ang problemang ito.

Ang kahalili sa pagiging kumpleto ng Turing ay ang kawalang-kumpleto ng Turing, kung saan wala ang JUMP at JUMPI at isang kopya lamang ng bawat kontrata ang pinapayagan na umiiral sa call stack sa anumang naibigay na oras. Sa sistemang ito, ang sistema ng bayad ay inilarawan at ang mga walang katiyakan sa paligid ng pagiging epektibo ng aming solusyon ay maaaring hindi kinakailangan, dahil ang gastos ng pagpapatupad ng isang kontrata ay malilimitahan sa itaas ng laki nito. Bilang karagdagan, ang Turing-incompleteness ay hindi kahit na isang malaking limitasyon; sa lahat ng mga halimbawa ng kontrata na ipinaglihi namin sa loob, hanggang ngayon isa lamang ang nangangailangan ng isang loop, at kahit ang loop na iyon ay maaaring alisin sa pamamagitan ng paggawa ng 26 na pag-uulit ng isang linya na piraso ng code. Dahil sa mga seryosong implikasyon ng Turing-pagkakumpleto, at ang limitadong benepisyo, bakit hindi lamang magkaroon ng isang hindi kumpletong wika ng Turing? Gayunpaman, sa katotohanan, ang Turing-pagiging kumpleto ay malayo mula sa isang maayos na solusyon sa problema. Upang makita kung bakit, isaalang-alang ang mga sumusunod na kontrata:

C0: tumawag (C1); tawagan (C1);

C1: tumawag (C2); tawagan (C2);

C2: tumawag (C3); tawagan (C3);

...

C49: tumawag sa (C50); tumawag sa (C50);

C50: (patakbuhin ang isang hakbang ng isang programa at itala ang pagbabago sa imbakan)

Ngayon, magpadala ng isang transaksyon sa A. Samakatuwid, sa 51 na mga transaksyon, mayroon kaming isang kontrata na tumatagal ng 250 mga hakbang sa computational. Maaaring subukang tuklasin ng mga minero ang naturang mga bomba ng lohika nang maaga sa pamamagitan ng pagpapanatili ng isang halaga sa tabi ng bawat kontrata na tumutukoy sa maximum na bilang ng mga hakbang sa computational na maaari nitong gawin, at kinakalkula ito para sa mga kontrata na tumatawag nang iba pang mga kontrata nang paulit-ulit, ngunit kakailanganin nito ang mga minero na ipagbawal ang mga kontrata na lumilikha iba pang mga kontrata (dahil ang paglikha at pagpapatupad ng lahat ng 26 mga kontrata sa itaas ay madaling mailunsad sa isang solong kontrata). Ang isa pang problemadong punto ay ang address na patlang ng isang mensahe ay isang variable, kaya sa pangkalahatan ay maaaring hindi posible na sabihin kung aling iba pang mga kontrata ang isang tinawag na kontrata ang tatawag nang maaga. Samakatuwid, lahat sa lahat, mayroon kaming isang nakakagulat na konklusyon: Ang pagsisikap sa pag-turing ay nakakagulat na madaling pamahalaan, at ang kakulangan ng Turing-pagkumpleto ay pantay nakakagulat na mahirap pamahalaan kung maliban ang eksaktong parehong mga kontrol ay nasa lugar - ngunit sa kasong iyon bakit hindi lamang hayaan ang protocol na maging Turing-kumpleto?

Pera At Paglabas

Kasama sa network ng Ethereum ang sarili nitong built-in na pera, eter, na nagsisilbi sa dalawahang layunin ng pagbibigay ng pangunahing layer ng pagkatubig upang pahintulutan ang mahusay na palitan sa pagitan ng iba't ibang uri ng mga digital na assets at, higit sa lahat, ng pagbibigay ng isang mekanismo para sa pagbabayad ng mga bayarin sa transaksyon. Para sa kaginhawaan at upang maiwasan ang pangangatwiran sa hinaharap (tingnan ang kasalukuyang debate sa mBTC / uBTC / satoshi sa Bitcoin), ang mga denominasyon ay paunang tataw na:

  • 1: wei

  • 1012: szabo

  • 1015: finney

  • 1018: eter

Dapat itong kunin bilang isang pinalawak na bersyon ng konsepto ng "dolyar" at "sentimo" o "BTC" at "satoshi". Sa malapit na hinaharap, inaasahan namin na ang "ether" ay gagamitin para sa ordinaryong mga transaksyon, "finney" para sa microtransactions at "szabo" at "wei" para sa mga teknikal na talakayan tungkol sa mga bayarin at pagpapatupad ng protocol; ang natitirang mga denominasyon ay maaaring maging kapaki-pakinabang sa paglaon at hindi dapat isama sa mga kliyente sa puntong ito.

Ang modelo ng pagpapalabas ay ang mga sumusunod:

  • Ang Ether ay ilalabas sa isang pagbebenta ng pera sa presyo na 1000-2000 eter bawat BTC, isang mekanismo na inilaan upang pondohan ang samahan ng Ethereum at magbayad para sa pagpapaunlad na ginamit ng tagumpay ng iba pang mga platform tulad ng Mastercoin at NXT. Mas maaga ang mga mamimili ay makikinabang mula sa mas malaking diskwento. Ang natanggap na BTC mula sa pagbebenta ay gagamitin nang buo upang magbayad ng suweldo at bounties sa mga developer at namuhunan sa iba't ibang mga proyektong kumikita at hindi kumikita sa ecosystem ng Ethereum at cryptocurrency.

  • 0.099x ang kabuuang halaga na nabili (60102216 ETH) ay ilalaan sa samahan upang mabayaran ang mga maagang nag-ambag at magbayad ng mga gastos na denominado ng ETH bago ang genesis block.

  • 0.099x ang kabuuang halaga na naibenta ay mapanatili bilang isang pangmatagalang reserba.

  • 0.26x ang kabuuang halaga na naibenta ay ilalaan sa mga minero bawat taon magpakailanman pagkatapos ng puntong iyon.

Pangkat

Sa paglulunsad

After 1 year

Pagkatapos ng 5 taon

Mga yunit ng pera

1.198X

1.458X

2.498X

Mga Tagabili

83.5%

68.6%

40.0%

Nagastos nang pre-sale ang reserba

8.26%

6.79%

3.96%

Nagreserba ng ginamit na post-sale

8.26%

6.79%

3.96%

Mga Minero

0%

17.8%

52.0%

Pang-matagalang Rate ng Paglago ng Supply (porsyento)

Sa kabila ng pagpapalabas ng linear na pera, tulad ng sa paglipas ng panahon ang rate ng paglago ng supply gayunpaman ay may gawi sa zero

Ang dalawang pangunahing pagpipilian sa nasa itaas na modelo ay (1) ang pagkakaroon at sukat ng isang endowment pool, at (2) ang pagkakaroon ng isang permanenteng lumalagong linear supply, taliwas sa isang capped supply tulad ng sa Bitcoin. Ang pagbibigay-katwiran sa endowment pool ay ang mga sumusunod. Kung ang endowment pool ay wala, at ang linear na pagpapalabas ay nabawasan sa 0.217x upang maibigay ang parehong rate ng inflation, kung gayon ang kabuuang dami ng ether ay magiging 16.5% na mas mababa at sa gayon ang bawat yunit ay magiging 19.8% na mas mahalaga. Samakatuwid, sa balanse na 19.8% higit pang ether ang bibilhin sa pagbebenta, kaya't ang bawat yunit ay muling magiging eksaktong kahalagahan tulad ng dati. Ang samahan ay magkakaroon din ng 1.198x ng mas maraming BTC, na maaaring maituring na nahahati sa dalawang hiwa: ang orihinal na BTC, at ang karagdagang 0.198x. Samakatuwid, ang sitwasyong ito ay eksaktong katumbas ng endowment, ngunit may isang mahalagang pagkakaiba: ang samahan ay puro BTC, at sa gayon ay hindi pinasigla upang suportahan ang halaga ng yunit ng ether.

Ang permanenteng linear na modelo ng paglaki ng supply ay binabawasan ang peligro ng kung ano ang nakikita ng ilan bilang labis na konsentrasyon ng kayamanan sa Bitcoin, at binibigyan ang mga indibidwal na naninirahan sa kasalukuyan at sa hinaharap na panahon ay isang patas na pagkakataon upang makakuha ng mga yunit ng pera, habang sa parehong oras ay nagpapanatili ng isang malakas na insentibo upang makakuha at hawakan eter dahil ang "rate ng paglago ng supply" bilang isang porsyento ay may gawi pa rin sa paglipas ng panahon. Pinatotohanang din namin na dahil ang mga barya ay palaging nawala sa paglipas ng panahon dahil sa kawalang-ingat, kamatayan, atbp, at pagkawala ng barya ay maaaring ma-modelo bilang isang porsyento ng kabuuang supply bawat taon, na ang kabuuang supply ng pera sa sirkulasyon ay sa katunayan ay tatatag sa isang halaga katumbas ng taunang pagpapalabas na hinati ng rate ng pagkawala (hal. sa rate ng pagkawala ng 1%, kapag umabot sa 26X ang suplay pagkatapos ay ang 0.26X ay mina-minahan at 0.26X nawala bawat taon, na lumilikha ng isang balanse).

Tandaan na sa hinaharap, malamang na ang Ethereum ay lilipat sa isang modelo ng proof-of-stake para sa seguridad, binabawasan ang kinakailangan ng pagpapalabas sa isang lugar sa pagitan ng zero at 0.05X bawat taon. Sa kaganapan na nawalan ng pondo ang samahan ng Ethereum o para sa anumang ibang kadahilanan na nawala, iniiwan naming buksan ang isang "kontrata sa lipunan": ang sinumang may karapatang lumikha ng isang hinaharap na bersyon ng kandidato ng Ethereum, na may tanging kundisyon na ang dami ng ether ay dapat sa halos katumbas ng 60102216 * (1.198 + 0.26 * n) kung saan ang n ang bilang ng mga taon pagkatapos ng genesis block. Ang mga tagalikha ay malayang magbenta ng marami o kung hindi man magtalaga ng ilan o lahat ng pagkakaiba sa pagitan ng pagpapalawak ng supply na hinihimok ng PoS at ang maximum na pinapayagan na paglawak ng suplay upang magbayad para sa kaunlaran. Ang mga pag-upgrade ng kandidato na hindi sumusunod sa kontrata sa lipunan ay maaaring mabigyan ng katuwiran na tinidor sa mga sumusunod na bersyon.

Nyawang

Nyawang

Sentralisasyon sa Pagmimina

Gumagana ang algorithm ng pagmimina ng Bitcoin sa pamamagitan ng pagkakaroon ng mga minero na i-compute ang SHA256 sa bahagyang nabago na mga bersyon ng block header na milyun-milyong beses nang paulit-ulit, hanggang sa kalaunan ang isang node ay may isang bersyon na ang hash ay mas mababa sa target (kasalukuyang sa paligid ng 2192). Gayunpaman, ang mining algorithm na ito ay mahina laban sa dalawang anyo ng sentralisasyon. Una, ang ecosystem ng pagmimina ay pinangungunahan ng ASICs (mga partikular na application na integrated circuit), mga computer chip na idinisenyo para sa, at samakatuwid libu-libong beses na mas mahusay sa, ang tiyak na gawain ng pagmimina ng Bitcoin. Nangangahulugan ito na ang pagmimina ng Bitcoin ay hindi na isang desentralisado at egalitaryong paghabol, na nangangailangan ng milyun-milyong dolyar na kapital upang mabisang makilahok. Pangalawa, karamihan sa mga minero ng Bitcoin ay hindi aktwal na nagsasagawa ng pag-validate ng block nang lokal; sa halip, umaasa sila sa isang sentralisadong mining pool upang maibigay ang mga block header. Ang problemang ito ay masasabing mas masahol pa: tulad ng sa oras ng pagsulat na ito, ang nangungunang tatlong mga pool ng pagmimina ay hindi direktang kontrolin ang halos 50% ng kapangyarihan sa pagproseso sa network ng Bitcoin, kahit na ito ay pinagaan ng katotohanang ang mga minero ay maaaring lumipat sa iba pang mga mining pool kung isang pool o pagtatangka ng koalisyon ng isang 51% na atake.

Ang kasalukuyang hangarin sa Ethereum ay upang gumamit ng isang algorithm ng pagmimina kung saan kinakailangan ang mga minero upang kumuha ng random na data mula sa estado, makalkula ang ilang mga random na napiling mga transaksyon mula sa huling mga bloke ng N sa blockchain, at ibalik ang hash ng resulta. Ito ay may dalawang mahahalagang benepisyo. Una, ang mga kontrata ng Ethereum ay maaaring magsama ng anumang uri ng pagkalkula, kaya't ang isang ASIC ng Ethereum ay mahalagang magiging isang ASIC para sa pangkalahatang pagkalkula - ibig sabihin. isang mas mahusay na CPU. Pangalawa, ang pagmimina ay nangangailangan ng pag-access sa buong blockchain, pinipilit ang mga minero na iimbak ang buong blockchain at kahit na may kakayahang mapatunayan ang bawat transaksyon. Tinatanggal nito ang pangangailangan para sa mga sentralisadong pool ng pagmimina; bagaman ang mga mining pool ay maaari pa ring maghatid ng lehitimong papel na ginagampanan ng gabi sa labas ng randomness ng pamamahagi ng gantimpala, ang pagpapaandar na ito ay maaaring maihatid nang pantay na rin ng peer-to-peer pool na walang sentral na kontrol.

Ang modelong ito ay hindi nasubukan, at maaaring may mga paghihirap sa pag-iwas sa ilang mga matalinong pag-optimize kapag gumagamit ng pagpapatupad ng kontrata bilang isang mining algorithm. Gayunpaman, isang kapansin-pansin na kagiliw-giliw na tampok ng algorithm na ito ay pinapayagan nito ang sinuman na "lason ang balon", sa pamamagitan ng pagpapakilala ng isang malaking bilang ng mga kontrata sa blockchain na partikular na idinisenyo upang mai-istilo ang ilang mga ASIC. Ang mga pang-ekonomiyang insentibo ay umiiral para sa mga tagagawa ng ASIC na gumamit ng gayong trick upang atake ang bawat isa. Sa gayon, ang solusyon na binuo namin ay huli isang adaptive pang-ekonomiyang solusyon ng tao kaysa sa puro isang teknikal.

Kakayahang sukatin

Ang isang karaniwang pag-aalala tungkol sa Ethereum ay ang isyu ng kakayahang sumukat. Tulad ng Bitcoin, ang Ethereum ay naghihirap mula sa pagkakamali na ang bawat transaksyon ay kailangang maproseso ng bawat node sa network. Sa Bitcoin, ang laki ng kasalukuyang blockchain ay nakasalalay sa halos 15 GB, lumalaki ng halos 1 MB bawat oras. Kung iproseso ng network ng Bitcoin ang 2000 na mga transaksyon sa Visa bawat segundo, lalago ito ng 1 MB bawat tatlong segundo (1 GB bawat oras, 8 TB bawat taon). Ang Ethereum ay malamang na magdusa ng isang katulad na pattern ng paglago, lumalala ng ang katunayan na magkakaroon ng maraming mga application sa tuktok ng Ethereum blockchain sa halip na isang pera lamang tulad ng kaso sa Bitcoin, ngunit pinahusay ng katotohanan na ang mga buong Ethereum node ay kailangang mag-imbak ang estado lamang sa halip na ang buong kasaysayan ng blockchain.

Ang problema sa tulad ng isang malaking sukat ng blockchain ay peligro ng sentralisasyon. Kung ang laki ng blockchain ay tumaas sa, sabihin nating, 100 TB, kung gayon ang malamang na sitwasyon ay ang isang napakaliit na bilang ng mga malalaking negosyo na tatakbo ng buong mga node, kasama ang lahat ng mga regular na gumagamit na gumagamit ng magaan na mga SPV node. Sa ganitong sitwasyon, lumitaw ang potensyal na pag-aalala na ang mga buong node ay maaaring magkasama at lahat ay sumasang-ayon na manloko sa ilang kumikitang paraan (hal. Baguhin ang gantimpala sa block, bigyan ang kanilang sarili ng BTC). Ang mga light node ay walang paraan ng pagtuklas nito kaagad. Siyempre, hindi bababa sa isang matapat na buong node ang malamang na umiiral, at pagkatapos ng ilang oras na impormasyon tungkol sa pandaraya ay tatakbo sa pamamagitan ng mga channel tulad ng Reddit, ngunit sa puntong iyon magiging huli na: bahala na sa mga ordinaryong gumagamit upang ayusin isang pagsisikap na mai-blacklist ang mga naibigay na bloke, isang napakalaking at malamang hindi mababagong problema sa koordinasyon sa isang katulad na sukat ng paghugot ng isang matagumpay na 51% na atake. Sa kaso ng Bitcoin, kasalukuyang problema ito, ngunit mayroong isang pagbabago sa blockchain na iminungkahi ni Peter Todd na magpapagaan sa isyung ito.

Sa malapit na term, gagamit ang Ethereum ng dalawang karagdagang diskarte upang makayanan ang problemang ito. Una, dahil sa mga algorithm sa pagmimina na nakabatay sa blockchain, hindi bababa sa bawat minero ay mapipilitang maging isang buong node, na lumilikha ng isang mas mababang nakatali sa bilang ng mga buong node. Pangalawa at higit na mahalaga, gayunpaman, magsasama kami ng isang namamagitan na ugat ng puno ng estado sa blockchain pagkatapos ng pagproseso ng bawat transaksyon. Kahit na ang pagpapatunay ng block ay sentralisado, hangga't may isang matapat na node ng pag-verify na mayroon, ang problema sa sentralisasyon ay maaaring maiwasan sa pamamagitan ng isang proteksyon sa pag-verify. Kung ang isang minero ay naglathala ng isang hindi wastong bloke, ang block na iyon ay dapat na hindi maayos na nai-format, o ang estado na S [n] ay hindi tama. Dahil ang S [0] ay kilalang wasto, dapat mayroong ilang unang estado ng S [i] na hindi tama kung saan ang S [i-1] ay tama. Ang verifying node ay magbibigay ng index i, kasama ang isang "proof of invalidity" na binubuo ng subset ng mga node ng puno ng Patricia na kailangang iproseso ang APPLY (S [i-1], TX [i]) -> S [i]. Magagamit ng mga node ang mga node ng Patricia upang patakbuhin ang bahaging iyon ng computation, at makitang ang nabuong S [i] ay hindi tumutugma sa ibinigay na S [i].

Ang isa pang, mas sopistikadong, pag-atake ay kasangkot ang mga nakakahamak na mga minero na naglalathala ng mga hindi kumpletong bloke, kaya't ang buong impormasyon ay hindi umiiral upang matukoy kung wasto ang mga bloke o hindi. Ang solusyon dito ay isang hamon-tugon na protokol: ang mga node sa pag-verify ay naglabas ng "mga hamon" sa anyo ng mga target na indeks ng transaksyon, at sa pagtanggap ng isang node isang light node ay tinatrato ang bloke bilang hindi pinagkakatiwalaan hanggang sa isa pang node, kung ang minero o ibang verifier, ay nagbibigay ng isang subset ng mga Patricia node bilang isang patunay ng bisa.

Konklusyon

Ang Ethereum protocol ay orihinal na naisip bilang isang na-upgrade na bersyon ng isang cryptocurrency, na nagbibigay ng mga advanced na tampok tulad ng on-blockchain escrow, mga limitasyon sa pag-atras, mga kontrata sa pananalapi, mga merkado ng pagsusugal at mga katulad nito sa pamamagitan ng isang lubos na pangkalahatang wika sa pagprograma. Ang Ethereum protocol ay hindi "susuportahan" ng anuman sa mga aplikasyon nang direkta, ngunit ang pagkakaroon ng isang kumpletong wika ng programa ng Turing ay nangangahulugang ang arbitraryong mga kontrata ay maaaring malikhaing teoretikal para sa anumang uri ng aplikasyon o aplikasyon. Gayunpaman, kung ano ang mas kawili-wili tungkol sa Ethereum ay ang Ethereum protocol na gumagalaw nang higit sa pera lamang. Ang mga protokol sa paligid ng desentralisadong pag-iimbak ng file, desentralisadong pagkalkula at desentralisadong merkado ng prediksyon, bukod sa dose-dosenang iba pang mga naturang konsepto, ay may potensyal na madagdagan ang kahusayan ng industriya ng computational, at magbigay ng isang napakalaking tulong sa iba pang mga peer-to-peer na mga protocol sa pamamagitan ng pagdaragdag para sa unang pagkakataon isang pang-ekonomiyang layer. Sa wakas, mayroon ding isang malaking hanay ng mga application na walang kinalaman sa pera sa lahat.

Ang konsepto ng isang di-makatwirang pagpapaandar ng paglipat ng estado tulad ng ipinatupad ng Ethereum protocol ay nagbibigay para sa isang platform na may natatanging potensyal; sa halip na isang sarado, solong-layunin na proteksyon na inilaan para sa isang tukoy na hanay ng mga aplikasyon sa pag-iimbak ng data, pagsusugal o pananalapi, ang Ethereum ay bukas na natapos ng disenyo, at naniniwala kami na ito ay lubos na nababagay sa paglilingkod bilang isang pundasyon layer para sa isang napakalaking bilang ng parehong mga pampinansyal at hindi pampinansyal na mga protokol sa mga darating na taon.

Mga Tala at Karagdagang Pagbasa

Mga tala

  1. Ang isang sopistikadong mambabasa ay maaaring mapansin na sa katunayan ang isang Bitcoin address ay ang hash ng elliptic curve public key, at hindi ang pampublikong key mismo. Gayunpaman, ito ay sa katunayan perpektong lehitimong cryptographic terminology na mag-refer sa pubkey hash bilang isang pampublikong susi mismo. Ito ay dahil ang kriptograpiya ng Bitcoin ay maaaring maituring na isang pasadyang digital signature algorithm, kung saan ang pampublikong susi ay binubuo ng hash ng ECC pubkey, ang lagda ay binubuo ng ECC pubkey na sinamahan ng lagda ng ECC, at ang verification algorithm ay nagsasangkot ng pag-check sa ECC pubkey sa lagda laban sa ECC pubkey hash na ibinigay bilang isang pampublikong susi at pagkatapos ay napatunayan ang lagda ng ECC laban sa ECC pubkey.

  2. Technically, ang panggitna ng 11 nakaraang mga bloke.

  3. Ang Ethereum protokol ay dapat na kasing simple ng praktikal, ngunit maaaring kailanganin na magkaroon ng isang mataas na antas ng pagiging kumplikado, halimbawa sa sukatan, upang gawing panloob ang mga gastos sa pag-iimbak, bandwidth at I / O, para sa seguridad, privacy, transparency, atbp. Kung saan kinakailangan ang pagiging kumplikado, ang dokumentasyon ay dapat na malinaw, maikli at napapanahon hangga't maaari, upang ang isang tao na ganap na hindi nag-aral sa Ethereum ay maaaring malaman ito at maging isang dalubhasa.

  4. Tingnan ang Yellow Paper para sa Ethereum Virtual Machine (na kapaki-pakinabang bilang isang detalye at bilang isang sanggunian para sa pagbuo ng isang client ng Ethereum mula sa simula), habang marami ring mga paksa sa Ethereum wiki , tulad ng sharding developmment, core development, dapp development , pananaliksik, Casper R&D, at mga protocol sa networking. Para sa pagsasaliksik at posibleng pagpapatupad sa hinaharap mayroong etresear.ch .

  5. Ang isa pang paraan ng pagpapahayag nito ay ang abstraction. Ang pinakabagong roadmap ay nagpaplano na i-abstract ang pagpapatupad, pinapayagan ang mga engine ng pagpapatupad na hindi kinakailangang sundin ang isang ispesipikong kanonikal, ngunit halimbawa maaari itong maiakma para sa isang tukoy na aplikasyon, pati na rin isang shard. (Ang pagkaiba ng mga makina ng pagpapatupad na ito ay hindi malinaw na nakasaad sa roadmap. Mayroon ding heterogeneous sharding, na kinonsepto ni Vlad Zamfir.)

  6. Sa panloob, ang 2 at "CHARLIE" ay parehong numero, na ang huli ay nasa big-endian base 256 na representasyon. Ang mga numero ay maaaring hindi bababa sa 0 at hindi bababa sa 2256-1.

Karagdagang Pagbasa

Sa kabutihang loob ng Ethereum Foundation
www.ethereum.org







bottom of page