IT 프로그래밍/블록체인

[블록체인] 메타마스크, 가나슈 트러플, EVM , 암호화폐알기

잉휴 2021. 10. 12. 14:24

메타마스크(이더리움 지갑)

NFT는 암호화폐(비트 코인, 이더리움 등)로 거래를 진행한다. 당연히 암호화폐를 가지고 있어야 하는데, 그 화폐를 어디에 저장 해 둘 것인가? 그 저장소가 바로 암호화폐 지갑이다. 암호화폐 지갑은 메타마스크.

구성요소는, <MetaMask Docs>, Common Terms

1. wallet(지갑)

2. account(계정)= 자산을 "hold"하고 있는 프라이빗 keypair(public+private).

이더리움 account로 username (public) and password (private)으로 구성.

3. address(public key) = account(계정)으로 자산을 보내기 위해 쓰이는 주소 

  • Example: 0x06A85356DCb5b307096726FB86A78c59D38e08ee

4. public key

5. private key (자신의 계정으로부터 자산을 외부로 보낼때 필요)

6. Keystore File

이하 생략

 

Ganache + Truffle

Ganache >

가나슈는 테스트 목적으로 PC에 설치해서 사용할 수 있는 개인용 "간이 블록체인"이다. 

네트워크와 연결할 필요없이 로컬에서 작동시킬 수 있어, 계약을 손쉽게 배포 및 테스트해볼 수 있다. 

테스트를 위해 100개의 이더가 미리 탑재된 10개의 테스트 계정을 확보하게 된다

보통 배포 자체는 지갑 클라이언트를 사용하거나 트러플(Truffle)을 이용해 컴파일과 테스트를 거친 후 연동되어있는 이더리움 노드(e.g. Geth, Parity)를 통해 직접 배포하곤한다. 

 

지갑 클라이언트 만들기 - 해시넷

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요. 또한, 직접 작성했거나 퍼블릭 도메

wiki.hash.kr

Truffle >

트러플(Truffle)은 이더리움 기반 디앱을 쉽게 개발할 수 있도록 도와주는 블록체인 프레임워크이다. 스마트 컨트랙트(smart contract) 컴파일, 배포, 관리, 테스트까지 빠르고 쉽게 할 수 있다.

기존 개발 환경이 언어(자바) + 프레임워크(스프링) + 서버(톰캣)이란 한 예시를 들 수 있다.

이더리움 개발 환경은 언어(솔리디티) + 프레임워크(truffle) + 서버(이더리움, 테스트 시 ganache)라고 할 수 있다.

크립토키티

디앱(DApp) 또는 이란 Decentralized Application의 약자로서, 이더리움, 큐텀, 이오스 같은 플랫폼 코인 위에서 작동하는 탈중앙화 분산 애플리케이션을 말한다. 대표적인 예로 <크립토키티>(Cryptokitties)가 있다. 크립토키티를 이용하려면 메타마스크(이더리움 지갑)을 만들고 실행할 때마다 인증해야 한다. 디앱은 SW보다는 HW로 보아 배포 전 정밀한 검사를 요구한다. 

 

 

EVM (Ethereum Virtual Machine)

  • 동의어: 이더리움 가상머신
  • 성격: 블록체인
  • 전체적인 구현방식: 이더리움을 EVM이라는 블록체인에서 실행 환경을 구현
  • 개발방법: 개발자는 자바스크립트 및 파이썬과 같은 프로그래밍 언어를 사용하여, 이더리움 가상머신 위에서 실행되는 응용 프로그램을 만들 수 있다.
  • 구조: 네트워크에 참여하는 모든 노드는 '블록 검증 프로토콜'의 일부로 이더리움 가상머신을 실행한다. 
  • 네트워크 내 모든 노드는 이더리움 가상머신을 구동하는 것이다. 
  • 모든 노드는 이더리움 가상머신을 사용해 스마트 계약을 가리키는 모든 트랜잭션을 실행하므로 모든 노드는 동일한 계산을 수행하며 같은 값을 저장한다. 이렇게 이더리움 가상머신(EVM)을 통해 모든 노드들의 컴퓨터에서 동일한 연산을 수행함으로 동일한 상태(state)에 합의한다.

 

스마트 계약에 기반한 DApp은 모두 EVM환경에서 동작한다

과정: 

  1. 솔리디티언어로 작성
  2. solc로 컴파일해 생성된 이더이룸 바이트 코드는 geth를 통해 블록체인에 등록된다
  3. 이 바이트코드는 EVM에서 실행된다  

geth와 이더리움 가상머신은 하나의 프로세스로 동작하고, 솔리디티로 작성된 스마트 계약은 이더리움 가상머신에서 동작하기 때문에 특정 운영체제에 종속되지 않는다.

 

트랜잭션 >

이더리움에서 트랜잭션(transation)이라는 용어는 외부 소유 계정에서 블록체인의 다른 계정으로 보낼 메시지를 저장하는 서명된 데이터 패키지를 나타내기 위해 사용한다. 트랜잭션은 다음 사항을 포함한다.

  1. 메시지 수신자
  2. 발신자를 확인할 수 있는 서명
  3. 전송할 이더의 양
  4. 계약서로 전송된 메시지를 포함할 수 있는 선택적 데이터 필드
  5. 트랜잭션 실행을 위해 허용되는 최대 연산 단계 개수(가스 한도)
  6. 트랜잭션 발신자가 각 연산 단계를 위해 지불하는 비용(가스 가격)

가스(gas)는 이더리움 블록체인에서 이루어지는 모든 작업에 대해 코인을 보내는 사람이 지불해야 하는 수수료이다.

 

스마트 계약 > 

구성요소

1. 트랜잭션 로그가 저장된 DB

2. 스마트 컨트랙트(상태 변경 가능한 app)의 상태를 저장한 DB

3. 인터페이스

 a. Transaction - contract 상태를 변경

 b. Query - 읽기/ 조회

 

가스 수수료 > 

스마트 계약이 실행될 때 들어가는 수수료 개념이다. 

 

채굴>

이더리움의 작업증명(PoW)인 이더해시(Ethhash)로 채굴할 수 있다. (기존 비트코인은 SHA-256을 쓴다)

합의 알고리즘이란 P2P네트워크와 같이 시간차가 있는 네트워크에서 여러 참가자들이 "단일한 결과에 대한 합의" 를 얻기 위한 알고리즘이다. 

이더해시 작업증명 알고리즘을 사용하면 컴퓨터 메모리가 부족하기 때문에 각 GPU에 적어도 1GB 이상의 (RAM)이 필요하다. 2GB는 일년 내내 계속 채굴을 진행하는 데 적절한 근사치이다.

(추가적으로, 이더해시 방식은 무분별한 채굴로 탈중앙화의 가치를 잃어버릴 수도 있게 만드는, 51%공격이 가능한 에이식(ASIC)채굴기를 쓰는데 어렵게 설계되어있어 적합하다. 대그(DAG)라는 프로세스를 실행해야하는데 그 시간만 10분이 소요되기 때문이다. (10분이 지나면 Geth가 자동으로 채굴을 시작한다)

이더리움은 ASIC채굴기가 아닌 GPU채굴기로 채굴해왔다. 그래픽카드를 대량 구매하여 병렬로 연결하고 전기를 꽂아주면 된다. 

알고리즘: PoW -> PoS(지분증명) 를 바뀔예정

채굴기: GPU

 

 

암호화폐 >

해시(hash)암호화 기술로 만든 전자화폐(가상화폐)이다. 탈중앙화와 더불어 신뢰성, 안정성을 보장하는 디지털 화폐.

 

 

모든 자료는 해시넷 참고.