深入淺出Corda(一)概述

此篇文章將主要就 Corda 一些背景和設(shè)計(jì)原則做簡(jiǎn)單的介紹和翻譯,具體可以參考Corda 相關(guān)的技術(shù)白皮書:Read the updated intro white paper & Read the technical white paperRead the Corda introduction在線文檔。 這里主要涉及我們的應(yīng)用背景對(duì)相關(guān)的架構(gòu)和技術(shù)細(xì)節(jié)做概述, 具體詳情后續(xù)再分章節(jié)闡述。

漂亮點(diǎn)封面

背景概述

關(guān)于區(qū)塊鏈(Blockchain) 網(wǎng)上有太多的介紹,這里不再詳述,簡(jiǎn)言之:“區(qū)塊鏈?zhǔn)歉鞣介g交易的共享數(shù)據(jù)庫,旨在提升安全性、透明度和效率”:

區(qū)塊鏈?zhǔn)且环N全新的數(shù)據(jù)庫技術(shù),在應(yīng)對(duì)一系列獨(dú)特挑戰(zhàn)方面最為有效。數(shù)據(jù)庫過去被用作數(shù)據(jù)存儲(chǔ)中心以支持交易處理及計(jì)算。但出于各種技術(shù)和安全考慮,數(shù)據(jù)庫信息很少在組織間分享。區(qū)塊鏈?zhǔn)歉鞣介g交易的共享分布式數(shù)據(jù)庫,旨在提升透明度、安全性和效率。

Corda 官方解釋Corda 從開始就是為商業(yè)目的設(shè)計(jì)的區(qū)塊鏈項(xiàng)目(背后的R3聯(lián)盟), Corda 允許你在一個(gè)相對(duì)私有的環(huán)境里進(jìn)行區(qū)塊鏈操作,Corda 的智能合約可以幫助商業(yè)機(jī)構(gòu)之間直接進(jìn)行價(jià)值交換(做交易了)。

Corda is an open source blockchain project, designed for business from the start. Only Corda allows you to build interoperable blockchain networks that transact in strict privacy. Corda’s smart contract technology allows businesses to transact directly, with value.

更確切的說Corda 是為金融機(jī)構(gòu), 特別是銀行打造的一個(gè)系統(tǒng), 當(dāng)然理論在其他行業(yè), 保險(xiǎn)業(yè)、醫(yī)療行業(yè)都適用(比較懷疑?區(qū)塊鏈在工業(yè)界的應(yīng)用是種“病態(tài)”!), 可能這部分也是現(xiàn)在絕大部分的所謂區(qū)塊鏈項(xiàng)目的一個(gè)弊端, 也就是所謂 帶著解決方案找問題(solutions looking for problems); 所以Corda 最開始的定位也是:

Corda is a distributed ledger platform designed and built from the ground up for the recording and automation of legal agreements between identifiable parties. It is heavily influenced by the requirements of the financial industry but we believe the community will find the underlying architecture will lend itself to a broad range of applications.

Corda 專門為金融行業(yè)設(shè)計(jì)

注意:是在可信賴、互相都識(shí)別的對(duì)方, 參考標(biāo)的是金融領(lǐng)域的解決方案, 所以Corda 不是一個(gè)大而全的通用解決方案, 所以Corda 的設(shè)計(jì)有別于一般的Bitcoin或者Ethereum, 定位金融解決方案是Corda 首要角色, 金融領(lǐng)域的業(yè)務(wù)模型,其實(shí)通過若干年的積累,特別是焊接不同的行業(yè)是非常的復(fù)雜, Corda 基于一個(gè)大膽的抽象, 也就是把復(fù)雜的金融業(yè)務(wù)抽象成一個(gè)合約組成的網(wǎng)絡(luò)。 比如我們往銀行里面存款是一個(gè)簡(jiǎn)單的IOU 合約代表銀行欠我們多少錢, 參與一個(gè)CDS(Credit Default Swap) 合約, 這個(gè)合約里面寫著我們各自的義務(wù)和權(quán)利。 這些信息被保存在各個(gè)組織各個(gè)系統(tǒng)中, 公司花費(fèi)大量的財(cái)力物力來保持他們一致。

不管在組織內(nèi)部還是組織之間, 這樣的信息校驗(yàn)不僅僅是花費(fèi)資源, 還會(huì)帶來比較大業(yè)務(wù)上的風(fēng)險(xiǎn), 筆者先前在摩根post-trade office 有很大一部分的人力花費(fèi)在校驗(yàn)(Reconciliation)雙方的交易信息上面, 更有甚者還有使用紙質(zhì)、或者傳真交易協(xié)議, 就需要人肉校驗(yàn),所以有大量的人在做這個(gè)非??菰锏墓ぷ鳎词故沁@個(gè)樣子還是不能保證不出錯(cuò)(參考)。

一個(gè)集中的中央第三方可能解決此問題, 比如結(jié)算清算領(lǐng)域?qū)iT做此服務(wù)的 Depository Trust & Clearing Corporation(DTCC) 和 Continuous Linked Settlement Group (CLS);幫助增加組織之間共享信息的完整性和一致性, 但是即使有DTCC這樣的機(jī)構(gòu)存在, 在交易得以處理和結(jié)算之前,仍然需要用人工在客戶、經(jīng)紀(jì)商、DTCC 和信托銀行之間進(jìn)行協(xié)調(diào)和確認(rèn)。在整個(gè)清算和結(jié)算過程中,有許多環(huán)節(jié)有待改進(jìn):

  1. 交易存在多個(gè)版本。當(dāng)多方參與一項(xiàng)交易時(shí),在各方使用的不同系統(tǒng)間可能存在多個(gè)版本的交易記錄。這引發(fā)了不確定性,當(dāng)參與方對(duì)交易細(xì)節(jié)存在異議時(shí),可能需要人工方式干預(yù)。
  2. 結(jié)算過程耗時(shí)較長(zhǎng)。雖然美國(guó)股票交易可以在瞬息間完成,但是結(jié)算過程可能需要三天(到
    2017 年有望改善至兩天),這造成了資本金和流動(dòng)性的占用。
  3. 賬戶信息/指令經(jīng)常變化。賬戶信息和結(jié)算指令會(huì)隨著時(shí)間推移而發(fā)生變化,例如賬戶新開或
    關(guān)閉、賬戶數(shù)量調(diào)整、托管調(diào)整等,這帶來了信息陳舊的問題(特別是對(duì)于標(biāo)準(zhǔn)結(jié)算指令而
    言),進(jìn)而需要增加溝通和人工干預(yù)。
  4. 操作風(fēng)險(xiǎn)。企業(yè)在交易結(jié)算過程中面臨額外的操作風(fēng)險(xiǎn),而通過區(qū)塊鏈技術(shù)進(jìn)行的交易前檢查可以化解這一問題。

不僅僅整個(gè)系統(tǒng)效率不高, 而且花費(fèi)不菲,僅僅在美股股票這一塊(來自高盛全球投資研究):

我們估算,2015 年美國(guó)股票交易的年傭金收入約為110 億美元,全球整體股票交易收入池約470億美元。采用業(yè)內(nèi)常見的20%的稅前利潤(rùn)率,這意味著美國(guó)股票交易業(yè)務(wù)的費(fèi)用支出約為88 億美元。采用業(yè)內(nèi)35%的平均薪酬收入比,則我們估算整體薪酬支出約為40 億美元。剩余的費(fèi)用支出包括約10 億美元的IT/技術(shù)相關(guān)支出(我們采用IDC 的2015 年整體銀行業(yè)IT 支出數(shù)據(jù)并估算占比為5%)以及約40 億美元的銷售及管理費(fèi)用/其它支出

對(duì)于其他更龐大的OTC產(chǎn)品,相信這部分的花費(fèi)更多, 所以對(duì)于一個(gè)區(qū)塊鏈的基本功能需求:安全、透明、高效的分享信息。

DLT

Corda 模塊

Corda 區(qū)別于其他一般區(qū)塊鏈的解決方案, 所以一般意義可以稱他為DLT(Distributed Ledger Technology); 所以里面沒有代幣機(jī)制, 也就是不能ICO(理論)了, 一個(gè)最簡(jiǎn)單的共識(shí)機(jī)制(Notary下面介紹),利用現(xiàn)有的被證實(shí)的技術(shù)和架構(gòu): 比如語言是最普遍的JVM 上語言Koltin, 加密是基礎(chǔ)的PKIX, 消息通訊是Apache ActiveMQ 下的 Artemis等, 所以可以盡可能多的使用現(xiàn)有的組織資產(chǎn),特別是現(xiàn)有的金融公司技術(shù)堆棧,代入可以說比較平滑。

點(diǎn)對(duì)點(diǎn)

點(diǎn)對(duì)點(diǎn)通訊

P2P 通訊基本是所有分布式網(wǎng)絡(luò)最基礎(chǔ)的設(shè)置, 這里技術(shù)上乏陳可述, 這里點(diǎn)對(duì)點(diǎn)更是業(yè)務(wù)上, 無需一個(gè)中央的基本比如DTCC, 保證只有交易關(guān)系方(可能多余兩個(gè))之間直接進(jìn)行通訊。應(yīng)用成熟的加密技術(shù)(PKIX), 使用分布式賬本, 和智能合約; 不需要一個(gè)中央的route 角色幾個(gè)參與這個(gè)流程。

分布式賬本

賬本是交易雙方交易過程中所有信息、關(guān)聯(lián)合約、transaction、狀態(tài)等在信息系統(tǒng)的記錄, 這些信息在Corda 節(jié)點(diǎn)的 Vault 中保存(對(duì)于數(shù)據(jù)庫一個(gè)表), 這些信息作為本地的一個(gè)存根,具體每個(gè)節(jié)點(diǎn)以何種介質(zhì)存儲(chǔ),看具體的實(shí)現(xiàn)。同時(shí)所有的transaction 歷史記錄也都保存在本地, 以方便以后校驗(yàn)、證明等。

智能合約

智能合約里面封裝了關(guān)于一個(gè)transaction 處理的所有業(yè)務(wù)邏輯。 主要是整對(duì)一個(gè)交易里面涉及的所有信息進(jìn)行校驗(yàn), 比如input/output 交易雙方,交易的內(nèi)容; Contract 是以一個(gè)原子方式進(jìn)行的, 保證像 DVP(Delivery-versus-payment) 能夠正確的執(zhí)行, 這個(gè)也是Corda Distributed Applications。

共識(shí)Consensus

共識(shí)算法

不管是POW/POS/POW/DPOS 等等方式在Corda 限定的業(yè)務(wù)場(chǎng)景都不太合適, 一個(gè)是效率上面, 一個(gè)transaction 多長(zhǎng)時(shí)間被確認(rèn), 另外一個(gè)是對(duì)最終結(jié)果的界定, 因?yàn)榇蟛糠纸鹑跇I(yè)務(wù)需要強(qiáng)事務(wù)。 無論是比特幣還是以太坊都是基于在對(duì)方不確認(rèn)的基礎(chǔ)上, 而Corda 是基于信任的對(duì)方也就是你知道對(duì)手是誰,所以更更簡(jiǎn)單的共識(shí)解決方案。

Notary

Corda 網(wǎng)絡(luò)中Notary(或有多個(gè)), 擔(dān)任其共識(shí)服務(wù)的角色, Notary 保證交易的唯一性, 比如一個(gè)Input 是否多次消費(fèi), 但是目前Notary 簡(jiǎn)單Validating 模式下這個(gè)保證比較弱, 需要交易在同一個(gè)Notary 上面, 換Notary 需要額外的步驟同步Notary 上面的信息。 還有其他的算法保證一致性, BFT-SMaRT, Raft等。

隱私

  1. 點(diǎn)點(diǎn)通訊通過SSL
  2. 隨機(jī)Key 生成 rotation, 管理匿名交易 Refer
  3. Merkle 樹 mask 不必要的信息
  4. 借助Intel Software Guard Extensions (SGX)--更強(qiáng)加密防護(hù)

業(yè)務(wù)場(chǎng)景

這里根據(jù) The Corda Way of Thinking, 簡(jiǎn)單通俗易懂的解釋 Corda 里面各種模塊的關(guān)系和角色, 這里簡(jiǎn)單的解釋下, 對(duì)后續(xù)理解會(huì)有一定幫助。

DLT 需要解決什么?
在和不同人之間進(jìn)行交易合作中, 我們希望協(xié)議、合同、互相關(guān)系等能夠很好歸檔,理解清晰,記錄一致。

DLT 保有我們各自的信息, 同時(shí)當(dāng)這些記錄被合法的改變后能精確的保持彼此同步!

然后想象在一個(gè)只有紙張、復(fù)印機(jī)、和郵局的世界里面如何實(shí)現(xiàn)一個(gè)DLT.

首先讓我們想象,我(Richard) 有一個(gè)文件柜里面有很多表格,每個(gè)表格都題寫了一些我需要和至少一個(gè)其他人共享的信息, 可能是一個(gè)貸款,或者交易信息,其他任何可以記錄的信息。

你有一個(gè)裝滿表格的文件柜, 每個(gè)人都有一個(gè)自己的柜子, 每個(gè)表格都被標(biāo)上數(shù)字以便識(shí)別。

如果兩個(gè)人之間分享信息, 那么每個(gè)人的文件柜里都有個(gè)相同數(shù)字標(biāo)志的表格, 里面有一模一樣的信息。

Richard 和 Albert 共有記錄 #128, Albert和Harrison 共有 #140 他們都有 #132

每個(gè)人的文件夾只包含和自己相關(guān)的信息, 比如上面的Harrison 沒有記錄#128, #128 是Richard 和Albert 之間的交易, 和Harrison 沒有關(guān)系?,F(xiàn)在的世界(很簡(jiǎn)單):

  1. 我有一個(gè)滿是標(biāo)志好的表格的文件柜
  2. 每個(gè)人都有一個(gè)存儲(chǔ)標(biāo)志好的表格的文件柜
  3. 每個(gè)表格表示一個(gè)合約、協(xié)議、交易或者任何其他信息
  4. 共享的表格,共享方各自有一個(gè)一模一樣的拷貝

記錄 #128. 這個(gè)是我 (Richard) 和 Albert 共同享有的記錄:

#128 文件詳情

是一個(gè)關(guān)于Richard 和 Albert 之間的打賭, 
如果星期四下雨, Albert 欠 Richard $10,  
反之 Richard 欠 Albert $10

證明:
當(dāng)天的報(bào)紙

是不是很簡(jiǎn)單, 當(dāng)然現(xiàn)實(shí)的應(yīng)用場(chǎng)景比這個(gè)復(fù)雜, 會(huì)有更多的協(xié)議細(xì)則,和更多的參與方。

所以現(xiàn)在雙發(fā)都達(dá)成了共識(shí),都有一個(gè)這個(gè)協(xié)議的完整的拷貝(如何共識(shí)后續(xù)講), 后續(xù)就是等周四下不下雨了。

每人一份拷貝

時(shí)光飛逝,如白駒過隙,一晃周四過了, 是時(shí)候兌現(xiàn)對(duì)賭的時(shí)候了,昨天(這個(gè)時(shí)候周五了)到底是下雨了還是沒有下,我們需要對(duì)此事實(shí)達(dá)成共識(shí),這個(gè)決定誰欠誰$10, 而且我們需要更新我們的記錄, 以準(zhǔn)確完整的記錄當(dāng)時(shí)的情況。

WOO 我(Richard)贏了,不是我自己說的, 有今天的華爾街日?qǐng)?bào)作證,因?yàn)閰f(xié)議上面明確規(guī)定需要贏家提供證明。

報(bào)紙證明

下一步,就需要更新我們的表格, 以記錄既定的事實(shí),也就是對(duì)賭的結(jié)果,外界的證明條件(報(bào)紙)等信息---這個(gè)報(bào)紙是個(gè)核心的信息,讓雙方對(duì)結(jié)果達(dá)成共識(shí)。

現(xiàn)在需要根據(jù)我們達(dá)成一致的對(duì)賭協(xié)議進(jìn)行下一步, 既然是下雨天, 我需要對(duì)方知道這個(gè)現(xiàn)實(shí),而且欠我的錢。

自然而然的我們可能想到, 在原來的協(xié)議上面再加上一行內(nèi)容,但是不,我們拿一張嶄新的表格, 來替代以前的老表格。

這個(gè)是因?yàn)樵趶?fù)雜的交易中, 會(huì)有大量的時(shí)間和更新時(shí)間, 如果我們不停的修改以前的表格, 可能導(dǎo)致信息非?;煺?,無法區(qū)分修改的歷史記錄(參考Event source 設(shè)計(jì)手法)。

反正無所謂,紙張也便宜,所以重新題寫一份新的表格不會(huì)太費(fèi)力。

所以我要做的,就是用一個(gè)新的表格題寫所有關(guān)于那個(gè)對(duì)賭的更新信息, 這里我們的難點(diǎn)是,需要保證新的更新信息更新到所有這筆對(duì)賭的關(guān)系人哪里, 這里是我和Alert, 可能還有其他人,比如監(jiān)管部門, 或者一個(gè)會(huì)計(jì)師哪里。

更新記錄

我已經(jīng)知道周四是下雨的,所以我贏得了比賽, 我需要將我們共享的記錄#128, 更新為最新的 #156 記錄, 哪里包含了最新的信息:


Richard 和 Albert 打賭周四會(huì)下雨
周四確實(shí)下了, 由附件的報(bào)紙證明
所以Alert 欠Richard錢 $10
這個(gè)記錄用來替換原來記錄  #128

首先, 我自己會(huì)從我自己的文件夾里面拿出 #128 號(hào)記錄, 然后打個(gè)大大的紅X, 標(biāo)志這個(gè)文件可以備份處理, 然后我寫了封信給Albert。信里我說:

“
Hello Albert!  
我是Richard !
記得我們的打賭?你可以在你文件柜里發(fā)現(xiàn)他, 也就是 #128 號(hào)文件。
也許你知道這個(gè)打賭關(guān)于昨天(星期四)倫敦的天氣,知道嗎,昨天倫敦下雨了!
隨件我附上了當(dāng)天的報(bào)紙哦,
不好意思老兄,你欠我$10, 
同時(shí)我也打印了一份新的表單,
里面記錄我們對(duì)賭的詳情和結(jié)果,和證明, 確實(shí)下雨了,你欠我$10的事實(shí)。
我想你應(yīng)該遵守我們既定的對(duì)賭規(guī)則協(xié)議: 也就是你必須把你的老的 #128 文件更新為我附上的最新記錄 #156
我已經(jīng)替換完了,至于 $10 周一上班請(qǐng)我吃飯吧!
拜拜 
Richard  簽署”

我需要快遞個(gè)包裹給Albert包括

  1. 一封信
  2. 一張報(bào)紙
  3. 最新的記錄
整個(gè)要快遞包裹內(nèi)容

在同城快遞下,很快下午Albert 收到了這個(gè)包裹, 他打開了包裹:

  1. 打開它的文件夾,找到了#128 文件
  2. 比對(duì)了#128 號(hào)文件和 #156 文件的記錄
  3. 確認(rèn)更新是遵守Rule book
  4. 在#128 文件上畫了大大的紅叉,等待備份
  5. 把#156 文件放到他的文件柜下
替換文件

最終我和Albert 都在我們的文件夾保存了一份一致的文件,由于我們先前已經(jīng)協(xié)商好一致的rule book, 同時(shí)我也提供了當(dāng)日的報(bào)紙作為證據(jù), 所以這個(gè)協(xié)議能夠沒有爭(zhēng)議的執(zhí)行。這個(gè)導(dǎo)致我們可以步調(diào)一致的執(zhí)行文件更新, 和后續(xù)的協(xié)議Albert用$10請(qǐng)我吃飯。

這里我們僅僅使用一個(gè)快遞包裹解決了這個(gè)事情, 但是現(xiàn)實(shí)可能很復(fù)雜, Alert 可能需要咨詢其他的人比如他的律師, 第三方公證,才能確認(rèn)用新的文件去替代以前的文件。 這些就是corda 幫我們做的。

上面我們接觸到的概念可以一一對(duì)應(yīng)到corda 的相關(guān)模塊上:

文件表格 vs State

文件柜里面的每個(gè)文件表格

State 可以代表任何的信息, 交易、合約、合同、資產(chǎn)負(fù)債表、IOU、貸款

文件柜 vs Vault

文件柜

保存最新文件,表格, 或者最新的合約交易IOU 等信息。

包裹 vs Transaction

包裹

想象那封發(fā)送給相關(guān)第三方郵件, 用來提醒其他干系人: 用最新附上的文件替換老的的文件, 和更新需要遵循我們先前統(tǒng)一的規(guī)則。

郵局 vs P2P 網(wǎng)絡(luò)

提供快遞服務(wù)把包裹在不同節(jié)點(diǎn)之間傳輸。

RuleBook vs Contract

想象成, 你在接收到一個(gè)郵件, 讓你刪除(失效)先前每個(gè)文檔, 用一個(gè)全新的文檔來替代;你需要檢查的規(guī)則, 這波操作是否合規(guī)? 是否符合我們先前的約定? 這也是Corda 達(dá)成共識(shí)的基礎(chǔ)架構(gòu)。

上面的這個(gè)例子就是一個(gè)最簡(jiǎn)單的DLT 解決方案, 最大限度的保證了完整性,私密性,和性能, 但是在正在corda 的世界里面可能有更多的問題。

類比

延伸?

分布式數(shù)據(jù)庫,分布式賬本(DLT)? Log, Event Source 和其他, 這些東西多多少少有些許關(guān)聯(lián), 不管什么樣的IT 系統(tǒng),其實(shí)都是關(guān)于數(shù)據(jù)的處理: 生產(chǎn)、傳輸、存儲(chǔ);

現(xiàn)有大部分IT 系統(tǒng)大家對(duì)數(shù)據(jù)庫、分布式數(shù)據(jù)庫都有比較直觀的認(rèn)識(shí), 在解決數(shù)據(jù)高可用性和一致性也有成熟的解決方案。一個(gè)分布式數(shù)據(jù)庫和分布式賬本有何區(qū)分 Corda 里面有 探討, 下面兩個(gè)圖簡(jiǎn)單解釋,具體請(qǐng)閱讀原文:

分布式數(shù)據(jù)庫
分布式賬本

“Distributed ledgers – or decentralised databases – are systems that enable parties who don’t fully trust each other to form and maintain consensus about the existence, status and evolution of a set of shared facts”

To repeat, because this distinction is utterly fundamental: nodes of a distributed database trust each other and collaborate with each other to present a consistent, secure face to the rest of the world. By contrast, Corda nodes can not trust each other and so must independently verify data they receive from each other and only share data they are happy to be broadly shared.

關(guān)于這點(diǎn)在他的 技術(shù)白皮書 有更多探討和解釋。

由于探討分布式數(shù)據(jù)庫, 必然又想到 Log 和 Event source 的設(shè)計(jì)(參考筆者以前的文章)。關(guān)于Log The Log: What every software engineer should know about real-time data's unifying abstraction 值得一讀。

不管數(shù)據(jù)庫replicate 方式, 或者我們現(xiàn)有系統(tǒng)采用DDD Event source 設(shè)計(jì)方案, 在對(duì)于系統(tǒng)核心數(shù)據(jù)事件流的處理, 都有很多類似相同的地方。 只不過換了另外一種說法, 加了些許其他調(diào)料,結(jié)果適用一個(gè)不一樣的場(chǎng)景, 真的是蠻有意思的!

續(xù)

后續(xù)的章節(jié)會(huì)具體分析每個(gè)corda 里面技術(shù)實(shí)現(xiàn)要點(diǎn)和在我們業(yè)務(wù)場(chǎng)景中的應(yīng), 不定期更新。

參考

  1. Corda: An Introduction
  2. Read the technical white paper
  3. Read the updated intro white paper
  4. On distributed databases and distributed ledgers
  5. The Log: What every software engineer should know about real-time data's unifying abstraction
  6. I Heart Logs Event Data, Stream Processing, and Data Integration Or Buy
  7. The Corda Way of Thinking
  8. 區(qū)塊鏈在工業(yè)界的應(yīng)用是種“病態(tài)”!
  9. Blockchain The new technology of trust
  10. R3 Corda: What Makes It Different
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容