develop custom_top_html:no
default debug random = 0 / type = READ / detected = READ / doc_Srl = 10469379

안녕하세요.

쌩광부입니다.

 

저의 강좌는 오랜시간의 노력과 열정의 결과물입니다.

내용이 길고 지루하더라도, 강좌 내용에 관심없으셔도 "좋아요" 한방 눌러주시면 좋겠습니다.

그럼 더 열심히 강좌를 쓸 수 있겠죠. ^^

 

지난 시간에는 지갑을 만드는 방법에 대해서 설명했었는데요.

이번 시간에는 기존 지갑을 불러오는 방법에 대하여 설명해 보도록 하겠습니다.

이번 강좌가 이해되지 않는다면 지난 강좌를 복습하는 센스가 필요하겠죠. ^^

 

#7. 지갑 불러오기

 

1. importwallet.js 파일을 수정합니다.

 

전체 소스는 아래 링크에서 확인하시고요.

https://github.com/topmining/topwallet/blob/master/src/screen/importwallet.js

 

import { View, Text, StyleSheet, AsyncStorage, TextInput, Button, Alert }

  from 'react-native';

지난 시간과 마찬가지로 StyleSheet, AsyncStorage, TextInput, Button, Alert 컨포넌트를 사용하기 위해 import를 해줍니다.

TextInput은 문자를 입력받기 위한 컨포넌트입니다.

 

import { HDNode, utils, Wallet } from 'ethers';

지갑 주소를 생성하기 위해 ethers 패키지에서 필요한 컨포넌트들을 import합니다.

 

import LoadingSpinner from 'react-native-loading-spinner-overlay';

로딩 스플레시 화면을 구현하기 위해 위 패키지를 import 합니다.

 

componentWillMount 함수를 추가합니다.

componentWillMount() {

  this.setState({

    importValue: '',

    loading: false,

    showResult: false});

}

화면이 시작할때 importValue, loading, showResult State를 설정합니다.

여기서 importValue는 입력된 값을 저장하기 위한 상태값입니다.

 

<TextInput style={styles.input} multiline={true} placeholder='프라이빗 키 또는 니모닉 단어'

  onChangeText={(text) => this.setState({importValue: text})}/>

유저가 입력한 문자값을 얻기위한 코딩입니다.

TextInput 컨포넌트에는 onChangeText Props가 있는데요.

이것은 문자가 입력되면 호출되는 함수입니다. 이 함수를 통해 어떤 문자가 입력되었는지 알 수 있겠죠. ^^

유저는 이곳에 Private Key 또는 니모닉 단어를 입력하겠죠.

 

<Button onPress={() => this.importWallet()} title="불러오기"/>

불러오기 버튼을 추가하고 눌렀을 경우 importWallet 함수를 호출합니다.

 

{this.renderImportedWallet()}

불러오기가 완료된 경우 지갑에 대한 정보를 표시합니다.

다시 한번 설명하면 위와 같이 특정 함수를 { }안에 넣게 되면 그것이 화면에 출력된다고 보시면 됩니다.

물론 함수를 사용하지 않고 바로 코딩해도 되나 소스가 복잡해지기 때문에 분리했다고 보시면 되겠네요.

renderImportedWallet 함수에서는 State에 설정된 지갑 주소가 있는 경우 State에서 지갑에 대한 내용을 가져와 출력하는 코딩이 되어 있습니다.

 

<Button onPress={() => this.saveWallet()} title="저장하기"/>

지갑을 정상적으로 불러온 경우 이것을 저장하기위해 버튼을 만들고 눌렸을 경우 saveWallet 함수를 호출하도록 지정합니다.

 

const { importValue } = this.state;

유저가 입력한 값을 가져오고요.

 

const regexp = /^[0-9a-fA-F]+$/;

이것은 Regular expression 인데요.

한글말로 하면 정규 표현식이라고 합니다.

어떤 단어들이 일정한 규칙으로 되어 있는지를 확인하기 위해 고안된 언어인데요.

입력한 값이 16진수(Hexdecimal)인지 확인하기 위해 사용합니다.

우리는 16진수로 된 Private Key를 식별할때 매우 유용합니다.

Regular expression에 대한 자세한 사항은 아래 링크를 참고하세요.

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

 

const isHex = importValue.substring(0, 2) === '0x' && importValue.length == 66

  && regexp.test(importValue.substring(2));

Private Key는 16진수이고 앞자리가 0x로 시작되고 66자리로 구성되어있습니다.

즉, 입력된 단어가 정해진 구조와 일치하면 바로 Private Key라는 거죠.

그게 아니면 니모닉 단어이고요. ^^

 

try {

  ...

} catch(error) {

  ...

}

만약 유저가 얼토당토않은 글자를 입력한 경우 에러가 발생될 수 있는데요.

에러가 발생되면 앱이 다운되기 때문에 사전에 에러를 검출하여 다운되는 것을 방지해야만 합니다.

이때 사용하는 것이 try catch 구문입니다. 이것은 자바 스크립트의 명령어인데요.

try 다음에 어떤 명령했는데 만약 에러가 나면 catch가 실행됩니다.

 

this.setState({loading: false, showResult: false});

Alert.alert(null, '잘못 입력하였습니다.', [ {text: '확인'}, ], { cancelable: true });

return;

에러가 난 경우 잘못 입력했다는 메시지와 함께 로딩을 중단 시키고 결과값을 표시하지 않도록 합니다.

그리고 함수를 중단(return)합니다. 

 

const mnemonic = isHex ? '' : importValue;

니모닉 단어가 있어야만 Private Key를 만드는데 Private Key로는 니모닉 단어를 알 수 없습니다.

그래서 유저가 Private Key를 입력한 경우 니모닉 단어는 없는 것으로 처리합니다.

 

자~~ 여기까지 설명이 완료되었고요.

나머지 부분은 이전 강좌와 모두 동일합니다.

 

마지막으로 앱을 실행해보면

 

C:\Users\YOUR_USERNAME\topwallet> react-native run-android

 

ImportWallet.png

 

네~~ 오늘도 미션 컴플리트~~!!

수고하셨습니다.

 

저의 모든 강좌를 보시려면 블로그를 방문해주세요.

https://www.ddengle.com/@TopMining


[알림: 이 게시글은 관리자에 의해 ''에서 '개발'로 이동되었습니다]
20,675
댓글 9
  • profile
    Evelynn 2018.12.09 00:51
    수고많으십니다!
  • ?
    채굴start2018 2018.12.09 02:15

    젊은시절 펄언어 사용하면서 정규표현식 열심히 익혔었는데 거의 다 까먹고 쪼매 기억나네요~

    const regexp = /^[0-9a-fA-F]+$/;

    ^(시작) [0-9a-fA-F](문자열범위) 이정도 해석되는군요.

    0부터9 소문자a부터f 대문자A부터F로 시작하는가??

    좋은 강좌 잘 보고 갑니다.

  • ?
    Up&Right 2018.12.09 06:54
    알차고 유익한 정보감사합니다.
    많은 도움되었구요.
    참고할께요
  • profile
    김재현 2018.12.09 07:56
    좋아요 꾸욱
  • profile
    young69 2018.12.09 08:06
    정보감사합니다. 즐거운 휴일 보내세요^^
  • ?
    토토짱 2018.12.09 11:34
    잘읽었습니다. 좋은 정보 감사합니다^^
  • ?
    AppA 2018.12.10 09:22
    매번 감사합니다~~~.
  • profile
    아크마DK 2018.12.10 12:26
    시간이 없어서 미뤄두고 있는데
    강좌 스크랩 했뒀다가 언제 한번 도전 해봐야 겠습니다.

    감사합니다. ^^;
  • ?
    nadana 2018.12.10 15:31
    이제 3강까지 따라했는데 ㅜㅜ... 열심히 노력해야 겠네요.
    자료 감사합니다.

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 [땡글운영위] 이사진 구성원 변경 공지 8 file 14 835
땡글운영위
2019.09.03
공지 로그인이 안되시는 분은 문의해주시기 바랍니다. 3 4 1744
땡글개발자
2019.08.21
공지 개인 정보 유출에 따른 사과문 54 file 8 3624
땡글개발자
2019.08.21
1474 개발 웹디자이너분 계신가요? 안녕하세요..... 저 혼자 하나 만들었는데 디자인 센스가 없어서 사이트가 허름하네요 ㅠㅠ 웹디자인 도와주실분 없나요???   사이트는 www.weshareluck.io 입니다.   한번 둘러보시고 도와주실분 메일이나 카톡 주세... 4 619
친절한냥이
2018.12.09
[강좌] 쌩광부의 모바일 지갑 만들기 #7. 지갑 불러오기 안녕하세요. 쌩광부입니다.   저의 강좌는 오랜시간의 노력과 열정의 결과물입니다. 내용이 길고 지루하더라도, 강좌 내용에 관심없으셔도 &quot;좋아요&quot; 한방 눌러주시면 좋겠습니다. 그럼 더 열심히 강좌를 쓸 수 있겠죠... 9 file 19 1311
쌩광부
2018.12.09
1472 질문 Truffle 관련 질문 (이더리움 Dapp 개발) 거래소 api 공부하다가 최근 이더리움 Dapp 개발에 관심을 두게 되었고 Truffle을 사용하며 공부하고 있습니다.     oraclize 테스트 코드(https://docs.oraclize.it/#ethereum-quick-start)를 써서 공부하고 있는데 ... 3 520
빗코매앤
2018.12.08
1471 개발 업비트 호가창 멈춤 (api) api로 트레이딩하는 사람입니다. 오늘 새벽 4시 30분 경에 업비트 호가창이 멈췄는데요. 호가창이 멈췄는데 그 가격을 보고 주문하면 또 체결은 정상적으로 되어 버려서 손해를 봤네요 ㅠ 이번에 저는 이더리움이랑 ... 5 871
비락식
2018.12.08
1470 질문 알트제작중 지갑오류 문제 질문...     안녕하세요...   litecoin 8.7.4 버전을 포킹하여 수정제작을 해보고있사옵니다..   월렛 gui 까지 모두 코딩이 완료되었으나..   월렛을 실행을 하게되면 out of sync로 나타나며,, 연동이안되는거같은데요   이... 7 file 499
shinpok
2018.12.05
1469 질문 이더리움 코인이안보내집니다 ㅜ           안녕하세요 이더리움 연구중입니다. 테스트넷 패리티로 블록쌓고 동기화까지잘되었습니다. 코인전송받기 테스트중인데 코인받는건 테스트넷 수도꼭지로 잘받아집니다. 받은코인을 메타마스크로 보내려고하... 5 468
피로
2018.12.05
1468 질문 소규모 사무실에서 코인 개발하고 인계하고 개발자가 연락이 안됩니다 그나마 코인러인 저에거 문의를 하길래 아는게 트레이딩 인데;;   일단 ,   비트코인 소스로 코인 개발하고, cpu마이닝 까지는 한다고 합니다. GPU마이닝 환경은 안만들어 주고요..   그래서, 탐색기 explorer 있는지... 7 1042
쿠키맨
2018.12.05
1467 개발 해킹 불가능한 거래소 idea   로그인 자체가 없고 거래소는 그냥 TV처럼 거래기록만 방송하는 겁니다 거래소 서버는 항상 off-line 으로 동작하니까 해킹 자체가 불가능! 단 문자메시지로 매도,매수주문받고 시간상0.1초라도 최초 제일 빨리 도... 18 963
내가총대멘다
2018.12.04
1466 [강좌] 이더소셜 PHP API 서버 만들기 #1. 기본 설계 안녕하세요. 쌩광부입니다.   이더소셜 PHP API 서버 만들기 강좌를 시작하도록 하겠습니다. 이번 시간에는 실제 프로그래밍에 앞서 기본적인 구조에 대해서 설명하도록 하겠습니다.      프롤로그에서 얘기한대로 저... 16 file 23 2533
쌩광부
2018.12.03
1465 개발 트레이딩 봇 만들고 있습니다. 2월쯤에 이쪽에 글올리고, 한동안 구현 못하고 있다가, 최근에 한달정도 달리고 있습니다.   오늘 낮 데이터로 백테스트해보니 이렇게 나오네요. 분봉기준이고요. 저 와중에 안잃어서.. 올려봅니다.   어제쯤해서 실... 6 file 1080
jaypark
2018.12.03
1464 개발 블록체인 개발자가 꿈인 백수입니다. 안녕하세요, 개발자를 꿈꾸는 백수입니다. 블록체인 관련 회사에 입사하고 싶고 제가 직접 코인을 개발하고 싶은데요, 저는 현재 C++를 공부중에 있습니다. 네임스페이스 부분 하고있네요..ㅋㅋ 갓난아기 태어나기전 ... 13 1 2653
railgun0
2018.12.03
1463 [강좌] 쌩광부의 모바일 지갑 만들기 #6. 니모닉 지갑 생성 안녕하세요. 쌩광부입니다.   저의 강좌는 오랜시간의 노력과 열정의 결과물입니다. 내용이 길고 지루하더라도, 강좌 내용에 관심없으셔도 &quot;좋아요&quot; 한방 눌러주시면 좋겠습니다. 그럼 더 열심히 강좌를 쓸 수 있겠죠... 11 file 17 1607
쌩광부
2018.12.02
1462 개발 이오스 기반 로또 싸이트 지난 8월에 고수님들께 이것저것 물어보았는데 드디어 완성하고 서버에 올렸습니다.   www.weshareluck.io   이오스 기반으로 만들어보았습니다. (이오스가 전송수수료가 없어서.....ㅎ)   도움 주신분들 감사합니다.... 5 920
친절한냥이
2018.12.01
1461 ProgPOW 그것이 알고싶다? 안녕하세요. 쌩광부입니다.   요즘 ProgPOW 이야기가 많이 나오고 있는데요. 도대체 ProgPOW가 뭔지 제가 좀 찾아봤습니다.   ProgPOW : A programmatic (dynamic) Proof-of-Work 프로그래밍 (동적인)  작업증명   최... 31 20 2171
쌩광부
2018.12.01
1460 [nadana]왕초보의 쌩광부님 지갑(3강) 따라하기 아~~~ 드디어 @쌩광부 님의 모바일 지갑 3강의 내용을 아래와 같이 해 냈습니다. ^^ 많은 우여곡절이 있었지만 지금까지 이것이 왜 안되었는지 함께 공유하고자 글을 올립니다.   1. 쌩광부님의 글을 그대로 복사하고... 9 file 10 643
nadana
2018.11.30
1459 질문 모네로 데몬 연동중에, 자꾸 코인이 없어집니다. 모네로 데몬을 연구 중입니다. 모네로는 빌드 할것도 없이 그냥 압축파일을 받아서 실행하는 형태로 되어있어서 편하네요.   그런데, 모네로 코인을 받으면 조금 있다가 다 사라집니다. (balance = 0) 도저히 이해가 ... 3 398
비폭력무저항
2018.11.30
1458 질문 업비트 rsi 계산 방법 질문있습니다. 현재 파이썬으로 하고 있구요    rsi를 계산해서 지정한 rsi에 알림이 오게 하려고 하는데요    rsi공식을 제가 찾을 수 있는걸로 다 사용해봤는데 다 다르더라구요      기준일 (14일)1004luciferAU(평균상승) / AD(... 2 1339
digidigi
2018.11.30
1457 개발 node js 사용 하시는분들 .. 모두 업데이트 하셨나요. ( 해킹 관련)       며칠 째 뗑글에서는 주의보가 안나오는거 같아서 제가 올리네요.    며칠전에 nodejs 패키지 사용하는쪽에서 많이 쓰이는 모듈에 코인 해킹 모듈이 들어가있다고 주의보가 떳습니다.    저 같은 경우 vuejs 로 ... 2 file 2 2753
진주
2018.11.29
1456 스케일링 문제를 비탈릭에게만 맡길 수 없다! 암호화폐 가격이 어디가 바닥인지 모르게 계속 하락하고 있으니 과연, 이게 다시 상승장으로 돌아설 날이 있을까 걱정하는 분들이 많습니다. 한편으로 이런 걱정은 블록체인이나 암호화폐를 제대로 하는 활용한 킬러... 18 file 23 1715
atomrigs
2018.11.28
1455 질문 프라이빗 블록체인 개발 업체인데.. 큰일이 생겼습니다 구매 해주시는 업체 담당자님께서 좀 추천도 다른 곳에 해주시고   저희껏도 결정적으로 판매할 수 있게 도와주셨는데   따로 인사를 살짝 말씀하시는거 같습니다(흘리시긴했지만)   이런 경우엔 어찌..해야되나요? ... 8 1147
딥러닝은개뿔
2018.11.27
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 85 Next
/ 85

개인 정보 유출에 따른 안내

개인정보 유출에 따른 사과문

https://www.ddengle.com/board_free/11420106

8월20일 땡글 해킹사고 경과 보고

https://www.ddengle.com/board_free/11420345

로그인이 안되시는 분

https://www.ddengle.com/board_free/11420465
8월18일~20일 해커에 의해 땡글 사이트에서 땡글 회원님들의 아이디 및 비밀번호가 유출되고 있음을 발견하였습니다.
더이상 피해가 발생하지 않도록 조치된 상태이나 일부 사용자의 개인정보가 유출되었으며, 해커는 추가적으로 사용자 정보를 불법적으로 공개하겠다고 합니다.
  • 최근에 접속한 사용자의 경우 ID와 비번이 유출되었을 가능성이 높습니다. 최대 비번을 꼭 바꿔주시기 바랍니다. (특히 8월부터 8월21일까지)
  • 최근에 접속하지 않은 사용자의 경우에도 해커는 사용자 정보를 입수하여 그 일부 정보를 불법적으로 공개하였습니다.
  • 해커에 의한 사용자 도용을 방지하고자, 최근 수개월간 비번 변경을 하지 않은 약 1만8천명의 사용자를 이용정지시켰습니다.
이 글을 보시는 땡글 유저분은 자신이 계정이 정지된 상태라면 [email protected] 혹은 [email protected] 으로 메일주셔서 자신임을 간단히 인증하여 다시 계정을 활성화시키는 해킹 안내메일을 받으시기 바라며, 혹은 기존 계정 삭제 요청을 해주시기 바랍니다.
Close