你真的懂OP_RETURN嗎?

一提起OP_RETURN,不少人都會說這個東西太強大了。BCH社區中不少去中心化的應用都是創建在它的基礎上。例如去中心化的應用Memo.cash、Blockpress、Matter等,這些應用中的全部數據都是存儲在OP_RETURN上。並且BCH社區中不少智能合約的方案也都是創建在它的基礎之上的。舉個例子,蟲洞協議,就是將交易的元數據信息存儲在OP_RETURN上。瀏覽器

OP_RETURN究竟是什麼呢?安全

從本質上講,OP_RETURN是一個腳本操做碼,是專門被設計出來承載額外的交易信息的。它的做用就像咱們在平常轉帳過程當中的備註信息。經過它發送的數據會和咱們進行的BCH交易同樣保存在BCH的區塊中。網絡

在它誕生以前,在比特幣交易中添加額外的信息主要有兩個方案:UTXO方案和Multisig方案。區塊鏈

所謂UTXO即Unspent Transaction Output,未花費交易輸出。用它來承載額外信息,其實質是使用一個虛擬(或者說形式上錯誤而不可能存在的)公鑰地址來包含這些信息。即在普通的P2PH(pay to pubKey hash)交易中,將output裏的驗證腳本換成其它數據。這麼作,會致使這筆交易裏的比特幣不能再被花費,由於很難再找到知足條件的調用腳本(須要反求哈希),從而將咱們所要刻錄的信息保存在區塊鏈上。這種方法有一個嚴重的缺點,即在比特幣節點上,一般出於速度考慮,未被花費的交易(UTXO)都會被存儲在內存中,使得比特幣區塊鏈不得不包含大量冗餘信息,影響比特幣網絡的效率。命令行

所謂multisig即multi-signature protocol(多重簽名協議),因爲multisig包含多個公鑰,則利用multisig交易來承載MSC業務的實質是將該交易的多個公鑰用做兩個用途,其一是包含發送者自身的公鑰,以表達該交易由誰發出,其他公鑰則能夠用來表達MSC的交易業務信息。它的好處是不會像UTXO同樣產生大量沒法去除的冗餘信息。但相比直接被設計用於承載信息的OP_RETURN則仍不夠簡潔高效。設計

OP_RETURN的優勢cdn

經過OP_RETURN,咱們能夠在BCH區塊鏈上存儲任意信息而不會被篡改和刪除。由於OP_Return數據是受BCH區塊鏈保護的,伴隨着咱們所發送的交易。OP_Return一旦寫入了區塊鏈,就至關於有了一個時間戳,哪怕是同一區塊裏的交易,都因排序不同,而有不一樣的時間戳。blog

其次,協議規定OP_RETURN不是UTXO,包含OP_RETURN的交易輸出是不可花費(Unspendable)的,節點能夠安全地將其移出UTXO集,從而不會影響UTXO集合的整體積,形成全網UTXO的膨脹。排序

目前按照BCH的協議規定,每一個TX只能攜帶一個OP_RETURN輸出,每一個OP_RETURN最多攜帶220字節的數據。接口

寫入OP_RETURN的方法

寫入OP_RETURN可使用createrawtransaction命令行接口或者JSON-RPC接口調用。固然經過一些相似於Memo.cash的去中心化的應用,你發佈的信息都是被直接寫入OP_RETURN的。

OP_RETURN對BCH的影響

OP_RETURN爲BCH帶來了無限種可能,咱們可使用BCH的OP_RETURN作不少事情。目前咱們看到的去中心化應用程序以及使用OP_RETURN存儲數據的智能合約方案都仍是BCH應用OP_RETURN的冰山一角。還有不少好玩有用的東西正在來的路上。

也正是由於BCH上有OP_RETURN才讓BCH上的一些智能合約方案擁有以太坊所不具有的優點。例如蟲洞協議,它是BCH的第二層應用,交易的元數據信息被寫在OP_RETURN上。識別OP_RETURN裏的數據可以完成Token的發行,轉移和燃燒。BCH系統自己是不會去識別這個OP_Return裏的數據的,全部的BCH節點都會直接忽略掉這個數據。這也就不會影響BCH主鏈的交易處理速度。

OP_RETURN對BCH鏈來講,惟一很差的就是隨着OP_RETURN數據的增長,BCH節點將會增長一些存儲壓力。

總而言之,OP_Return能夠提供很是很是多的想法,好好利用OP_Return,BCH將大有做爲。

能夠直接經過區塊瀏覽器查看OP_RETURN的數據,通常能夠在輸出腳本部分找到。若是一筆交易中攜帶的有OP_RETURN數據,在該交易的輸出腳本部分將會顯示OP_RETURN信息,幷包含解碼後的信息。舉個例子,下圖中的這筆交易所包含的OP_RETURN信息就是「 I wish my dad would OP_RETURN」。

OP_RETURN對BCH的影響

OP_RETURN爲BCH帶來了無限種可能,咱們可使用BCH的OP_RETURN作不少事情。目前咱們看到的去中心化應用程序以及使用OP_RETURN存儲數據的智能合約方案都仍是BCH應用OP_RETURN的冰山一角。還有不少好玩有用的東西正在來的路上。 也正是由於BCH上有OP_RETURN才讓BCH上的一些智能合約方案擁有以太坊所不具有的優點。例如蟲洞協議,它是BCH的第二層應用,交易的元數據信息被寫在OP_RETURN上。識別OP_RETURN裏的數據可以完成Token的發行,轉移和燃燒。BCH系統自己是不會去識別這個OP_Return裏的數據的,全部的BCH節點都會直接忽略掉這個數據。這也就不會影響BCH主鏈的交易處理速度。

OP_RETURN對BCH鏈來講,惟一很差的就是隨着OP_RETURN數據的增長,BCH節點將會增長一些存儲壓力。

總而言之,OP_Return能夠提供很是很是多的想法,好好利用OP_Return,BCH將大有做爲。

OP_RETURN爲BCH帶來了無限種可能,咱們可使用BCH的OP_RETURN作不少事情。目前咱們看到的去中心化應用程序以及使用OP_RETURN存儲數據的智能合約方案都仍是BCH應用OP_RETURN的冰山一角。還有不少好玩有用的東西正在來的路上。

也正是由於BCH上有OP_RETURN才讓BCH上的一些智能合約方案擁有以太坊所不具有的優點。例如蟲洞協議,它是BCH的第二層應用,交易的元數據信息被寫在OP_RETURN上。識別OP_RETURN裏的數據可以完成Token的發行,轉移和燃燒。BCH系統自己是不會去識別這個OP_Return裏的數據的,全部的BCH節點都會直接忽略掉這個數據。這也就不會影響BCH主鏈的交易處理速度。

OP_RETURN對BCH鏈來講,惟一很差的就是隨着OP_RETURN數據的增長,BCH節點將會增長一些存儲壓力。

總而言之,OP_Return能夠提供很是很是多的想法,好好利用OP_Return,BCH將大有做爲。

相關文章
相關標籤/搜索