달력

3

« 2020/3 »

  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  


 

 

이더리움 연구 포럼

 

https://ethresearch.kr/latest


 

 






Posted by codedragon codedragon

댓글을 달아 주세요


 

 

계약 생성

계약의 생성은 외부에서 이더리움 Transaction call 통해서 생성하거나 또는 Solidity Contract 내부에서 생성하는 가지 방법이 있습니다.

 

·       Contract 내부에서 생성하는 방법

·       Contract 외부에서 생성하는 방법

 

 

 

 

 

Contract 내부에서 생성하는 방법

·       Solidity Contract 내부에서 생성하는 방법입니다.

·       Contract 내부에서 생성하는 방법은 new 키워드를 통해서 다른 Contract 생성하는 방법이 있습니다.

 

 

 

 

 

Contract 외부에서 생성하는 방법

·       외부에서 이더리움 Transaction call 통해서 생성하는 방법입니다.

·       외부에서 생성하는 가장 대표적인 방법이 Javascript API web3.js 통하는 것입니다.

 

 

web3.js - Ethereum JavaScript AP

https://web3js.readthedocs.io/en/1.0/


 

 

 

 

 

Contract 내부 생성 vs Contract 외부 생성

 

Contract 내부 생성

Contract 외부 생성

Ethereum Transaction call

Solidity Contract 내부

Javascript API web3.js 사용

new 키워드를 사용

 

 

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

스마트 계약 Transaction

비트코인이 비트를 송금하는 Transaction 있는 것과 달리 이더리움은 Ether 송금하는 외에도 스마트 계약을 실행하는 Transcation 발생시킬 있습니다.

 

 

 

[5644354 블록의 Smart Contract Transaction 예시]

5,644,354 블록의 33개의 transaction 중에는 스마트 계약을 실행하는 transaction 포함되어 있습니다. 여기서 가장 많이 사용되는 것이 바로 ERC20입니다.

구분

TxHash

0x3edd58d56c31005b331e788fe8e6bcb9227394e0c2d090f9a5e8f3683344b7bb

TxReceipt Status

Success

Block Height

5649354 (1016 block confirmations)

TimeStamp

June-12-2019 09:15:27 AM +UTC

From

0xa91b22f1fbf51740610b114abbdc79833b736e05

To

Contract

0xb0280743b44bf7db4b6be482b2ba7b75e5da096c

Value

0 Ether ($0.00)

Actual Tx Cost/Fee

0.0018356 Ether ($1.31)

Input Data

Function

transfer(address _to, uint256 _value)

MethodID

0xa9059cbb

[0]

000000000000000000000000c1e5c168f168df91deaf90ee7820977e3bafeb22

[1]

00000000000000000000000000000000000000000000002076b8cd84882df800

 

 

 

 

 

Ether 송금과는 달리 To 수신자 Wallet ID 대신 Smart Contract ID 쓰인다는 것이 특징입니다.

구분

설명

From

Transaction 요청한 지갑 ID

 

0xa91b22f1fbf51740610b114abbdc79833b736e05

To

Smart Contract ID

 

Contract

0xb0280743b44bf7db4b6be482b2ba7b75e5da096c

 

 

 

예시는 0xb0 시작하는 Smart Contract 실행하게 되는 것으로, TNS Transcodium이라는 가상화폐 ERC20 스마트 계약 ID입니다.

여기서, Ether 송금하는 거래가 아니므로 Value 0 ether 표현되어 있습니다.

구분

Value

0 Ether ($0.00)

 

 

 

다른 Transaction 마찬가지로 Smart Contract 가스가 발생합니다.

구분

Actual Tx Cost/Fee

0.0018356 Ether ($1.31)

 

 

Smart Contract Transaction Input Data 사용하게 되는데, 호출하는 함수와 Input parameter 기입하게 됩니다.

여기서는 Transfer라는 함수와, 2개의 Input parameters ([0], [1]) 사용했는데 번째([0]) 수신자 Wallet ID, 번째([1]) 송금액이 됩니다.

 

해석하면 0xa9 시작하는 Wallet ID로부터 0xc1으로 시작하는 Wallet ID TNS라는 가상화폐를 598개를 보내는 거래 내역입니다.

구분

Input Data

구분

Function

transfer(address _to, uint256 _value)

MethodID

0xa9059cbb

[0]

000000000000000000000000c1e5c168f168df91deaf90ee7820977e3bafeb22

[1]

00000000000000000000000000000000000000000000002076b8cd84882df800

 

 

 





Posted by codedragon codedragon

댓글을 달아 주세요

 

시빌 공격(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

댓글을 달아 주세요