검수요청.png검수요청.png

옵코드

위키원
eom9522 (토론 | 기여)님의 2019년 8월 14일 (수) 15:00 판 (접착)
이동: 둘러보기, 검색

옵코드(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 : 상위 두 쌍의 항목을 교환한다.

접착

  • OP_CAT : 두 개의 문자열을 연결한다. 비활성화 되었다.
  • OP_SUBSTR : 문자열의 섹션을 반환한다. 비활성화 되었다.
  • OP_LEFT : 문자열에서 지정된 지점의 왼쪽 문자만 유지한다. 비활성화 되었다.
  • OP_RIGHT : 문자열에서 지정된 지점의 문자만 유지한다. 비활성화 되었다.
  • OP_SIZE : 스택 맨 위 요소의 문자열 길이를 펼치지 않는다.

비트 논리

산수

암호화

잠금 시간

의사 단어

예약어

비활성화된 옵코드

2010년과 2011년에 심각한 버그가 발견되면서 비트코인 스크립트 언어에서 많은 옵코드가 비활성화되었다. 이러한 옵코드 중 일부가 비트코인 캐시(Bitcoin Cash)에서 제공 한 기능을 복원하고자 단순히 옵코드를 다시 활성화하는 대신, 제공하는 기능이 재검토되었으며 경우에 따라 옵코드가 다시 설계되었거나 특정 문제를 해결하기 위해 새로운 옵코드가 추가되었다.[2]

각주

참고자료

같이보기

  검수요청.png검수요청.png 이 옵코드 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.