달력

1

« 2020/1 »

  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  


 

 

 

특수용도 변수들 & 함수들

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

 


 

 

 

구분

설명

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, 비트코인 스크립트는 블록의 정보를 수가 없습니다.

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

블록체인의 활용분야

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

 

분야

활용

디지털 자산 거래 분야

·       결제

·       송금 주식 거래

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

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

디지털 계약 분야

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

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

디지털 인증 분야

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

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

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

Turing Complete

·         튜링 완전 튜링 완전성 (turing completeness)

·         어떤 기계가 튜링 기계와 같은 상태라고 하면 이를 Turing Complete라고 합니다.

·         우리가 사용하는 컴퓨터는 튜링 기계의 일종이며 Turing Complete 상태입니다.

·         대부분의 프로그래밍 언어는 Turing Complete입니다.

·         Turing Complete 프로그래밍 언어는 어떠한 함수식도 구현할 있으므로, 우리가 알고 있는 프로그래밍 언어를 통해 어떠한 알고리즘과 응용프로그램도 구현할 있다는 의미가 됩니다.

 

http://bit.ly/2HlIcN0

https://en.wikipedia.org/wiki/Turing_completeness

 




Posted by codedragon codedragon

댓글을 달아 주세요



 

 

State Variable 접근 유형

접근 유형에는 다음과 같이 4가지 유형이 존재합니다.

 

 

private < internal < external < public

 

 

 

public

·         public으로 선언된 함수나 state 변수는 내부 호출 또는 message call 통해서 호출 또는 접근이 가능합니다.

·         public state 변수는 자동적으로 getter 함수가 생성됩니다.

 

 

 

 

 

external

·         external  스마트 계약  거래를 통해서 호출이 가능합니다.

·         external Internal 통해서 호출하는 대신 this 객체를 이용해서 외부 호출방식으로 내부호출도 가능합니다.

 

 

 

 

internal

·         Internal 선언된 함수  변수는 해당 contract 내부적으로만 접근이 가능합니다.

·          Contract  transaction, message call 통해서 호출  접근이 불가능합니다.

 

 

 

 

 

private

·         private 선언된 함수와 변수는 해당 스마트 계약에만 종속됩니다.

·         스마트 계약도 객체지향 언어의 일종으로 함수와 변수에 대한 정의를 상속(inheritance)  있습니다이때 private 선언된 함수와 변수는 상속이 되지 않습니다.

 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

블록체인의 구조

블록체인의 구조를 이해하기 위해서 먼저 블록체인의 기본 원소이자 핵심이라고 있는 블록(block) 대한 이해가 필요합니다.

 

 

 

 

블록(block)

·       블록체인의 기본원소

·       다수의 거래(transaction) 정보의 묶음

·       1개의 블록에는 평균 1,800개의 거래정보 저장

·       1개의 블록 크기는 평균 1.05MB 바이트

 

 

 

 

 

블록체인 도식도

블록은 블록 Header 블록 Body 구성되어 있으며, 각각의 블록들은 이전 블록의 해쉬 값을 통해 연결되는 체인(chain)구조로 되어 있습니다.

 


 

 


images.google.com

 



Posted by codedragon codedragon

댓글을 달아 주세요

 

 

SublimeEthereum

Ethereum Solidity and Vyper 언어에 문법 하이라이트를 가능하게 해주는 패키지입니다.

 

https://github.com/davidhq/SublimeEthereum


 

 

https://packagecontrol.io/packages/Ethereum


 


Posted by codedragon codedragon

댓글을 달아 주세요



 

 

 

현실경제 vs 이더리움 경제 사례

현실에서 Bob Alice에게 10달러를 주게 되었다고 가정할 때의 현실경제와 이더리움 경제의 거래 과정입니다.

 

 

 

현실경제

현실에서는 실물 종이 화폐 10달러를 주거나, Bob 은행 계좌에서 Alice 은행 계좌로 10달러를 이체하게 됩니다.

 


 

현실경제에서 Bob Alice에게 부동산 소유권을 이전했다고 한다면 Bob 소유자로 있는 부동산 등기가 이전 계약에 의해서 Alice 소유자로 변경됩니다.


 

 

 

 

 

 

 

이더리움 경제

이더리움 경제에서는 실물 화폐와 달리 개인에 대한 식별자가 실질적으로 존재하지 않습니다. 대신, 지갑이 이를 대신하는 구조를 가지게 됩니다.

이더리움 경제에서 Bob Alice에게 10 ETH 준다는 것은 Bob 소유하고 있다고 주장하는 이더리움 지갑에서 Alice 소유하고 있다고 주장하는 이더리움 지갑으로 10ETH 전송했다는 의미입니다.

 

 


 

비트코인 경제는 여기까지이지만, 이더리움 경제는 현실 경제에서 계약에 해당하는 스마트 계약이 존재합니다.

현실 경제에서의 계약과 마찬가지로 이더리움 경제에서는 지갑 간의 계약을 실행하게 됩니다.

이더리움 경제에서 Ether 이체도 엄격한 의미에서 스마트 계약이라고 있습니다.

 


 



Posted by codedragon codedragon

댓글을 달아 주세요


 

 

스마트 계약을 이해하기 위한 주요 개념

·         Message Calls(메시지 )

·         Delegate Call

·         Logs

·         Self-Destrect

 

 

Message Calls(메시지 )

스마트 계약(Smart Contract) 메시지 (Message Cal) 통해서 스마트 계약을 호출하거나 외부 계정으로 Ether 송금할 있습니다. 이런 메시지 콜은 거래(Transaction) 유사한 구조를 가지고 있습니다.

 

 

 

 

 

Delegate Call

일종의 Dynamic Library 같은 역할을 수행하며, 실행 시에 다른 계약 주소에서 코드를 가져오게 됩니다.

 

 

 

 

 

Logs

Contract Event 통해서 로그를 생성할 있으며, 블록체인 외부에 저장됩니다.

 

 

 

 

 

스마트 계약 생성

외부계정이 EVM Byte Code 배포를 통해서 스마트 계약을 생성(Create) 있듯이, 계약계정 또한 다른 스마트 계약을 생성할 있습니다.

 

 

 

 

 

Self-Destrect

·         한번 배포된 스마트 계약을 수정하는 불가능하며, 오직 selfdestrect 명령어를 통해서 삭제만 가능합니다.

·         블록체인에 배포된 거래나 스마트 계약은 수정이나 삭제가 불가능하므로 정확히는 삭제가 아니라 배포된 스마트 계약의 상태를 변환시킴으로써 이상 실행되지 않게 합니다.

 




Posted by codedragon codedragon

댓글을 달아 주세요



 

스마트 계약 구조

스마트 계약의 구조와 이를 구성하는 요소들입니다.

·         State Variables

·         Functions

·         Event

·         Function Modifiers

·         Enum

·         Struct

 

 

 

 

 

 




Posted by codedragon codedragon

댓글을 달아 주세요


 

 

제어 구조(Control structure)

·       Solidity 언어는 기존의 Javascript 언어 C 언어와 유사합니다.

·       Solidity Javascript 대부분의 control structure 거의 그대로 사용할 있습니다.

·       switch goto 기존 언어와 사용방법이 다르므로 사용에 주의를 기울여야 합니다.

·       switch goto를 제외한 나머지 if, else, while, do, for, break, continue, return 기존 언어 그대로 사용됩니다.

 



Posted by codedragon codedragon

댓글을 달아 주세요