달력

8

« 2020/8 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  

 

시빌 공격(Sybil Attack)

·         일종의 네트워크 해킹 공격으로 특정한 목적을 얻기 위해 명의 행위를 여러 명의 행위인 것처럼 속이는 공격 형태를 의미합니다.

·         시빌 공격은 다양한 네트워크 시스템의 기능을 무력화하는데 사용될 있습니다.

 

 

http://bit.ly/2HTT1qb

 

 

 

 

 

 

시빌 공격의 피해 사례

토렌트(Torrent) 같은 P2P 기반의 서비스에서 평판이 좋은 애플리케이션을 다운로드 받아서 사용해보니 악성코드였던 사례가 있습니다.

 

 

 

 

 

 

시빌(Sybil) 어원

·         1973 출판된 동명의 제목에선 따온 것으로 책은 다중 인격 장애를 가지고 이는 여성에 대한 사례 연구를 다룬 책입니다.

·         다중 인격 장애를 겪는 사람이 여러 개의 인격을 가진 것처럼 명의 네트워크 참여자가 여러 명인 것처럼 속인다는 의미에서 시빌 공격(Sybil Attack)이라는 말이 만들어졌습니다.

 

 


 

https://en.wikipedia.org/wiki/Sybil_(Schreiber_book)

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

블록체인 기술의 문제점

문제점

설명

수정이 어렵다

·         한번 운영을 시작하면 소프트웨어의 수정이 어렵다 것입니다. 인터넷상의 불특정 다수가 참여하기 때문에 발생하는 현상입니다.

 

·         블록체인 특성으로 인해 블록체인 네트워크상에 중대한 문제점이 발생했을 이를 수정하고 변경할 주체의 부재 인해서 수정이 거의 불가능하다는 문제점을 내포하고 있습니다.

알트코인 출현

·         비트코인의 문제점을 개선하기 위해서 알트코인이 출현했습니다.

·         비트 코인 캐시는 비트코인을 hard forking하여 별도 블록체인 네트워크를 구성하였습니다.

거래시간

·         비트코인의 경우에도 늘어나는 거래량으로 인해서 거래 체결까지 걸리는 시간을 단축하기 위해 세그윗이라는 방안이 고안되는데 비트코인 코어의 개발자 측과 비트코인 채굴자 측의 이해가 달라 논쟁이 발생하였습니다.

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

Ethereum Whitepaper(이더리움 화이트페이퍼;백서) 

·         이더리움의 탄생 배경 기술적인 내용을 개괄적으로 이해하기 위해서는 이더리움 백서를 먼저 읽어볼 필요가 있습니다.

·         블록체인 기술 암호화폐 프로젝트는 백서에 프로젝트의 핵심적인 내용 담고 있기 때문에, 이를 근간으로 투자를 받습니다.

·         이더리움의 설립자인 비탈릭 부테린은 2013 이더리움의 백서 "차세대 스마트 계약 분산 애플리케이션 플랫폼, A Next Generation Smart Contract & Decentralized Applicaton Platform" 공개함으로써 이더리움 프로젝트를 제안하였습니다.

·         현재 최신 백서의 내용은 Github 이더리움 위키에 올라와 있으며, 한국어를 포함하여 13 언어로 번역하여 제공되고 있습니다.

  

 



A Next-Generation Smart Contract and Decentralized Application Platform - White Paper

Ethereum Whitepaper

 

https://github.com/ethereum/wiki/wiki/White-Paper

 


 

 

 

 

 

차세대 스마트 컨트랙트와 탈중앙화된 어플리케이션 플랫폼 - White Paper

https://github.com/ethereum/wiki/wiki/%5BKorean%5D-White-Paper


 



Posted by codedragon codedragon

댓글을 달아 주세요

2020. 2. 20. 10:17

상태(state) Security/BlockChain


 

 

상태(state)

비트코인의 UTXO 상태가 소모됨, 소모되지 않음의 가지 경우 밖에 없다고 이야기 했지만, 이더리움은 다양한 상태를 구현하고 인지할 있기 때문에 다양한 구조를 구현할 있습니다.

 

비트코인

이더리움

UTXO상태가 '소모됨', '소모되지 않음' 가지만 존재합니다.

다양한 상태를 구현하고 인지할 있습니다.

 

 




Posted by codedragon codedragon

댓글을 달아 주세요


 

 

상태 변환 시스템

·         기술적으로 봤을 , 비트코인이나 이더리움은 일종의 상태 변환 시스템으로 있습니다.

·         상태 변환 시스템은 현재 비트코인 소유권 현황으로 이루어진 하나의 상태(State) 현재 상태의 트랜잭션을 받아서 결과로써 새로운 상태를 출력해주는 상태 변환 함수로 구성되어 있습니다.

 

 


 

 

은행 시스템에 비유

·         상태(State) 모든 계좌의 잔고 (balance sheet)이고 트랜잭션은 A에서 B $X 송금하라는 요청이며, 상태 변환 함수에 의해 A 계좌에서는 $X 감소하고 B 계좌에서는 $X 증가합니다.

·         만약 처음에 A 계좌에 있는 금액이 $X 이하였으면 상태 변환 함수가 에러로 리턴합니다.

 

 

 

 

 

 

 

상태 변환

상태 변환을 비트코인 장부에서는 Apply라는 상태함수로 정의할 있습니다.

 

 

 

은행 거래를 예시

Alice 50달러, Bob 50달러를 가지는 계좌 잔고 상태입니다.

 

 

[이더리움 Transaction 구조 예시 1]

Alice에게서 Bob으로 20달러를 전송하는 트랜잭션을 발생하면, Apply 상태 변환 함수는 결과로 Alice 30달러, Bob 70달러의 새로운 상태를 반환하게 됩니다.


 

APPLY({ Alice: $50, Bob: $50 },"send $20 from Alice to Bob") == { Alice: $30, Bob: $70 }

 

 

 

[이더리움 Transaction 구조 예시 2]

만약 Alice 에서 Bob 으로 70달러를 전송하는 트랜잭션을 발행하면, 상태 변환 함수는 새로운 상태 대신 에러를 반환하게 됩니다.

 


 

APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR

 

 




Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

함수 호출(Function Calls)

함수를 호출하는 방식은 스마트 계약 내에서 이루어지는 Internal function call 내부 함수 호출과 Contract 함수를 호출하는 External Function Call 외부함수 호출로 구분됩니다.

 

·       Internal Function Call

·       External Function Call

 

 

 

 

Internal Function Call

·       내부 함수 호출은 Contract 내부에서 함수를 호출합니다. 동일 스마트 계약 함수들끼리만 가능합니다.

·       EVM 내에서의 단순한 호출이므로 현재의 메모리 상태가 유지되는 특징이 있습니다.

 

 

 

 

 

 

 

 

 

External Function Call

·       외부 함수 호출은 스마트 계약의 함수를 호출합니다.

·       내부 함수 호출이 단순 호출(Simple jump) 반해서 외부 함수 호출은 Message Call 형태를 띠게 됩니다.

·       함수 호출에 따라 변숫값(메모리에 저장된 ) 복제되어 전달됩니다.

·       Message Call 형태이므로 value gas 전달되어야 하며, .value() .gas()함수를 통해서 호출됩니다.

 

 

 

 

 

Internal Function Call vs External Function Call

 

Internal Function Call

External Function Call

단순 호출(Simple jump)

메시지콜(Message Call)

 

 



Posted by codedragon codedragon

댓글을 달아 주세요



 

이더리움 통화량

·       2018 6 1 개의 Ether 유통되고 있습니다.

·       비트코인의 경우 유통량이 채굴량인데 이더리움의 경우 유통량과 채굴량이 다릅니다. 이유는 이더리움의 경우 ICO 통해서 Crowdsale 진행했기 때문입니다.

·       지금은 이더리움 네트워크 기반에 ERC20 스마트 계약 통해 손쉽게 신규 암호화폐를 발행할 있지만, 2014 당시만 해도 신규 코인 발행은 매우 어렵고 번거로운 작업이었습니다. 그래서 이더리움 ICO Crowdsale 같이 코인을 먼저 판매하고, 후에 이더리움 네트워크를 구성하여 이더리움을 전송하는 절차를 거치게 되었습니다.

·       이런 이유로 비트코인의 경우 Genesis 블록부터 채굴이 되고 신규 코인이 발행되지만, 이더리움은 Genesis 블록에 이미 Crowdsale 6천만 개와 이더리움 재단 보유물량 1 2백만 개를 포함하게 되었습니다.

·       Genesis 블록에 포함된 7 2백만 개의 Ether 이후 마이닝을 통해 발생된 2 6백만 Ether, 그리고 엉클 트리에 대한 보상 1 8백만 개의 Ether 합하여 1 개의 Ether 유통되고 있는 상황입니다. ([ETHER DISTRIBUTION OVERVIEW] 참고)

 

 

 

 

비트코인  vs 이더리움

구분

비트코인

이더리움

채굴량

유통량이 채굴량입니다.

 유통량과 채굴량이 다릅니다

유통량

Genesis 블록부터 채굴이 되어 신규 코인이 발행

Genesis 블록 + Crowdsale 6천만 + 이더리움 재단 보유 물량 1 2백만

 

 

 

 

 

 

[ETHER DISTRIBUTION OVERVIEW]

요약하면 이더리움 유통량은 이더리움 Genesis 블록에 포함된 72백만 Ether, 이후 채굴된 3 8백만 Ether입니다.


 

 

 

 

 

 

[Total Ether Supply and Market Capitalization]

 

https://etherscan.io/stat/supply

 


Posted by codedragon codedragon

댓글을 달아 주세요



 

비트코인 블록 탐색기(Blockchain Explorer)

비트코인 통계 정보를 제공하는 아래 사이트에서 주요 통계치 확인할 있습니다.

 

https://www.blockchain.com/explorer

https://blockchain.info/


 

 




Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

특수용도 변수들 & 함수들

이더리움 스마트 계약은 특수 용도의 변수들과 함수들을 정의하고 있습니다.

 


 

 

 

구분

설명

blockhash

·       Blockhash blocknumber input 인자로 받습니다.

·       주어진 block number 해당하는 32 bytes hash값을 리턴합니다.

block.coinbase

·       현재 블록 채굴자의 외부 계정 주소(address) 또는 지갑 주소를 리턴하게 됩니다.

block.difficulty

·       현재 블록의 채굴 난이도를 반환합니다.

block.gaslimit

·       현재 블록의 가스 리미트를 반환합니다.

block.number

·       현재 블록의 넘버를 반환합니다.

·       현재 블록의 넘버는 현재 블록까지의 블록체인 길이이기도 니다.

block.timestamp

·       현재 블록의 timestamp로서 unix epoch 이후 단위를 알려줍니다.

gasleft()

·       Gasleft 함수로써 현재 남은 가스량을 알려줍니다.

msg.gas

·       gasleft() 함수와 마찬가지로 현재 남은 가스량을 알려줍니다.

·       0.4.21 버전 이전에 사용되다가, 이후 gasleft() 대체되었습니다.

msg.data

·       현재 message call 전체 데이터를 반환합니다. Cal Data라고도 부릅니다.

msg.sig

·       msg.data 또는 Call Data 4 bytes 반환합니다.

·       함수 ID로도 사용됩니다.

msg.value

·       현재 message call 함께 전송된 Ether 양입니다.

·       스마트 계약에서 Ether 기본단위인 wei 단위로 표현됩니다.

now

·       현재 블록의 timestamp로서 block.timestamp 동일합니다.

tx.gasprice

·       Transaction Gas Price 반환합니다.

tx.origin

·       transaction 송신자의 주소(address) 반환합니다.

 

 

이더리움 스마트 계약은 블록의 넘버와 같은 블록 정보에 접근할 있고 이더리움 백서에 언급된 Blockchain Awareness 개념이 구현되어 있습니다.

비트코인은 Blockchain Blindness, 비트코인 스크립트는 블록의 정보를 수가 없습니다.

 


'Security > BlockChain' 카테고리의 다른 글

이더리움 통화량  (0) 2020.02.02
비트코인 블록 탐색기(Blockchain Explorer)  (0) 2020.01.27
특수용도 변수들 & 함수들  (0) 2020.01.21
블록체인의 활용분야  (0) 2020.01.14
Turing Complete  (0) 2020.01.07
State Variable 접근 유형  (0) 2019.12.30
Posted by codedragon codedragon

댓글을 달아 주세요


 

 

블록체인의 활용분야

블록체인은 디지털 자산 거래, 디지털 계약, 디지털 인증 분야 여러 분야에 더욱 간편하고 안전한 거래를 위해 활용되고 있습니다.

 

분야

활용

디지털 자산 거래 분야

·       결제

·       송금 주식 거래

·       채권/특허 무형자산의 소유권 금융자산 거래

·       주택/자동차와 같은 유형자산의 소유권 이전

디지털 계약 분야

·       블록체인 기술에 기반을 '스마트 계약(smart contract)'

·       다양한 규제와 거래 사이클을 가지는 글로벌 물류, 유통 분야

디지털 인증 분야

·       주소, 전화번호 기존의 개인정보

·       사용자의 생체 정보도 추가한 디지털 신분증으로 더욱 간편하고 안전한 인증을 구현하는 활용

 

 


Posted by codedragon codedragon

댓글을 달아 주세요