"옵코드"의 두 판 사이의 차이
(→흐름제어) |
(→스택) |
||
24번째 줄: | 24번째 줄: | ||
===스택=== | ===스택=== | ||
+ | *'''OP_TOALTSTACK''' : 입력을 Alt 스택의 맨 위에 놓는다. 기본 스택에서 제거한다. | ||
+ | *'''OP_FROMALTSTACK''' : 입력을 기본 스택의 맨 위에 놓는다. 대체 스택에서 제거한다. | ||
+ | *'''OP_IFDUP''' : 상단 스택 값이 0이 아니면 복제한다. | ||
+ | *'''OP_DEPTH''' : 스택 항목 수를 스택에 넣는다. | ||
+ | *'''OP_DROP''' : 상단 스택 항목을 제거한다. | ||
+ | *'''OP_DUP''' : 상단 스택 항목을 복제한다. | ||
+ | *'''OP_NIP''' : 두 번째부터 끝까지 쌓인 항목을 제거한다. | ||
+ | *'''OP_OVER''' : 두 번째에서 위쪽까지 스택 항목을 맨 위에 복사한다. | ||
+ | *'''OP_PICK''' : 스택에 있는 항목 n이 맨 위로 복사된다. | ||
+ | *'''OP_ROLL''' : 스택에 있는 항목 n이 맨 위로 이동한다. | ||
+ | *'''OP_ROT''' : 스택의 맨 위 3개 항목이 왼쪽으로 회전한다. | ||
+ | *'''OP_SWAP''' : 스택의 맨 위 두 항목이 바뀐다. | ||
+ | *'''OP_TUCK''' : 스택의 맨 위에 있는 항목이 두 번째에서 맨 위 항목보다 먼저 복사되고 삽입된다. | ||
+ | *'''OP_2DROP''' 맨 위 두개의 스택 항목을 제거한다. | ||
+ | *'''OP_2DUP''' : 상위 2개의 스택 항목을 복제한다. | ||
+ | *'''OP_3DUP''' : 상위 3개의 스택 항목을 복제한다. | ||
+ | *'''OP_2OVER''' : 한 쌍의 항목을 스택의 앞뒤로 두 칸 복사한다. | ||
+ | *'''OP_2ROT''' : 5번째와 6번째 항목은 스택의 맨위로 이동한다. | ||
+ | *'''OP_25WAP''' : 상위 두 쌍의 항목을 교환한다. | ||
+ | |||
===접착=== | ===접착=== | ||
===비트 논리=== | ===비트 논리=== |
2019년 8월 14일 (수) 14:56 판
옵코드(OPCode)는 명령 또는 함수라고도하는 모든 스크립트 단어의 목록이며, 데이터를 푸시하거나 Pubkey 스크립트 또는 서명 스크립트 내에서 기능을 수행하는 비트코인 스크립트 언어의 작업코드이다.
목차
개요
비트코인(Bitcoin) 노드에서 실행되는 소프트웨어는 프로그래밍 언어 C ++로 작성되지만 비트코인 트랜잭션에는 스크립트 라는 비트코인 관련 언어로 작성된 명령이 포함될 수도 있다. 이더리움(Ethereum) 플랫폼에는 분산 응용 프로그램 및 스마트 계약을 허용 하는 Turing-complete 프로그래밍 언어가 있지만 스크립트는 옵코드라는 일련의 명령으로 구성된 가능한 작은 범위의 작업 만 허용하는 기본 언어이다.[1]
명령어
상수
- OP_0, OP_FALSE : 빈 바이트 배열이 스택으로 푸시된다.
- N/A : 다음 옵코드 바이트는 스택에 푸시 할 데이터이다.
- OP_PUSHDATA1 : 다음 바이트는 스택으로 푸시 될 바이트 수를 포함한다.
- OP_PUSHDATA2 : 다음 2 바이트에는 리틀 엔디안 순서로 스택에 푸시 할 바이트 수가 포함된다.
- OP_PUSHDATA4 : 다음 4 바이트에는 리틀 엔디안 순서로 스택에 푸시 할 바이트 수가 포함된다.
- OP_1NEGATE : 숫자 -1이 스택으로 푸시된다. 코드 숫자로는 79로 나타내고,
- OP_1, OP_TRUE : 숫자 1이 스택으로 푸시된다.
- OP_2-OP_16 : 단어 이름(2-16)의 숫자가 스택으로 푸시된다.
흐름제어
- OP_NOP : 아무것도 하지 않는다.
- OP_IF : 최상의 스택 값이 False가 아닌 경우 명령문이 실행된다. 상단 스택값이 제거된다.
- OP_NOTIF : 최상위 스택 값이 False일 경우 명령문이 실행된다. 상단 스택값이 제거된다.
- OP_ELSE : 앞에서 OP_IF 또는 OP_NOTIF가 실행되지 않은 경우 이 명령문이 실행되고 실행 된 경우 이 명령문이 실행되지 않는다.
- OP_ENDIF : If/Else 블록을 종료한다. 모든 블록이 종료되거나 트랜잭션이 유효하지 않으며, OP_IF가 없는 OP_ENDIF도 유효하지 않다.
- OP_VERIFY : 최상위 스택 값이 True가 아닌 경우 트랜잭션을 유효하지 않은 것으로 표시한다. 상단 스택 값이 제거된다.
- OP_RETURN : 트랜잭션을 유효하지 않은 것으로 표시한다. OP_RETURN 이후 푸시문의 시퀀스를 포함하는 OP_RETURN으로 단일 출력을 허용한다.
스택
- OP_TOALTSTACK : 입력을 Alt 스택의 맨 위에 놓는다. 기본 스택에서 제거한다.
- OP_FROMALTSTACK : 입력을 기본 스택의 맨 위에 놓는다. 대체 스택에서 제거한다.
- OP_IFDUP : 상단 스택 값이 0이 아니면 복제한다.
- OP_DEPTH : 스택 항목 수를 스택에 넣는다.
- OP_DROP : 상단 스택 항목을 제거한다.
- OP_DUP : 상단 스택 항목을 복제한다.
- OP_NIP : 두 번째부터 끝까지 쌓인 항목을 제거한다.
- OP_OVER : 두 번째에서 위쪽까지 스택 항목을 맨 위에 복사한다.
- OP_PICK : 스택에 있는 항목 n이 맨 위로 복사된다.
- OP_ROLL : 스택에 있는 항목 n이 맨 위로 이동한다.
- OP_ROT : 스택의 맨 위 3개 항목이 왼쪽으로 회전한다.
- OP_SWAP : 스택의 맨 위 두 항목이 바뀐다.
- OP_TUCK : 스택의 맨 위에 있는 항목이 두 번째에서 맨 위 항목보다 먼저 복사되고 삽입된다.
- OP_2DROP 맨 위 두개의 스택 항목을 제거한다.
- OP_2DUP : 상위 2개의 스택 항목을 복제한다.
- OP_3DUP : 상위 3개의 스택 항목을 복제한다.
- OP_2OVER : 한 쌍의 항목을 스택의 앞뒤로 두 칸 복사한다.
- OP_2ROT : 5번째와 6번째 항목은 스택의 맨위로 이동한다.
- OP_25WAP : 상위 두 쌍의 항목을 교환한다.
접착
비트 논리
산수
암호화
잠금 시간
의사 단어
예약어
비활성화된 옵코드
2010년과 2011년에 심각한 버그가 발견되면서 비트코인 스크립트 언어에서 많은 옵코드가 비활성화되었다. 이러한 옵코드 중 일부가 비트코인 캐시(Bitcoin Cash)에서 제공 한 기능을 복원하고자 단순히 옵코드를 다시 활성화하는 대신, 제공하는 기능이 재검토되었으며 경우에 따라 옵코드가 다시 설계되었거나 특정 문제를 해결하기 위해 새로운 옵코드가 추가되었다.[2]
각주
- ↑ Corin Faife, 〈Nodes, Opcodes, and Satoshi's Vision: Today's Bitcoin Cash Hard Fork Explained〉, 《BREAKERMAG》, 2018-11-15
- ↑ 비트코인 캐시 공식 홈페이지 - https://www.bitcoincash.org/es/spec/may-2018-reenabled-opcodes.html
참고자료
- 비트코인 공식 홈페이지 - https://bitcoin.org/en/glossary/op-code
- 〈Script〉, 《비트코인위키》
- Corin Faife, 〈Nodes, Opcodes, and Satoshi's Vision: Today's Bitcoin Cash Hard Fork Explained〉, 《BREAKERMAG》, 2018-11-15
- 비트코인 캐시 공식 홈페이지 - https://www.bitcoincash.org/es/spec/may-2018-reenabled-opcodes.html