오피리턴
오피리턴(OP_RETURN)은 비트코인과 비트코인캐시 등에서 트랜잭션 출력을 ‘유효하지 않은 것(invalid)’으로 표시하는 데 사용되는 스크립트이다. 옵리턴이라고도 한다. 오피피턴은 하나의 스크립트 조작 코드로, 사무 출력을 무효로 표시하는데 사용된다. 오피리턴은 어떤 출력도 신뢰할 수 없음을 증명할 수 있기 때문에 오피리턴 출력은 비트코인을 기록할 때 사용된다.[1] 오피리턴 기능은 2014년에 정식 출시되었다.[2] Bitcoin Core 0.9.0 이상 에서 기본적으로 릴레이 및 마이닝되는 트랜잭션 유형으로, 전체 노드 가 UTXO 데이터베이스 에 저장할 필요가없는 입증 할 수없는 pubkey 스크립트에 임의의 데이터를 추가한다. [3]
목차
개요
평소 비트코인 금융 거래에 영향을 미치지 않은 메타데이터(metadata)를 사용할 수 있다. 오피리턴은 블록체인 처리 과정에 영향을 주지 않고 블록체인상에서 제거도 가능하다. 비트코인캐시(BCH)도 무허가성을 기반으로 하며 BCH는 의사결정 방식인 ‘합의 알고리즘’에 변화를 주지 않아도 여러 프로젝트를 시도할 수 있는 것이 오피리턴이다. 때문에 BCH 블록체인 상에서 스마트 계약이나 토큰을 발행하는 등 여러 기능들을 자유롭게 구현할 수 있다.
BCH는 2018년 5월 오피리턴 용량을 늘려 플랫폼을 출시하는 데 용이하게 했다. 기존 40바이트(bytes)였던 오피리턴 용량을 업그레이드를 통해 220바이트로 늘렸다.
오피리턴은 모든 사람들이 자유롭게 활용해 혁신에 접목할 수 있는 요소이며 BCH상에서 프로젝트를 진행하고자 하는 사람 누구나 접미사처럼 코드 앞에 덧붙여 활용할 수 있고 상호보완성도 보장된다. 또한 오피리턴을 사용한다고 해도 합의 알고리즘에 변동이 있는 게 아니기 때문에 어떤 동의를 요청하지 않아도 된다.[4]
배경지식
비트코인의 각 거래 정보에는 입력과 출력의 두 가지 부분이 포함되어 있다. output 안의 스크립트를 검증 스크립트라고도 하고, input안의 스크립트를 튜닝 스크립트라고도 한다. A의 output에 있는 비트코인을 써버리는 거래를 하려면 B의 조달 스크립트가 A의 검증 스크립트를 충족할 수 있도록 거래 B를 구성해야 한다.[5]
오피리턴과 블록체인 데이터
블록체인은 하나의 불가변 데이터 구조로 볼 수 있기 때문에 사람들은 이 특성을 이용하여 다른 애플리케이션을 개발하려고 시도한다. 이것은 거래 기록에 다른 데이터를 저장해야 한다. 일반적인 P2PH(pay to pubKey hash)거래에서는 output에 있는 검증 스크립트를 다른 데이터로 바꿀 수 있다. 이렇게 하면 요건을 충족하는 디버깅 스크립트를 다시 찾기가 어렵기 때문에(해시를 반대로 구해야 함) 이 거래에서 비트코인을 더 이상 쓸 수 없게 된다. 비트코인 노드에서 대개 속도를 고려해 소비되지 않은 거래인 UTXO(Unspent Transaction Output))가 메모리에 저장되기 때문에 이러한 거래정보가 많은 메모리 공간을 차지하면서 비트코인 네트워크의 효율성에 영향을 미친다는 단점도 있다. 그래서 비트코인의 오피리턴 명령어를 사용할 수 있으며 이 명령어를 포함하는 거래도 쓸 수 없지만, 노드는 그것을 안전하게 UTXO집합으로 이동시킬 수 있으며, 이 거래는 오피리턴에 일정 수의 바이트를 저장할 수 있게 된다.[5]
비트코인 커뮤니티의 많은 구성원들은 오피리턴을 사용하는 것이 무책임하다고 생각하는데, 그 일부 원인은 비트코인이 임의의 데이터가 아닌 금융거래에 대한 기록을 제공하기 위한 것이기 때문이다. 그리고 외부의 대규모 복제 데이터 스토리지에 대한 수요는 기본적으로 무한하다는 점이다. 그럼에도 불구하고 블록체인에 데이터를 저장하는 다른 방식과 비교할 때, 오피리턴의 장점은 거짓 UTXO 항목을 만들지 않는다는 것이다.
이 변경은 블록체인에 데이터를 저장하는 것을 의미하지는 않는다. 오피리턴은 데이터 저장 방안 중 일부가 이미 배치되어 있고 임의의 데이터를 영구적으로 저장하지 않음을 증명하는 출력을 변경했다. 블록체인에 임의의 데이터를 저장하는 것은 여전히 나쁜 생각이며, 다른 곳에 비 화폐 데이터를 저장하는 것은 원가가 더 낮고 효율적이기도 하다.[6]
오피리턴 응용
오피리턴은 디지털 자산 소유권 증명에 사용할 수 있으며, 때로는 거래에 필요한 기타 정보를 전달하는 데 사용된다. 블록체인에 있는 이 저장 공간을 이용하여 시나리오를 만들어 비트코인 네트워크를 이용해 토큰을 발행할 수 있다. 사실 일찍부터 누군가 그렇게 했고 이더리움 합의 알고리즘은 원래 비트코인 네트워크에 기반한 것이다.[5] 2014년 3월 출시 이후 이미 오피리턴은 여러 각도에서 검증되었다. 오피리턴이 디지털 문서를 블록체인에 영구적으로 링크하는데 사용됨을 증명하는 서비스인 존재증명(PoE, Proof of Existence)이 그 중의 하나이다. Counterparty의 수석 개발자들은 40바이트의 오피리턴 데이터로부터 시스템을 실행하는 방법을 발견했다고 발표했다.
마스터코인(Mastercoin)은 임베디드 데이터에 의존하는 또 다른 프로젝트로, 사용 방법을 전문적으로 찾는 방법에 대한 OP_RETURN에 대한 논의를 시작했다. 스텔스 주소는 오피리턴의 또 다른 사례이다. 이 방안은 수신자의 공적인 키나 주소를 밝히지 않고 돈을 받을 수 있도록 했다. 이 시스템의 작업에 필요한 데이터를 디버깅 중에 오피리턴으로 인코딩하도록 한다. 본질적으로 비트코인은 보안 소식 전달 프로토콜로서 이중 기능을 가지고 있다.[7]
제한성
비트코인 핵심 개발자는 오피리턴이 비트코인 네트워크에 과다한 비거래 정보를 저장해 비트코인의 정상적인 사용에 영향을 줄 수 있다고 판단하고 크기(초기 40바이트에서 80바이트로 확장했다 다시 40바이트로 축소)를 제한했다. 이것은 일부 이층프로토콜 항목을 다른 메인체인에 돌리게 하였다. 사실 비트코인의 거래료는 거래의 부피와 관련되며, 사용자 모두가 기능 실현을 전제로 공간을 최대한 적게 차지하는 경향이 있으며, 지나치게 작은 강제 규제는 불필요하다. 게다가 오피리턴 거래의 총 볼륨은 전체 블록 볼륨의 0.3%에 불과하다.(2017)[5]
오피리턴 사례
- 비트코인 거래:
0x8bae12b5f4c088d940733dcd1455efc6a3a69cf9340e17a981286d3778615684
첫번째 output이 Unspendable address로 표시되고 Type이 비어있는 것을 볼 수 있다. 그리고 구체적인 내용을 볼 수 있다.
1 OP_RETURN 636861726c6579206c6f766573206865696469
0x36861726c6579206c6f766573206865696469는 UTF8-DECODER를 통해 다음과 같이 얻을 수 있다.[8]
1 charley loves heidi
- TD 아메리트레이드 깃발 로고 광고
미국대형증권 TD아메리트레이드(TD Ameritrade)는 ASCII 코딩(라틴 알파벳 기반 컴퓨터 코딩 시스템)으로 한 면의 깃발을 만들어 비트코인 블록에 광고를 했다. 2018년 4월 말, TD아메리트레이드는 68번의 비트코인 발송 거래를 통해 비트코인 블록에 이 회사 로고가 달린 숫자의 깃발을 만들었다고 발표했다. 이 회사는 비트코인 프로토콜의 오피리턴 기능으로 문자열을 삽입하여 68건의 무효 거래를 창설했다 .이 깃발은 블록체인이 고칠 수 없는 특징을 감안할 때 이 암호화된 화폐의 장부에 영원히 보존될 것이다.[2]
카카오페이
이와 같이 OP_RETURN은 데이터 저장용으로 비트코인 블록체인을 이용시 많이 사용되어왔다. 흥미로운 사실은, 카카오페이 또한 보안을 위하여 비트코인 블록체인을 이용해왔다.(현재는 하이퍼렛져 패브릭을 이용하고 있다.)카카오페이는 2016년 인증서에 대한 보안을 강화(정확히 말하자면 안전성 확보) 시키고자 블록체인을 활용하였고, 이에 사용할 수 있었던 퍼블릭 블록체인인 비트코인 블록체인을 활용하였다. 이들은 앞서 언급했던 방식과 동일하게 OP_RETURN의 여유공간을 활용하였고 인증서들의 해시값을 저장하는 방식을 사용하였다. 이들은 finality(확정성)와 scalability(확장성)의 문제로 하이퍼렛져 패브릭을 활용하는 방안으로 대체하였다. MIT와 카카오페이는 이더리움과 비트코인 블록체인이 검열저항성을 지니며 위변조를 막을 수 있고, 안전한 데이터베이스라고 생각하여 해당 블록체인에 증명서 혹은 증거를 저장하는 것이다. 블록체인의 쓰임새는 이와 같은 역할로 쓰일 수 있는것이다. 가장 안전한 데이터베이스로. ‘탈중앙화를 위한 블록체인’이라고 외치는 경우가 많지만 필자는 ‘검열저항성(censorship resistance)을 지니기 위한 블록체인’을 위해 탈중앙화를 선택했다는것을 모두가 꼭 인지했으면 좋겠다. [9]
OP_RETURN 사용
2014 년 3 월에 소개 된 이후 OP_RETURN여러 각도에서 검토되었다. 최소한 하나의 서비스 인 Proof of Existence 는 이제 OP_RETURN디지털 문서를 블록 체인에 영구적으로 연결하는 데 사용된다. 상대방의 수석 개발자 는 40 바이트의 OP_RETURN 데이터에서 시스템을 실행하는 방법을 발견 했다고 발표했다 . 임베디드 데이터에 의존하는 또 다른 프로젝트 인 Mastercoin 은 사용 방법을 찾기위한 토론을 시작했다 OP_RETURN. 스텔스 주소는 OP_RETURN실제 사례 중 하나이다. 이 체계를 통해 수신자의 공개 키 또는 주소를 공개하지 않고 지불을 받을 수 있다. 이 시스템을 작동시키는 데 필요한 데이터는에 대한 호출 내에서 인코딩된다 OP_RETURN. 본질적으로, 비트코인은 보안 메시징 프로토콜로서 이중 의무를 수행한다.
가장 잘 사용 OP_RETURN하려면 구체화하는 데 시간이 다소 걸릴 수 있지만 한 가지 분명하다. 많은 비트코인 사용자는 트랜잭션에 데이터 페이로드를 추가 할 때 가치를 느끼고 있으며 일부는 OP_RETURN이 목적으로 사용 하기 시작했다 . 사용하는 거래 OP_RETURN는 Coin Secrets 를 통해 모니터링 할 수 있다 . [10]
오피리턴 미래
2018년 5월, 비트코인캐시는 오피리턴의 공간을 223바이트로 늘렸다. 비트코인의 2층 협의 개발에 새로운 활력을 불어넣을 것으로 본다. OP_RETURN 40 바이트 제한은 비트코인의 미래에 대한 두 가지 반대 비전 사이의 절충을 나타낸다. 한 캠프는 블록 체인을 수많은 금융 및 소셜 응용 프로그램을 구축 할 수있는 안전한 분산 형 데이터 저장소로 간주한다. 이러한 새로운 응용 프로그램의 성장을 촉진하면 Bitcoin의 장기적인 관련성을 보장 할 수 있다. 트랜잭션이 애플리케이션 별 데이터를 표준 방식으로 전달할 수있게하면이 목표가 향상된다. 다른 캠프는 비트코인 블록 체인을 전자 현금 지불 기록 매체로만 간주한다. 그럼에도 불구하고 중요한 확장 성 문제는 조만간 해결해야한다. 임의의 응용 프로그램 계층의 데이터 요구 사항을 수용하려고하면 오늘날 네트워크를 유지 관리하는 데 드는 비용 만 증가시키면서 최종 계산 날짜를 앞당긴다. OP_RETURN데이터 의 40 바이트 제한 은 블록 체인을 데이터 저장소로 사용하는 것을 제한한다. 예를 들어, OP_RETURN원래 80 바이트의 데이터를 지원할 것으로 예상되었다. 40 바이트 후반의 가장 강력한 비판 중 하나는 상대방 에서 나 왔으며 , 40 바이트는 P2P 시장 및 금융 상품 시스템을 지원하기에 충분하지 않다고 주장 했다. 그러나 40 바이트 이상의 시퀀스는 해시 값과 같은 식별자를 인코딩하기에 충분한다. 이 값은 이미지,시, 추상 데이터 구조에 이르기까지 모든 디지털 문서를 고유하게 나타낼 수 있다. 내장 된 해시 값은 블록 체인을 분산 해시 테이블 과 같은 다른 데이터 저장소에 연결하는 방법을 제공한다 . [10]
결론
블록 체인의 수용 가능한 사용에 대한 Bitcoin의 오랜 논쟁은 필요한 명확성을 얻었다. 애플리케이션은 이제 OP_RETURN스크립트 기능을 사용하여 40 바이트 데이터 페이로드를 트랜잭션에 저렴하게 추가 할 수 있다 . 기술적 인 수준에서 OP_RETURN이전에는 불가능했던 것은 활성화하지 않는다. 대신, OP_RETURN새로운 서비스를 잠재적으로 블록 체인에 계층화 할 수있는 표준 인터페이스와 향후 통합 도구 작업을위한 중심점을 제공한다. 이러한 움직임은 Bitcoin의 비전을 현실에 한 걸음 더 가까이서 복잡한 계약을 중재하기위한 범용 플랫폼으로 제공한다. 비트코인 커뮤니티가 이 비전을 수용 할 수 있는 정도는 여전히 의문의 여지가 남아 있다.[10]
각주
- ↑ "OP_RETURN", 《比特币维基》,
- ↑ 2.0 2.1 〈[url 比特币OP_Return还能这样用?这波安利你吃不吃?]〉, 《区块网》, 2018-04-25
- ↑ 〈널 데이터(OP_RETURN)트랜잭션〉, 《비트코인》
- ↑ Bit셀럽 , 〈우지한 “BCH 프로젝트 비결은 ‘무허가성’…오피리턴 용량 늘릴 것”〉, 《네이버 블로그》, 2018-08-03
- ↑ 5.0 5.1 5.2 5.3 LJZN, 〈关于OP_RETURN〉, 《SegmentFault 思否》, 2018-03-08
- ↑ 〈比特币核心版本0.9.0发布〉, BitcoinCore, 2014-03-19
- ↑ Rich Apodaca , 〈OP_RETURN和比特币的未来〉, Bitzuma, 2017-09-28
- ↑ jason_cuijiahui, 〈比特币OP_RETURN元数据〉, 《CSDN博客》, 2018-04-02
- ↑ 손동하 , 〈비트코인#4: 거래의 확장(OP_RETURN)과 검열 저항성〉, 《MEDIUM》, 2018-10-18
- ↑ 10.0 10.1 10.2 Rich Apodaca , 〈OP_RETURN and the Future of bitcoin〉, 《Bitzuma》, 2017-09-28
참고자료
- "OP_RETURN", 《比特币维基》
- 〈[url 比特币OP_Return还能这样用?这波安利你吃不吃?]〉, 《 区块网》, 2018-04-25
- Bit셀럽 , 〈우지한 “BCH 프로젝트 비결은 ‘무허가성’…오피리턴 용량 늘릴 것”〉, 《네이버블로그》, 2018-08-03
- LJZN, 〈关于OP_RETURN〉, 《SegmentFault 思否》, 2018-03-08
- 〈比特币核心版本0.9.0发布〉, BitcoinCore'’
- Rich Apodaca , 〈OP_RETURN和比特币的未来〉, Bitzuma, 2017-09-28
- jason_cuijiahui, 〈比特币OP_RETURN元数据〉, 《CSDN博客》, 2018-04-02
- "An analysis of Bitcoin OP RETURN metadata", arxiv.org
- 〈널 데이터(OP_RETURN)트랜잭션〉, 《비트코인》
- 손동하 , 〈비트코인#4: 거래의 확장(OP_RETURN)과 검열 저항성〉, 《비트코인》
- Rich Apodaca , 〈OP_RETURN and the Future of bitcoin〉, 《Bitzuma》, 2017-09-28
같이 보기