본문 바로가기

학교 공부/블록체인10

[Ethereum] Solidity 기본 변수와 함수 종류 Solidity Language란? : EVM에 byte코드로 생성된다. 따라서 bytecode만 해석하면 되고, javascript, C++, JAVA 등과 비슷하다. Solidity version 표현 (ex1) pragma solidity>= 0.4.16 > 600 sec - Ether unis : wei, Szabo, ether 이미 선언된 변수명(global variable) 1) msg object 종류 : msg.sender(address) / msg.value(ether 값) / msg.data(data payload) / msg.sig(어떤 function을 갖고 있는지) 2) tx object 종류 : tx.gasprice(gas price) / tx.origin(transaction을.. 2021. 8. 1.
[Ethereum] Smart Contract 보안 취약점 이더리움 보안 가이드라인 - Minimalism : 꼭 필요한 기능들만 가진 contract을 제작하자. - Code reuse : 코드를 작성할 때 library를 찾아서 써라. - Code quality : 제작된 contract은 항상 블록체인에 올라가 있다. 따라서 처음 만들 때 제대로 만들어서 사용하자. - Readability : 가독성이 좋도록 작성하자. - Test coverage : 다양한 형태의 input 값을 테스트 해보자. 대표적인 취약점 1) Reentrancy 공격 : fallback() 함수를 이용한 취약점이다. 사용자가 외부 공격자의 contract 코드를 사용했을 때, 호출한 함수가 존재하지 않는다면 공격자 contract의 fallback() 함수가 동작된다. 그럼 이때,.. 2021. 6. 11.
[Ethereum] solidity언어 문법 Solidity Language : smart contract 과정 중 EVM에서 byte코드를 생성하고, smart contract을 만들기 위한 가장 많이 쓰이는 언어이다. 1) solidity 버전 선언 : 두 가지 중 마음에 드는 걸 사용하자. - pragma solidity >= 0.4.16 2021. 6. 11.
[Ethereum] Smart Contract이란? Smart Contract이란? : 디지털화된 계약으로 생각하자. EVM을 기반으로 동작하고 decentralized된 world computer 그 자체라고 말할 수 있다. Smart Contract 생성 과정 1) 컴파일을 통해 EVM에서 동작할 수 있는 코드로 변환됨. 2) deploy smart contract이 생성됨. 3) key가 존재하지 않는 하나의 address가 생성됨. - smart contract은 생성자 및 소유자가 존재하지 않는다. 단지 누군가의 호출에 의해서 실행될 뿐이다. - EOA로부터 tx를 받아 동작하는데, 이때 또 다른 contract에 의해, 혹은 또 다른 contract을 호출할 수 있다. >> 이것은 contract chain이라고 부름. Contract Chai.. 2021. 6. 3.
[Ethereum] Transaction이란? Transaction이란? : 일반적인 데이터에 transaction 생성자의 전자서명이 담긴 메시지라고 생각하면 쉽게 이해할 수 있다. EOA에 의해서 생성되기 때문에 private key를 가지지 않는 smart contract에서는 transaction을 만들지 못한다. Transaction 구조 - Nonce : replay attack을 막기 위한 용도로, 하나의 account가 있을 때 몇 개의 transaction을 전송했는지 의미함. - Gas price : 가스 하나의 가격(wei 단위) - Gas limit : 최대 가스 소모량 - Recipient : target account - Value : 얼마의 이더를 송금할 것인가? - Data : contract 코드의 실행을 위한 필드 -.. 2021. 6. 3.
[Ethereum] 이더리움에서 사용하는 암호학 이더리움에서 사용하는 암호학 - 전자서명 : account를 증명함. - 해시함수 : transaction의 무결성을 증명함. 전자서명은 이더리움 계정(account)에서 사용하는데, 전자서명을 생성하기 위해 private key가 필요하다. 따라서 EOA에서 사용하고 있으며(contract account에서는 사용 못함), transaction을 하기 위해서는 올바른 전자서명을 붙여서 전송하는데 이때, 공개키 암호화 알고리즘을 통해 account를 확인한다. (private key는 사용자 측에 저장되어 있으며 절대로 옮겨지거나 전송되지 않는다.) 공개키 암호화 알고리즘은 이더리움 상에 새로운 account를 생성할 때 이를 사용한다. - 상대방의 public 키로 암호화하고, 데이터를 받은 본인은 본.. 2021. 6. 3.