BTC生態擴容方案巡禮(1):銘文何去何從

訪客 1年前 (2023-12-26) 閱讀數 286 #區塊鏈
文章標簽 前沿文章

作者:Simon shieh,來源:MetaTrust Labs

0x0 前言

2023年12月6日,在比特幣投資者們都在為銘文(Inscriptions)給比特幣帶來的漲幅而歡呼的時候,Bitcoin Core節點客戶端的開發者Luke Dashjr澆來了一盆冷水。他認為銘文是一種“垃圾郵件”攻擊,并提交了修復代碼及CVE漏洞報告(CVE-2023-50428)。隨后比特幣社區炸開了鍋,繼2017年硬分叉的混亂之后,比特幣社區再次陷入激烈的辯論中。

那么比特幣應該更注重安全性而舍棄掉一些意料之外的feature呢,還是應該更加包容意料之外的創新而稍微容忍一點可能的安全性問題呢?

我們知道,比特幣的旅程不僅僅是投機和炒作,更是其生態系統和安全格局不斷演化的歷程。本文旨在深入探討比特幣增長的雙重敘事:其生態系統內不斷擴展的效用和安全措施的強化。我們將探索創新與強大的安全協議的協同作用,如何為數字資產的新時代鋪平道路。

0x1 BTC生態一覽及基礎知識

我們知道作為加密貨幣革命的基石,比特幣一直被人們當做黃金一樣進行價值存儲,在其他公鏈DEFI創新如火如荼之時,人們似乎都已經忘了比特幣的存在。

然而,恰恰是在比特幣上,先驅者們最早開啟了穩定幣、Layer2、甚至DEFI的實驗,比如現在幣圈的硬通貨USDT最早就是發行在比特幣Omnilayer網絡上,下圖就是從技術實現角度對比特幣生態的一個基本分類。

包括基于雙向錨定的側鏈、基于輸出腳本(OP_RETURN)的文本解析、基于Taproot腳本的銘刻、基于BIP300更新升級的驅動鏈和基于狀態通道的閃電網絡等技術。

上面可能很多術語大家還不了解,不著急,我們先熟悉以下的基礎知識,然后再一一講解這些生態的技術原理并探討其中的安全問題。

UTXO是比特幣交易的基本單位

與以太坊的賬戶余額體系不同,比特幣的系統中并沒有賬戶這個概念。以太坊引入了四顆棵復雜的Merkle Patricia Trie來存儲和驗證賬戶狀態的變化。與之相比,比特幣巧妙的利用UTXO來更加簡潔的解決了這些問題。

以太坊的四棵樹

比特幣的輸入與輸出

UTXO(Unspent Transaction Outputs,未花費的交易輸出),這個名字聽上去特別拗口,但其實搞清楚輸入、輸出和交易這三個概念后,就很好理解了。

交易的輸入與輸出

熟悉以太坊的朋友應該知道,交易(transaction)是區塊鏈網絡中基本通信單位,一旦交易被打包出塊和確認,就意味著鏈上狀態變更的確定。而在比特幣的交易中,并不是單一的地址對地址的狀態操作,而是多個輸入腳本和輸出腳本構成。

上圖是一筆非常典型的比特幣2對2交易。理論上,輸入的BTC數量和輸出的BTC數量應該相等,實際上輸出比輸入少的部分的BTC就作為礦工的手續費由出塊礦工賺取,等同于以太坊中的Gas Fee。

我們可以看到兩個輸入地址在轉移BTC的同時,需要在輸入的腳本中做驗證,證明這兩個輸入地址可以花費這兩筆輸入(也就是上一筆的未花費輸出,UTXO),而輸出腳本,則規定了花費兩筆輸出比特幣的條件,也就是在下一次將這筆未花費的輸出作為輸入時,應滿足什么條件(一般普通轉賬,條件就是輸出地址的簽名,例如上圖,P2wPKH表示需要taproot地址的簽名驗證,P2PKH則表示需要legacy 地址私鑰的簽名)。

具體來說,比特幣交易其數據結構如下:

在比特幣交易中,基本結構由兩個關鍵部分組成:輸入和輸出。輸入部分指明了交易的發起方,而輸出部分則指明了交易的接收方和找零(如果有的話)。交易費用則是輸入總額與輸出總額的差額。由于每一筆交易的輸入都是之前某筆交易的輸出,因此交易的輸出成為了交易結構的核心要素。

這種結構形成了一種鏈式連接。在比特幣網絡中,每一筆合法的交易都可以追溯到之前的一個或多個交易的輸出。這些交易鏈的起點是挖礦獎勵,而終點則是當前尚未被花費的交易輸出。網絡中所有未花費的輸出統稱為比特幣網絡的UTXO(Unspent Transaction Output)。

在比特幣網絡中,每筆新交易的輸入必須是未花費的輸出。此外,每個輸入還需要前一筆輸出的對應私鑰簽名。比特幣網絡中的每個節點都存儲著當前區塊鏈上的所有UTXO,以此來驗證新交易的合法性。通過UTXO和簽名驗證機制,節點能夠在不追溯整個交易歷史的情況下驗證新交易的合法性,從而簡化了網絡的運行和維護過程。

比特幣獨特的交易結構是符合其白皮書《Bitcoin: A Peer-to-Peer Electronic Cash System》設計的,比特幣是一個電子現金系統,其交易結構就是在模擬現金的交易過程,一個地址上可以花費的數量取決于之前收到的現金數量,每筆交易都是要把這個地址上的所有現金都整體花費出去,而交易的輸出地址通常一個是接收地址,一個是找零地址,就像在超市使用現金交易時的找零。

腳本

在比特幣網絡中,腳本扮演著至關重要的角色。事實上,比特幣交易的每個輸出實際上是指向一個腳本,而不是一個具體的地址。這些腳本就像一組規則,定義了接收方如何才能使用輸出中鎖定的資產。

交易的合法性驗證依賴于兩種腳本:鎖定腳本和解鎖腳本。鎖定腳本存在于交易的輸出中,用于定義解鎖該輸出所需的條件。解鎖腳本則與之相對應,必須遵循鎖定腳本定義的規則來解鎖UTXO資產,這些腳本位于交易的輸入部分。這種腳本語言的靈活性使得比特幣可以實現多種條件組合,展示出其作為“部分可編程貨幣”的特性。

在比特幣網絡中,每個節點都運行著一個堆棧解釋器,用于基于“先進先出”的規則解釋這些腳本。

最經典的比特幣腳本主要有兩種常用類型:P2PKH(Pay-to-Public-Key-Hash)和P2SH(Pay-to-Script-Hash)。P2PKH是一種簡單的交易類型,其中接收方只需用相應的私鑰簽名即可使用資產。P2SH則更為復雜,例如在多重簽名的情況下,需要多個私鑰的組合簽名才能使用資產,或者。

這些腳本和驗證機制共同構成了比特幣網絡的核心運作方式,確保了交易的安全性和靈活性。

比如在比特幣中,P2PKH的output腳本規則如下:

Pubkey script: OP_DUP OP_HASH160 ?OP_EQUALVERIFY OP_CHECKSIG

Input 則需要提供簽名

Signature script: sig

而P2SH的output腳本規則如下:

Pubkey script: OP_HASH160 ?OP_EQUAL

Input需要提供多簽列表

Signature script: ?[sig] [sig...]

在上述的2種腳本規則里,Pubkey script代表著鎖定腳本,Signature script代表著解鎖腳本。OP_開頭的單詞是相關的腳本命令,也是節點所能解析的指令。這些命令規則根據Pubkey script的不同來進行劃分,它也決定著解鎖腳本的規則。

比特幣中的腳本機制相對簡單,只是一個基于堆棧式的,解釋相關OP指令的引擎,能夠解析的腳本規則并不是太多,不能實現很復雜的邏輯。但它為區塊鏈可編程提供了一個原型,后續一些生態項目其實是基于腳本的原理發展起來的。而隨著隔離見證和Taproot的更新,OP指令的類型變得更加豐富,每筆交易可包含的腳本大小得到了擴容,比特幣生態迎來了爆發式的增長。

0x2 ?銘文技術原理與安全問題

銘文技術的火爆,離不開比特幣的隔離見證和Taproot更新。

技術上看,區塊鏈的去中心化程度越高,其效率通常越低。以比特幣為例,它的每個區塊的大小仍然維持在1MB,與中本聰最初挖出的第一個區塊大小相同。面對擴容的問題,比特幣社區并沒有選擇簡單直接地增加區塊大小這一路徑。相反,他們采取了一種名為“隔離見證”(Segregated Witness,簡稱SegWit)的方法,這是一種不需要進行硬分叉的升級方案,旨在通過優化區塊中的數據結構來提高網絡的處理能力和效率。

隔離見證

在比特幣交易中,每筆交易的信息主要分為兩個部分:基礎交易數據和見證數據?;A交易數據包括了諸如賬戶資金結余等關鍵財務信息,而見證數據則用于驗證用戶的身份。對用戶來說,他們主要關心的是與資產直接相關的信息,如賬戶資金結余,而身份驗證的細節并不需要在交易中占用太多資源。換句話說,接收資產的一方主要關注的是資產是否可用,而不必過分關注發送方的詳細信息。

然而,在比特幣的交易結構中,見證數據(即簽名信息)占據了大量的存儲空間,這導致轉賬效率降低和交易打包成本增加。為了解決這個問題,隔離見證(SegWit)技術被引入,它的核心思想是將見證數據從主要的交易數據中分離出來,并單獨存儲。這樣做的結果是優化了存儲空間的使用,從而提高了交易效率并減少了成本。

這樣,原有的1M大小區塊不變的情況下,每個區塊可以容納的交易更多,而隔離見證數據(也就是各種簽名腳本)則可以占用額外的3M空間,為Taproot腳本指令的豐富奠定了存儲基礎。

Taproot

Taproot是比特幣網絡的一個重要軟分叉升級,旨在提高比特幣腳本的私密性、效率,以及智能合約的處理能力。這次升級被認為是自2017年SegWit升級之后的一個主要進步。

這次Taproot升級包括了三個不同的比特幣改進提案(BIP):Taproot(默克爾抽象語法樹, MAST)、Tapscript,以及一個全新的多簽友好的數字簽名方案,稱為“Schnorr簽名”。Taproot的目的是為比特幣用戶提供多種好處,包括提高交易的私密性和降低交易成本。此外,它還將增強比特幣在執行更復雜交易方面的能力,從而擴展其應用范圍。

Taproot更新直接影響了3個生態:一個是ordinals協議,它利用了Taproot的script-path spend scripts腳本來實現附加數據;另一個是閃電網絡升級為Taproot Asset,從簡單的點對點BTC支付進化為點對多且支持發行新的資產;還有一個就是新提出的BitVM,通過Taproot中的op_booland和op_not來把bool電路“蝕刻”到Taproot腳本里,從而實現智能合約虛擬機功能。

Ordinals

Ordinals是Casey Rodarmor在2022 年 12 月發明的協議,它為每個聰(Satoshi)賦予獨特序列號,并在交易中追蹤它們。任何人都可以通過 Ordinals 在UTXO的Taproot腳本中附加額外的數據,包括文本、圖片、視頻等。

熟悉Ordinals的朋友一定知道:比特幣總量是2100萬個,每個比特幣包含10^8個Satoshi(聰),所以比特幣網絡上一共有2100萬*10^8個聰,Ordinals協議會將這些聰區分出來,每個聰都有一個唯一的編號。這是理論上可以做到的,但是實際上做不到。

因為BTC網絡出于抵御粉塵攻擊的原因,轉賬有一個最少546聰(segwit最少294聰)的限制,也就是不可以1聰1聰的轉賬,根據轉賬的地址類型,至少要轉546聰或294聰,而根據Ordinals先進先出的編號理論,至少每個區塊的1號~294號聰是不可分割。

所以所謂的銘刻,并不是銘刻在某個聰上的,而是銘刻在一筆交易的腳本中,而這筆交易至少要包含294聰的轉賬,然后由中心化的indexer(比如unisat)來追蹤和識別這294聰或456聰的轉移情況。

銘文在交易中的編碼方式

原則上Taproot腳本的花費只能從現有的Taproot輸出中進行,所以銘文理論上應該是通過一個兩階段的提交/揭示程序來進行的。首先,在提交交易中,創建一個基于script path spend的內容的Taproot輸入,并在輸出中指明花費/掲示的簽名條件。其次,在揭示交易中,由提交交易創建的輸出被花費,揭示鏈上的銘文內容。

不過在現實的indexer場景中,并不十分關注掲示交易的作用,而是直接在輸入腳本中讀取由一個OP_FALSE OP_IF ... OP_ENDIF組成的腳本片段,從其中讀取銘文的內容。

因為OP_FALSE OP_IF的指令組合會導致該段腳本不會被執行,所以可以在其中存儲任意內容的字節,而不影響原本腳本的邏輯。

一個包含字符串 "Hello, world!"的文本銘文被序列化如下:

OP_FALSE OP_IF OP_PUSH "ord"OP_1OP_PUSH?

"text/plain;charset=utf-8"OP_0OP_PUSH "Hello, world!"OP_ENDIF

Ordinals協議本質上就是將這一段代碼序列化到Taproot腳本里面。

我們從鏈上找一筆交易來詳細說明ordinals的編碼原理:

https://explorer.btc.com/btc/transaction/885d037ed114012864c031ed5ed8bbf5f95b95e1ef6469a808e9c08c4808e3ae

我們可以查看這個交易的詳細信息:

我們對witness字段從0063(OP_FALSE OP_IF)開始的編碼進行分析,可以了解序列化的編碼內容:

所以只要我們能把這見證腳本中的這部分的代碼解碼出來,就能知道銘刻的內容了。這里編碼的是純文本信息,其他數據比如html、圖片、視頻等也都是類似的。

理論上你也可以定義自己的編碼內容,甚至是只有自己知道的加密內容,只不過這些內容不能在ordinals瀏覽器中顯示。

BRC20

2023年3 月 9 日,一位名叫 domo 的匿名Twitter 用戶在推特上發布了一條推文,在 Ordinals Protocol 之上創建一個同質化代幣標準,稱之為BRC20標準。這個想法是可以通過Ordinals協議將 JSON字符串數據刻在Taproot腳本中,以部署、鑄造和傳輸同質化的 BRC-20 代幣。

圖 1:BRC-20 代幣的卑微開端(domo 關于該主題的第一個帖子)

來源:Twitter(@domodata)

圖 2:BRC-20 代幣可能的三個初始操作(p = 協議名稱,op = 操作,tick = 股票代碼 / 標識符,max = 最大供應量,lim = 鑄造限制,amt = 數量)

來源:https://domo-2.gitbook.io/brc-20-experiment/,幣安研究

Token的發起方通過deploy將brc20代幣部署上鏈,然后參與者通過mint來幾乎無成本的獲取Token(只有礦工費),當mint數量超過max后,mint銘文的銘刻會被indexer認為是無效的。這之后,擁有Token的地址可以通過transfer銘文來轉移Token。

值得注意的是,Ordinals的創始人Casey,對BRC-20 的交易占據了 Ordinals 協議的大部分比例非常不爽。他曾公開表示 BRC-20 給他創造的 Ordinals 帶來了一堆垃圾。所以,Casey 團隊公開發信,讓幣安把 ORDI 代幣介紹中的 Ordinals 刪掉,他不想讓 Ordinals 協議和 ORDI 扯上關系。

擴展協議

BRC20 swap

目前銘文交易最大的市場、indexer以及錢包供應商unisat針對BRC20的交易提出了BRC20 swap協議,現在已經可以允許早期用戶進行試用。

之前的銘文交易,只能通過一種叫做PSBT(部分簽名的比特幣交易)的方式來進行,和Opensea的鏈下簽名方案類似,通過中心化的服務來“撮合”買賣雙方的簽名。這就導致BRC20資產只能像NFT資產那樣通過掛單方式來交易,流動性和交易效率都很低。

brc20 swap通過在brc20協議的json串中,引入了一種叫模塊的機制,這個模塊中可以部署一套類似智能合約的腳本。以swap模塊為例,用戶可以通過transfer將BRC20鎖入模塊中,也就是發起一筆給自己的轉賬交易,但是交易中的銘文被鎖在模塊中,用戶在完成交易,或撤出LP后,可以發起一筆交易,再把brc20代幣提取出來。

目前,brc20 swap采用黑模塊的擴展模式運行,黑模塊是出于安全考慮,在未經共識和驗證的情況下,通過模塊中的資金總和來確定用戶可以提取的資金,也就是任何用戶不能提取超過鎖入模塊資產總和的資產。

當黑模塊的行為被用戶理解和執行,逐步變得可靠,逐漸被更多索引者接受后,產品從黑模塊過渡到白模塊,達成共識升級。用戶也就可以自由充提資產。

此外,因為brc20協議乃至整個Ordinals生態依然處于早期,Unisat占據較大影響力和聲譽,其為協議提供了完整的交易和余額查詢等索引服務,有一家獨大的中心化風險。其模塊化運行的架構,使得更多服務商可以參與進來,從而實現索引更加去中心化。

BRC420

Brc420協議由RCSV開發。他們在原有銘文的基礎上,增加了遞歸索引的擴展。通過遞歸的方式定義了更復雜的資產格式。同時,Brc420 在單個銘文的基礎上建立了使用權和版稅之間的約束關系。當用戶mint資產時,需要給創作者支付版稅,并且擁有一個銘文時可以分配其使用權并為其設定價格,此舉可激勵Ordinals生態更多創新。

Brc420的提出為銘文生態提供了更廣闊的想象空間,除了可以通過遞歸引用構建更復雜的元宇宙外,也可以通過代碼銘文的遞歸引用,來構建智能合約生態。

ARC20

ARC20代幣標準是由Atomicals協議提供的,在這個標準中,“原子”是基本單位,構建在比特幣的最小單位聰(sat)之上。這意味著每個ARC20代幣始終由1個sat支持。此外,ARC20還是首個通過工作量證明(PoW)銘文鑄造的代幣協議,允許參與者通過類似挖掘比特幣的方式直接挖掘銘文或NFT。

將1個ARC20代幣等同于1個sat帶來了多個好處:

1. 首先,每個ARC20代幣的價值永遠不會低于1個sat,這使得比特幣在此過程中充當了一種“數字黃金錨定”的角色。

2. 其次,驗證交易時只需查詢與sat相對應的UTXO,這與BRC20需要鏈下賬本狀態記錄和第三方排序器的復雜性形成對比。

3. 此外,ARC20的所有操作都可以通過比特幣網絡完成,不需要額外的步驟。

4. 最后,由于UTXO的可組合性,理論上可以實現ARC20代幣與比特幣的直接交換,這為未來的流動性提供了可能性。

Atomicals協議為ARC20代幣設置了Bitwork Mining的特殊前綴參數。代幣發行者可以選擇特殊前綴,而用戶要通過CPU挖礦計算出匹配的前綴后,才能獲得鑄造該ARC20代幣的資格。這種“一CPU一票”的模式與比特幣原教旨主義者們的理念相符。

銘文安全嗎

銘文看上去只是一段“無害”的文本上鏈,并通過中心化的indexer來解析,似乎安全問題只是中心化服務上的安全考慮,但在鏈上安全方面,還是需要注意以下幾點:

1. 增加節點負擔

銘文會增加比特幣區塊的大小,這會增加節點在網絡傳播、存儲和驗證區塊時所需的資源。如果銘文過多,會降低比特幣網絡的去中心化程度,使網絡更容易受到攻擊。

2. 降低安全性

銘文可以用于存儲任何類型的數據,包括惡意代碼。如果惡意代碼被添加到比特幣區塊中,可能會導致網絡安全漏洞。

3. 交易需要構造

銘文的交易需要進行交易的構造,并且關注ordinals的先入先出規則,以防止由于疏忽導致銘文的索引性被破壞。

4. 買賣存在風險

銘文的交易市場,不論是OTC還是PSBT,都存在資產損失風險。

以下是一些具體的安全問題:

1. 孤塊率和分叉率增加

銘文會增加區塊的大小,這會導致孤塊率和分叉率增加。孤塊是指沒有被其他節點承認的區塊,分叉是指網絡中存在多個競爭的區塊鏈。孤塊和分叉會降低網絡的穩定性和安全性。

2. 攻擊者篡改銘文

攻擊者可以利用銘文的開放性進行篡改攻擊。

例如,攻擊者可以將銘文中存儲的信息替換為惡意代碼,從而在滲透進indexer的服務器或通過木馬入侵用戶設備。

3. 錢包使用不當

如果錢包使用不當,錢包不能索引銘文的情況下,很可能錯誤的轉移走銘文,導致資產損失。

4. 釣魚或詐騙

攻擊者可能通過假冒的unisat等indexer網站,來誘導用戶進行銘文交易,從而竊取用戶資產。

5. PSBT簽名疏漏

Atomicals Market曾經因為錯誤的簽名方法使用,而導致用戶資產受損

相關閱讀:

<The Analysis of the Atomicals Market User Asset Loss>

https://metatrust.io/company/blogs/post/the-analysis-of-the-atomicals-market-user-asset-loss

為了解決這些安全問題,可以采取以下措施:

1. 限制銘文的大小

可以限制銘文的大小,以減少對節點負擔的影響,這一點文章開頭提到的Luke已經在做了。

2. 對銘文進行加密

可以對銘文進行加密,以防止惡意代碼的攻擊。

3. 使用可信的銘文來源

可以使用可信的銘文來源,以防止簽名問題和被釣魚。

4. 使用支持銘文的錢包

使用支持銘文的錢包來進行轉賬活動。

5. 注重銘文代碼及相關腳本的審核

在brc20-swap及遞歸銘文的新型實驗中,由于代碼和相關腳本的引入,需要確保這些代碼及腳本的安全性。

從技術和安全的角度說,比特幣銘文本質上還是一種規則繞過的漏洞,taproot腳本并不是為了存儲數據而出現的,其安全性也存在一些問題。Luke對bitcoin core代碼的修改從安全角度來說是正確的。Luke并未對比特幣的共識層進行直接修改,而是選擇調整Spam Filter(策略過濾器)模塊,使得節點在接收到P2P廣播消息時,能夠自動過濾掉Ordinals交易。在這個策略過濾器中,有多個名為isStandard()的函數用于檢查交易的各個方面是否符合標準。如果交易不符合標準,節點接收到的這筆交易將會被迅速丟棄。

換言之,盡管Ordinals交易最終還是可以被加入區塊鏈,但大多數節點不會將這類數據加入交易池,這將增加Ordinals數據被愿意將其打包上鏈的礦池接收的延時。然而,如果某個礦池廣播了一個包含BRC-20交易的區塊,其他節點仍然會對其進行認可。

Luke已經在Bitcoin Knots客戶端中推出了對策略過濾器(policy)的修改,并且計劃在Bitcoin Core客戶端中引入類似的更改。在這次修改中,他引入了一個新的參數,名為g_script_size_policy_limit,用于在多個不同的位置限制腳本的大小。這一改動意味著在處理交易時,腳本大小將受到額外的限制,影響著交易的接受和處理方式。

目前,該參數的默認值是1650Bytes,任何節點客戶端都可以在啟動時通過參數-maxscriptsize來設置:

不過即使代碼更新,距離礦工節點全部更新為新版本還有很長的一段時間,這段時間,銘文社區的創新者們應該可以創造出更安全的協議。

Metatrust Labs通過鏈上數據和資產追蹤,在metaScore平臺上已經對銘文投資風險進行了評分和監控,同時在metaScout平臺上也推出比特幣網絡監控的規則引擎,可以幫助投資者監控比特幣銘文的實時數據。

這一期,我們探索現在熱門的銘文生態的技術原理和可能存在的安全問題,下一期,我們將為大家帶來更加復雜的Taproot電路蝕刻技術——bitVM,敬請期待。

熱門
主站蜘蛛池模板: 联谊对象是肉食系警官第6话| 久久国产精品99精品国产| 色偷偷人人澡人人爽人人模 | 亚洲精品无码乱码成人| 美女下面直流白浆视频| 国产单亲乱l仑视频在线观看| 18禁男女爽爽爽午夜网站免费| 好吊妞视频haodiaoniucom| 中文字幕第一页在线| 日韩精品中文字幕在线观看| 亚洲国产精彩中文乱码av| 狠狠色伊人亚洲综合成人| 午夜亚洲国产理论秋霞| 野战爱爱全过程口述| 国产欧美在线一区二区三区| 91精品国产91久久| 奇米777在线视频| 一本色道久久88—综合亚洲精品 | 五月婷婷丁香网| 国产老妇一性一交一乱| A级毛片成人网站免费看| 小东西怎么流这么多水怎么办| 丰满老熟妇好大bbbbb| 日本老师和同学xxxx| 五月天婷婷伊人| 欧美丰满熟妇BBB久久久| 亚洲欧美中文字幕在线网站| 玖玖精品在线视频| 免费看h片网站| 精品无码国产AV一区二区三区| 国产jizzjizz免费看jizz| 都市美妇至亲孽缘禁忌小说| 国产女人18毛片水| 国产男人午夜视频在线观看| 国产精品午夜高清在线观看| 97精品国产97久久久久久免费| 女人18毛片一级毛片在线| 一二三四社区在线中文视频| 忘忧草社区中文字幕| 中文在线免费观看| 无码h黄肉3d动漫在线观看|