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

"오피리턴"의 두 판 사이의 차이

해시넷
이동: 둘러보기, 검색
잔글
잔글
5번째 줄: 5번째 줄:
 
오피리턴(OP_RETURN)은 비트코인 트랜잭션 출력을 ‘유효하지 않은 것(invalid)’으로 표시하는 데 사용되는 [[스크립트]]다. 평소 비트코인 금융 거래에 영향을 미치지 않은 [[메타데이터]](metadata)를 사용할 수 있다. 블록체인 처리 과정에 영향을 주지 않고 블록체인 상에서 제거도 가능하다. BCH도 [[무허가성]]을 기반하며 BCH는 의사결정 방식인 ‘합의 알고리즘’에 변화를 주지 않아도 여러 프로젝트를 시도할 수 있는 것이 오피리턴이다.  
 
오피리턴(OP_RETURN)은 비트코인 트랜잭션 출력을 ‘유효하지 않은 것(invalid)’으로 표시하는 데 사용되는 [[스크립트]]다. 평소 비트코인 금융 거래에 영향을 미치지 않은 [[메타데이터]](metadata)를 사용할 수 있다. 블록체인 처리 과정에 영향을 주지 않고 블록체인 상에서 제거도 가능하다. BCH도 [[무허가성]]을 기반하며 BCH는 의사결정 방식인 ‘합의 알고리즘’에 변화를 주지 않아도 여러 프로젝트를 시도할 수 있는 것이 오피리턴이다.  
 
때문에 BCH 블록체인 상에서 [[스마트계약]]이나 토큰을 발행하는 등 여러 기능들을 자유롭게 구현할 수 있다.
 
때문에 BCH 블록체인 상에서 [[스마트계약]]이나 토큰을 발행하는 등 여러 기능들을 자유롭게 구현할 수 있다.
 +
 
또 BCH는 지난 2018년 5월 오피리턴 용량을 늘려 플랫폼 출시하는 데 용이하게 했다. 기존 40바이트(bytes)였던 오피리턴 용량을 업그레이드를 통해 220바이트로 늘렸다.
 
또 BCH는 지난 2018년 5월 오피리턴 용량을 늘려 플랫폼 출시하는 데 용이하게 했다. 기존 40바이트(bytes)였던 오피리턴 용량을 업그레이드를 통해 220바이트로 늘렸다.
 +
 
오피리턴은 모든 사람들이 자유롭게 활용해 혁신에 접목할 수 있는 요소이며 BCH상에서 프로젝트를 진행하고자 하는 사람 누구나 접미사처럼 코드 앞에 덧붙여 활용할 수 있고 상호보완성도 보장된다. 또한 오피리턴을 사용한다고 해도 합의 알고리즘에 변동이 있는 게 아니기 때문에 어떤 동의를 요청하지 않아도 된다.<ref>Bit셀럽 , 〈[https://blog.naver.com/rmadhtlwkd/221331727564 우지한 “BCH 프로젝트 비결은 ‘무허가성’…오피리턴 용량 늘릴 것”]〉, 《네이버블로그》, 2018-08-03</ref>
 
오피리턴은 모든 사람들이 자유롭게 활용해 혁신에 접목할 수 있는 요소이며 BCH상에서 프로젝트를 진행하고자 하는 사람 누구나 접미사처럼 코드 앞에 덧붙여 활용할 수 있고 상호보완성도 보장된다. 또한 오피리턴을 사용한다고 해도 합의 알고리즘에 변동이 있는 게 아니기 때문에 어떤 동의를 요청하지 않아도 된다.<ref>Bit셀럽 , 〈[https://blog.naver.com/rmadhtlwkd/221331727564 우지한 “BCH 프로젝트 비결은 ‘무허가성’…오피리턴 용량 늘릴 것”]〉, 《네이버블로그》, 2018-08-03</ref>
=== 배경지식 ===
+
 
 +
=== 배경지식 ===
 
비트코인의 각 거래 정보에는 [[input]]과 [[output]]의 두 가지 부분이 포함되어 있다. output 안의 스크립트를 검증 스크립트라고도 하고, input안의 스크립트를 튜닝 스크립트라고도 한다. A의 output에 있는 비트코인을 써버리는 거래를 하려면 B의 조달 스크립트가 A의 검증 스크립트를 충족할 수 있도록 거래 B를 구성해야 한다.<ref name="오피">LJZN, 〈[https://segmentfault.com/a/1190000013614471 关于OP_RETURN]〉, 《SegmentFault 思否》, 2018-03-08</ref>
 
비트코인의 각 거래 정보에는 [[input]]과 [[output]]의 두 가지 부분이 포함되어 있다. output 안의 스크립트를 검증 스크립트라고도 하고, input안의 스크립트를 튜닝 스크립트라고도 한다. A의 output에 있는 비트코인을 써버리는 거래를 하려면 B의 조달 스크립트가 A의 검증 스크립트를 충족할 수 있도록 거래 B를 구성해야 한다.<ref name="오피">LJZN, 〈[https://segmentfault.com/a/1190000013614471 关于OP_RETURN]〉, 《SegmentFault 思否》, 2018-03-08</ref>
 
=== 오피리턴과 블록체인 데이터 ===
 
=== 오피리턴과 블록체인 데이터 ===
 
블록체인은 하나의 불가변 데이터 구조로 볼 수 있기 때문에 사람들은 이 특성을 이용하여 다른 애플리케이션을 개발하려고 시도한다. 이것은 거래 기록에 다른 데이터를 저장해야 한다.  일반적인 P2PH(pay to pubKey hash)거래에서는 output에 있는 검증 스크립트를 다른 데이터로 바꿀 수 있다. 이렇게 하면 요건을 충족하는 디버깅 스크립트를 다시 찾기가 어렵기 때문에(해시를 반대로 구해야 함) 이 거래에서 비트코인을 더 이상 쓸 수 없게 된다. 비트코인 노드에서 대개 속도를 고려해 소비되지 않은 거래인 UTXO(Unspent Transaction Output))가 메모리에 저장되기 때문에 이러한 거래정보가 많은 메모리 공간을 차지하면서 비트코인 네트워크의 효율성에 영향을 미친다는 단점도 있다.
 
블록체인은 하나의 불가변 데이터 구조로 볼 수 있기 때문에 사람들은 이 특성을 이용하여 다른 애플리케이션을 개발하려고 시도한다. 이것은 거래 기록에 다른 데이터를 저장해야 한다.  일반적인 P2PH(pay to pubKey hash)거래에서는 output에 있는 검증 스크립트를 다른 데이터로 바꿀 수 있다. 이렇게 하면 요건을 충족하는 디버깅 스크립트를 다시 찾기가 어렵기 때문에(해시를 반대로 구해야 함) 이 거래에서 비트코인을 더 이상 쓸 수 없게 된다. 비트코인 노드에서 대개 속도를 고려해 소비되지 않은 거래인 UTXO(Unspent Transaction Output))가 메모리에 저장되기 때문에 이러한 거래정보가 많은 메모리 공간을 차지하면서 비트코인 네트워크의 효율성에 영향을 미친다는 단점도 있다.
 
그래서 비트코인의 오피리턴 명령어를 사용할 수 있으며 이 명령어를 포함하는 거래도 쓸 수 없지만, 노드는 그것을 안전하게 UTXO집합으로 이동시킬 수 있으며, 이 거래는 오피리턴에 일정 수의 바이트를 저장할 수 있게 된다.<ref name="오피"></ref>
 
그래서 비트코인의 오피리턴 명령어를 사용할 수 있으며 이 명령어를 포함하는 거래도 쓸 수 없지만, 노드는 그것을 안전하게 UTXO집합으로 이동시킬 수 있으며, 이 거래는 오피리턴에 일정 수의 바이트를 저장할 수 있게 된다.<ref name="오피"></ref>
 +
 
비트코인 커뮤니티의 많은 구성원들은 오피리턴을 사용하는 것이 무책임하다고 생각하는데, 그 일부 원인은 비트코인이 임의의 데이터가 아닌 금융거래에 대한 기록을 제공하기 위한 것이기 때문이다. 그리고 외부의 대규모 복제 데이터 스토리지에 대한 수요는 기본적으로 무한하다는 점이다. 그럼에도 불구하고 블록체인에 데이터를 저장하는 다른 방식과 비교할 때, 오피리턴의 장점은 거짓 UTXO 항목을 만들지 않는다는 것이다.
 
비트코인 커뮤니티의 많은 구성원들은 오피리턴을 사용하는 것이 무책임하다고 생각하는데, 그 일부 원인은 비트코인이 임의의 데이터가 아닌 금융거래에 대한 기록을 제공하기 위한 것이기 때문이다. 그리고 외부의 대규모 복제 데이터 스토리지에 대한 수요는 기본적으로 무한하다는 점이다. 그럼에도 불구하고 블록체인에 데이터를 저장하는 다른 방식과 비교할 때, 오피리턴의 장점은 거짓 UTXO 항목을 만들지 않는다는 것이다.
 +
 
이 변경은 블록체인에 데이터를 저장하는 것을 의미하지는 않는다. 오피리턴은 데이터 저장 방안 중 일부가 이미 배치되어 있고 임의의 데이터를 영구적으로 저장하지 않음을 증명하는 출력을 변경했다.
 
이 변경은 블록체인에 데이터를 저장하는 것을 의미하지는 않는다. 오피리턴은 데이터 저장 방안 중 일부가 이미 배치되어 있고 임의의 데이터를 영구적으로 저장하지 않음을 증명하는 출력을 변경했다.
 
블록체인에 임의의 데이터를 저장하는 것은 여전히 나쁜 생각이며, 다른 곳에 비 화폐 데이터를 저장하는 것은 원가가 더 낮고 효율적이기도 하다.<ref> 〈[https://bitcoin.org/en/release/v0.9.0#downgrading-warnings 比特币核心版本0.9.0发布]〉, ''BitcoinCore'', 2014-03-19</ref>
 
블록체인에 임의의 데이터를 저장하는 것은 여전히 나쁜 생각이며, 다른 곳에 비 화폐 데이터를 저장하는 것은 원가가 더 낮고 효율적이기도 하다.<ref> 〈[https://bitcoin.org/en/release/v0.9.0#downgrading-warnings 比特币核心版本0.9.0发布]〉, ''BitcoinCore'', 2014-03-19</ref>
19번째 줄: 24번째 줄:
 
블록체인에 있는 이 저장 공간을 이용하여 시나리오를 만들어 비트코인 네트워크를 이용해 토큰을 발행할 수 있다. 사실 일찍부터 누군가 그렇게 했고 이더리움 합의 알고리즘은 원래 비트코인 네트워크에 기반한 것이다.<ref name="오피"></ref>
 
블록체인에 있는 이 저장 공간을 이용하여 시나리오를 만들어 비트코인 네트워크를 이용해 토큰을 발행할 수 있다. 사실 일찍부터 누군가 그렇게 했고 이더리움 합의 알고리즘은 원래 비트코인 네트워크에 기반한 것이다.<ref name="오피"></ref>
 
2014년 3월 출시 이후 이미 오피리턴은 여러 각도에서 검증되었다. 오피리턴이 디지털 문서를 블록체인에 영구적으로 링크하는데 사용됨을 증명하는 서비스인 [[존재증명]](PoE, Proof of Existence)이 그 중의 하나이다. Counterparty의 수석 개발자들은 40바이트의 오피리턴 데이터로부터 시스템을 실행하는 방법을 발견했다고 발표했다.  
 
2014년 3월 출시 이후 이미 오피리턴은 여러 각도에서 검증되었다. 오피리턴이 디지털 문서를 블록체인에 영구적으로 링크하는데 사용됨을 증명하는 서비스인 [[존재증명]](PoE, Proof of Existence)이 그 중의 하나이다. Counterparty의 수석 개발자들은 40바이트의 오피리턴 데이터로부터 시스템을 실행하는 방법을 발견했다고 발표했다.  
 +
 
Mastercoin은 임베디드 데이터에 의존하는 또 다른 프로젝트로, 사용 방법을 전문적으로 찾는 방법에 대한 OP_RETURN에 대한 논의를 시작했다.
 
Mastercoin은 임베디드 데이터에 의존하는 또 다른 프로젝트로, 사용 방법을 전문적으로 찾는 방법에 대한 OP_RETURN에 대한 논의를 시작했다.
 
[[스텔스 주소]]는 오피리턴의 또 다른 사례이다. 이 방안은 수신자의 공적인 키나 주소를 밝히지 않고 돈을 받을 수 있도록 했다. 이 시스템의 작업에 필요한 데이터를 디버깅 중에 오피리턴으로 인코딩하도록 한다. 본질적으로 비트코인은 보안 소식 전달 프로토콜로서 이중 기능을 가지고 있다.<ref>Rich Apodaca , 〈[https://bitzuma.com/posts/op-return-and-the-future-of-bitcoin/ OP_RETURN和比特币的未来]〉, ''Bitzuma'', 2017-09-28</ref>
 
[[스텔스 주소]]는 오피리턴의 또 다른 사례이다. 이 방안은 수신자의 공적인 키나 주소를 밝히지 않고 돈을 받을 수 있도록 했다. 이 시스템의 작업에 필요한 데이터를 디버깅 중에 오피리턴으로 인코딩하도록 한다. 본질적으로 비트코인은 보안 소식 전달 프로토콜로서 이중 기능을 가지고 있다.<ref>Rich Apodaca , 〈[https://bitzuma.com/posts/op-return-and-the-future-of-bitcoin/ OP_RETURN和比特币的未来]〉, ''Bitzuma'', 2017-09-28</ref>

2019년 5월 21일 (화) 14:52 판

오피리턴(OP_RETURN)은 하나의 스크립트 조작 코드로, 사무 출력을 무효로 표시하는데 사용된다. 오피리턴은 어떤 출력도 신뢰할 수 없음을 증명할 수 있기 때문에 오피리턴 출력은 비트코인을 기록할 때 사용된다.[1] 오피리턴 기능은 2014년에 정식 출시되었다.[2]

우지한 비트메인 설립자가 2018년 8월 2일 서울 삼성동에서 열린 후오비카니발 행사에서 오피리턴에 대한 기조연설을 하고 있는 모습

개요

오피리턴(OP_RETURN)은 비트코인 트랜잭션 출력을 ‘유효하지 않은 것(invalid)’으로 표시하는 데 사용되는 스크립트다. 평소 비트코인 금융 거래에 영향을 미치지 않은 메타데이터(metadata)를 사용할 수 있다. 블록체인 처리 과정에 영향을 주지 않고 블록체인 상에서 제거도 가능하다. BCH도 무허가성을 기반하며 BCH는 의사결정 방식인 ‘합의 알고리즘’에 변화를 주지 않아도 여러 프로젝트를 시도할 수 있는 것이 오피리턴이다. 때문에 BCH 블록체인 상에서 스마트계약이나 토큰을 발행하는 등 여러 기능들을 자유롭게 구현할 수 있다.

또 BCH는 지난 2018년 5월 오피리턴 용량을 늘려 플랫폼 출시하는 데 용이하게 했다. 기존 40바이트(bytes)였던 오피리턴 용량을 업그레이드를 통해 220바이트로 늘렸다.

오피리턴은 모든 사람들이 자유롭게 활용해 혁신에 접목할 수 있는 요소이며 BCH상에서 프로젝트를 진행하고자 하는 사람 누구나 접미사처럼 코드 앞에 덧붙여 활용할 수 있고 상호보완성도 보장된다. 또한 오피리턴을 사용한다고 해도 합의 알고리즘에 변동이 있는 게 아니기 때문에 어떤 동의를 요청하지 않아도 된다.[3]

배경지식

비트코인의 각 거래 정보에는 inputoutput의 두 가지 부분이 포함되어 있다. output 안의 스크립트를 검증 스크립트라고도 하고, input안의 스크립트를 튜닝 스크립트라고도 한다. A의 output에 있는 비트코인을 써버리는 거래를 하려면 B의 조달 스크립트가 A의 검증 스크립트를 충족할 수 있도록 거래 B를 구성해야 한다.[4]

오피리턴과 블록체인 데이터

블록체인은 하나의 불가변 데이터 구조로 볼 수 있기 때문에 사람들은 이 특성을 이용하여 다른 애플리케이션을 개발하려고 시도한다. 이것은 거래 기록에 다른 데이터를 저장해야 한다. 일반적인 P2PH(pay to pubKey hash)거래에서는 output에 있는 검증 스크립트를 다른 데이터로 바꿀 수 있다. 이렇게 하면 요건을 충족하는 디버깅 스크립트를 다시 찾기가 어렵기 때문에(해시를 반대로 구해야 함) 이 거래에서 비트코인을 더 이상 쓸 수 없게 된다. 비트코인 노드에서 대개 속도를 고려해 소비되지 않은 거래인 UTXO(Unspent Transaction Output))가 메모리에 저장되기 때문에 이러한 거래정보가 많은 메모리 공간을 차지하면서 비트코인 네트워크의 효율성에 영향을 미친다는 단점도 있다. 그래서 비트코인의 오피리턴 명령어를 사용할 수 있으며 이 명령어를 포함하는 거래도 쓸 수 없지만, 노드는 그것을 안전하게 UTXO집합으로 이동시킬 수 있으며, 이 거래는 오피리턴에 일정 수의 바이트를 저장할 수 있게 된다.[4]

비트코인 커뮤니티의 많은 구성원들은 오피리턴을 사용하는 것이 무책임하다고 생각하는데, 그 일부 원인은 비트코인이 임의의 데이터가 아닌 금융거래에 대한 기록을 제공하기 위한 것이기 때문이다. 그리고 외부의 대규모 복제 데이터 스토리지에 대한 수요는 기본적으로 무한하다는 점이다. 그럼에도 불구하고 블록체인에 데이터를 저장하는 다른 방식과 비교할 때, 오피리턴의 장점은 거짓 UTXO 항목을 만들지 않는다는 것이다.

이 변경은 블록체인에 데이터를 저장하는 것을 의미하지는 않는다. 오피리턴은 데이터 저장 방안 중 일부가 이미 배치되어 있고 임의의 데이터를 영구적으로 저장하지 않음을 증명하는 출력을 변경했다. 블록체인에 임의의 데이터를 저장하는 것은 여전히 나쁜 생각이며, 다른 곳에 비 화폐 데이터를 저장하는 것은 원가가 더 낮고 효율적이기도 하다.[5]

오피리턴 응용

오피리턴은 디지털 자산 소유권 증명에 사용할 수 있으며, 때로는 거래에 필요한 기타 정보를 전달하는 데 사용된다. 블록체인에 있는 이 저장 공간을 이용하여 시나리오를 만들어 비트코인 네트워크를 이용해 토큰을 발행할 수 있다. 사실 일찍부터 누군가 그렇게 했고 이더리움 합의 알고리즘은 원래 비트코인 네트워크에 기반한 것이다.[4] 2014년 3월 출시 이후 이미 오피리턴은 여러 각도에서 검증되었다. 오피리턴이 디지털 문서를 블록체인에 영구적으로 링크하는데 사용됨을 증명하는 서비스인 존재증명(PoE, Proof of Existence)이 그 중의 하나이다. Counterparty의 수석 개발자들은 40바이트의 오피리턴 데이터로부터 시스템을 실행하는 방법을 발견했다고 발표했다.

Mastercoin은 임베디드 데이터에 의존하는 또 다른 프로젝트로, 사용 방법을 전문적으로 찾는 방법에 대한 OP_RETURN에 대한 논의를 시작했다. 스텔스 주소는 오피리턴의 또 다른 사례이다. 이 방안은 수신자의 공적인 키나 주소를 밝히지 않고 돈을 받을 수 있도록 했다. 이 시스템의 작업에 필요한 데이터를 디버깅 중에 오피리턴으로 인코딩하도록 한다. 본질적으로 비트코인은 보안 소식 전달 프로토콜로서 이중 기능을 가지고 있다.[6]

제한성

비트코인 핵심 개발자는 오피리턴이 비트코인 네트워크에 과다한 비거래 정보를 저장해 비트코인의 정상적인 사용에 영향을 줄 수 있다고 판단하고 크기(초기 40바이트에서 80바이트로 확장했다 다시 40바이트로 축소)를 제한했다. 이것은 일부 이층프로토콜 항목을 다른 메인체인에 돌리게 하였다. 사실 비트코인의 거래료는 거래의 부피와 관련되며, 사용자 모두가 기능 실현을 전제로 공간을 최대한 적게 차지하는 경향이 있으며, 지나치게 작은 강제 규제는 불필요하다. 게다가 오피리턴 거래의 총 볼륨은 전체 블록 볼륨의 0.3%에 불과하다.(2017)[4]

오피리턴 사례

  • 비트코인 거래:

0x8bae12b5f4c088d940733dcd1455efc6a3a69cf9340e17a981286d3778615684

비트코인 거래에서 오피리턴 사용예

우리는 첫 번째 output이 Unspendable address로 표시되고 Type이 비어있는 것을 볼 수 있다. 그리고 구체적인 내용을 볼 수 있다.

1   OP_RETURN 636861726c6579206c6f766573206865696469

0x36861726c6579206c6f766573206865696469는 UTF8-DECODER를 통해 다음과 같이 얻을 수 있다.[7]

1   charley loves heidi  
  • TD 아메리트레이드 깃발 로고 광고
TD아메리트레이드 오피리턴 기능 사용한 회사로고 광고

미국대형증권 TD아메리트레이드(TD Ameritrade)는 ASCII 코딩(라틴 알파벳 기반 컴퓨터 코딩 시스템)으로 한 면의 깃발을 만들어 비트코인 블록에 광고를 했다. 2018년 4월 말, TD아메리트레이드는 68번의 비트코인 발송 거래를 통해 비트코인 블록에 이 회사 로고가 달린 숫자의 깃발을 만들었다고 발표했다. 이 회사는 비트코인 프로토콜의 오피리턴 기능으로 문자열을 삽입하여 68건의 무효 거래를 창설했다 .이 깃발은 블록체인이 고칠 수 없는 특징을 감안할 때 이 암호화된 화폐의 장부에 영원히 보존될 것이다.[2]

오피리턴 미래

2018년 5월, 비트코인은 오피리턴의 공간을 223바이트로 늘렸다. 비트코인의 2층 협의 개발에 새로운 활력을 불어넣을 것으로 본다.

각주

  1. "OP_RETURN", 《比特币维基》,
  2. 2.0 2.1 〈[url 比特币OP_Return还能这样用?这波安利你吃不吃?]〉, 《 区块网》, 2018-04-25
  3. Bit셀럽 , 〈우지한 “BCH 프로젝트 비결은 ‘무허가성’…오피리턴 용량 늘릴 것”〉, 《네이버블로그》, 2018-08-03
  4. 4.0 4.1 4.2 4.3 LJZN, 〈关于OP_RETURN〉, 《SegmentFault 思否》, 2018-03-08
  5. 比特币核心版本0.9.0发布〉, BitcoinCore, 2014-03-19
  6. Rich Apodaca , 〈OP_RETURN和比特币的未来〉, Bitzuma, 2017-09-28
  7. jason_cuijiahui, 〈比特币OP_RETURN元数据〉, 《CSDN博客》, 2018-04-02

참고자료

같이보기


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