달력

1

« 2021/1 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  
반응형




MIT Technology Review; MIT테크놀로지 리뷰

·         미국 MIT 매사추세츠 공과대학교가 출판하는 과학기술분석 잡지

·         인공지능, 바이오, 우주, 블록체인, 기술과 사회, 기후변화, 스마트시티, 컴퓨팅에 대한 토픽에 대한 이슈를 다룹니다.

 

https://www.technologyreview.com/


 

 

MIT테크놀로지 리뷰 코리아

https://www.technologyreview.kr/




반응형
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

댓글을 달아 주세요

반응형


 

 

 

함수 호출(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

댓글을 달아 주세요

반응형


 

 

 

특수용도 변수들 & 함수들

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

 


 

 

 

구분

설명

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

댓글을 달아 주세요

반응형



 

 

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

댓글을 달아 주세요

반응형


 

 

제어 구조(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

댓글을 달아 주세요

반응형


 

 

간단한 스마트 계약의 예제

스마트 계약의 구조를 이해할 있는 가장 기본적인 스마트 계약의 예제입니다.

예제는 스마트 계약이 갖추어야 기본 요소들을 모두 포함하고 있습니다.

 

SimpleStorage.sol


http://bit.ly/2CyJW2i

 



반응형

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

Scopoing  (0) 2019.10.31
hydra (히드라) 영문 문서  (0) 2019.10.15
간단한 스마트 계약의 예제  (0) 2019.10.08
Solidity 특징  (0) 2019.09.26
선언된 변수  (0) 2019.08.29
Ether 송금과 수수료  (0) 2019.08.18
Posted by codedragon codedragon

댓글을 달아 주세요

반응형


 

 

Solidity 특징

·       Turing Complete 프로그래밍 언어

·       BitCoin(비트코인) vs Ethereum(이더리움)

 

 

Turing Complete 프로그래밍 언어

·       Turing Complete 프로그래밍 언어입니다. Turing Complete 프로그래밍 언어로 어떠한 알고리즘과 응용프로그램도 구현할 있습니다.

·       비트코인의 경우 프로그래밍이 가능한 Script 언어가 있지만 Turing Complete하지 않습니다. 따라서 비트코인 Script 언어를 가지고는 모든 알고리즘이나 응용프로그램을 구현할 없습니다.

Turing Complete 언급되는 이유는 이더리움이 비트코인과 많이 비교되기 때문입니다.

·       비트코인은 화폐의 기능으로서 저장, 전송에 적합하지만 Turing Incomplete하므로 이더리움과 같은 범용적인 스마트 계약을 작성할 없습니다.

 

 

 

 

BitCoin(비트코인) vs Ethereum(이더리움)

비트코인의 경우 프로그래밍이 가능한 Script 언어가 있지만 Turing Complete하지 않습니다. 따라서 비트코인 Script 언어를 가지고는 모든 알고리즘이나 응용프로그램을 구현할 없습니다.

BitCoin

Ethereum

Programmable Script

Programmable Language

Turing Incomplete

Turing Complete

화폐의 기능으로서 저장, 전송에 적합

화폐기능 + 범용적인 스마트 계약 작성

P2P 전자화폐

스마트 계약과 분산 애플리케이션

 

 



반응형

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

hydra (히드라) 영문 문서  (0) 2019.10.15
간단한 스마트 계약의 예제  (0) 2019.10.08
Solidity 특징  (0) 2019.09.26
선언된 변수  (0) 2019.08.29
Ether 송금과 수수료  (0) 2019.08.18
스마트 계약 활용  (0) 2019.07.28
Posted by codedragon codedragon

댓글을 달아 주세요

반응형



 

 

선언된 변수

·         선언된 변수는 별도의 값을 할당하지 않는다면 Zero Bytes 초깃값이 설정됩니다.

·         bool type 경우 초깃값(default value) false이고, uint int 경우에는 0 값으로 설정됩니다.

 




반응형
Posted by codedragon codedragon

댓글을 달아 주세요