Steem-Python을 이용한 부계정 즉시 만드는 방법 따라해보기

in #kr7 years ago

오늘 갑자기 스티밋 부계정을 만들고 싶어졌습니다. 지금 하고 있는 일에 유용할 거 같은 생각이 들더군요.

그래서 부계정 만들어 보기로 했죠. 스티밋 가입 사이트에서 먼저 만들고 싶은 계정을 입력했더니 ,

You are lucky!

사용할 수 있는 계정이라고 나오더군요. 그래서 다음 단계 전화번호 입력으로 넘어갔는데, 어이쿠.

Your number is already in use

뭐 이미 사용중이라고 합니다. 전화번호를 두개 만들까? 이런 생각이 들다가 검색을 해보게 됐습니다.

부계정 만드는 방법이 있을거라는 확신을 가지고서요. 그랬더니 역시나 @twinbraid님께서 깔끔하게 정리해놓으신 글이 있더라구요.

스팀(steem) 계정과 가입 이야기

얼른 리스팀했습니다. 그리고 윗 글중 아래 방법을 시도했습니다.
2. steem 블록체인에 수수료를 갖다 바치기

윗글의 더 자세한 방법은 @asbear님의 글로 이어져 있었습니다.
스팀잇 계정 직접 만드는 방법 (steem-python 이용하기)

다시 한 번 스티밋에 놀랐습니다. 유용한 것들을 찾아 잘 정리해주시는 분들이 계시니까요.

~ 감사합니다. 감사합니다. ~

그러나 금방 될 것 같은 작업이 미궁으로 빠져드는 거 같았습니다. 아마도 글이 작성된 시점이 5개월 전이라 지금과 상황이 달라져서 그런거 봅니다. 참고로 저는 스팀 개발자는 아니지만 S/W 개발자입니다. 그럼 제가 고생해서 부계정 만들기를 그대로 따라해 본 걸 소개해 드릴께요.


0. 작업 환경

  • OS: Ubuntu 16.04 x64 (64비트 리눅스 Ubuntu 16.04 OS)
    별다른 작업 환경은 없네요.

1. python3을 설치한다.

  • Ubuntu 16.04는 기본적으로 Python 2.7과 Python 3.5 버전이 설치되어 있습니다. 바로 아래 2단계를 실행하면 에러가 발생합니다. 참고로 python 2와 python 3가 같이 깥려 있기 때문에 python 3용 pip 명령은 pip3입니다.
    Screenshot from 2018-02-28 10-24-04.png
    Python 3.6 버전이 필요하다고 나옵니다.

  • Python 3.6 설치 방법
    기본적인 apt-get으로는 설치가 안됩니다. 아래와 같이 추가적인 리파지토리를 추가한 후 설치할 수 있습니다. 터미널을 열어서 아래와 같이 차례차례 입력합니다.

$ sudo add-apt-repository ppa:deadsnakes/ppa
$ sudo apt-get update
$ sudo apt-get install python3.6

설치 후 버전 확인 합니다.
Screenshot from 2018-02-28 10-24-28.png

2. steem python 라이브러리를 설치한다

steem-python이라는 프로그램을 이용하여 부계정을 즉시 만들 수 있습니다. 이를 위해서 steem-python 설치가 필요합니다. 그런데 현재 python2.7, python3.5, python3.6이 깔린 상태라 python3.6를 지정해서 설치해야 합니다. 방법은 아래와 같이 입력하면 됩니다.

$ python3.6 -m pip install -U steem

그런데 아래와 같이 setuptools가 안깔려 있다고 에러가 발생합니다.
Screenshot from 2018-02-28 10-25-06.png
setuptools을 설치해 줍니다. sudo 없이 설치하면 권한관련 에러 발생하기때문에 sudo를 붙여줍니다.

$ sudo python3.6 -m pip install -U setuptools

그런 후에 다시 아래와 같이 steem을 설치합니다.

$ python3.6 -m pip install -U steem

그런데 이번에는 다른 에러가 발생합니다.
Screenshot from 2018-02-28 10-26-18.png
Screenshot from 2018-02-28 10-30-47.png
의존 패키지인 regex설치 중 Python.h 파일을 찾을 수 없다는 에러가 발생합니다. 찾아보니 python3.6-dev를 설치해야 한다고 합니다. python 버전별로 dev도 별도 설치해야 하나 봅니다.python3.6-dev 설치 후 다시 steem을 설치합니다.

$ sudo apt-get install python3.6-dev
$ python3.6 -m pip install -U steem

아! 또 에러가 발생합니다. 이번에는 steemtoml이라는 의존 패키지의 특정 버전(toml=0.9.3.1)만을 요구하는 에러입니다. 어휴~
Screenshot from 2018-02-28 10-34-56.png
찾아보니 , 뭔가 steem-python이 업데이트가 필요한 상황입니다. 더 찾아보니 일단 꼼수로 의존 버전을 변경해서 설치하는 방법이 있었습니다.

참고
https://github.com/steemit/steem-python/issues/68
https://steemit.com/steemit/@crokkon/steem-blockchain-access-with-python-setting-up-steem-python-with-docker

먼저 toml을 최신 버전으로 업데이트 합니다.

$ sudo python3.6 -m pip install --upgrade toml

Screenshot from 2018-02-28 10-37-36.png
여기서는 0.9.4 버전으로 업데이트 되었네요.

그 다음 아래와 같이 steem의 METADATA를 변경합니다. 임시적 방편입니다. 나중엔 이렇게 하지 않아도 될 수 있습니다. 이 때 파일 경로는 사용자 환경에 따라 다를 수 있습니다. 특히 dist-packages라고 되어 있는 부분이 site-packages일 수도 있습니다. 먼저 아래와 같이 steemMETADATA 파일 위치를 확인해 보세요.

$ sudo vi /usr/local/lib/python3.6/dist-packages/steem-0.18.103.dist-info/METADATA

Screenshot from 2018-02-28 10-45-42.png
위 그림과 같이 toml 버전을 기존에 있던 것을 주석처리 하고 그 아래 자신의 PC에 설치된 버전을 기입해 줍니다. 여기서는 0.9.4입니다.

3. steempy 명령이 실행되나 확인

자, 드디어 steempy를 실행해 보죠.
Screenshot from 2018-02-28 10-46-20.png
드디어 steempy라는 녀석이 제대로 설치되었습니다.

4.계정 생성비를 지출할 계정 등록

자 이제 다됐습니다. 그 어렵던 steem을 설치했습니다. 그러나....
또 다시 시작되는 에러!

이번에는 무슨 steem-python Failed to establish a new connection: No address associated with hostname라는 에러가 계속 뜹니다. 흑 ㅜ.ㅜ
그래서 또 찾아봤죠. 그랬더니 아래와 같이 방법이 찾아집니다.

참고: https://github.com/steemit/steem-python/issues/14
따라서 해보죠.

$ steempy set nodes https://api.steemit.com

Screenshot from 2018-02-28 20-27-13.png

@asbear님의 글에는 Account Passphrase에 현재 계정의 private key를 넣으라고 되어 있습니다.

Account Passphrase: 메시지 나오면 해당 계정 private key 입력

그러나 제 경우에는 owner key만 문제가 없이 진행되었습니다. posting key의 private key나 active key는 아래와 같이 진행이 안되었습니다.

owner key는 스티밋 가입시에 받은 키입니다.

Passphrase: 메시지 나오면, 본인이 원하는 지갑암호 입력.

그 다음은 지갑암호 입력입니다. 적당히 암호를 입력합니다. 꼭 기억해두시고요.

5.키를 확인한다.

  • import한 계정의 키값 확인

6. 계정을 생성한다

steempy newaccount --account [위에서등록한계정이름] --fee "7 STEEM" [만들고싶은계정이름]
7 STEEM 대신 그에 상응하는 SBD로 적어도 됨
New Account Passphrase: 메시지 나오면, 새로운 계정에 설정할 비밀번호를 입력한다
Confirm New Account Passphrase: 메시지 나오면, 위에 입력한 비밀번호를 재입력한다
Passphrase: 메시지 나오면, (4)에서 설정한 지갑암호를 입력한다

SBD도 된다고 하여 그대로 했더니 에러가 발생합니다.

STEEM만 되나 봅니다. balance가 0이어서 에러가 발생합니다.

이렇게 되면 일단 꼬인 것입니다! 아래와 같이 계정 리스트를 확인하고 새롭게 생성된 키들을 제거 하고 다시 계정 생성을 진행합니다.

  • import한 계정 리스트 확인
    뭔가 진행하다 꼬이면 아래와 같이 account 리스트를 출력해 봅니다.
  • 계정 만들 때 추가로 생성된 키들을 아래와 같이 삭제 합니다.

  • 다시 계정을 만들기를 시도합니다. 수수료 STEEM을 먼저 확보하고, 이번에는 fee를 STEEM으로 입력합니다.

드디어 부계정이 만들어 졌습니다!

  • JSON 형태의 출력 내용을 저장한다.
    계정 생성 명령이 성공하면 { "ref_block_num: ...로 시작하는 것들이 나옵니다. 그것을 터미널에서 복사하여 파일로 저장해 놓습니다.

7. steemit.com 가서 로그인 시도해 본다. (6)에서 설정한 비밀번호를 입력하면 된다.

  • 부계정 생성시 입력한 비밀번호(New Account Passphrase)를 입력해 봅니다. 우와 로그인이 되네요.

  • 개인키를 추출합니다.

    posting private key나 active key를 위 화면에서 얻어냅니다. 안전한 곳에 저장합니다.
    owner key는 부계정 생성시 입력한 비밀번호(New Account Passphrase)가 되는 거 같습니다.

8. 지갑에 7 STEEM 충전된것을 확인한다


그리고 수수료로 지급했던 7 STEEM이 계좌에 들어 있습니다.


이상으로 부계정 만드는데 온갖 난관을 헤쳐내고 부계정 생성 방법을 마치겠습니다. 다음편에 생성 방법만 따로 정리해서 올려보겠습니다.

부계정 생성에 어려우신 분들은 도움 드리겠습니다.

오늘의 실습: 부계정을 만든다면 어떤 계정을 만들고 싶은가요? 계정명이라 용도에 대해서 생각해 보세요.

Sort:  

저도 요새 재미있을거 생각하고 있었는데 하나 만들어 둬야겠습니다. ㅎㅎ

네 뭔가 선점할 필요가 있을거 같더라구요~ 뭔가 해보려고 한다면 말이죠.

와우. 보기만해도 어메이징 합니다. 이런걸 직접 해내시다니 물개 박수!

직접 아니고요. 그냥 따라했는데 안돼서 고생한거 기록한거예요~
고맙습니다~

정성글엔 추천 꾸욱~! ^^

고맙습니다.
정성을 알아봐주시니.

대단하십니다
제겐너무어려운일입니다

대단한거 없어요.

@nhj12311님이 아주 편하게 만드셨네요. 오래전에.
https://steemit.com/kr/@nhj12311/5ugrzh

현재는 3스팀만으로도 가능합니다 ㅎㅎ

만드신 프로그램 여전히 동작하는거죠? 쉽게 되어 있는 걸 너무 고생고생했네요 ㅎ
멋지십니다!

넹 맞습니다. 여전히 잘됩니당. ㅎㅎ

만드신것은 steempython을 사용한게 아닌가 보네요?

순수 자바스크립트와 steem.js 라이브러리입니다~

어떻게 부탁 드릴 수 있을까요?

쉬운 방법이 있습니다.
https://steemit.com/kr/@nhj12311/5ugrzh
이걸 해보시고 혹시 안된다면 연락주세요.