[AD]MCO VISA 암호화폐로 결제하자

[SSC] Steem Smart Contract 설치하기

in zzan •  5 months ago  (Edited)

SSC 설치하기

스팀의 사이드체인 스팀엔진의 SSC(Steem Smart Contracts) 설치 가이드 입니다.

SSC란 ? Steem Smart Contracts는 Steem에서 제공하는 사이드 체인으로, Smart Contracts의 기능을 통해 분산 데이터베이스에서 작업을 수행 할 수 있습니다.

참조 : SSC(스팀스마트계약) 노드 설정방법

  • 기준일자는 19.11.06 이 글을 작성하는 시점 입니다.
  • 설치 사양 ASUS VC-66C / Intel® Core™ i7-8700 / 32GB RAM / 128 GB SSD / Ubuntu 18.04.3 LTS

1. 설치 요구사항

나의 설치 정보 : nodejs는 v8.10.0 (최신 : v13.0.1, LTS v12.13.0) / mongodb 는 4.2 (최신 : 4.2)

[참조] 이전에 개발한 건들의 의존성 땜시 nodejs 최신버전이 아님 ;; 아마 최신버전으로 nodejs 설치해도 문제는 없을 것 입니다.

1-1. 몽고DB 설치하기

참조 : Ubuntu 18.04.3 LTS ( Bionic Beaver ) / Ubuntu 16.04.6 LTS ( Xenial Xerus )

  • 패키기 관리 시스템의 공개 키 추가 : wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
  • 혹시 설치하다 오류가 발생되면 sudo apt-get install gnupg 를 통해 gnupg(GNU Private Guard : 암호관련 라이브러리) 를 설치 한 이후. 재설치 하면 됩니다. ( 일단 전 안나옴 )
  • 설치 저장소(리파지토리) 추가 : echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
  • 설치 패키지 목록 정보 갱신 : sudo apt-get update
  • 최신 안정화 버전 설치 : sudo apt-get install -y mongodb-org
  • apt-get 커맨드를 통해 의도하지 않은 업그레이드를 방지하고자 하는 경우 아래 스크립트를 수행
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

1-2. 설치 정보

  • 설치경로 : /var/lib/mongodb
  • 로그경로 : /var/log/mongodb

1-3. mongodb 시작하기

  • 시작 : sudo service mongod start
  • 확인 : /var/log/mongodb/mongod.log 로그 정보를 확인한다 (기본적으로 파일 권한이 mongodb 임에 유의)
  • [initandlisten] waiting for connections on port 27017 27017 포트를 LISTEN(수신대기) 하고 있는지 여부를 확인한다.

1-4. mongodb 기타 명령

  • 종료 : sudo service mongod stop
  • 재기동 : sudo service mongod restart
  • 몽고DB 실행 : mongo

1-5. 참조

  • Access control is not enabled for the database. 이런 메시지가 출력 된다면, 접근제어(Access control)가 설정 안되어 그런것임. 일단 뭐 혼자 쓸것이니 무시해도 큰 상관응 없다. (하지만 보안을 생각한다면 설정하는 것이 좋음)

2. SSC(Steem Smart Contract) 설치

2-1. 다운로드

  • 다운로드 : git clone https://github.com/harpagon210/steemsmartcontracts.git
  • 설치 : 해당 폴더로 들어가서 npm install 명령을 통해 의존성을 설치한다

2.2. 실행

DB 설정관련 오류 문구가 뜨기는 하지만 일단 뭐 또 무시합니다. -_-; ( 몽고DB Client 생성 시 파라미터 부분이 잘못 된 것인데 미래에는 없어질 것이니 다른 방식을 사용해라 뭐 그런 문구 입니다. )

  • 오류 문구가 있긴하지만 잘 동작 합니다.

2.3. 동기화

실제 1초 정도에 블록 하나를 동기화 해나가는 속도라 첨부터 최신 블록까지 동기화 하려면 약 1-2주 걸릴 것 입니다. -_- 그러므로 일단 dump 파일을 받은 이후 실행 하는 것을 추천 합니다.

2.3.1. REPLAY

blocks.log 파일을 다시 읽어들이는(replay) 하는 방식입니다. 블록 정보를 쌓는 과정에서 문제가 있는 경우 보통 이방식을 통해 데이터를 순차적으로 재 적재를 하게 됩니다.

  1. blocks.log 파일 찾기
  2. node app.js --replay 파일명 명령을 통해 리플레이를 수행 합니다.

2.3.2. dump 를 통한 복구

mongo DB 자체를 dump 파일을 통해 복구하는 방법 입니다. 블록을 첫 블록부터 한땀한땀 동기화 하면 세월아 인 관계로 이미 누가 최근 블록까지(최신은 아님에 유의) 미리 만들어 놓은 파일을 다운로드 받아 복구를 수행 합니다.

  • 복구파일 다운로드 : https://api.steem-engine.com/ssc.archive / 물론 다른곳에서 누군가 미리 만들어 놓은것이 있다면 그것을 다운받아 복원해도 됩니다.( 현재 19.11.07 기준 위 파일은 약 1.6 GB 입니다.)
  • mongorestore --gzip --archive=ssc.archive 명령어를 통해 DB를 복원 합니다.
  • 설정파일 config.json 의 startSteemBlock (시작 블록정보) 를 다운로드 받은 파일의 시작 블록정보와 동일하게 변경 시켜줍니다. ( https://api.steem-engine.com/ssc.archive.txt 링크 클릭 후 시작 블록 정보 값 확인 필요)
  • npm run start 명령을 통해 노드를 재시작

아... 복원을 했음에도 불구하고 약 48만개 블록을 더 읽어들어야 되네요 ㅜㅜ ( 복구 안했다면 약 807만 ... 헐 ...)

[참조]

  1. 복구시 이전 파일 정보가 있는 경우 duplicate 오류가 발생할 수 있습니다. (기존에 있는 정보니깐 ... ) 이런경우도 무시하셔도 됩니다.
  2. 복구를 수행하면 약 6-10GB 정도의 DISK소모가 발생 합니다. ( 최소 20 GB 이상의 디스크 용량을 확보하길 권장 하네요 )

기타 참조

맺음말

일단 설치는 했고 노드도 돌리고 있는데 자 앞으로 뭘 해야 할지는 생각해 봐야 겠네여 -_-;

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

happyberrysboy님이 wonsama님의 이 포스팅에 따봉(5 SCT)을 하였습니다.

wonsama.sct님이 wonsama님의 이 포스팅에 따봉(5 SCT)을 하였습니다.

honeybeerbear님이 wonsama님의 이 포스팅에 따봉(5 SCT)을 하였습니다.

와우 벌써 진행을 하셨네요~ ㅎㅎㅎㅎ
나름 스맛컨트랙이 되는거니~ 이제 뭔가 할만한게 생기지 않겠숩니까!! ㅋ

뭐 일단은 돌리는데 동기화 속도가 넘 느리네여 블록을 1개씩 땡겨와서 ㅡ.ㅡ

Posted using Partiko Android