[SSC] Steem Smart Contract 설치하기
SSC 설치하기
스팀의 사이드체인 스팀엔진의 SSC(Steem Smart Contracts) 설치 가이드 입니다.
SSC란 ? Steem Smart Contracts는 Steem에서 제공하는 사이드 체인으로, Smart Contracts의 기능을 통해 분산 데이터베이스에서 작업을 수행 할 수 있습니다.
- GITHUB : https://github.com/harpagon210/steemsmartcontracts
- STEEMIT : https://steemit.com/@holger80
참조 : 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 설치해도 문제는 없을 것 입니다.
- nodejs 다운로드 - 다음(next) 버튼만 잘 눌러도 설치가 가능한 관계로 설치방법 생략
- mongodb 다운로드 : v3.2 커뮤니티 버전 / ubuntu에서 몽고DB 최신버전 설치
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 2701727017 포트를 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) 하는 방식입니다. 블록 정보를 쌓는 과정에서 문제가 있는 경우 보통 이방식을 통해 데이터를 순차적으로 재 적재를 하게 됩니다.
blocks.log파일 찾기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만 ... 헐 ...)
[참조]
- 복구시 이전 파일 정보가 있는 경우 duplicate 오류가 발생할 수 있습니다. (기존에 있는 정보니깐 ... ) 이런경우도 무시하셔도 됩니다.
- 복구를 수행하면 약 6-10GB 정도의 DISK소모가 발생 합니다. ( 최소 20 GB 이상의 디스크 용량을 확보하길 권장 하네요 )
기타 참조
- PM2(프로세스 매니져) : https://www.npmjs.com/package/pm2
맺음말
일단 설치는 했고 노드도 돌리고 있는데 자 앞으로 뭘 해야 할지는 생각해 봐야 겠네여 -_-;



happyberrysboy님이 wonsama님의 이 포스팅에 따봉(5 SCT)을 하였습니다.
wonsama.sct님이 wonsama님의 이 포스팅에 따봉(5 SCT)을 하였습니다.
honeybeerbear님이 wonsama님의 이 포스팅에 따봉(5 SCT)을 하였습니다.
@wonsama님, steemzzang은 여러분을 환영 합니다.
☀️ palja는 여전히 영업 합니다.
🌕 운악산 삼순이네 된장
⭐️ "합격쌀 누룽지"의 계절이 다가왔습니다.
와우 벌써 진행을 하셨네요~ ㅎㅎㅎㅎ
나름 스맛컨트랙이 되는거니~ 이제 뭔가 할만한게 생기지 않겠숩니까!! ㅋ
뭐 일단은 돌리는데 동기화 속도가 넘 느리네여 블록을 1개씩 땡겨와서 ㅡ.ㅡ
Posted using Partiko Android