成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【戴嘉樂】利用IPFS構(gòu)建自己的去中心化分布式Wiki系統(tǒng)

keithxiaoy / 2092人閱讀

摘要:全稱,中文名星際文件系統(tǒng),是一個旨在創(chuàng)建持久且分布式存儲和共享文件的網(wǎng)絡(luò)傳輸協(xié)議。在網(wǎng)絡(luò)中的節(jié)點將構(gòu)成一個分布式文件系統(tǒng)。使用稱為去中心化命名系統(tǒng),每個文件都可以被協(xié)作命名為易讀的名字。三項目實踐利用構(gòu)建一個去中心化不可篡改的分布式系統(tǒng)。

作者簡介:戴嘉樂( Mr.Maple ) | 前百度高級研發(fā)工程師 | IPFS應(yīng)用實踐者&布道師|
個人網(wǎng)站:https://www.daijiale.cn
聯(lián)系方式:微信號:daijiale6239。

IPFS全稱InterPlanetary File System,中文名:星際文件系統(tǒng),是一個旨在創(chuàng)建持久且分布式存儲和共享文件的網(wǎng)絡(luò)傳輸協(xié)議。
它是一種內(nèi)容可尋址的對等超媒體分發(fā)協(xié)議。在IPFS網(wǎng)絡(luò)中的節(jié)點將構(gòu)成一個分布式文件系統(tǒng)。它是一個開放源代碼項目,自2014年開始由Protocol Labs (協(xié)議實驗室)在開源社區(qū)的幫助下發(fā)展。其最初由Juan Benet設(shè)計。
IPFS是點對點的超媒體協(xié)議,可以讓網(wǎng)絡(luò)更快、更安全、更開放。它是一個面向全球的、點對點的分布式版本文件系統(tǒng),試圖將所有具有相同文件系統(tǒng)的計算設(shè)備連接在一起。
官網(wǎng):https://ipfs.io/

一、IPFS 簡介

IPFS—又稱“星際文件系統(tǒng)”。簡單點說,它是一個點對點的分布式文件系統(tǒng)(和比特幣技術(shù)一樣),通過底層協(xié)議,可以讓存儲在IPFS系統(tǒng)上的文件,在全世界任何一個地方快速獲取,且不受防火墻的影響(無需網(wǎng)絡(luò)代理)。

我們現(xiàn)在所使用的互聯(lián)網(wǎng)協(xié)議被稱作——超文本協(xié)議HTTP。這種協(xié)議具有超中心化特性。

也就是說,你從互聯(lián)網(wǎng)上下載文件或者是瀏覽網(wǎng)頁,一次只能從一個數(shù)據(jù)中心獲取你所需要的資料。如果這個數(shù)據(jù)中心出現(xiàn)故障,或者被限制或是攻擊,就會出現(xiàn)文件丟失或者網(wǎng)頁無法打開的問題。比如你存在某云盤的資料突然無法下載,或者你想瀏覽的網(wǎng)頁因為某些政策原因無法打開。

而IPFS的目的就是解決這些問題。在某些方面,IPFS類似Web,你一樣可以基于IPFS進行互聯(lián)網(wǎng)地址的鏈接。但IPFS是去中心化的,它不存在Web的主網(wǎng)故障問題。所以,IPFS完全取代掉HTTP也并非天方夜譚。

1.1 IPFS與HTTP的區(qū)別 HTTP的四大痛點:

HTTP效率低下,服務(wù)器成本昂貴
使用HTTP協(xié)議從一臺計算機服務(wù)器上一次只能下載一個文件,而不是同時從多臺計算機中獲取文件。通過P2P方式的視頻傳輸可以節(jié)省帶寬成本的60%。

歷史文件被刪除
網(wǎng)頁的平均使用壽命為100天,大量的網(wǎng)站文件不能得以長期保存。有些重要的文件因操作不當(dāng),也有可能永遠在互聯(lián)網(wǎng)消失。

中心化的網(wǎng)絡(luò)限制了機會
互聯(lián)網(wǎng)一直是人類進步的催化器,但中心化的網(wǎng)絡(luò)容易被控制,是對互聯(lián)網(wǎng)良性發(fā)展的的威脅。

網(wǎng)絡(luò)應(yīng)用太依賴骨干網(wǎng)
為保證數(shù)據(jù)的可靠性,我們開發(fā)的應(yīng)用程序太依賴大型的中心服務(wù)器,并通過大量的備份來保證數(shù)據(jù)的安全。
HTTP協(xié)議已經(jīng)用了20年的歷史,從HTTP 1.0 到現(xiàn)在的HTTP5,網(wǎng)頁的展示越來越美觀豐富,但它背后的Browser/Server 模式是從來沒變的。

IPFS區(qū)別于HTTP痛點的特質(zhì):

互聯(lián)網(wǎng)信息永久存儲
IPFS像是一個分布式存儲網(wǎng)絡(luò)(類似于SIA),任何存儲在系統(tǒng)里的資源,包括文字、圖片、聲音、視頻,以及網(wǎng)站代碼,通過IPFS進行哈希運算后,都會生成唯一的地址。今后,你只要通過這個地址就可以打開它們。并且這個地址是可以被分享的。
而由于加密算法的保護,該地址具備了不可篡改和刪除的特性(在某種意義上,如果破解密碼還是有可能被篡改或刪除,但概率極低)。所以,一旦數(shù)據(jù)存儲在IPFS中,它就會是永久性的。比如我們經(jīng)常會遇到的某個資源刪除無法訪問的問題。
這種情況,在IPFS上就不會發(fā)生。即便是把該站點撤銷,只要存儲該站點信息的網(wǎng)絡(luò)依然存在,該網(wǎng)頁就可以被正常訪問。存儲站點的分布式網(wǎng)絡(luò)越多,它的可靠性也就越強。
與SIA不同的是,IPFS存儲的一般是公共信息,普通大眾都可以獲得的。有一種說法認為,如果IPFS完全取代HTTP,那么此后,人類歷史將會被永久保存,且不會被篡改。
這也就意味著,人類所做的每一件事情都會被記錄,不管是正確的、抑或是錯誤的。

解決過度冗余問題,實現(xiàn)共享經(jīng)濟
如果你喜歡某部電影,又擔(dān)心電影資源丟失,通常的做法是,你會把這部電影下載在自己的電腦上。比如電影《阿凡達》,在2016年一年的下載次數(shù)就達到了1658萬次,總下載數(shù)量更是驚人。那么一個無法避免的問題是:同樣的一部電影被反復(fù)儲存,造成了內(nèi)存資源極大浪費。這就是HTTP協(xié)議的弊端。同樣的資源備份的次數(shù)過多,就會造成過度冗余的問題。
而IPFS的出現(xiàn)可以很好的解決這個問題。IPFS會把存儲文件,做一次哈希計算,只字不差的兩個文件哈希值相同。所以,用戶只需要使用相同的哈希值,就可以訪問那個文件,這個哈希值就是文件的地址。只要獲取這個地址,就可以共享資源了。
基于上面的永久存儲特性,你再也不用擔(dān)心某個電影找不到了,也不用備份,因為全球電腦上只要有那么幾個人存儲著,你就能拿到它。而不是重復(fù)存儲幾十萬份。

同時基于內(nèi)容尋址,而非基于域名尋址。
IPFS的網(wǎng)絡(luò)上運行著一條區(qū)塊鏈,即用來存儲互聯(lián)網(wǎng)文件的哈希值表,每次有網(wǎng)絡(luò)訪問,即要在鏈上查詢該內(nèi)容(文件)的地址。
文件(內(nèi)容)具有存在的唯一性,一個文件加入了IPFS的網(wǎng)絡(luò),將基于計算對內(nèi)容賦予一個唯一加密的哈希值。這將改變我們使用域名訪問網(wǎng)絡(luò)的習(xí)慣。
提供文件的歷史版本控制器(類似Git),并且讓多節(jié)點使用保存不同版本的文件。

節(jié)點存儲激勵,代幣分成
通過使用代幣(FileCoin)的激勵作用,讓各節(jié)點有動力去存儲數(shù)據(jù)。 Filecoin 是一個由加密貨幣驅(qū)動的存儲網(wǎng)絡(luò)。礦工通過為網(wǎng)絡(luò)提供開放的硬盤空間獲得Filecoin,而用戶則用 Filecoin 來支付在去中心化網(wǎng)絡(luò)中儲存加密文件的費用。

1.2 IPFS工作原理

每個文件及其中的所有塊都被賦予一個稱為加密散列的唯一指紋。

IPFS通過網(wǎng)絡(luò)刪除重復(fù)具有相同哈希值的文件,通過計算是可以判斷哪些文件是冗余重復(fù)的。并跟蹤每個文件的版本歷史記錄。

每個網(wǎng)絡(luò)節(jié)點只存儲它感興趣的內(nèi)容,以及一些索引信息,有助于弄清楚誰在存儲什么。

查找文件時,你通過文件的哈希值就可以在網(wǎng)絡(luò)查找到儲存改文件的節(jié)點,找到想要的文件。

使用稱為IPNS(去中心化命名系統(tǒng)),每個文件都可以被協(xié)作命名為易讀的名字。通過搜索,就能很容易地找到想要查看的文件。

從IPFS的介紹可以看出, IPFS設(shè)想的是讓所有的網(wǎng)絡(luò)終端節(jié)點不僅僅只充當(dāng) Browser或Client的角色,其實人人都可以作為這個網(wǎng)絡(luò)的運營者,人人都可以是服務(wù)器。

1.3 IPFS應(yīng)用場景

二、IPFS 配置 2.1 IPFS 下載

下載地址:https://dist.ipfs.io/#go-ipfs

本篇博客下載并使用的版本是:go-ipfs Version v0.4.13 for OS X 64bit

2.2 IPFS 安裝

ipfs --help  //打開命令行,輸入,出現(xiàn)Log信息時,表示安裝成功
2.3 IPFS本地部署 2.3.1 創(chuàng)建節(jié)點

在本地全局目錄下新建倉庫:

2.3.2 節(jié)點配置
cd ~/.ipfs
export EDITOR=/usr/bin/vim
ipfs config edit

執(zhí)行完ipfs config edit后會打開一個ipfs節(jié)點配置文件,可以如下修改配置參數(shù):

{
"Identity":{
"PeerID":"QmXXXXXXXXXXXXXXX",
"PrivKey":"XXXXXXXXXXXX"
},
"Datastore":{
"StorageMax":"10GB",
"StorageGCWatermark":90,
"GCPeriod":"1h",
"Spec":{
"mounts":[
{
"child":{
"path":"blocks",
"shardFunc":"/repo/flatfs/shard/v1/next-to-last/2",
"sync":true,
"type":"flatfs"
},
"mountpoint":"/blocks",
"prefix":"flatfs.datastore",
"type":"measure"
},
{
"child":{
"compression":"none",
"path":"datastore",
"type":"levelds"
},
"mountpoint":"/",
"prefix":"leveldb.datastore",
"type":"measure"
}
],
"type":"mount"
},
"HashOnRead":false,
"BloomFilterSize":0
},
"Addresses":{
"Swarm":[
"/ip4/0.0.0.0/tcp/4001",
"/ip6/::/tcp/4001"
],
"Announce":[
],
"NoAnnounce":[
],
"API":"/ip4/127.0.0.1/tcp/5001",
"Gateway":"/ip4/127.0.0.1/tcp/8080"
},
"Mounts":{
"IPFS":"/ipfs",
"IPNS":"/ipns",
"FuseAllowOther":false
},
"Discovery":{
"MDNS":{
"Enabled":true,
"Interval":10
}
},
"Ipns":{
"RepublishPeriod":"",
"RecordLifetime":"",
"ResolveCacheSize":128
},
"Bootstrap":[
"/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
"/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
"/dnsaddr/bootstrap.libp2p.io/ipfs/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
"/dnsaddr/bootstrap.libp2p.io/ipfs/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
"/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
"/ip4/104.236.179.241/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM",
"/ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu",
"/ip4/104.236.76.40/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64",
"/ip4/178.62.158.247/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd",
"/ip6/2604:a880:1:20::203:d001/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM",
"/ip6/2400:6180:0:d0::151:6001/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu",
"/ip6/2604:a880:800:10::4a:5001/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64",
"/ip6/2a03:b0c0:0:1010::23:1001/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd"
],
"Gateway":{
"HTTPHeaders":{
"Access-Control-Allow-Headers":[
"X-Requested-With",
"Range"
],
"Access-Control-Allow-Methods":[
"GET"
],
"Access-Control-Allow-Origin":[
"*"
]
},
"RootRedirect":"",
"Writable":false,
"PathPrefixes":[
]
},
"API":{
"HTTPHeaders":null
},
"Swarm":{
"AddrFilters":null,
"DisableBandwidthMetrics":false,
"DisableNatPortMap":false,
"DisableRelay":false,
"EnableRelayHop":false,
"ConnMgr":{
"Type":"basic",
"LowWater":600,
"HighWater":900,
"GracePeriod":"20s"
}
},
"Reprovider":{
"Interval":"12h",
"Strategy":"all"
},
"Experimental":{
"FilestoreEnabled":false,
"ShardingEnabled":false,
"Libp2pStreamMounting":false
}
}
2.3.3 節(jié)點ID

每個節(jié)點都會存在一個唯一標識,查看節(jié)點ID方式如下:

ipfs id 
2.3.4 啟動節(jié)點服務(wù)器
ipfs daemon

出現(xiàn)了5001端口被占用的情況,這邊可以通過對節(jié)點配置文件的修改來解決,如下所示:

找到所有配置5001端口的地方

替換成5002端口

再次啟動節(jié)點,服務(wù)成功啟動如下所示:

2.3.5 配置CORS跨域資源共享

為了方便后續(xù)前端的開發(fā)和數(shù)據(jù)訪問,提前對跨域資源共享CORS進行配置,ctrl-c?退出ipfs,然后按照下面的步驟進行跨域配置:

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "["PUT", "GET", "POST", "OPTIONS"]"
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "["*"]"
2.3.6 驗證

瀏覽器打開 http://localhost:5002/webui ,出現(xiàn)Web Console 圖形化控制臺:

這里可以看到所有run在主網(wǎng)上的節(jié)點信息,和本地節(jié)點相關(guān)的配置數(shù)據(jù)。

三、IPFS 項目實踐

利用 IPFS 構(gòu)建一個去中心化、不可篡改的分布式Wiki系統(tǒng)。

3.1 新建workplace

考慮到方便后期開源和推廣,這邊我是托管在github上,大家可以選擇自己熟悉的代碼托管服務(wù),也可以克隆我的工程 ->?ipfs-wiki-system,在其基礎(chǔ)上進行你的二次開發(fā),有任何問題,歡迎提交issue給我。

mkdir workplace
cd workplace
git clone [email protected]:daijiale/ipfs-wiki-system.git
3.2 wiki系統(tǒng)搭建
cd workplace/ipfs-wiki-system/wiki-release
ll

可以看到如下文件:

wiki-release

index.html?//markdown模板渲染

navigation.md?//導(dǎo)航markdown

index.md?//首頁markdown

大家可以參考ipfs-wiki?Demo,根據(jù)自己的需求,通過markdown自定義不同的wiki內(nèi)容和目錄。

3.3 掛載本地節(jié)點

記住文件根目錄的Hash值:QmV5ZVQxXURKPDcVDW8WjpLCiQYvNzg173XcB6rYFevoXm

3.4 發(fā)布到主網(wǎng)
ipfs daemon

https://ipfs.io/ipfs/QmV5ZVQx...

3.5 發(fā)布到IPNS

由于ipfs的hash對應(yīng)著一個不可變的內(nèi)容,每次更新網(wǎng)站之后,website的hash都會變,舊的link不能訪問到新的內(nèi)容。

ipfs提供了ipns來解決更新的問題。

ipfs允許用戶使用一個私有密鑰來對哈希附加一個引用,使用一個公共密鑰哈希(簡稱pubkeyhash)表示你的網(wǎng)站的最新版本。

具體操作是:

通過上述方式,就完成了website和一個固定的link的綁定:
QmPS5NRXPCeAUtofKbW7c58Qm4PpM8mPEVJvaooE13LF78

3.6 綁定驗證
ipfs name resolve QmPS5NRXPCeAUtofKbW7c58Qm4PpM8mPEVJvaooE13LF78
/ipfs/QmV5ZVQxXURKPDcVDW8WjpLCiQYvNzg173XcB6rYFevoXm

IPNS訪問固定節(jié)點Hash:

https://ipfs.io/ipns/QmPS5NRX...

驗證成功,出現(xiàn)如下效果:

3.7 去中心化驗證

以之前發(fā)布到主網(wǎng)的節(jié)點為第一節(jié)點,我們本地再新建一個節(jié)點,用以模擬第二節(jié)點的身份,打開Web Console:

在第二節(jié)點上,我們依然可以通過IPFS HASH查詢到第一節(jié)點主網(wǎng)上的?ipfs-wiki-system目錄文件數(shù)據(jù)

同時,我們也能看到:控制臺顯示記錄了我們發(fā)布至主網(wǎng)數(shù)據(jù)的區(qū)塊節(jié)點數(shù)已經(jīng)擴散至275個。

也就是說,來自另外全球其他274地方的個體,在自己的“記賬本”中記下了你之前發(fā)布的數(shù)據(jù),哪怕其中個別服務(wù)器宕機(天災(zāi)人禍,挖斷電纜,世界末日等等),只要有一個節(jié)點安好,你的數(shù)據(jù)都不會丟失,真正意義實現(xiàn)了去中心化的服務(wù)機制。

四、項目體驗


->傳送門

參考文獻

本文部分內(nèi)容參考如下文獻,特別鳴謝:

如何使用星際文件傳輸網(wǎng)絡(luò)(IPFS)搭建區(qū)塊鏈服務(wù)-黎躍春
Youtube實驗室
protocol協(xié)議實驗室
Filecoin早期曠工計劃
IPFS開發(fā)英文官方文檔
IPFS——它能取代HTTP協(xié)議?
IPFS—http的終極殺手


相關(guān)文章和視頻推薦

[ 【戴嘉樂】詳解IPFS的本質(zhì)、技術(shù)架構(gòu)以及應(yīng)用]()

圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 在各大平臺都長期有優(yōu)質(zhì)免費公開課,歡迎報名收看。
公開課地址:https://ke.qq.com/course/345101? ?

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24425.html

相關(guān)文章

  • 嘉樂】(入門)基于IPFS和Ngrok構(gòu)建自維護資源網(wǎng)關(guān)

    摘要:作者簡介戴嘉樂前百度高級研發(fā)工程師應(yīng)用實踐者布道師個人網(wǎng)站聯(lián)系方式微信號。二技術(shù)介紹對這項技術(shù)不熟悉的同學(xué),可以參考我之前一次演講分享的內(nèi)容戴嘉樂詳解的本質(zhì)技術(shù)架構(gòu)以及應(yīng)用。 作者簡介:戴嘉樂( Mr.Maple ) | 前百度高級研發(fā)工程師 | IPFS應(yīng)用實踐者&布道師|個人網(wǎng)站:https://www.daijiale.cn聯(lián)系方式:微信號:daijiale6239。 一、應(yīng)用背...

    CloudwiseAPM 評論0 收藏0
  • 嘉樂】(進階)基于IPFS和Ngrok構(gòu)建自維護資源網(wǎng)關(guān)

    摘要:五參考文獻區(qū)塊鏈利用構(gòu)建自己的去中心化分布式系統(tǒng)相關(guān)文章和視頻推薦戴嘉樂入門基于和構(gòu)建自維護資源網(wǎng)關(guān)圓方圓學(xué)院匯集大批區(qū)塊鏈名師,打造精品的區(qū)塊鏈技術(shù)課程。 作者簡介:戴嘉樂( Mr.Maple ) | 前百度高級研發(fā)工程師 | IPFS應(yīng)用實踐者&布道師|個人網(wǎng)站:https://www.daijiale.cn聯(lián)系方式:微信號:daijiale6239。 一、背景 上篇文章[《(入門...

    xiyang 評論0 收藏0
  • 嘉樂】基于IPFS和GeoHash構(gòu)建具有地理位置價值服務(wù)的DDApp(理論篇)

    摘要:數(shù)據(jù)將具有如下個特點將二維的經(jīng)緯度轉(zhuǎn)換成字符串,比如下圖展示了北京個區(qū)域的字符串,分別是,等等,每一個字符串代表了某一矩形區(qū)域。例如,坐標對,位于北京安定門附近,后形成的值為。 作者簡介:戴嘉樂( Mr.Maple ) | 前百度高級研發(fā)工程師 | IPFS應(yīng)用實踐者&布道師|個人網(wǎng)站:https://www.daijiale.cn聯(lián)系方式:微信號:daijiale6239。 show...

    lmxdawn 評論0 收藏0
  • 嘉樂】詳解IPFS的本質(zhì)、技術(shù)架構(gòu)以及應(yīng)用

    摘要:戴嘉樂去年月參與了的眾籌,從而了解到技術(shù),獨立開發(fā)了兩款基于的開源應(yīng)用,一個是與有關(guān)的系統(tǒng),另一個是相關(guān)的地理位置檢索系統(tǒng)。現(xiàn)在支持的數(shù)據(jù)結(jié)構(gòu),支持比特幣以太坊的區(qū)塊數(shù)據(jù)。 戴嘉樂是前百度高級研發(fā)工程師,ipfser.org&巴比特專欄作者。戴嘉樂去年8月參與了FileCoin的眾籌,從而了解到IPFS技術(shù),獨立開發(fā)了兩款基于IPFS的開源應(yīng)用,一個是與IPFS有關(guān)的wiki系統(tǒng),另一...

    whlong 評論0 收藏0
  • 【許曉笛】EOS:IPFS落地的重要途徑

    摘要:寫在前面,這一篇文章是許曉笛在北京開發(fā)者圓桌會議上的發(fā)言實錄,感謝主辦方戴嘉樂和董天一的邀請,感謝編輯們。我這次分享題目是有可能有點標題黨,前面拉了三個字有可能是落地的一個非常重要的途徑。共識機制共識機制,就是所有代幣持有人選舉。 寫在前面,這一篇文章是許曉笛 2018.05.20 在北京 《IPFS開發(fā)者圓桌會議》上的發(fā)言實錄,感謝主辦方戴嘉樂和董天一的邀請,感謝編輯們。先介紹一下《...

    tuomao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<