달력

8

« 2020/8 »

  •  
  •  
  •  
  •  
  •  
  •  
  • 1
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  


 

 

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

댓글을 달아 주세요

2019. 10. 31. 16:02

Scopoing Security/BlockChain


 

 

Scopoing

통상 일반적인 프로그래밍 언어에서 선언된 변수는 문법적 블록 내에서 유효합니다. 이에 반해 solidity 함수 내에서 선언된 변수는 함수 내에서만 scope 가집니다.

 

일반적인 프로그래밍 언어

solidity  언어

문법적 블록 내에서 유효

solidity 함수 내에서만 유효

 

 





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

스마트 계약 구조  (0) 2019.11.20
제어 구조(Control structure)  (0) 2019.11.10
Scopoing  (0) 2019.10.31
hydra (히드라) 영문 문서  (0) 2019.10.15
간단한 스마트 계약의 예제  (0) 2019.10.08
Solidity 특징  (0) 2019.09.26
Posted by codedragon codedragon

댓글을 달아 주세요



 

hydra (히드라) 영문 문서

https://cli.dev/docs/intro/


 

 

 

 

hydra (히드라) 한글 문서

http://bit.ly/2Ox7MSP


 


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

제어 구조(Control structure)  (0) 2019.11.10
Scopoing  (0) 2019.10.31
hydra (히드라) 영문 문서  (0) 2019.10.15
간단한 스마트 계약의 예제  (0) 2019.10.08
Solidity 특징  (0) 2019.09.26
선언된 변수  (0) 2019.08.29
Posted by codedragon codedragon

댓글을 달아 주세요