달력

11

« 2019/11 »

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


 

 

제어 구조(Control structure)

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

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

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

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

 



'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

댓글을 달아 주세요

2019.10.31 16:02

Scopoing Security/BlockChain


 

 

Scopoing

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

 

일반적인 프로그래밍 언어

solidity  언어

문법적 블록 내에서 유효

solidity 함수 내에서만 유효

 

 





'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

댓글을 달아 주세요



 

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

댓글을 달아 주세요


 

 

간단한 스마트 계약의 예제

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

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

 

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

댓글을 달아 주세요


 

 

 

Ether 송금과 수수료

 

Metamask라는 이더리움 전자지갑을 통해 1 Ether 송금한 입니다.

MyEtherMetaMask

0x3edd58d56c31005b331e788fe8e6bcb9227394e0c2d090f9a5e8f3683344b7bb

 

9.000 ETH

5115.24 USD

Amount

1.000 ETH

568.36 USD

Gas Limit

21000 UNITS

Gas Price

5 GWEI

Max Transaction Fee

0.000105 ETH

0.06 USD

Max Total

1.000 ETH

568.42 USD

Data included

0 bytes

 

 

 

송금액은 1 Ether 이고, 소요되는 가스인 GAS Limit 21,000 단위가 됩니다.

Amount

1.000 ETH

568.36 USD

Gas Limit

21000 UNITS

 

 

 

 

단위당 비용인 GAS Prices 5 GWEI 되는 것으로,  1 GWEI 10 분의 1 Ether 됩니다. (5 GWEI = 0.000000005 ETH)

Gas Price

5 GWEI

 

 

 

 

송금 수수료를 계산하면 GAS Limit GAS Price 곱하여 산출됩니다.

21,000 x 0.000000005 ETH = 0.000105 ETH

 

Max Transaction Fee

0.000105 ETH

0.06 USD

 

 

 

 

1 Ether 송금할 , 송금액인 1 Ether 송금수수료를 더해야 금액이 산출됩니다.

1 ETH(송금액) + 0.000105 ETH(거래수수료)= 1.000105 ETH

Max Total

1.000 ETH

568.42 USD

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

스마트 계약 활용

현실 경제의 계약에 대응되는 요소가 스마트 계약입니다. 그러므로 현실 경제에서 계약의 형태로 되어 있는 것은 스마트 계약으로 구현을 있습니다.

스마트 계약을 활용하면 안전하고 상호신뢰를 보장하면서 매우 혁신적으로 구현할 있습니다.

 

·       부동산 매매

·       전세/월세 계약

·       보험 계약

 

 


Posted by codedragon codedragon

댓글을 달아 주세요


 

 

 

에러 핸들링(Error Handling)

·         이더리움 스마트 계약은 Exception 만나면 State-Reverting, 모든 변경사항을 원래대로 복원하고 Caller에서 에러를 반환하고 종료하게 됩니다.

·         revert, require 통해서 exception 발생시킬 있습니다.

 

 

 

 

 

거래 전송에 실패하게 경우

거래의 경우 거래 전송에 실패하게 되면 전송에 소모된 GAS 소진되고 남은 GAS 송신된 Ether 송신자에게 반환되며 모든 상태를 복원하고 종료하게 됩니다.

 

 

 

 

 

 

스마트 계약의 경우

스마트 계약의 경우도 마찬가지로 스마트 계약의 실행으로 변환된 상태는 호출되기 이전 상태로 복원이 되고 그때까지 스마트 계약을 실행하는 소모된 가스는 소진됩니다. 또한 남은 가스와 스마트 계약에 송금된 Ether 송신자에게 되돌려주며 오류를 리턴하고 종료합니다. 그런데 이때 에러가 발생합니다. Error 가장 대표적인 사례는 Gas Limit 초과하는 경우입니다.

 

 

 

 

 

 

 

Gas Limit 초과

·         Gas Limit 충분히 할당하지 않으면 Gas Limit Exception 발생하게 되어 GAS 낭비가 발생할 있으니 주의가 필요합니다.

·         Solidity 에러 처리에 있어서 try / catch 같은 exception handling 지원하지 않고 오류를 리턴하게 됩니다.

 








Posted by codedragon codedragon

댓글을 달아 주세요


 

 

View Functions

·         키워드 view 선언된 함수는 state 변환시키지 않음을 확인시킵니다.

·         컴파일러는 view 선언된 함수가 state 변환시키지 않음을 강제하지 않고 대신 경고를 띄우게 됩니다.

 

 

 

 

State 변환시키는 경우

·         이더리움의 상태는 state 변수에 값을 할당하는 경우

·         event 발생시키는 경우

·         다른 스마트 계약을 생성하는 경우

·         selfdestruct 사용하여 스마트 계약을 폐기하는 경우

·         message call 호출하여 ether 전송하는 경우

·         view pure 선언되지 않은 함수를 호출하는 경우

 

 

 



Posted by codedragon codedragon

댓글을 달아 주세요