김보안의 블로깅
  • 🏠 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

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)


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

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

  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
최근 게시물 이전 게시물 홈

0 개의 댓글:

댓글 쓰기

페이지

  • 홈
  • Hobby

Categories

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

Popular Posts

  • 블랙보드 강의 녹화 영상 다운로드 가능한 방법 (노설치)
    별도의 설치도 필요 없고 아주 쉽습니다. 구글 크롬브라우저 에서 블랙보드 녹화 영상에  다운로드 가능한 메뉴가 나오게 하는 코드입니다.  먼저 블랙보드 강의자료에 입장하고, 재생 버튼을 클릭 하지 않은 상태로 F12 를 입력합니다. 재생을 클릭하지 마...
  • 다빈치리졸브로 영상의 음성 보정 (잡음 노이즈 없애기)
      잡음 없애는 방법 1. 음악 쪽 들어가서 음악에서 소스 우클릭 - Normalize Audio Levels 2. 우측의 Mixer에서 Dynamics 더블클릭, Effects아래 +누르고 Metering에 Meter 그럼 아래처럼 나오는데  Gat...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...

Blog Archive

  • ►  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)
      • 루트스탁 (RSK) 개념 잡기
      • Coin Wallet Account - 12 단어의 비밀 (mnemonic 복구 원리)
      • 루트스탁(RSK) 실전 - Bitcoin Smartcontract
      • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, ...
    • ►  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