스크립트 ( Script ) ?
UTXO를 이용해 화폐를 주고 받기 위해서는 컴퓨터가 이해하고 처리할 수 있도록,
스크립트라는 스크립트 언어를 사용하여 구현한다.
( 비트코인에서는 비트코인 스크립트라고 부른다.)
비트코인은 프로그래밍할 수 있는 화폐 ( Programmable Money ) 에 대한 대중성을 추가했다.
스크립트 동작 원리
스크립트는 역폴란드 표기법 ( Reverse Polish Notation )으로 작성된 스택 기반 튜링 불완전 언어이다.
( 중요한 것은 스택 구조 기반으로 작동한다는 것 )
스크립트 프로그램은 두 종류의 객체를 갖고 있다.
- Opcode : + - * 과 같은 연산 작업을 나타낸다.
- 스택 조작 연산 : Opcode가 아닌 모든 데이터는 원시 데이터로 해석되며, 스택에 들어간다.
- 산술/비교/비트연산 : POP PUSH DUB SWAP
- 환경 연산 : CALLER CALLVE NUMBER
- 메모리 조작 연산 : MLOAD MSTORE MSTORE8 MSIZE
- 스토리지 조작 연산 : SLOAD SSTORE
- 프로그램 카운터 관련 연산 : JUMP JUMPI PC JUMPDEST
- 작업 중지 연산 : STOP RETURN REVERT INVALID SELFDESTRUCT
스크립트는 이 Opcode와 DATA를 일렬로 늘어놓는다.
포인터는 일렬로 늘어진 Opcode와 데이터를 순서대로 가리키면서 데이터를 가리키면 스택에 넣고
Opcode를 가리키면 스택에서 데이터를 꺼내온다.
스크립트 실행이 성공적이면 스택의 최상에 있는 요소는 1이 된다.
1이 아닌 다른 값이 있으면 스크립트 실행을 실패한 것으로 간주한다.
자주 쓰이는 비트코인 스크립트
Pay To PubKey(P2PK)
P2PK 방식은 보안에 취약하기 때문에 오늘날에는 쓰이지 않는다.
PayToPubKeyHash(P2PKH)
P2PK와는 다르게, 서명과 공개키가 ScriptSig에 들어있다.
비트코인 스마트 컨트랙트의 한계
라이트닝 네트워크 ( Lightning Network )
비트코인의 거래량이 늘어날수록 트랜잭션 양이 늘어나지만 TPS 는 고정되어 있기 때문에
트랜잭션이 많아질수록 처리되는 속도가 느리다.
이러한 성능 문제를 해결하기 위해 등장한 것이 라이트닝 네트워크다.
라이트닝 네트워크는, 트랜잭션의 내용을 블록체인 외부에 저장하고 최종 결과만 블록체인에 올리는 방법이다.
트랜잭션이 블록체인 바깥에서 이루어지기 때문에 트랜잭션 처리에 많은 대기 시간이 필요하지 않는다.
루트스탁 ( Rootstock, RSK )
루트스탁은 비트코인에 스마트 컨트랙트 기능을 탑재하는 사이드체인 프로젝트이다.
비트코인에서 스마트 컨트랙트 구현이 가능하지만 연산에 대한 수수료가 비싸서 사용이 어려웠음
튜링 불완전하기 때문에 컨트랙트 사용성 측면에서 제약이 컸다.
루트스탁은 2-Way peg를 이용해 튜링 완전한 스마트 컨트랙트를 지원하는 블록체인을 쌍방향으로 연결
병합 채굴 ( Merge-Mining ) 을 통해 비트코인 채굴 노드가 사이드 체인 블록까지 채굴할 수 있도록 연결
튜링 불완전 비트코인에서도 튜링 완전한 스마트 컨트랙트를 실행할 수 있게 되었다.
탭루트 ( TapRoot )
'BlockChain > 스마트 컨트랙트' 카테고리의 다른 글
솔리디티 기본 문법 (1) | 2023.03.29 |
---|---|
솔리디티란? ( Solidity ) (2) | 2023.03.28 |
이더리움 스마트 컨트랙트 (0) | 2022.12.22 |
비트코인 스마트 컨트랙트 (1) | 2022.12.21 |
스마트 컨트랙트 (0) | 2022.12.21 |
댓글