한국어
뉴스

이더리움 가상 머신

슈퍼스테이커 2021.07.29 13:33 조회 수 : 274 추천:3

Qtum의 디자인에 대한 시리즈의 2부에 다시 오신 것을 환영합니다. 이전 부분에서, 우리는 비트 코인에 의해 옹호 UTXO 모델에 대해 이야기했다. 오늘, 우리는 방정식의 이더리움의 측면을 보고있을 것입니다 - 이더리움 가상 머신.

 

 

이더리움 가상 머신이란?

 

Java에서 개발자가 코드를 작성하고 바이트코드로 컴파일하는 예제로 Java를 살펴보겠습니다. 그런 다음 이러한 바이트 코드는 Java 가상 머신(JVM)에 로드되고 JVM에서 실행됩니다. JVM 사양은 다양한 구현에서 프로그램의 상호 운용성을 보장합니다. 이더리움은 개발자가 솔리티에서 스마트 계약을 코딩하는 유사한 접근 방식을 취합니다. 이러한 계약은 바이트코드로 변환되고 다양한 하드웨어 플랫폼에서 실행되는 EVM(이더리움 가상 머신)에서 실행하기 위해 블록 체인에 업로드됩니다.

 

이더리움 가상 머신은 "준 튜링" 완전 기계입니다. 튜링 완전 기계는 수학적으로 주어진 문제를 해결할 수 있습니다. 그렇다면 왜 이더리움 가상 머신은 준 튜링이 완성된 것으로 만 볼 수 있을까요? 그 이유는 기계가 수행하는 계산이 가스에 의해 제한되기 때문에 기계가 수행할 수 있는 계산 수에 관해서는 안전 한계역할을 합니다.

 

우리는 이더리움 가상 머신이 이더리움 생태계의 중심에 있다고 이전에 언급했습니다. 그것은 배포 및 스마트 계약의 실행을 처리합니다. 간단한 트랜잭션EVM의 참여가 필요하지 않습니다. 그러나 다른 작업에는 EVM의 상태 업데이트가 필요합니다. 이더리움 가상 머신에는 수백만 개의 실행 가능한 개체가 포함되어 있으며 각 개체는 데이터 저장소를 가지고 있습니다.

 

이더리움 가상 머신은 스택 기반 아키텍처를 사용하여 메모리 내 값을 스택에 저장합니다. 모든 작업은 EVM 코드 또는 바이트코드에 정의된 대로 수행됩니다. 또한 다음과 같은 여러 데이터 구성 요소가 있습니다.

 

● 불변프로그램 코드 ROM, ROM은 실행해야 하는 계약의 바이트 코드가 로드됩니다.

 

● 0으로 초기화된 휘발성 메모리

 

● 영구 저장, 이더리움 상태의 일부.

 

EVM과 기존 기술 비교

 

이더리움 가상 머신은 상대적으로 제한된 운영 범위를 가지고 있습니다. 계산 및 스토리지의 추상화를 제공하는 계산 엔진으로만 작용하는 Java 가상 머신과 유사합니다. Java 가상 머신은 기본 운영 체제의 불가지론적 환경을 제공하기 때문에 여러 시스템에서 호환성을 지원합니다.

 

EVM도 마찬가지로 기능을 통해 더 높은 수준의 스마트 계약 프로그래밍 언어가 컴파일되는 바이트코드 명령 세트를 실행합니다. 실행 순서는 외부에서 구성되므로 EVM에는 일정 기능이 없습니다. 이더리움 클라이언트는 스마트 계약의 실행 순서를 결정합니다. 이더리움 가상 머신에는 시스템 인터페이스나 물리적 기계가 전혀 없습니다.

 

이더리움 가상 머신의 작동 방식 이해

 

이더리움 가상 머신은 이더리움 노드 내에 내장된 샌드박스 가상 스택으로 정의할 수 있습니다. 이더리움 가상 머신의 주요 기능은 개발자가 dApps를 만들고 스마트 계약을 실행할 수 있도록 하는 것입니다. 이제 개발자로서의 사전 경험이 필요 하거나 EVM을 사용 하려면 광범위 한 코딩 배경. 강력하고 값비싼 하드웨어의 필요성을 없애어 초보자에게 완벽합니다.

 

이더리움 가상 머신의 계약은 솔리티, 비퍼 와 같은 언어로 작성된 다음 EVM 바이트코드로 컴파일됩니다. 이렇게 하면 코드가 네트워크에서 완전히 격리될 수 있습니다. 네트워크의 각 노드는 EVM 인스턴스를 실행하여 명령 실행에 동의할 수 있습니다.

 

이더리움 가상 머신을 사용하면 개발자가 신뢰할 수 없는 환경에서 코드를 만들고 실행할 수 있습니다. EVM에서 구현되는 각 명령은 시스템에 의해 추적됩니다. 시스템은 명령의 실행 비용을 추적합니다. 그런 다음 관련 가스 비용을 지시에 할당합니다. 계약 또는 거래를 시작하려면 사용자가 가스 비용을 지불하기에 충분한 이더를 제공해야 합니다.

 

Gas는 EVM에 대한 두 가지 문제를 해결하고, 유효성 검사기는 실행에 실패하더라도 선불 금액을 받고, 실행은 선불 금액이 허용하는 것보다 더 오래 실행되지 않습니다. 네트워크에 전송된 각 트랜잭션에 대해 유효성 검사기는 다음을 확인해야 합니다.

 

● 트랜잭션에 관한 모든 정보는 유효해야 합니다.

 

● EVM은 예외로 실행되지 않습니다.

 

● 보낸 사람은 실행을 위해 지불 할 충분한 자금이 필요합니다.

 

이더리움의 상태 전환 기능

 

이더리움은 입력을 제공하는 수학적 함수역할을 하며 출력을 생성합니다. 아래 기능을 살펴보십시오.

 

Y(S, T)= S'

 

이전 상태 S와 명령 세트 T는 이더리움 상태 함수 Y(S, T)가 새 출력 S'를 생성한다는 것을 의미합니다.

 

 

이더리움의 맥락에서, 상태는 "수정 된 머클 패트리샤 트리"로 알려진 데이터 구조입니다. 머클 패트리샤 트리의 역할은 무엇입니까? 임의 길이 바이너리 데이터를 매핑하는 암호화인증된 영구 데이터 구조를 제공합니다. 256비트 이진 조각과 임의 길이 바이너리 데이터 간에 매핑할 수 있는 변경 가능한 데이터 구조입니다. 이더리움의 유일한 요구 사항은 머클 트리의 유일한 요구 사항은 주어진 키 값 쌍 집합을 식별하는 데 사용할 수 있는 32바이트 값을 제공하는 것입니다.

 

이더리움 세계 국가는 최상위 수준에 자리잡고 있으며, 이더리움 주소를 계정에 매핑합니다. 각 주소는 에테르 잔액, nonce, 계정 저장소 및 계정 프로그램 코드로 구성된 계정을 나타냅니다. 스마트 계약 코드가 실행되면 EVM에 현재 블록 및 트랜잭션 정보가 표시됩니다. 계약 계정의 코드가 프로그램 코드 ROM에 로드되고 프로그램 카운터가 0으로 설정됩니다. 저장소도 계약 계정 저장소에서 로드되며 메모리도 0으로 설정됩니다.

 

거래란?

 

이더리움은 일반 계정(또는 외부 소유 계정)과 계약 계정의 두 가지 유형을 사용합니다. 일반 계정은 개인 키를 사용하여 ETH 를 결제할 수 있습니다. 계약 계좌는 계약 생성을 초래하는 메시지 통화 및 트랜잭션에 대한 책임이 있습니다.

 

EVM 지침이란 무엇입니까?

 

이더리움 가상 머신의 깊이는 1,025개, 각 항목은 256비트 단어입니다. EVM이 트랜잭션을 실행하면 일시적인 메모리(단어 주소가 있는 바이트 배열)를 유지 관리합니다. 이 메모리는 트랜잭션 간에 지속되지 않습니다. 컴파일된 스마트 계약은 EVM opcodes로 실행됩니다. 이러한 작업은 AND, XOR, ADD, SUB 등과 같은 스택 작업을 수행할 수 있습니다. 또한 EVM은 BALANCE, 주소, BLOCKHASH 등과 같은 특정 스택 작업을 구현할 수 있습니다.

 

가스 및 EVM

 

한 계정에서 다른 계정으로의 트랜잭션에는 페이로드라고도 하는 이더 또는 이진 데이터가 포함됩니다. 중앙 기관은 없으며 계약은 이더리움 노드에서 실행됩니다. 이것은 여러 복잡한 계약을 만들어 네트워크를 느리게 악의적 인 행위자의 위험을 제공합니다. 이러한 공격으로부터 네트워크를 보호하기 위해 opcodes에는 트랜잭션 실행 비용을 지불하는 데 사용되는 기본 가스 비용이 있습니다. Gas는 운영에 필요한 작업을 제한합니다. 트랜잭션이 실행되면 가스가 사용됩니다.

 

OPCODE KECCAK256의예를 들면, 단어당 6가스의 동적 가스 비용으로 30의 기본 가스 비용이 있음을 알 수 있습니다. 계산 비용이 많이 드는 지침은 간단한 지침보다 더 높은 수수료를 부과합니다. 그러나 상태 크기를 줄이는 지침이 실행되는 경우에도 가스를 환불받을 수 있습니다. 저장 값이 0으로 설정된 경우 15,000개의 가스가 환불되고 자폭 성 opcode를 사용하는 경우 24,000개의 가스가 환불됩니다.

 

Opcodes란 무엇입니까?

 

이제 우리가 예를 보았으니 우리는 opcodes를 이해할 수 있습니다. Opcodes는 이더리움 가상 머신이 매우 구체적인 작업을 수행하는 데 도움이 됩니다. opcodes는 이더리움 가상 머신이 튜링이 완료될 수 있도록 하는 것입니다. 쓰기 시 EVM은 150개 가 넘는 opcodes를 실행할 수 있으며, 이 코드는 다음과 같이 나눌 수 있습니다. opcodes에 대한 포괄적인 설명은 이더리움 옐로우 페이퍼에서 확인할 수 있습니다.

 

● 비교 및 비트 로직 작업

 

● 정지 및 산술 작업

 

● SHA3

 

● 차단 정보

 

● 환경 정보

 

● 스택, 메모리, 저장 및 흐름 작업

 

● 중복 작업

 

● 푸시 작업

 

● 로깅 작업

 

● 교환 운영

 

● 시스템 운영

 

바이트 코드

 

바이트코드는 Opcodes를 효율적으로 저장할 때 EVM에 매우 중요합니다. 각 opcode에는 바이트가 할당됩니다. 바이트코드를 더 잘 이해하는 예를 살펴보겠습니다.

 
위의 그림에서 시작 의 지시는 push 1로 변환되는 0x60. 이렇게 하면 데이터가 1바이트 길이이며 다음 바이트를 스택에 추가할 수 있습니다. 이제 스택은 1개의 항목으로 구성됩니다. 다음으로, 우리는 0x01 PUSH 명령이라는 것을 알고 있습니다. 필요한 다음 명령은 동일한 데이터를 가진 또 다른 0x60. 이제 스택은 두 개의 동일한 항목으로 구성됩니다. 마지막 명령, 0x01, 추가로 변환> 이것은 스택에서 항목을 모두 걸릴 스택에 그 합계를 밀어 것입니다. 이제 스택에는 0x02 하나의 항목만 포함되어 있습니다.
 
바이트 코드를 디컴파일하는 방법
 
여러 프로젝트가 계약 을 해체하는 데 도움이 되는 프로그램을 만들려고 합니다. 이러한 프로젝트의 몇 가지 예는 eveem.org ethervm.io. 그러나 이러한 프로그램을 사용하는 동안에도 최적화로 인해 원래 계약의 조각이 거의 항상 손실됩니다. 그러나 함수 이름은 서명과 함수 및 이벤트 이름이 포함된 데이터 집합과 비교하여 무차별 적인 힘을 통해 계속 표시될 수 있습니다.
 
보관
 
이더리움 가상 머신은 256비트 스택을 사용하여 16개의 최신 항목에 동시에 액세스할 수 있습니다. 스택은 총 1,024개의 항목을 보유할 수 있습니다. 이러한 제한은 심각하게 제한되며 opcodes는 계약 메모리를 사용하여 데이터를 전달하게 됩니다. 계약이 실행되면 메모리가 저장되지 않습니다.
 
데이터를 영구적으로 저장하는 방법은 "저장소"를 사용하여 계약 실행에 액세스할 수 있도록 하는 한 가지 방법입니다. 계약 스토리지란 무엇입니까? 트랜잭션을 계약으로 보내지 않고 외부적으로 값을 읽을 수 있는 공개적으로 사용할 수 있는 데이터베이스입니다. 그러나 저장소에 쓰는 것은 메모리에 쓰는 것과 비교하여 비용이 많이 듭니다.
 
자폭
 
자폭은 블록체인에서 코드를 제거하는 데 사용되는 견고성의 작업입니다. 그러나, 코드는 EVM의 역사에 남아 있을 수 있으며 확실히 체인의 역사에 남아 있을 것입니다. 자폭 작업이 실행되면 코드와 저장소가 모두 상태에서 제거됩니다.
 
스마트 계약 수립
 
이더리움의 스마트 계약은 솔리티(Solidity)라는 프로그래밍 언어로 작성되었습니다. 프로그래밍 언어로서 솔리티는 자바스크립트 및 C++와 같은 다른 언어와 유사합니다. 비퍼와 대나무와 같은 스마트 계약을 작성하는 데 사용되는 다른 언어가 있습니다. 이더리움 가상 머신은 솔리티에서 직접 작성된 스마트 계약을 실행할 수 없습니다. 대신, 그들은 opcodes로 조립됩니다.
견고성에 기록 된 스마트 계약의 예
 
스마트 계약을 작성하는 방법에 대한 간단한 예를 살펴보겠습니다. 가족과 몇 가지를 구입하기 위해 스마트 계약을 작성할 수 있다고 가정해 봅시다. 스마트 계약에 포함해야 할 몇 가지 사항이 있습니다.
 
● 첫째, 당신과 당신의 가족은 개별 계정을 만들어야합니다.
 
● 각 회원은 자신의 계좌에서 지주 계좌로 돈을 입금합니다.
 
● 각 회원은 아무도 보유 계좌에서 돈을 꺼낼 수 없다는 데 동의합니다.
 
● 모든 회원이 디지털 서명을 제공하는 경우에만 보유 계정에서 돈을 인출 할 수 있습니다.
 
집을 위한 식료품 을 구입하는 다른 스마트 계약을 만들고 싶다면 어떻게해야합니까? 식료품, 소모품을 구입해야 하는 매장, 배달해야 하는 장소에 대한 예산을 지정해야 합니다. 이러한 스마트 계약은 다음을 지정해야 합니다.
 
● 식료품 주간 예산
 
● 식료품을 구입해야 하는 매장 또는 주소
 
● 식료품배달을 원하는 주소
 
스마트 계약 배포
 
스마트 계약을 배포하는 과정을 살펴보겠습니다. 스마트 계약을 배포해야 하는 경우 트랜잭션이 만들어집니다. 그러나 트랜잭션에는 "to" 주소가 없습니다. 바이트코드는 입력 데이터로 추가되고 생성자 역할을 합니다. 초기 변수를 저장소에 작성하려면 생성자가 필요합니다. 계약이 배포되면 바이트코드는 한 번만 실행되고 런타임 바이트코드는 모든 계약 호출에서 실행됩니다.
 
바이트코드는 다음과 같은 것으로 나눌 수 있습니다.
 
● 생성자
 
● 런타임
 
● 메타데이터
 
결국, 군단 해시는 견고성에 의해 생성되며 런타임 바이트코드에 포함됩니다. 군단은 분산 스토리지 플랫폼이자 콘텐츠 분산 서비스입니다. 군단은 위치에 연결할 수 없기 때문에 이더리움 가상 머신의 opcode로 볼 수 없습니다.
결론
 
이더리움 가상 머신은 이더리움과 인터페이스의 기반이며, 수백만 개의 실행 가능한 프로젝트를 포함하는 분산형 컴퓨터 역할을 합니다. EVM은 기능 실행과 스마트 계약 배포의 핵심입니다. 이를 통해 사용자는 여러 가지 추가 기능을 사용하여 분산 원장에 문제가 발생하지 않도록 합니다.
 
마지막으로, 다음 부분에서 일을 끝내자. 3부에서는 UTXO와 EVM이 Qtum과 어떻게 어울리는지 볼 수 있습니다.
 
번호 제목 글쓴이 날짜 조회 수
649 8월 커뮤니티 및 개발 업데이트 슈퍼스테이커 2021.09.12 178
648 슈퍼 스테이커 풀 슈퍼스테이커 2021.08.26 356
647 반감기까지 100일 [1] 슈퍼스테이커 2021.08.25 521
646 qtum의 RSS 피드 Crypto.com 가격 페이지와 통합 슈퍼스테이커 2021.08.14 350
645 Qtum Decentral Discord Relaunch [1] 슈퍼스테이커 2021.08.14 287
644 7월 커뮤니티 및 개발 업데이트 슈퍼스테이커 2021.08.07 407
643 2021/08/04 트위터 file 슈퍼스테이커 2021.08.04 361
642 2021/08/02 트위터 file 슈퍼스테이커 2021.08.03 195
» 이더리움 가상 머신 슈퍼스테이커 2021.07.29 274
640 Qtum이 DeFi 구축에 더 나은 이유 file 슈퍼스테이커 2021.07.20 328
639 Qtum 체인 재단 2021년 2분기 지출 슈퍼스테이커 2021.07.10 256
638 6 월 커뮤니티 및 개발 업데이트 슈퍼스테이커 2021.07.07 204
637 Qtum — 왜 깨지지 않은 것을 고쳐야합니까? [2] 슈퍼스테이커 2021.06.29 557
636 2021/06/27 트위터(100만블록) file 슈퍼스테이커 2021.06.27 305
635 2021/06/23 트위터 [2] file 슈퍼스테이커 2021.06.23 288
634 Qtum First Halving : 2021 년 12 월 1 일 [3] 슈퍼스테이커 2021.06.12 851
633 2021/06/10 트위터(NFT) [1] 슈퍼스테이커 2021.06.10 437
632 stake-a-thon 업데이트 슈퍼스테이커 2021.06.10 187
631 패스트레인으로: 블록 시간 단축 — 6부 슈퍼스테이커 2021.06.05 228
630 Qtum 5 월 커뮤니티 및 개발 업데이트 슈퍼스테이커 2021.06.04 259

퀀텀 뉴스

포인트랭킹

순위 닉네임 포인트
1위 title: 스텔라쿵 캐리커쳐 #1타이어 3670295점
2위 title: 퀀텀아이콘빵먹는곰돌이 3380950점
3위 불꽃 3145650점
4위 배방패피 3095050점
5위 title: 스텔라쿵 캐리커쳐 #1미스릴 2954191점
6위 title: 퀀텀아이콘봄이 2868000점
7위 일타쌍피3 2853267점
8위 대바기 2728150점
9위 밀키웨이 2698050점
10위 무상무심 2666950점