이더 리움 튜토리얼 – 이더 리움에 대해 자세히 살펴보기!



이 이더 리움 튜토리얼은 아키텍처 관점에서 이더 리움을 설명하고 DAPPS 및 DAO 구축을위한 최고의 플랫폼을 구성하는 방법을 설명합니다.

이더 리움 지도 시간:

이 Ethereum Tutorial 블로그에서는 이더 리움 아키텍처의 내부 작업에 대해 설명하고 간단한 방법을 통해 이더 리움 구현을 보여줄 것입니다. 스마트 계약 .

자바에서 관계가 있습니다.

이더 리움은 미래에 B2C 기업의 대다수를 지원할 프로그래밍 가능한 블록 체인으로 생각합니다. 이더 리움은 개발자에게 비트 코인 블록 체인과 같은 사전 정의 된 작업으로 제한하는 대신 블록 체인에서 실행할 복잡한 모델을 생성 할 수있는 자유를 부여합니다.





이 접근 방식을 통해 Ethereum은 암호화 통화를 포함하지만 이에 국한되지 않는 과다한 분산 응용 프로그램 및 조직을위한 플랫폼으로 전환되었습니다.

이 'Ethereum Tutorial'블로그를 통해 다양한 주제를 철저하게 다루겠습니다. 이러한 주제는 다음과 같습니다.



강사가 주제에 대해 자세히 설명했던 이더 리움 튜토리얼의이 기록을 살펴볼 수 있습니다. 이 개념을 더 잘 이해하는 데 도움이됩니다.

이더 리움 튜토리얼 | 이더 리움 스마트 계약 | Edureka

이더 리움 튜토리얼 : 이더 리움 계정

이더 리움 네트워크에는 두 가지 유형의 계정이 있습니다.



  • 외부 계정
  • 계약 계정

이러한 계정은 외부 및 계약 모두 '상태 개체'라고하며 이더 리움 네트워크의 '상태'를 구성합니다. 모든 상태 개체에는 잘 정의 된 상태가 있습니다. 외부 계정의 경우 상태는 계정 잔액으로 구성되고 계약 계정의 경우 상태는 메모리 저장소 및 잔액으로 정의됩니다.

간단히 외부 계정을 계정이라고하겠습니다. 이러한 계정은 모든 일반 사용자, 채굴 자, 자동화 에이전트 등을 포함하는 네트워크의 외부 에이전트가 소유합니다.

이러한 계정은 일반적으로 RSA와 같은 공개 키 암호화 알고리즘의 도움으로 제어됩니다. 외부 계정의 주요 목적은 사용자가 이더 리움 블록 체인과 상호 작용할 수있는 매체 역할을하는 것입니다.

반면 계약 계정은 특정 주소의 블록 체인에 상주하는 코드 모음입니다. 이러한 계약은 외부 계정 또는 특정 클릭 유도 문안 기능을 통해 다른 계약에 의해 호출됩니다. 이러한 계약은 Solidity, Serpent 또는 LLL과 같은 고급 스크립팅 언어로 작성됩니다. 이더 리움 블록 체인에 상주하는 모든 계약은 이더 리움 특정 바이너리 형식 인 EVM (Ethereum Virtual Machine) 바이트 코드라는 특정 형식으로 저장됩니다.

EVM 바이트 코드에 대해 말씀 드렸으니 이제 EVM을 설명하는 것이 공정 할 것입니다.

이더 리움 튜토리얼 : 이더 리움 가상 머신

이더 리움은 소박한 방식으로 탈 중앙화 애플리케이션 개발의 기둥이 된 일련의 일반화 된 프로토콜을 정의합니다. 그 중심에는 이더 리움 가상 머신이 있습니다. 아래 그림은 아키텍처를 설명합니다.

이더 리움 아키텍처-이더 리움 튜토리얼-Edureka

Ethereum 가상 머신은 완전히 샌드 박스 화 될뿐만 아니라 완전히 격리되어 있다는 점에 유의해야합니다. 이는 현재 EVM에서 실행중인 코드가 네트워크 또는 파일 시스템에 액세스 할 수 없으며 다른 계약에 드물게 액세스 할 수 있음을 의미합니다.

이제 플랫폼의 핵심을 이해 했으므로 네트워크 노드에 대해 자세히 살펴 보겠습니다.

이더 리움 튜토리얼 : 이더 리움 네트워크

이더 리움 네트워크는 퍼블릭 블록 체인 네트워크입니다. 이는 네트워크에서 실행되는 모든 분산 형 P2P 애플리케이션 및 조직의 기반을 형성합니다. 네트워크는 풀 노드와 경량 노드의 두 가지 유형의 노드로 구성됩니다.

전체 노드 제네시스 블록 이후의 전체 거래 내역을 포함합니다. 블록 체인 네트워크의 무결성에 대한 본격적인 증거입니다. 풀 노드는 Ethereum의 사양에 설정된 규칙에 따라 검증 된 모든 트랜잭션을 포함해야합니다.

경량 노드 반면에 전체 블록 체인의 하위 집합 만 포함합니다. 이러한 유형의 노드는 본질적으로 가벼워 야하는 전자 지갑에서 주로 사용되므로 전체 블록 체인을 저장할 수 없습니다. 대조적으로 이러한 노드는 모든 블록 또는 트랜잭션을 확인하지 않으며 현재 블록 체인 상태의 사본이 없을 수 있습니다. 전체 노드에 의존하여 누락 된 세부 정보를 제공합니다 (또는 단순히 특정 기능이 부족함). 라이트 노드의 장점은 훨씬 더 빠르게 시작하고 실행할 수 있고, 더 많은 계산 / 메모리 제약 장치에서 실행할 수 있으며, 스토리지를 거의 소모하지 않는다는 것입니다.

모든 퍼블릭 블록 체인에는 통화가 연결되어 있습니다. 이더 리움도 다르지 않습니다. Ethereum의 암호 화폐에 대해 자세히 살펴 보겠습니다.

이더 리움 튜토리얼 : 이더와 가스

Ether는 이더 리움 네트워크에서 거래 비용을 지불하는 데 사용되는 암호 화폐의 이름입니다. 일반 거래 및 서비스 비용을 지불하는 것 외에도 Ether는 Gas를 구매하는 데 사용되며 EVM 내에서 계산 비용을 지불하는 데 사용됩니다.

이더는 미터법 단위이며 거래 및 가스 비용을 정확하게 지불하는 데 도움이되는 많은 액면가를 가지고 있습니다. 가장 작은 교단 일명 기본 단위는 Wei입니다. 특정 이름과 함께 교단은 아래 표에서 볼 수 있습니다.

단위웨이 가치웨이
웨이1 웨이하나
Kwei1e3 웨이1,000
Mwei1e6 웨이1,000,000
뜨다1e9 웨이1,000,000,000
마이크로 에테르1e12 wei1,000,000,000,000
밀리 에테르1e15 웨이1,000,000,000,000,000
에테르1e18 웨이1,000,000,000,000,000,000

앞서 논의했듯이 EVM이 네트워크에 배포 된 코드를 실행하는 역할을한다는 것을 알고 있습니다. 그렇다면 누군가가 EVM에서 무한 루프를 실행하고 메모리를 완전히 과부하하는 것을 막는 것은 무엇입니까? 이것이 가스의 개념이 들어오는 곳입니다.

가스는 네트워크에서 계산 리소스에 대한 비용을 지불하기위한 지표로 사용됩니다. 네트워크의 모든 계약에는 계산에 사용할 수있는 설정된 최대 가스량이 있습니다. 이것은 ' 가스 한도 ”기타 관련 가스 용어는 다음과 같습니다.

  • 가스 가격 : 이것은 Ether 및 기타 교단과 같은 토큰 측면에서 가스 비용입니다. 가스의 가치를 안정화하기 위해 가스 가격은 토큰이나 통화의 비용이 변동 할 경우 가스 가격이 동일한 실제 가치를 유지하도록 변경되는 부동 가치입니다.
  • 가스 요금 : 이것은 특정 거래 또는 프로그램 (계약이라고 함)을 실행하기 위해 지불해야하는 가스의 양입니다.

따라서 누군가가 영원히 실행되는 코드를 실행하려고하면 결국 계약이 가스 한도를 초과하고 계약을 호출 한 전체 트랜잭션이 이전 상태로 롤백됩니다.


이제 통화에 대해 알았으므로 새 통화를 생성하는 프로세스를 살펴 보겠습니다.

이더 리움 튜토리얼 : 채굴

이더 리움은 다른 퍼블릭 블록 체인 기술과 마찬가지로 인센티브 기반 모델을 통해 보안을 보장합니다. 이를 작업 증명 메커니즘이라고합니다. 아래 그림은 이더 리움 채굴이 작동하는 방식을 보여줍니다.

보다 기술적 인 관점에서 사용되는 작업 증명 알고리즘은 Ethash라고 불리며 Dagger-Hashimoto 알고리즘에서 영감을받은 해싱 알고리즘입니다.

이제 우리는 이더 리움의 작동 아키텍처를보고 그것이 필수적인 요소에 대해 논의 했으므로 실제 문제와이를 해결하기위한 이더 리움 접근 방식을 살펴 보겠습니다.

이더 리움 튜토리얼 : 분산 형 크라우드 펀딩 사용 사례

문제 설명 : 오늘날 세상에서 좋은 '아이디어'는 성공적인 비즈니스를 시작하기위한 모든 것이 아닙니다. 아이디어를 구현하려면 많은 자금과 노력이 필요합니다. 여기에서 'Kickstarter'와 같은 조직이 등장합니다. 그들은 프로젝트를 실행하기 위해 프로젝트에 대한 기부에 필요한 공공 노출을 프로젝트에 제공하지만 이러한 동기의 중앙 집중식 아키텍처에는 주로 보상이 처리되는 방식에 단점이 있습니다. 중앙 집중식 기관이 모든 결정을 내리기 때문에 시스템은 다음과 같은 규칙을 따르기 쉽습니다.

  • 캠페인 마감일을 놓친 사람은 더 이상 입장 할 수 없습니다.
  • 마음을 바꾼 기증자는 나갈 수 없습니다.

접근하다 :

아래 그림에 설명 된대로 문제를 해결하기 위해 분산 된 방법론을 사용합니다.

해결책 :

다음은 위의 문제 진술에 대한 견고성 스마트 계약입니다.

pragma solidity ^ 0.4.16 interface token {function transfer (address receiver, uint amount)} contract Crowdsale {address public beneficiary uint public fundGoal uint public amount Raised uint public deadline uint public price token public token 보상 매핑 (address => uint256) public balanceOf bool fundingGoalReached = false bool crowdsaleClosed = false 이벤트 GoalReached (address recipient, uint totalAmountRaised) event FundTransfer (address backer, uint amount, bool isContribution) / ** * Constrctor function * * Setup the owner * / function Crowdsale (address ifSuccessfulSendTo // the address 펀딩이 성공할 때 소유자의 금액 uint fundGoalInEthers // 목표 금액 uint durationInMinutes // 주어진 시간 uint etherCostOfEachToken // 이더 주소의 자기 자본 비용 addressOfTokenUsedAsReward // 토큰 주소) {beneficiary = ifSuccessfulSendTo fundGoal = financeGoalInEthers * 1 ether deadline = now + durationInMinutes * 1 분 가격 = etherCostOfEachToken * 1 ether to kenReward = token (addressOfTokenUsedAsReward)} / ** * Fallback function * * 이름이없는 함수는 누구나 계약에 자금을 보낼 때마다 호출되는 기본 함수입니다. * / function () payable {require (! crowdsaleClosed) uint amount = msg. value balanceOf [msg.sender] + = amountRaised + = amount tokenReward.transfer (msg.sender, amount / price) FundTransfer (msg.sender, amount, true)} modifier afterDeadline () {if (now = financeGoal) {financeGoalReached = true GoalReached (beneficiary, amountRaised)} crowdsaleClosed = true} / ** * 자금 인출 * * 목표 또는 시간 제한에 도달했는지 확인하고, 목표 또는 시간 제한에 도달했는지 확인하고, 목표 또는 시간 제한에 도달했는지 확인하고, 자금 목표에 도달하면 * 전체 금액을 보냅니다. 수혜자에게. 목표에 도달하지 못한 경우 각 기부자는 기부 한 금액을 * 인출 할 수 있습니다. * / function safeWithdrawal () afterDeadline {if (! fundingGoalReached) {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 (fundingGoalReached && beneficiary == msg.sender) {if (beneficiary.send (amountRaised)) {FundTransfer (수혜자, amountRaised, false)} else {// 수혜자에게 자금을 보내지 못한 경우 자금 조달 자 잔액 잠금 해제 fundGoalReached = false}}}}

견고 함을 배우고 싶다면 저희 블로그를 확인하세요. , 개발에 사용됩니다.개인화스마트 계약.

Blockchain을 배우고 Blockchain Technologies에서 경력을 쌓으려면 다음을 확인하십시오. 강사 주도의 라이브 교육 및 실제 프로젝트 경험과 함께 제공됩니다. 이 교육은 블록 체인을 심도있게 이해하고 주제에 대한 숙달을 달성하는 데 도움이됩니다.

질문이 있으십니까? 댓글 섹션에서 언급하십시오 가능한 한 빨리 연락 드리겠습니다.