김보안의 블로깅
  • 🏠 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월 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월 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
이전 게시물 홈

페이지

  • 홈
  • 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