본문 바로가기
전공공부/블록체인공학

스마트컨트랙트(2)

by 으노으뇨 2021. 10. 23.
728x90
반응형
SMALL

스마트컨트랙트에서 알아야할 내용

Solidity 

1. 스마트컨트랙트 구현을 위한 컨트랙트 기반의 고급 프로그래밍 언어

2. C++,파이썬, 자바스크립트의 영향을 받아 만들어짐

3. EVM에서 구동되도록 설계되었다.

가상머신

- 이더리음 블록체인 네트워크의 노드들이 공유하는 가상머신

- 거대한 분산컴퓨터

ABI

- application Binary Interface

- 컨트랙트의 함수와 매개변수들을 JSON형식으로 나타낸 리스트


스마트컨트랙트 코드

예시

pragma solidity ^version //(버전 프라그마)
// 계약선언
contract HelloWorld{
//상태변수 선언
string public greetingl
//생성자
function HelloWorld(String _greeting){
greeting = _greeting;
}
//매서드선언
function setGreeting(String _greeting){
greeting = _greeting;
}
function say() constant returns(string){
return greeting;
}
}

버전선언, 계약선언, 상태변수, 생성자, 매서드등 자바와 비슷하다

스마트컨트랙트 배포

1. Remix 사용 : 바이트 코드와 ABI를 자동 획득 가능

2. geth 사용 : 모든 과정을 일일이 생성하여 획득 가능- 하나하나 다입력해서 사용하는것임!

- 바이트 코드로부터 ABI얻어온다. (스마트컨트랙트에서 사용될 인터페이스 부분)

- ABI로 부터 스마트 객체 생성

- 스마트 컨트랙트 배포

- 채굴

스마트컨트랙트 접근 및 사용

1. 스마트 컨트랙트 작성

2. 거래기록

3. 스마트컨트랙트 코드 실행

4. 컨트랙트 계정의 내용을 보고 거래내역 실행

5. 송-수진자의 조건 만족

6. 거래내역이 블록체인에 기록되고 실행되면 컨트랙트는 주어진 조건 반응

업무처리 사례

1. 스마트컨트랙트 작성 (A가 물건을 받으면 B에게 1이더를 보냄)

2. 거래기록 (A가 1이더와 코드를 전송한다.)

3. 코드실행(보유금액이 1이더이고, 코드에는 물건을 받으면 1이더를 B에게 지급한다고 작성)

4. 거래내역 실행(B는 1이더가 담긴 컨트랙트 계정과 코드의 내용을 보고 물건을 A에게 보냄, 물건을 받은 A는 컨트랙트 계정을 수신인으로 하여 1이더를 B에게 보내며, 거래안에 조건만족 코드를 씀)

5. 조건 반응(해당 거래가 블록체인에 기록되고 거래 관련 코드가 실행됨, 컨트랙트는 주어진 조건에 반응하여 B에게 1이더 전송)

즉 제 3자의 개입없이 거래가 성사되었다.

- 조건에 만족하는 경우 거래성사, 성사된 거래가 블록체인에 기록된다.

스마트컨트랙트 장단점

장점 

누구나 컨트랙트 배포가능

컨트랙트 소유자가 아니더라도 검증 가능

코드 실행의 자동화

위변조가 어려움

단점

이더리움의 경우 스마트컨트랙트 실행을 위해여 gas등 fee가 (수수료)가 필요하다.

728x90
반응형
LIST

댓글