김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing
레이블이 Blockchain인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Blockchain인 게시물을 표시합니다. 모든 게시물 표시

2022년 11월 23일 수요일

[NFT 동향 분석] 메타젤리스

 SecureKim     오후 11:30     Blockchain, Klaytn, Market, metazellys, NFT     No comments   



현재 클레이튼 기준 오픈씨 1일, 7일, 30일 기준 계속 1위 중


대표자는 조현진님으로, 삼성 물산 출신이고 포블게이트 공동 대표인것으로 보인다. 

(그러고보니 포블게이트 이철이 대표님과는 블록체인 교육쪽으로 인연이 있다.)


특징 : 2차 창작 가능 라이센싱 가능

올 7월에 이더리움으로 옮긴다는 투표가 찬성으로 마무리 되었는데, 

찾아보니 실제로 이더 진영에도 있었다.


혜택 : 테슬라 등 전기자동차에서 즐길 수 있는 게임 제공

국내 유명 호텔 숙박, 항공권 제공

아트살롱, 갤러리 투어, 한정판 미술품 구입, 프라이빗 아트클래스 연계




이벤트 : 소비자들이 더하나에서 플라스틱 박스를 구매하면 

10종의 젤리 띠부씰 또는 더하나 왕 띠부씰이 제공되는데, 

10개 모아오는 선착순 10명한테 명품을 제공한다고 했다.

근데 이상하게도 시작한지 2개월이 넘게 지난 지금까지도

언제 시작했는지 어떤 명품인지 언제 주는건지 주긴 한건지 정보가 전혀 없었다ㅋㅋ  

지금까지도 별 5개 짜리 후기 딱 10개만 있고 아무런 문의도 없다.

이게 무슨 의미고 대체 누가 뭘 받아간걸까?ㅋㅋㅋ 난 잘 모르겠다ㅋㅋ


텍사스 홀덤펍 같은 다른 플랫폼이랑도 활발하게 연계하고 있다



Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2022년 11월 9일 수요일

Ethereum ENS 에 대해서

 SecureKim     오후 11:00     Blockchain, ENS     No comments   

 

오늘은 이더리움 네임 서비스에 대해서 알아보자

복잡한 이더리움 주소를 간편하게 바꿔주는 서비스이다.

예를 들어 카리나라는 사람이 자신의 이름으로 된 ens NFT를 구매하는 것을 가정해보자.



NFT 구매 후 카리나는 자신의 이더리움 주소를 karina.eth에 연결할 수 있고,

연결되면 다음과 같이 다른 사람 지갑에서도 karina.eth로 검색과 송금이 가능하다.



 

이렇게 NFT를 구매하여 twitter같은 곳에서 아이디로 사용하면 사람들이 쉽게

이더리움으로 후원이 가능해진다.



이제 작동 로직을 살펴보자. 카리나가 karina.eth를 구매 후 시스템을 통해 0x9ae8에 등록했는데,

시스템에서는 어떻게 이더리움 주소를 찾을 수 있었던 것일까?

시스템은 다음과 같은 로직으로 도메인으로 주소를 찾을 수 있다.

처음에 karina.eth를 어느 컨트랙트에 물어보아야 하는지에 대해서 ENS 레지스트리에 쿼리를 하면, 레지스트리가 리졸버를 알려주고, 다시 사용자가 리졸버 컨트랙트에서 실제 이더리움 주소를 받아온다.



물론 ENS 레지스트리에는 관리자들이 존재하며, 멀티시그 방식으로 7명 중 4명이 승인하면 변경이 가능하다. 강력한 권한을 가지므로 “.eth” 가 아닌 완전히 새로운 최상위 레벨 도메인도 만들 수 있다.

 

그리고 registry – resolver 구조를 가지고 있으므로 리졸버를 잘 사용하면 단순히 주소뿐만 아니라 IPFS등 외부 컨텐츠도 ENS와 연결을 할 수가 있다. (물론 ipfs 주소와 어카운트 주소 둘 다 연결할 수도 있다.)

 

즉, Index.html 같은 웹사이트를 IPFS에 배포한 뒤, 리졸버에 IPFS 해시 레코드를 추가하면 해당 주소에 http://karina.eth 등으로 접근할 수도 있다. 참고로 이러한 프로토콜은 온전히 메타마스크에서 지원하는 기능이므로, 웹 브라우저에 반드시 메타마스크가 설치가 되어있어야만 가능하다.

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2022년 9월 14일 수요일

대기업의 최신 NFT 투자 동향

 SecureKim     오후 11:00     투자, Blockchain, NFT     No comments   

 

대기업의 NFT 투자 동향을 살펴보자


ㆍ시몬스 침대 



Press Date : 22/9/13

Chain : ETH

Market : Upbit NFT

Designer : 영 아티스트 3인 

( 부원, 메이킴, 차인철 )

Quantity : 2종씩 6종






 ㆍ라인 넥스트의 DOSI 플랫폼



Press Date : 22/9/14

Chain : Line blockchain (COSMOS)

Market : DOSI

특징 : 구글, 네이버, 라인, 페이스북 등 SNS 계정으로 OAuth를 통해 쉽게 가입 할 수 있음. 

판매자 입장에서는 도시 월렛과 연동된 웹사이트를 구성하여 도시 스토어에 올릴 수 있고, 

구매자 입장에서 별도의 메타마스크 등 로컬 월렛 없이 SNS계정을 연결하여 지갑을 연동하고 쉽게 구매 할 수 있음.


특징은, 구매는 사이트에서 하지만 결제는 도시 월렛을 통해 이루어 지며, 이 때 신용카드, 네이버페이 등을 통해 간단하게 구매가 가능함.

특징 두번째. 7일 이내에 환불 요청이 가능함


ㆍ삼성전자 VS LG



Press : 22.09.13

삼성전자의 경우 일찍이 모바일에 월렛을 탑재한 이력이 있으며, TV에 NFT플랫폼 스마트 허브를 선보인바 있음.

LG는 최근 월렛인 Wallypto를 개발, NFT 예술 작품 거래 플랫폼인 LG 아트랩을 출시하였음.


ㆍ스타벅스


Press Date : 22/9/13

Chain : Polygon

Quantity : 게임이나 퀴즈에 참여 시 Journey Stamp NFT 를 받을 수 있음.

신용카드로 스탬프를 구매할 수 있고, 자체 마켓 플레이스(스타벅스 오디세이)에서 매매 가능.



ㆍ현대카드

NFT사업을 위해 콘크릿 이라는 상표를 출원함.

앞서 공연·음반 등 브랜딩 활동에 NFT를 접목한 시범 서비스를 선보임 

이후 지난 6월에는 '멋쟁이사자처럼'과 NFT 신사업 추진을 위한 조인트벤처(JV) '모던 라이언'을 설립하고 NFT 거래소 설립과 월렛 서비스 운영을 추진 중


ㆍ맥도날드, 포드

메타버스 및 NFT 상표 출원





Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2022년 6월 20일 월요일

NFT 마켓 투자 동향 분석 (오픈씨, 룩스레어, 매직에덴 거래소)

 SecureKim     오후 9:37     Blockchain, Market, NFT     No comments   

 

오픈씨 NFT 마켓을 보다 보니, 요새 뜨고 있는 고블린타운 말고는

맨날 BAYC 관련 NFT들이 득세하는 추세가 똑같아서 다른 마켓은 무엇이 있는지 조사해 봤다.



룩스레어(LooksRare) NFT 거래소는 처음 들어보는 마켓이어서 좀 더 조사해 보았다.

이더리움 기반 거래소라 랭킹 내용은 거의 똑같다.


매직 에덴 거래소는 들어봤지만, 이 정도 일 줄은 몰랐다. 현 시점 솔라나 원탑 거래소다.

Trippin Ape Tribe(트리핀 에이프 트라이브)는 5월에 민팅을 시작한 PFP 프로젝트로,
 
현재 솔라나에서 가장 핫한 NFT 프로젝트이고, 오픈씨에서도 봤었다.



NFT 시장에서도 맨날 원숭이 떼거지들이나, 

뭐 사던지 말던지 로드맵도 없고 아무것도 없으면서 힙한척 하는 거 말고

뭔가 진짜 핫하고 힙하고 엄청난게 나와주면 좋겠다.



Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2022년 6월 8일 수요일

고블린타운 NFT (Goblin Town NFT) 투자 분석

 SecureKim     오후 8:44     Blockchain, NFT     No comments   


고블린 타운

5월 22일에 민팅을 시작해 그 유명한 BAYC를 매우 단기간에 꺾고

오픈씨 이더리움 거래량 1위를 하고 있는 정말 이상한 프로젝트가 있어서 소개한다.

NFT 시장이 아무리 개판이라지만 이건 좀...


이 프로젝트를 처음보는 모두가 같은 생각일 것이다. 

필자도 처음엔 무슨 듣보잡이 이러냐 NFT 시장이 망조가 왔다 이런 생각을 했다. 


그림체도 이상하기 짝이없고 소개 글에는 오타가 가득하다




공식 홈페이지

여긴 더욱 괴상한데, 거기 있는 설명글은 더 괴랄하다.

대충 정신이 아득해지는 설명 글



설명을 요약하면 다음과 같다.

1. 무료 민팅
2. 1000 고블린을 남겨 둠. 내 맘임
3. 로드맵, 디스코드, 유틸리티 없음.
4. CCO (퍼블릭)

BAYC처럼 CC0를 표방하여 법적으로 누구나 2차 창작을 가능하도록 했다. 

하지만 왠지 "할 수 있는 최대로 나의 소유가 아니라고 주장" 하고 싶었던게 아닐까 싶기도 하다.

그리고 무료 민팅을 했다고 하는데 개인적으로는 일부 자전 거래가 의심되기도 했다.


코드에도 있는 오타들

위처럼 심지어 코드에도 오타들이 있고, 

운영진의 트위터 대화를 들어보면 구웨웩 거리는게 가관이다.

그냥 하나의 재미있는 컨셉이라고 보면 될 것 같다.


이 프로젝트가 어떻게 시총 700억이 되었나?

가장 큰 이유는 BAYC 개발사 유가랩스의 비밀 프로젝트라는 루머가 돌았다는 것이고,

두번째로 현대에 들어서 고블린 타운은 암호화폐 시장의 약세를 뜻하는 은어로 사용되기 때문에 이전부터 종종 언급이 있어 왔고,

특히 최근 암호화폐 약세 시장으로 인해 꾸준히 언급되었기 때문이라고 추측 하고 있다.


최근 동향


햄버거(고블린맥버거) 만들기를 출시했다.

그리고 아무것도 없는 것처럼 말 하더니 뭔가 만들고 있긴 하다

NFT를 소유하고 각종 재료를 섞으면 햄버거가 나온다고 하는데,

출시해봐야 알겠지만 이걸 먹이면 돌연변이가 되게 하려고 하는 듯 하다.

BAYC에서 혈청 맞는것과 비슷한 기능으로 추정된다.

mek eet sumday (언젠가는 만들 것) 이라고 적혀 있다.


맥고블린 콤보는 아래와 같이 준비 중이며, 한화 약 300만원에 거래되고 있다.

절대로 먹고 싶지 않은 음식 1위


여담으로 콤보 이름에 있는 숫자에 대해 이야기가 많았는데, 단순한 토핑의 종류라고 한다.

특히 #1432 같이 짧은 숫자들이 희귀하여 좀 더 좋은 것이 아닐까 하는 추측이 있었는데,

그냥 6자리인데 앞쪽 토핑이 없는 것으로 밝혀졌다. (#001432 -> #1432 가 된 것)

고블린 킹은 토핑 조립 없이 햄버거를 받을 수 있다고 명시되어 있으며,

이것이 나중에 리빌되면 해당 번호의 토핑이 올려진 햄버거가 될 것으로 보인다.



과연 이 시장의 끝은 어디일까...?



Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2021년 11월 9일 화요일

국내 최초 밈코인 인절미 코인 (IJM 떡코인)에 대해서 분석해보자

 SecureKim     오전 1:53     밈, 인절미, 인절미코인, 코인, Blockchain, IJM, meme     No comments   

 

우선 필자는 개인적으로 밈코인에 대해서 중립적인 견해를 가지고 있음을 밝힌다.

무조건 나쁘게 볼 것도 없고, 그냥 재미있게 적당히 놀면 그걸로 된 것이라 생각한다. 


여튼 이번 인절미 코인은 개발자가 애초에 도사클 출신이라 그런지 파트너십도 다양하게 맺고 있고,

홀더(일명 참새)들에 의해 엄청난 양의 밈이 쏟아지고 있는데, 이러한 밈들은 NFT로 만들어져 제공될 것으로 예상된다.


밈은 역시 또 재미로 승부를 보는 맛이 있다.

뭔가 재미있어 보이는 인절미코인에 대해서 자세히 알아보자.


인절미 코인의 경우 1억개의 제한된 발행량으로 배포되었다.

uint256 public constant TOTAL_SUPPLY = 100000000 * 10**uint256(DECIMALS);

이후 개발자는 5천만개의 인절미를 유동성풀에 넣고, 나머지 5천만개는 에어드롭풀에 넣었다고 한다.

실제로 개발자가 5000 클레이와 50000000 인절미를 

0xcefaBd4B6544422D74a4645CDd0a3624E36661AA 주소로 보낸 것을 확인 할 수 있었다.

그래서 에어드랍을 받은 사람이 인절미를 매도하러 오면 

유동성 풀을 통해 클레이튼으로 교환을 해 줄 수 있는 것이다.

(참고로 최초 approve 를 위한 인절미 매도 주소는 0x9CFc059F64D664F92f3d0329844B8ccca4E5215B 이다.)

이렇게 인절미는 개수가 정해져 있고 팔릴 때 마다 (개수가 줄어들 때 마다) 가격이 오르는 구조가 된다.


그리고 또 재미있는 점이 홈페이지 (https://떡방앗간.닷컴) 에 가면 인절미를 사고 팔 수 있는데, 

코드를 보면 Transfer 할 때 마다 9% 는 홀더에게, 1%는 개발자에게 돌아가도록 되어있다.

// 9% 떡돌리기
uint256 dist = amount.mul(9).div(100);
// 1% 떡방앗간 팁
uint256 fee = amount.div(100);

따라서 인절미 홀더들은 사람들이 거래(Transfer)만 해도, 거래 금액의 9%에 해당하는 인절미 토큰을 나누어 갖는 구조가 된다.


지금은 인절미 코인이 이렇게 송금할 때 마다 10%의 수수료를 떼서 이대로 상장하기에는 문제가 있어 보이는데,  

개발자가 말한 대로 1월 1일에 하드포크 하고 잘 운영해서 클스왑 등에 들어가게 되면 0.3% 스왑 수수료도 얻게 되고 

더불어 자연스럽게 유동성이 좀 더 활발히 생기면서 가격도 더 상승할 것으로 보인다.

게다가 신원이 알려져 있기 때문에 오징어 코인처럼 먹튀도 어려울 것이다. 


내가 개발자라서 그런지 초식의 심장인지 몰라도 밈코인에 직접적인 투자는 앞으로도 못 할 것 같지만, 지금 행보로 봐서는 재미있어 보인다.

게임도 있길래 (하라는게임은 안하고 좀 다른걸) 해봤는데 앞으로 많은게 또 나올 것 같다.








Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2019년 3월 27일 수요일

루트스탁 (RSK) 개념 잡기

 SecureKim     오후 7:02     개념, 루트스탁, 비트코인, 원리, Blockchain, RSK     No comments   


루트스탁(RSK)

단순히 비트 코인에 튜링 완전한 스마트 컨트랙트를 올릴수 있게 하는 것으로 알려져 있습니다...만!

현재 RSK 자체가 비트코인을 기본 통화로 사용하고 있고, 2way peg 를 통해1 RBTC = 1 BTC 고정 전환된다는 것일 뿐,

사실상 그 개념 자체는 비트코인 종속적이지 않으며 다른 곳에서도 사이드 체인으로써 동작 가능합니다.

(2way peg에 대해서는 조금 이따 다시 한번 알아보도록 하죠.)

스마트 컨트랙트가 이더리움에서 처음 등장한 것으로 알려져 있지만,
사실 비트코인 스크립트라는 이름으로 이미 존재하고 있었습니다.
(사실 스마트 컨트랙트라는 개념은 비트코인 이전에 이미 존재하던 것이긴 합니다. 빌게이츠 )

그러나 Bitcoin Script는 DoS 공격을 우려한 나머지 Loop 를 지원하지 않아 튜링 완전하지 않았습니다.

그렇다면 튜링 완전하다는 것은 무엇일까요 ?
튜링 머신과 같은 성능을 낼 수 있으면 튜링 완전하다고 봅니다.

그렇다면 튜링 머신은 무엇일까요?
튜링이 1939년에 제시한 하나의 개념입니다.

길다란 테이프가 있고, 테이프 칸 각각에는 지시가 적혀있는 기계를 떠올려 봅시다.



기계는 테이프를 한칸씩  읽으면서 지시를 따라하는 것이죠.

지시는 상태에 따라 다른 테이프의 지시를 변경할 수도 있습니다.

  • '현재 상태가 A인데 기호 '1' 을 읽었다면 '0' 을 기록하고 현재 상태를 E로 바꾼 후 앞으로 한칸 이동.'



이 개념 어디서 많이 본 것 같은데 뭐죠? 컴퓨터입니다. 튜링은 천재였죠

(나의 노트북 == NASA 의 슈퍼컴퓨터 == 튜링 머신... 개념은 똑같다.)

간단히 말해서, 모든 계산 가능한 문제를 풀 수 있는가? 
Yes -> 튜링 완전 하다!

※튜링 머신에 대한 좀 더 자세한 내용 : Gödel : A Life of Logic


RSK의 역사는 아래와 같은데요,

2013년 튜링 완전한 언어 개발
2015년 백서 생성
2016년 테스트넷 펀딩 및 런칭
2017년 메인넷 펀딩
2018년 메인넷에 런칭

비트코인에 올라가는 RSK 는 튜링 완전합니다.

왜냐하면 이더리움을 기반으로 하고 있기 때문입니다.

RSK 는 코드 실행을 위해 RVM이라는 가상 머신을 사용하는데, RVM은 EVM을 가져와서 비트코인에 올라갈 수 있도록 포팅한 것입니다.


그럼 어떻게 이 체인을 유지하고 1 RBTC <=> 1 BTC Transfer 를 지원하는지 아까 제쳐 두었던 2 way peg 개념을 먼저 확인해 봅시다.

2 way peg 

이것은 어쩌면 잠깐의 눈속임이라고 할 수 있겠습니다.

비트코인을 lock 시켜두고, 이후에 사이드 체인에서 같은 양의 코인을 unlock 함으로써

마치 비트코인이 사이드체인으로 옮겨간 것 처럼 보이게 하는 것입니다.

약간은 플라즈마와 닮았네요.

2 way peg는 Side chain, Multi sig, Drive chain등으로 구현할 수 있는데요.

RSK는 Side chain + Drive Chain 의 조합의 Hybrid Chain 으로 Merged Mining 으로 체인을 유지합니다.

더 자세한 내용은 다음 글에서 확인해보도록 하죠.



2016 기준 RSK와 Bitcoin 의 성능 차이



Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2019년 3월 25일 월요일

Coin Wallet Account - 12 단어의 비밀 (mnemonic 복구 원리)

 SecureKim     오전 12:43     12단어, 15단어, 복구, 원리, Blockchain, HD wallet, mnemonic, restore, wallet, wallet restore     3 comments   


필요 선행 지식 : Hash, Metamask 등 생성 경험

12 단어, 그 찜찜함

메타마스크도 그렇고 어카운트 생성할 때 항상 12개의 단어를 어디에 잘 적어두라고 하죠?

https://iancoleman.io/bip39/#korean


저는

참석 한문 다행 최악 결과 언덕 공기 영상 다음 근로 마요네즈 사실 사용 운명 청바지

이렇게 15단어가 나왔는데요. 지갑 분실시 이 mnemonic 으로 복구가 가능하므로 메모가 필요하다고 합니다.

갑자기 궁금하지 않나요? 대체 이 문자들이 무엇이며 어떻게 복구가 가능한 것일까요?

아니 이렇게 쉬운 단어들만 갖고 내 월렛이 복구가 된다고!!!? 한번 정확히 짚어보고 싶군요.


월렛의 역사

사토시가 처음 비트 코인을 고안 했을 때를 생각해 봅시다.

이제 막 '개인키를 갖고 거래를 하겠다' 라는 개념을 도입 했을 것이고

개발 초기에는 하나의 개인키로 거래를 했을 겁니다.

그러다보니 한가지 문제점을 깨닫게 된 것 입니다. 추적이 가능하다!?

네, 하나의 개인키와 공개키 세트로 거래를 하다보니 한 계정의 자산 규모가 대강 나오더라는 것이죠.

그래서 개인키 공개키를 매번 랜덤하게 만들도록 했더니 그걸 본인이 다 로컬에서 관리해야 해서 난감합니다.

로컬의 개인키를 잃어버리기라도 하면 눙물이...

그래서 키 관리 시스템 월렛 이 나오게 된 것이죠.

제 생각에는 카드라고 이름을 붙였다면 혼란이 덜하지 않았을까 싶네요.

실제 월렛도 카드처럼 현금(코인)은 없고 키 그리고 블록체인에 존재하는 코인을 전송하기 위한 로직만 있으니까요.

여튼 최근의 월렛은 HD(Hierarchical Deterministic) 월렛으로, 하나의 시드만을 사용해 계층적으로 관리가 가능합니다.


월렛의 원리

일단 복구를 이해하려면 먼저 월렛의 키가 어떻게 생성되고 관리되는지 알아봐야 할 것 같네요.

가장 먼저, 랜덤하게 생성한 128bits 값에 Hash를 적용해서 Digest 를 만들고,

사전 단어 리스트에 매핑합니다.



정확히는
1. Random 하게 128bits 생성하고
2. SHA256 돌린다음 앞에 4bits 를 떼서
3. 기존 128bits 뒤에 붙입니다
4. 11bits 씩 12개로 나눕니다
5. 사전 단어에 매핑합니다

즉, 12개의 랜덤한 단어가 랜덤한 순서로 생성되게 됩니다.

그 다음 키 스트레칭을 합니다.

DIGEST = PBKDF2(PRF, Password, Salt, c, DLen)

  • PRF: 난수 알고리즘. (HMAC-SHA512 를 사용합니다.)
  • Password: 패스워드. (위에서 만든 12개의 단어로 이루어져 있습니다.)
  • Salt: 암호학 솔트. (mnemonic + 패스워드로 이루어져 있습니다.)
  • c: 원하는 iteration 반복 수. (2048 번 반복합니다.)
  • DLen: 원하는 다이제스트 길이. (길이는 512.)
월렛 표준 중 하나인 BIP-0039 에서 마스터 시드는 괄호 안의 값을 바탕으로 생성됩니다. 

즉, 입력 받은 랜덤한 단어와 패스워드를 바탕으로 512길이의 Digest를 생성하는 것입니다.


왜 근데 하필 단어 12자를 넣도록 했을까요?

랜덤한 128bits 는 외우기도 어렵고 숫자 0 이랑 영문자 O 등등 헷갈리니까요.

즉, 사람의 편의를 위해서 입니다.


이후 이렇게 생성된 마스터 시드(Digest) 를 기반으로 개인키를 생성 하므로,

우리는 12개의 단어 및 순서와 패스워드만 알면 개인키를 생성 할 수 있게 됩니다.

즉, 어딘가 저장되어있는 개인키를 Restore 하는 것이라기 보다는 Re-Generation 한다는 개념이 맞습니다.

실제로는 온라인에서 생성하면 안되겠죠?

참고로, 제가 생성한 것은 왜 15단어 일까요...?

BIP39 스펙의 디폴트는 12단어이지만 커스텀하게 생성가능합니다. 

다만 더 적은 단어로 생성하게 되면 엔트로피가 낮아서 안전하지 않습니다. 

아래 표를 참고하세요.

(순서대로 엔트로피 길이, 체크섬, 총 길이, 단어 개수입니다.)
| 128 | 4 | 132 | 12 |
| 160 | 5 | 165 | 15 |
| 192 | 6 | 198 | 18 |
| 224 | 7 | 231 | 21 |
| 256 | 8 | 264 | 24 |


요약 .

1. 랜덤한 128bits 키로 12개의 랜덤한 단어를 생성한다.
2. 위에서 생성한 단어들과 패스워드 조합으로 개인키를 생성한다.
3. 즉, PKI 와 다르게 개인키를 즉석에서 Derive 할 수 있기 때문에 딱히 로컬에서 개인키를 잘 관리할 필요는 없고 단어와 패스워드만 잘 기억해두면 된다.
4. 무작위 seed 대입을 통해 위에서 만든 개인키를 생성하려면 패스워드가 없다고 가정해도 괴에에엥장히 오랜 시간(최악의 경우 내 PC로 약 2500000000000000000000000년 정도)이 걸린다.


Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2019년 3월 24일 일요일

루트스탁(RSK) 실전 - Bitcoin Smartcontract

 SecureKim     오후 9:02     루트스탁, bitcoin, Blockchain, RSK, smartcontract     No comments   


1. RSK 설치

일단 설치를 합니다. (도중에 네트워크 선택은 regtest 로 하였습니다.)
$ sudo add-apt-repository ppa:rsksmart/rskj
$ sudo apt-get update
$ sudo apt-get install rskj


Mainnet : 실제 비트코인 위에서 동작하는 메인 네트워크
Testnet : 인터넷에 올라가있는 테스트 네트워크
Regtest : 로컬에서 구동하는 테스트 네트워크


자 이제 시작해 봅시다. stop, restart 도 됩니다.

sudo service rsk start

실제 실행 명령은 아래와 같습니다.

/usr/bin/java -Dlogback.configurationFile=/etc/rsk/logback.xml -cp /usr/share/rsk/rsk.jar co.rsk.Start 2>&1 &


2. Truffle 로 시작하기
이제 SmartContract 를 올려볼건데요, 일단 truffle 로 틀을 잡아주고 실행합니다.

mkdir securekim-storage
cd securekim-storage
truffle init
truffle develop

그러면 계정이 생성됩니다.
(이름은.. 심사숙고 끝에 김보안 저장소로 정했답니다..)

truffle(develop)> create contract SecurekimStorage

이러면 contracts 폴더 밑에 SecurekimStorage 가 생깁니다
├── contracts
│   ├── Migrations.sol
│   └── SecurekimStorage.sol

3. SmartContract 작성하기
이제 SmartContract 를 작성해 봅시다.
이더리움의 스마트컨트랙트와 완전히 호환되니.. solidity 로 짜면 되겠죠?

저장된 데이터를 가져오는건 누구나 할 수 있지만,
값을 저장하는 것은 deployer 만 할 수 있는 SmartContract 입니다.

SecurekimStorage.sol
pragma solidity ^0.5.0;

contract SecurekimStorage {
    address private deployer;
    uint private storedData;

    constructor() public {
        deployer = msg.sender;
    }

    function set(uint n) public {
        if(msg.sender == deployer)
            storedData = n;
    }

    function get() public view returns (uint) {
        return storedData;
    }
}

4. SmartContract Deploy 하기
이제 만든 SmartContract 를 Deploy 해보아야 겠죠?

migrations 폴더 밑에 2_securekim_storage.js 를 생성합니다.


├── migrations
│   ├── 1_initial_migration.js
│   └── 2_securekim_storage.js


2_securekim_storage.js
var SecurekimStorage = artifacts.require("./SecurekimStorage.sol");

module.exports = function(deployer) {
  deployer.deploy(SecurekimStorage);
};

이제 컴파일 해봅니다.

(참고로 앞으로도 3_, 4_ ... 규칙으로 생성하셔야 실행되고 스마트컨트랙트가 디플로이 됩니다.)
truffle(develop)> compile

Compiling ./contracts/Migrations.sol...
Compiling ./contracts/SecurekimStorage.sol...
Writing artifacts to ./build/contracts

(compile 명령은 contracts 폴더 내부에 있는 모든 sol 파일을 컴파일합니다.)

truffle(develop)> migrate

자 ! 이제 로컬 블록체인 네트워크에 migrate 되었습니다.


5. SmartContract 써보기

이제 SmartContract 와 Interact 하는 시간입니다.

Truffle 자체는 코드는 사실상 거대한 Javascript 코드 이며, Node 콘솔처럼 Javascript 명령을 받아 처리가 가능합니다.

자, 이제 SecurekimStorage instance 를 가져와서 securekimStorage 변수에 담아 봅니다.
truffle(develop)> var securekimStorage
truffle(develop)> SecurekimStorage.deployed().then(instance => securekimStorage = instance)

securekimStorage 의 get 함수를 볼까요?
truffle(develop)> securekimStorage.get
{ [Function]
  call: [Function],
  sendTransaction: [Function],
  estimateGas: [Function],
  request: [Function] }

내부는 4가지 함수로 이루어져 있네요. 그렇다면 이제 get 을 하고 결과를 Number 로 바꿔봅시다.

truffle(develop)> securekimStorage.get().then(bn => bn.toNumber())

아무것도 없으니 기본값 0 이 나오네요. 이제 10을 세팅하고 다시 가져와 봅시다.

truffle(develop)> securekimStorage.set(50)


지금 까지는 이더리움이랑 똑같네요 !

다음 글에서 계속 하겠습니다.

Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2019년 2월 24일 일요일

Plasma Leap (leap-node, leap-core, leap-contracts 등) 구동 자동화

 SecureKim     오전 3:50     Automation, Blockchain, Plasma, Plasma leap     No comments   


전체를 재구동 하는 일이 잦아 자동화 하였고, Eth 넣어주는 동작까지 잘 되는것을 확인하였습니다.

Base를 위한 자동화는
https://github.com/securekim/auto-leap
에 최신 버전이 있으니 참고하세요

먼저 auto-leap.js 의 METAMASK_ACCOUNT 는 본인의 METAMASK 계정으로 수정해야 합니다.

수정 이후 yarn add web3 한번 하고 auto-leap.sh 을 leap-node, leap-contracts 등이 있는 폴더 위에서 돌리면

truffle 실행, contract compile, contract deploy, node / bridge / remix, auto-leap.js 를 실행 해 줍니다.

이후 auto-leap.js 에서는 METAMASK 계정에 10 이더를 넣어주고

컨트랙트 주소, 계정 주소를 leap-node.log 에 출력해 줍니다.

※ 8545 로 동작하도록 해 두어 remix 에서 포트 수정할 필요가 없습니다.

cat auto-leap.js

const METAMASK_ACCOUNT = "0x9C73363B89C0Eda0dbA1B4a5250E891F60723378"; //바꾸세요

var Web3 = require("web3");
const fs = require('fs');

//const web3 = new Web3(Web3.givenProvider || 'ws://localhost:9545');//, options); //FOR CONSOLE
const web3 = new Web3(Web3.givenProvider || 'http://localhost:8545');//, options); //FOR TEST RPC


web3.eth.getAccounts((error, result) => {
web3.eth.sendTransaction(
{from:result[0],
to:METAMASK_ACCOUNT, //CHANGE IT (METAMASK)
value: "10000000000000000000",
data: "0xdf"
}, (err, transactionHash) => {
if (!err)
console.log(transactionHash + " success");
});

fs.appendFile('auto-leap.log', '\nTruffle Account :\n ' + result[0] + '\n', function (err) {
if (err) throw err;
console.log('Saved!');
});

fs.appendFile('auto-leap.log', '\nMetamask Account :\n ' + METAMASK_ACCOUNT + '\n', function (err) {
if (err) throw err;
console.log('Saved!');
});
});


cat auto-leap.sh

#!/bin/bash
sudo killall -9 node
sudo killall -9 sudo
cd leap-contracts
truffle networks --clean
clear
testrpc&
sleep 3
truffle compile
truffle migrate --reset
truffle networks > ../auto-leap.log
sed -i 's/undefined\:undefined/localhost\:8545/g' build/nodeFiles/generatedConfig.json
cd ../leap-node
node index.js --config=../leap-contracts/build/nodeFiles/generatedConfig.json&
cd ../leap-contracts
sudo remixd -s . --remix-ide "https://remix.ethereum.org"&
python -mwebbrowser https://remix.ethereum.org&
cd ../bridge-ui
yarn start&
sleep 5
python -mwebbrowser http://localhost:1234&
cd ..
node auto-leap.js
실행 위치를 위한 구조는 아래와 같습니다.

├── auto-leap.js     // Metamask 계정에 10 이더 넣어 줌
├── auto-leap.log  // 컨트랙트 주소, 계정 주소 알려줌
├── auto-leap.sh   // truffle 실행, contract compile, contract deploy, node / bridge / remix
├── bridge-ui
├── leap-contracts
├── leap-core
├── leap-node
├── node_modules


testrpc 설치가 필요합니다.

sudo npm install -g –production windows-build-tools 
sudo npm install -g ethereumjs-testrpc 


Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2019년 1월 30일 수요일

Plasma Leap 소스코드 분석하기 (leap-node)

 SecureKim     오전 2:27     Blockchain, Plasma, Plasma-leap     No comments   


leap-node 는 index.js 로 시작하므로, 여기서부터 살펴봅니다.

먼저 require 하는 아래 3가지 핸들러부터 살펴보겠습니다.

const txHandler = require('./src/tx');
const blockHandler = require('./src/block');
const periodHandler = require('./src/period');

txHandler : 


일단 leap-core 에서 트랜잭션들을 가져오고,

트랜잭션 타입에 따라서 기존의 상태를 리턴해 줍니다.

tx의 타입은
DEPOSIT, EPOCH_LENGTH, EXIT, TRANSFER, VALIDATOR_JOIN, CONSOLIDATE, VALIDATOR_LOGOUT 로 총 7개 가 있습니다.

applyTx 에서는
checkOutpoints, removeInputs, addOutputs 를 진행하는데

checkOutpoints 는 트랙잭션 인풋을 돌면서 input.prevout이 unspent 되었는지 즉, 존재하지 않는 output을 spend 하려 했는지 체크하고 에러를 throw 합니다. (에러는 계속 위로 올려버립니다.)

removeInputs 는 트랜잭션 인풋을 돌면서 input.prevout 이 unspent로 존재하면 해당 balance 를 삭제합니다.

addOutputs 에서는 트랜잭션 아웃풋을 돌면서 이미 존재하는 output 을 또 만들지 않도록 주의하면서 unspent 목록에 추가합니다.


cBalances Array 는 완전 복사(Deepcopy) 가 된 상태가 아니라서 balances 를 가리키게 됩니다.
Deepcopy 와 Shallow copy 에 대해서는 다음 시간에 알아보도록 하죠.

accumulateTx 에서는 남아있는 tx 들을 메모리풀에 적재합니다.

결국 기존 트랜잭션을 오류 없이 불러오려고 하는 것이네요.

blockHandler : 

updatePeriod 에서는
체인 길이를 32로 나눈 나머지가 0인 경우에 period 를 업데이트 하고 있습니다.
업데이트란, 이전 period 에 현재 period 를 복사하고, 이전 Period 의 merkleRoot() 로 현재 period 를 생성하는 것입니다. (swap)
체인 길이를 32로 나눈 나머지가 16인 경우, slot을 확인해서 활성화된 epoch 와 현재 epoch 의 차이가 1보다 크면, 각 slot 을 활성화 시킵니다. 이 부분은 확실히 이해가 안되서 코드를 남겨놓습니다.


addBlock 에서는
아까 메모리 풀에 적재해 놓았던 트랜잭션들을 매핑, JSON 화 해서 각각 새로운 블록에 바인딩 합니다. 이 새로운 블락을 bridgeState.currentPeriod 의 addBlock 의 매개변수로 줘서 블록을 생성하고, 메모리 풀을 비웁니다. 만약 받은 chainInfo 의 길이가 마지막으로 싱크된 블록의 길이보다 더 길면 블록을 다시 싱크하고 마지막으로 싱크된 블록의 길이를 늘려 줍니다.

updateValidators 에서는
state 의 slot 들에서 올바른 public key 를 불러오고, Address 를 가져옵니다.
그리고 각 Address에서 power 를 계산해서 (이것이 어디에서 변경되는지 확인 필요) 인덱스가 없고 0이 아니면 삭제하고, 인덱스가 있는데 0이면 체인에 validator로 추가합니다. 그리고 체인에서 해당 address 가 validator 로서 존재하지 않으면, power 10으로 추가해 줍니다.
key 의 알고리즘은 ed25519 이네요.

updateEpoch 에서는
코드가 짧아서 대체합니다. 말 그대로 epoch 의 길이를 업데이트 합니다.



periodHandler : 

submitPeriod 에서는
먼저 bridgeContract의 periods 메소드를 콜합니다. 그러면 submit 된 period 가 나옵니다.
--> bridgeState.bridgeContract.methods
submit 된 period 중 timestamp 가 0인 경우
slot을 가져와서 현재 slot 이 존재 하는 경우 slot의 id, submitPeriod 를 갖고 트랜잭션을 발생시킵니다. 트랜잭션은 아래처럼 받은 method -

를 ABI 인코딩 하고 가스를 랜덤하게 설정한 다음 private key로 사인합니다.

submitPeriod 이후에는 마찬가지로 contractPeriod 의 timestamp 가 0인지 확인하는 작업이 있는데, 위에서도 나왔지만 timestamp 가 0이라는게 어떤 의미인지 지금까지는 잘 모르겠네요.




결국 요약하면, 위 3개의 핸들러의 표면(index.js) 은
기존에 사용하던 트랜잭션과 블록을 안전하게 로딩 하기 위한 것임을 알 수 있었습니다.
물론 이름처럼 핸들링 하기 위한 코드도 있을 것 같은데, 아래에서 더 살펴보도록 합니다.


다시 돌아와서 최초 index.js 의 코드 시작을 보면 lotion 을 사용하고 있습니다. 로션이란 뭘까요?


lotion :

로션은 자바스크립트로 새로운 블록체인 앱을 만들어 내는 새로운 방법 중 하나로,

ABCI 프로토콜을 사용해 텐더민트 위에서 동작합니다.

ABCI 란 Application BlockChain Interface 의 약자로, 블록체인과 앱 사이의 인터페이스입니다.

컨센서스 엔진은 소켓 프로토콜을 사용, ABCI 를 통해

다른 프로세스에서 실행되는 응용 프로그램 상태를 관리 할 수 있게 됩니다


이후 BridgeState 를 사용해서 이것저것 하게 되는데요. 그렇다면 BridgeState 를 알아봅시다.



bridgeState

브릿지의 상태를 관리 할 수 있는 객체로, exitHandler 컨트랙트, bridge 컨트랙트, operator 컨트랙트 그리고 account 키 등 상태 정보가 있습니다.
하지만 결국 web3 eth 를 쓰고 있어서 이게 뭔지 정확히 알아야 되겠죠.

최초 init 을 실행하면 마지막으로 싱크된 블록을 확인하고, 컨트랙트 이벤트 워쳐를 실행하고
블록을 이닛합니다. 이게 뭔가 순서가 중요한지 비동기인데 await 으로 동기화 해 주었네요.

컨트랙트 이벤트 워쳐는 새로운 Deposit 이 생겼거나 Exit 가 시작 되었을때,
EpochLength 를 핸들링 합니다.



Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg

2019년 1월 29일 화요일

Plasma Leap 사용하기 (Deposit)

 SecureKim     오전 2:01     플라즈마, Blockchain, deposit, leap, Plasma, Plasma leap     No comments   


이전 편에 이어서 사용하기 편입니다.

우선 각종 주소들을 확보합니다.

1. Truffle 주소



2. Metamask 주소


3. native token 주소 (truffle)


이제 remix 에서 NativeToken 을 컴파일하고 추가합니다.

At Address 는 3번 native token 주소를 적습니다.



아래에서 isMint 를 콜해서 1번 Truffle Account와 2번 Metamask 주소를 넣고
해당 Account 에 토큰을 넣어봅니다.


메타마스크 계정에 돈을 넣고


메타마스크에서 토큰 추가 버튼을 클릭, 3번 네이티브 주소를 추가해 결과를 확인합니다.


월렛에 돈이 쌓입니다~



이제 remix 에서 1번 2번을 approve 합니다.




이제 가스 지불을 위한 ETH 를 확보합니다.

Truffle 에서 아래 명령 입력.


web3.eth.sendTransaction({from:"1번 Truffle 계정", to:"메타마스크주소", value:web3.utils.toWei("10","ether")}).then(function(rec){console.log(rec);});



그러면 메타마스크에 이더가 들어와서 잠시나마 행복을 느낄 수 있습니다.

이후 Deposit 을 해봅니다.

Deposit


1 LEAP 을 걸고 메타마스크에서 승인을 클릭합니다.
->

아직 안나갔고, 테스트만 되었습니다. 이제 다시 승인하면 진짜로 갑니다.



이더에서 가스비가 나갔네요



leap-node 쪽 로그를 보면 Deposit 을 체크했고

텐더민트쪽에서는 block 이 실행되었음이 체크 되었고,
현재 상태가 커밋되었음을 알 수 있습니다.





Read More
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이전 게시물 홈

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...
  • Termux 로 안드로이드에 우분투(GUI)와 VSCode설치하기
      많은 글들이 있지만 뭔가 대부분 잘 안됐다. 이번 기회에 정리한다. 0. 먼저 Termux와 Remote Desktop Manager를 설치한다. Remote Desktop Manager 대신 아래도 나쁘지 않다. 화면이 작지만 마우스 스크롤이나 ...

Blog Archive

  • ▼  2026 (2)
    • ▼  2월 (2)
      • 태블릿에서 양자내성암호(격자암호) 돌려보기
      • 양자컴퓨터와 보안 위협 (쇼어 알고리즘)
  • ►  2025 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  7월 (1)
  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ►  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ►  6월 (1)
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
전체 댓글
Atom
전체 댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates