오래간만에 제 블로그에 포스팅합니다. 다음은 얼마전에 땡글에 포스팅 이더리움 지갑깔기 안내입니다.
------
코인을 주고 받거나 이후 스마트 컨트랙을 사용하기 위해서는 반드시 지갑이 있어야 합니다.
지금까지 코어프로그램의 개발에 집중되어 있었기 때문에 일반인들이 사용할 수 있는 그래픽환경의 지갑프로그램은 상대적으로 개발이 늦어졌습니다.
지금소개하는 버전 (0.5.1 베타 9) 역시 아직 베타버전이며, 이번 농가버전에 발 맞추어서 기본기능만 넣어서 출시한 것입니다.
다음주에 하드포크가 성공적으로 끝난후 여러가지 추가적인 기능이 업데이트된 0.6 버전이 출시될 것입니다.
이전 버전을 쓰던 사람은 반드시 새 버전으로 업데이트해야 하드포크이후 싱크가 계속 이루어질 수 있습니다.
이더리움 GUI 지갑은 일명 Mist 라고도 불리며, 이더리움 브라우저라고도 불리웁니다. 이 프로그램은 블럭체인을 직접 관리하는 보다 하위레벨의 프로그램인 eth(c++ 버전)와 geth (go 버전) 를 기반으로 해서 그 위에서 사용자에게 보다 편리한 그래픽 인터페이스를 제공하려는 목적으로 만들어졌습니다.
이더리움 지갑 패키지안에는 해당 버전에 상응하는 eth 와 geth 를 포함하고 있고, 이더리움 지갑을 실행하면 자동으로 geth 를 백그라운드로 돌리게 되어 있습니다. 물론 지갑에서 geth 를 돌리지 않고 별도로 geth 를 실행시킬 수 있으며, 만일 geth 가 이미 작동중이면 이더리움 지갑은 이미 작동중인 geth를 사용하게 됩니다.
eth 와 geth는 기본적으로 같은 기능을 하지만, 개발된 언어가 다른 이더리움의 블럭체인을 관리하는 코어 프로그램입니다. 공식적으로는 geth 가 표준입니다. 다만 마이닝에는 eth 의 c++ 패키지 (지금은 web3라고 부릅니다) 에 포함된 ethminer를 씁니다.
자 그럼 이제 본격적으로 지갑을 인스톨해봅시다. 윈도우를 기준으로 설명합니다.
(1) 일단 최신 버전을 다운받아 봅시다.
거기서 가장 최근 버전중 자신의 윈도우에 맞는 버전을 다운로드합니다.
현재 윈도우 버전은 Ethereum-Wallet-win64-0-5-1.zip 입니다. 하지만 이보다 더 상위버전이 있을시 그 버전을 다운받습니다.
(2) 적당한 디렉토리에 압축을 풀고
Ethereum-Wallet,exe
를 실행합니다.
다음과 같은 화면이 뜨면서 geth 노드를 백그라운드로 실행합니다. 이 때 peer 를 찾는데, 여기서 시간이 너무 걸려서 못찾으면, 시스템 시간이 자동으로 인터넷 타임서버에 싱크되고 있는지 확인하기 바랍니다.
(4)
성공적으로 노드가 실행되면 환영 화면으로 넘어갑니다.
테스트넷을 선택하지 말고 'Start Using Ethereum" 을 선택합니다.
(5) 이더리움 프리세일에 참가해서 받은 파일이 없으면 스킵합니다.
(6) 패스워드를 설정합니다.
이 패스워들 잃어버리면 영원히 코인을 회복할 수 없습니다. 반드시 종이에 적어서 별도의 장소에 보관하세요. 나중에 패스워드 잃어버렸다는 포스팅을 다시는 보지 않기를 바랍니다.
(6) 지갑에서 이더를 비트코인주고 바로 살 수 있는데, 안 사봐서 좋은 가격에 사지는지 잘모르겠음.
그냥 패스...
(7) 기본 셋팅이 끝나고 나면 블럭체인을 다운받고 싱크해야 하는데, 주변에 빠른 peer 들이 있으면 2 시간안에 싱크가 끝날 수도 있고, 하루이상이 걸릴 수도 있습니다. 만일 너무 오랜시간동안 다운 받은 블럭수가 늘어나지 않거나 peer 수가 0 이면 프로그램을 껃다가 재시작해보기 바랍니다.
(8) 체인이 싱크되지 않은 상태에서 재시작하면 다음과 같이 싱크가 계속 이루어지고 있다는 것을 보여줍니다.
(9) 싱크가 완료되고 블럭을 데이타베이스에 제대로 입력되면 지갑화면이 로딩됩니다.
지갑 메뉴에서 Accounts--> Backup --> Account 를 누르면 다음의 디렉토리가 열립니다.
keystore 라는 곳에 암호화된 각 주소별 프라이빗 키가 보관되어 있습니다. 이 폴더 전체를 별도의 USB 스틱에 복사하고 안전한 장소에 보관하세요.
절대 생략하면 안됩니다. 암호와 마찬가지로 이 프라이빗키가 컴퓨터 고장등으로 분실되면, 코인은 영구히 복구할 수 없습니다.
지금까지 거의 모든 다른 코인지갑 출시 때 마다 항상 패스워드나 프라이빗 키를 잃어 버려서 고생하는 사람들을 봐왔습니다.
만일 새로운 주소를 지갑에 더하면 이 주소에 해당하는 키가 새로 생성되어 keystore 에 보관됩니다. 따라서 백업도 새로 받아야 합니다.
(10) 각 메뉴들을 눌러보고 확인보세요. 뭐가 있는지 한번쯤 둘러 보십시요.
현재 Geth 1.3.5 (첫번째 농가버전) 이 백그라운드로 돌고 있다는게 나옵니다.
네트워크은 메인 네트워크에 물려 있는지 확인합니다. 테스트 네트워크에 물려놓고 다른데서 이 지갑주소로 코인보내면 못 받습니다.
(11) 코인 주고 받기는 더 이상 설명이 필요없을 만큼 단순명쾌합니다. 직접 해보세요.
(12) 컨트랙 사용방법은 별도의 포스팅에서 다루겠습니다.
(13) 지난번 포스팅에서 미리 geth를 다운받아서 블럭체인을 싱크하라고 말씀드렸는데, 이렇게 미리 싱크해놓았다면 지갑이 별도의 싱크없이 바로 시작될 겁니다.
(14) 별도로 geth를 다운 받지 않았더라도, geth.exe 가 지갑 패키지 하위디렉토리에 있습니다.
resources > node 에 있습니다. 평소에 지갑을 실행해 놓고 있지 않더라도,
콘솔에서 그냥
geth console
이라고 치세요. 그럼 geth가 돌면서 블럭체인은 계속 싱크됩니다. 또한 console 입력을 제공하기 때문에, gui 프로그램을 돌리지 않고도 사용가능하며, 더 많은 기능들을 직접 실행시킬 수 있습니다. 여기에 대해서도 다음 기회에.
(15) 다른 웹사이트 등에서 만든 지갑주소를 옮겨 오기 위해서는, 그 사이트에서 프라이빗 키를 암호화되지 않은 상태로 다운받아서
geth import 키파일 이름
하면 지갑으로 가져 올 수 있습니다. 만일 다른 컴퓨터에 있는 이더리움 지갑 (geth, mist) 이 생성한 암호화된 프라이빗 키가 있으면 그냥 이 키 파일을 (9)에서 이야기 한 keystore에 카피해서 넣어놓으면 자동으로 인식됩니다.
(16) geth 를 사용해 솔로 마이닝하는 것에 대해서도 별도 포스팅을 하겠습니다.
(17) 메뉴에 Developer > Toggle Developer Tool 이 있는데, 브라우저에서 자바스크립 코딩해본 사람이면 이게 뭔지 딱 감히 잡힐 겁니다.
여기서 이더리움의 기본적인 모든 객체들을 전부 자바스크립으로 엑세스 가능하게 되어 있습니다. Dapp 개발할때 아주 요긴하게 씁니다.
(18) 이더리움을 처음 접하면, 뭔가 프로그램들이 왜 그리 많은지 대단히 복잡해보이고, 각각의 쓰임이 어떻게 다른지 가능하기도 매우 힘듭니다.
그 이유중의 하나는 이더리움의 처음부터 여러가지 개발언어를 동시에 지원하겠다는 포부에서 출발했기 때문입니다.
메인 언어만 3가지입니다. C++, Go, Python 여기다 Java 나 Javascript 버전도 있고, 비슷비슷한 기능들이 각 언어별로 구현되어 있습니다.
처음에는 C++ 이 가장 앞서나갔는데, 현재는 Go 버전이 표준입니다. Python 은 스크립팅하기가 좋아서 주로 프로토타입구성과 테스트용이 현재 가장 많이 쓰는 용도이고 비탈릭이 제일 좋아하는 언어입니다., C++ 는 역시 성능이 가장 뛰어나서, 마이닝은 C++ 버전의 ethminer 를 씁니다. 그런데 C++ 최고 개발자가 올 1월에 떠났습니다. 무슨 사연인지는 ... 자바스크립은 프론트 쪽 Dapp 개발의 필수품이고 이것만으로 거의 대부분의 기능구현이 됩니다.
=============
위의 예제에 사용된 제 이더리움 지갑주소입니다. 테스트로 이더 보내셔도 됩니다. ㅋㅋㅋ 돌려 드린다는 보장은 없습니다.
0x2d19FDE5B4Cac4e1AfA54ee749C368C68c18316c
======
업데이트
오늘 보니까 이 지갑에 어느 분인가가 이더를 보내오셨더군요. 감사합니다.
그런데 지갑내에 트랜잭션 히스토리 보는 페이지를 못찾겠군요. 결국 외부 사이트에서 조회했습니다.