Ethereum Instruktaż:
Na tym blogu z samouczkiem Ethereum wyjaśnię wewnętrzne działanie architektury ethereum, a także pokażę implementację ethereum za pomocą prostego inteligentny kontrakt .
Postrzegam Ethereum jako programowalny łańcuch bloków, który w przyszłości będzie służył większości przedsiębiorstw B2C. Ethereum zapewnia programistom swobodę tworzenia złożonych modeli do wykonania w łańcuchu bloków, zamiast ograniczać je do wstępnie zdefiniowanych operacji, takich jak łańcuch bloków Bitcoin.
Dzięki takiemu podejściu Ethereum przekształciło się w platformę dla wielu zdecentralizowanych aplikacji i organizacji, które obejmują, ale nie ograniczają się do kryptowalut.
Omówię różnorodne tematy w wyczerpujący sposób w ramach tego bloga „Ethereum Tutorial”. Te tematy obejmują:
Możesz przejść przez to nagranie samouczka Ethereum, w którym nasi instruktorzy szczegółowo wyjaśnili tematy które pomogą Ci lepiej zrozumieć tę koncepcję.
Samouczek Ethereum | Inteligentne kontrakty Ethereum | Edureka
Samouczek Ethereum: Konta Ethereum
Sieć Ethereum ma dwa rodzaje kont, a mianowicie:
- Konta zewnętrzne
- Konta kontraktowe
Konta te, zarówno zewnętrzne, jak i kontraktowe, nazywane są „obiektami stanu” i obejmują „stan” sieci ethereum. Każdy obiekt stanu ma dobrze zdefiniowany stan. W przypadku kont zewnętrznych stan obejmuje saldo konta, podczas gdy dla kont kontraktowych stan jest określany przez pamięć i saldo.
Będę nazywać kontami zewnętrznymi po prostu kontami. Konta te są własnością, są reprezentowane przez zewnętrznych agentów sieci, do których należą zwykli użytkownicy, górnicy, zautomatyzowani agenci itp.
Te konta są generalnie kontrolowane za pomocą algorytmów kryptografii klucza publicznego, takich jak RSA. Głównym celem kont zewnętrznych jest służenie użytkownikom jako medium do interakcji z Ethereum Blockchain.
Z drugiej strony konta kontraktowe to zbiór kodu, który znajduje się w łańcuchu bloków pod określonym adresem. Umowy te są wywoływane przez konta zewnętrzne lub przez inne umowy za pośrednictwem określonej funkcji wezwania do działania. Umowy te są napisane w językach skryptowych wysokiego poziomu, takich jak Solidity, Serpent lub LLL. Każda umowa, która znajduje się w łańcuchu bloków ethereum, jest przechowywana w określonym formacie zwanym kodem bajtowym EVM (Ethereum Virtual Machine), który jest formatem binarnym specyficznym dla ethereum.
To będzie sprawiedliwe, że wyjaśnię EVM teraz, kiedy już powiedziałem ci o kodzie bajtowym EVM.
Samouczek Ethereum: Maszyna wirtualna Ethereum
Ethereum w rustykalny sposób definiuje zestaw uogólnionych protokołów, które stały się filarami rozwoju zdecentralizowanych aplikacji. Sercem tego jest maszyna wirtualna Ethereum. Poniższy rysunek wyjaśnia architekturę:
kiedy używać tego w java
Należy zauważyć, że maszyna wirtualna Ethereum jest nie tylko całkowicie piaskownica, ale także całkowicie izolowana. Oznacza to, że kod, który aktualnie działa na EVM nie ma dostępu do sieci ani systemu plików i może oszczędnie uzyskiwać dostęp do innych umów.
Teraz, gdy już rozumiemy sedno platformy, przyjrzyjmy się bliżej węzłom sieci.
Samouczek Ethereum: Sieć Ethereum
Sieć ethereum to publiczna sieć blockchain. Stanowi podstawę wszystkich zdecentralizowanych aplikacji i organizacji peer-to-peer działających w sieci. Sieć składa się z dwóch typów węzłów, a mianowicie pełnych węzłów i lekkich węzłów.
Pełne węzły zawierają całą historię transakcji od momentu powstania bloku genezy. Są pełnoprawnym dowodem integralności sieci blockchain. Pełne węzły muszą zawierać każdą transakcję, która została zweryfikowana zgodnie z regułami określonymi w specyfikacjach Ethereum.
Węzły lekkie z drugiej strony zawierają tylko podzbiór całego łańcucha bloków. Tego typu węzły są najczęściej używane w e-portfelach, które muszą być lekkie i dlatego nie można na nich przechowywać całego łańcucha blokowego. W przeciwieństwie do tego węzły te nie weryfikują każdego bloku lub transakcji i mogą nie mieć kopii bieżącego stanu łańcucha bloków. Opierają się na pełnych węzłach, aby zapewnić im brakujące szczegóły (lub po prostu brakuje im określonej funkcjonalności). Zaletą lekkich węzłów jest to, że mogą one szybciej rozpocząć pracę, mogą działać na urządzeniach o większej mocy obliczeniowej / ograniczonej pamięci i nie zajmują prawie tyle miejsca.
Każdy publiczny blockchain ma przypisaną walutę. Ethereum nie jest inne. Przyjrzyjmy się głębiej kryptowalutom Ethereum.
Samouczek Ethereum: Eter i gaz
Ether to nazwa kryptowaluty używanej do płacenia za transakcje w sieci Ethereum. Oprócz płacenia za ogólne transakcje i usługi, Ether jest również używany do kupowania gazu, który z kolei służy do płacenia za obliczenia w EVM.
Eter jest jednostką metryczną i ma wiele nominałów, które pomagają dokładnie płacić za transakcje i gaz. Najmniejszy nominał, czyli jednostka podstawowa, nazywa się Wei. Nominały wraz z ich konkretnymi nazwami można zobaczyć w poniższej tabeli:
Jednostki | Wei Value | Wei |
wei | 1 wei | jeden |
Kwei | 1e3 wei | 1000 |
Mwei | 1e6 wei | 1000000 |
Robić na drutach | 1e9 wei | 1 000 000 000 |
microEther | 1e12 wei | 1 000 000 000 000 |
milliEther | 1e15 wei | 1 000 000 000 000 000 |
Eter | 1e18 wei | 1 000 000 000 000 000 000 |
Jak wspomniano wcześniej, wiemy, że EVM jest odpowiedzialny za uruchamianie kodu, który jest wdrażany w jego sieci. Więc co powstrzymuje kogoś przed uruchomieniem nieskończonej pętli na EVM i całkowitym przeciążeniem jego pamięci? W tym miejscu pojawia się koncepcja gazu.
Gaz jest używany jako miara płacenia za zasoby obliczeniowe w sieci. Każda umowa w sieci ma ustaloną maksymalną ilość gazu, którą może wykorzystać do swoich obliczeń. Jest to znane jako „ Limit gazu „Inne powiązane terminy związane z gazami są następujące:
- Cena gazu : To jest koszt gazu wyrażony w żetonach, takich jak eter i inne jego nominały. Aby ustabilizować wartość gazu, Cena Gazu jest wartością zmienną, tak że w przypadku wahań ceny tokenów lub waluty Cena Gazu zmienia się, aby zachować tę samą wartość rzeczywistą.
- Opłata za gaz : Jest to faktycznie ilość gazu, jaką należy zapłacić, aby uruchomić określoną transakcję lub program (zwany kontraktem).
W związku z tym, jeśli ktoś spróbuje uruchomić fragment kodu, który działa w nieskończoność, umowa ostatecznie przekroczy limit gazu, a cała transakcja, która wywołała kontrakt, zostanie przywrócona do poprzedniego stanu.
Teraz, gdy wiemy już o walucie, przyjrzyjmy się procesowi, który generuje nową walutę.
Samouczek Ethereum: Górnictwo
Ethereum, podobnie jak inne publiczne technologie blockchain, zapewnia bezpieczeństwo poprzez model motywacyjny. Nazywa się to mechanizmem proof-of-work. Poniższy rysunek pokazuje, jak działa wydobywanie ethereum:
Z bardziej technicznego punktu widzenia użyty algorytm proof-of-work nazywa się Ethash, który jest algorytmem haszującym inspirowanym algorytmem Dagger-Hashimoto.
Teraz, gdy widzieliśmy już działającą architekturę ethereum i omówiliśmy jej podstawowe elementy, przyjrzyjmy się rzeczywistemu problemowi i podejściu ethereum do rozwiązania tego samego.
Samouczek Ethereum: Przypadek użycia zdecentralizowanego finansowania tłumu
Stwierdzenie problemu : Dobry „pomysł” to nie wszystko w dzisiejszym świecie, aby rozpocząć udany biznes. Wdrożenie pomysłu wymaga dużego nakładu środków i wysiłku. W tym miejscu pojawiają się organizacje takie jak „Kickstarter”. Zapewniają projektom publiczną ekspozycję potrzebną do darowizn na rzecz ich projektu, aby go uruchomić, ale scentralizowana architektura takiego motywu ma swoje wady, głównie w sposobie obsługi nagród. Ponieważ scentralizowany organ podejmuje wszystkie decyzje, systemy podlegają takim regułom, jak:
- każdy, kto przekroczył termin kampanii, nie może już się przyłączyć
- żaden dawca, który zmienił zdanie, nie może wyjść
Podejście :
Przyjmujemy zdecentralizowaną metodologię, aby rozwiązać problem, jak wyjaśniono na poniższym obrazku:
Rozwiązanie :
Oto inteligentny kontrakt dotyczący solidności dla powyższego stwierdzenia problemu.
pragma solidity ^ 0.4.16 token interfejsu {przeniesienie funkcji (adres odbiorcy, kwota uint)} kontrakt Crowdsale {adres beneficjent publiczny uint finansowanie publiczne Cel uint kwota publicznaRaised uint publiczny termin uint public price token token publiczny Mapowanie nagrody (address => uint256) public balanceOf bool financeGoalReached = false bool crowdsaleClosed = false event GoalReached (address recipient, uint totalAmountRaised) event FundTransfer (address backer, uint amount, bool isContribution) / ** * Constrctor function * * Setup the owner * / function Crowdsale (address ifSuccessfulSendTo // the address właściciela, gdy finansowanie się powiedzie uint financeGoalInEthers // docelowa kwota podniesienia czasu trwania uint durationInMinutes // podany czas uint etherCostOfEachToken // koszt kapitału własnego w adresie eter addressOfTokenUsedAsReward // adres tokena) {beneficjent = ifSuccessfulSendTo financeGoal = finance etherGoalInEthers teraz + czas trwania w minutach * 1 minuta cena = etherCostOfEachToken * 1 eter do kenReward = token (addressOfTokenUsedAsReward)} / ** * Funkcja rezerwowa * * Funkcja bez nazwy jest domyślną funkcją, która jest wywoływana za każdym razem, gdy ktoś wysyła środki na kontrakt * / function () payable {require (! crowdsaleClosed) uint amount = msg. value balanceOf [msg.sender] + = amount amountRaised + = amount tokenReward.transfer (msg.sender, amount / price) FundTransfer (msg.sender, amount, true)} modyfikator afterDeadline () {if (now = financeGoal) {financeGoalReached = true GoalReached (beneficjent, amountRaised)} crowdsaleClosed = true} / ** * Wypłać środki * * Sprawdza, czy cel lub limit czasu został osiągnięty, a jeśli tak, i cel finansowania został osiągnięty, * wysyła całą kwotę beneficjentowi. Jeśli cel nie został osiągnięty, każdy ofiarodawca może wypłacić * kwotę, którą wpłacił. * / function safeWithdrawal () afterDeadline {if (! financeGoalReached) {uint amount = balanceOf [msg.sender] balanceOf [msg.sender] = 0 if (amount> 0) {if (msg.sender.send (amount)) { FundTransfer (msg.sender, amount, false)} else {balanceOf [msg.sender] = amount}}} if (financeGoalReached && beneficiary == msg.sender) {if (beneficiary.send (amountRaised)) {FundTransfer (beneficiary, amountRaised, false)} else {// Jeśli nie uda nam się wysłać środków do beneficjenta, odblokuj saldo fundatorów funduszeGoalReached = false}}}}
Jeśli chcesz nauczyć się solidności, zajrzyj na nasz blog , który jest używany do programowaniaspersonalizowaneinteligentne kontrakty.
Jeśli chcesz nauczyć się Blockchain i zbudować karierę w technologiach Blockchain, sprawdź nasze który obejmuje szkolenie na żywo prowadzone przez instruktora i rzeczywiste doświadczenie projektowe. To szkolenie pomoże ci dogłębnie zrozumieć Blockchain i osiągnąć mistrzostwo w tym temacie.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy a my skontaktujemy się z Tobą tak szybko, jak to możliwe.