📜 [專欄新文章] 從 Rollups 來聊聊以太坊 Layer2 的演進
✍️ Kimi Wu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Photo by Clark Van Der Beken on Unsplash
去年 Defi summer 的熱潮後,以太上 Defi 應用呈現爆炸性成長,造就高昂的交易手續費,為了有更快的交易速度及可負擔的交易費用,人們對側鏈、Layer2 的需求更加強烈。Rollups 是 Layer2 的一種技術,在今年相當熱門,幾個耕耘已久的專案 zkSync、Optimism、Arbitrum 等也開始廣為人知。今天想來聊聊以太坊上 Layer2 技術的演進。
State Channel
state channel 最一開始是建立在 Bitcoin 上,最廣為人知的就是 lightning network。簡單來說,就是兩方在私下建立一條可以互相轉帳的通道,轉帳完畢後把通道關閉,接著將交易後的狀態更新到鏈上。若交易一筆後即關閉通道,那交易成本就跟在鏈上一樣,所以在實務上,通道一直開著(或是一段時間),交易數筆、數百筆後再上鏈更新狀態,藉此平均每筆的交易手續費就大幅降低。也因為只需通道雙方驗證交易內容,交易速度能大幅提升,讓小額支付能夠實現,就不需等10分鐘(Bitcoin)後交易才會被打包,甚至要等6個區塊的時間。而最早在以太上的 state channel 是 Raiden。
對於 Raiden 技術有興趣的可以參考這篇文章。
Plasma
Plasma 於2017年8月由 V 跟 Joseph Poon (Lightning Network的創始人之一)所提出,概念上是可以有鏈中鏈中鏈(就是Layer2 → Layer3 → … LayerN),藉此可達到百萬級甚至更高的交易量,不過概念太美好,沒人知道怎麼實作。
隔年1月 V 提出了 Plasma 的第一個版本 Plasma MVP,是以 UTXOs 模型的設計,接著3月提出了第二個版本 Plasma Cash,同年(2018)Plasma 的提案數呈現著爆炸性的成長(絕大部分都是基於 Plasma MVP 跟 Plasma Cash 做改進)(如下圖),強大的社群力量,讓大部分關鍵的問題在同年年底都找到了解答。也為之後的 Optimistic Rollup 打下了基礎。
而較著名的開發團隊,除了 EF 出來的 Plasma Group 外,還有 OmiseGo 跟 Matic(現在的 Polygon)。
對 Plasma 技術有興趣的,可以參考這篇、這篇跟這篇
https://ethresear.ch/t/plasma-world-map-the-hitchhiker-s-guide-to-the-plasma/4333
Plasma 看似一切美好,但因為資料的可取得性(data availability)的問題,使得在使用者體驗上有點糟糕。
Plasma 的所有交易資料都在 Plasma 鏈上,而 Plasma 鏈的礦工(即operator)只需繳交 Merkle root 到 L1 的合約作公證就好。因此若 operator 作惡,在 Plasma 鏈上交易者,就需有能力證明 operator 作惡。
在 Plasma 設計中有”所有者”的概念(UTXOs 的設計中,收款者需要到拿送款者的轉出證明,才能動用這筆款項,轉出證明只有收款人會擁有),如果該所有者不關心自己的資產,就可能造成資產無效的結果(account-based 的設計,若你不理你的帳號,別人一樣可以轉帳到你的戶頭中)。因此每個交易者須有能力自行提出證明,無法委託第三方。
而要證明這件事,用戶需要把 Plasma 鏈上的交易都下載下來,才能證明 operator 做了一件不合法的行為,也才能產生詐欺證明(fraud proof)到 L1 上的合約來證明 operator 作惡。而這個送出的詐欺證明,必需要被確保可以安全地送到 L1 上的合約被執行,因此需要有一段挑戰期,讓使用者可以下載及驗證資料(或是網路塞車造成詐欺證明無法被合約執行)。
題外話,Eth 2.0 light client利用了 ECC (Error Correction Code)的原理,所以只需要部分資料就可以驗證正確性。
Rollups
同年(2018) 9月,在支線專注隱私性的開發的 Barry Whitehat 提出了 zk Rollup,隨後 V 也在以太坊研究員論壇發了一篇文章,解釋 zk Rollup 是如何運作的,並以On-chain scaling to potentially ~500 tx/sec through mass tx validation 為標題,也因此開啟了 Layer2 新的一頁。隔年(2019)三月,Matter Labs 獲得了 EF 的 grant 將 zk Rollup 產品化,也就是大家所知的 zkSync。
所謂的 rollups,一樣是在 Layer2 上做交易,不同的是 L1 上會記錄每一筆的交易紀錄。什麼!如果每一筆交易紀錄都上鏈,跟一般 L1 交易有什麼不同?想了解細節可以看這篇。簡單來說,在合約裡用了一顆樹來記錄每個帳號的狀態,樹的第幾片葉子(index)代表一個帳號地址,因此帳號就從20 bytes 的地址變成了幾個 bytes 的 index。以 ZK Rollups 來說,交易都是在 Layer2 被驗證過的,所以簽章資訊(65 bytes)也不用上鏈,Optimistic Rollups 會利用簽章聚合的技術,數百個簽章最終會被聚合成一個。因此,交易資料從原本100多 bytes 變成了10幾個 bytes。因為交易紀錄都 ”放上鏈“,資料可取得性也就不是問題了。
”放上鏈”指的是利用 calldata 的方式放在鏈上,並非一般認知的寫進合約裡。非0值的 calldata 每 byte 需要耗費 16 gas,而合約寫進一個 32bytes 的資料需要花 20,000(新增) or 5,000(修改) gas,相當於每個 byte 的成本為625 or 156 gas,約為 calldata 的 40 or 10倍。
同年(2019)六月 John Adler 在以太坊研究者論壇提出了Minimal Viable Merged Consensus,也就是大家熟知的 Optimistic Rollups 的原型,接著 Plasma Group 基於John Adler 的提案,提出了 OVM,從此 Layer2 上除了單純的轉帳外,還可以執行合約,也奠定了 Rollups 在 Layer2 的地位,開啟 rollups 的新世代。
StarkWare 團隊建立了可評估的數學模型,驗證了 calldata 的成本從64 gas 降到 16 gas並不會對鏈的安全造成危害,提出了 EIP-2028(在 Istanbul 上線),也是推動 rollups 可行性的重要一環。
Validity Proof v.s. Fraud Proof
Optimistic Rollups 跟 ZK Rollups 最近有很多文章在介紹跟比較,這邊就不贅述。這邊想聊的是資料的有效性,這篇文章解釋地很好,這裏擷取部分敘述。ZK Rollups 保證了上鏈的資料都是正確的,資料必須被驗證過是合法的(例如沒有被雙花)才會改變使用者的狀態(例如 balance),跟現在各個主鏈的設計是一樣的,稱作有效性證明(Validity Proof),這種設計假設大家都是壞人,要通過驗證才會相信你,確認資料是百分之百的正確聽起來很理所當然,但是背後要維護資料的正確性,需要相當高的成本。
Optimistic Rollups 則是相反,假設大家都是好人,送上鏈的交易都接受,當發現有人作弊,再靠檢舉機制來更正狀態,這稱作詐欺證明(Fraud Proof)。這樣的機制系統維護成本較低(L1 上不需要驗證每一筆資料的正確性),但需要多一個爪耙子的角色來維護系統的安全,也就多一個系統潛在的風險。而要確保爪耙子有足過的時間反應,就不能讓使用者即時地離開系統,這是 Optimistic Rollups 最被詬病的一點,提款要等七天(現在有第三方流動性提供者,使用者可以請第三方流動性提供者預付使用者的提款。使用者支付手續費來換取快速提款的服務,而流動性提供者則承擔資產鎖住七天的風險來賺取手續費。不過在 protocol 層以安全性為主要考量,還是需要較長的挑戰期)。
ZK Rollups 的實作上,也有數個小時的提款期,不過那是基於成本考量,而非安全性。
此外對照於 Plasma, rollups 的設計是 account-based,交易也都公開在鏈上,每個人都可以參與監督及提出詐欺證明。
ZK Rollups v.s. Optimistic Rollups
ZK Rollups 從資料的有效性來看勝過 Optimistic Rollups,離開系統時不需要額外的挑戰期,能即時提款離開系統,不過付出的代價就是交易延遲上鏈。因為產生 zkp 證明需要龐大的運算量,產生一次證明,大約需要10 ~ 20分鐘,所以說在 Layer2 上做一筆交易,10分鐘後你的交易才是有 L1 的安全性。
為了能盡早得知發出的交易是否完成,實作上會把完成的交易先丟上鏈,等zkp 證明產生後再上鏈驗證其正確性,若驗證成功,則交易視同有 L1 的安全性。
但是在通用性上,Optimistic Rollups 沒有複雜的 zkp 電路的限制,對於合約的支援度上更好,而且 zkp(SNAKRKs)在使用前需要一個盛大的啟用典禮(trusted setup ceremony)。
zkSync
zkSync 1.0 在去年(2020) 六月上線,因為不能執行合約,使用的專案並不多。同年的年初,Matter Labs 已經默默在開發一種新語言 Zinc,是可以在 zkSync 上開發合約的語言。年底,與 Defi 專案 Curve 合作,發表了在 zkSync上可以跑基本版的 Curve(兩幣交換)。今年(2021)三月,Matter Labs 發表了令人振奮的消息,zkSync 支援 EVM!只需要部分修改現有的合約就可以部署到 zkSync 上,測試網今年五月已經上線,主網預計8月上線。不過目前測試網上的交易量非常地少,相信在初期還是有相當多問題或是困難,以短期來看,Optimistic Rollups 陣營的速度跟支援度略勝一籌,不過個人相信長期會是 ZK Rollups 的世代(私心認為 lol),但最終還是由生態系的大小來決定贏家。
在 ZK 這個陣線上有延伸出不同的設計,為了加快速度及減少上鏈成本,StarkWare 提出了 Validium 的概念,資料不上鏈但使用 zkp 確保資料的正確性,像是 StarkWare 的 Volition 跟 Matter Labs 的 zkPorter 都是同樣概念的實作,不過不是本篇的重點,就不多解釋。
ETH 2
V在2020年10月提出了 A Rollup Centric Ethereum,rollup 也因此進到 Eth2 的規劃中。Eth2 的設計中 shard chain 是資料層,而在 phase 2 後才有執行層(也就是才能執行合約),V 的提案 除了讓 shard chain 當資料層外,也會內建 rollups 的邏輯。至於會採用哪種 rollups 目前沒看到結論,不過 V 本人是傾向 ZK Rollups。如果成真,那未來數百個 rollups 之間的溝通,將會是另一個挑戰 。
專案比較
ZK Rollups 有目前這幾個較知名的專案: zkSync(Matter Labs)、 Hermez(Iden3)、 Loopring(Loopring)、 StarkNet(StarkWare)跟 Aztec(Aztec)。
Optimistic Rollups 目前幾個專案 Optimism(Optimisim,前Plasma Group 成員)、 Arbitrum(Offchain Labs)、 Fuel(Fuel)。
這是目前幾大 rollups 的生態系(今年3月時的統計),比較值得一提的是,Uniswap 團隊因為社群的投票,也將會在 Arbitrum 上面部署,對於整個 Arbitrum 的生態,相信有很大的影響。
https://www.chainnews.com/articles/872971457746.htm
感謝 NIC Lin 及 Chih-Cheng Liang 的審查跟建議。若有錯誤或不同觀點,歡迎指教。
從 Rollups 來聊聊以太坊 Layer2 的演進 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「consensus protocol」的推薦目錄:
- 關於consensus protocol 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於consensus protocol 在 Daphne Iking Facebook 的最佳貼文
- 關於consensus protocol 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於consensus protocol 在 コバにゃんチャンネル Youtube 的最佳解答
- 關於consensus protocol 在 大象中醫 Youtube 的精選貼文
- 關於consensus protocol 在 大象中醫 Youtube 的最佳解答
- 關於consensus protocol 在 L13: Bitcoin Blockchain Consensus - YouTube 的評價
consensus protocol 在 Daphne Iking Facebook 的最佳貼文
My sister, Michelle-Ann Iking's 3% chance of conceiving naturally was a success! Here's her story:
(My apologies as I've been overwhelmed with personal matters. I've only managed to get to my desk. So finally got around posting this).
This is the story behind my sister's pregnancy struggle and how she shared her journey over her Facebook page.
Because some may have not caught her LIVE session chat with me (https://www.facebook.com/daphneiking/videos/687743128744960/) , or read her lengthy post (as it's a private page);
she's allowed me to copy and paste it over my wall, in case you need to know more about her thought process on how AND why she focused on the 3% success probability. Read on.
-------------------------------------------
Posted 10th May 2020.
FB Credit: Michelle-Ann Iking
A week ago today I celebrated becoming a mother to our second, long awaited child.
Please forgive this mother's LONG (self-indulgent) post, journalling what this significant milestone has meant for her personally, for her own fallible memory's sake as well as maybe to share one day with her son.
If all you were wondering was whether I had delivered and if mum and bub are OK, please be assured the whole KkLM family are thriving tremendously, and continue scrolling right along your Newsfeed 😁.
OUR 3% MIRACLE
All babies are miracles... and none more so than our precious Kiaen Aaryan (pronounced KEY-n AR-yen), whose name derives from Sanskrit origins meaning:
Grace of God
Spiritual
Kind
Benevolent
...words espousing the gratitude Kishore and I feel for Kiaen's arrival as our "3% miracle".
He was conceived, naturally, after 3 years of Kishore and I hoping, praying and 'endeavoring'... and only couples for whom the objective switches from pure recreation to (elusive) procreation will understand how this is less fun than it sounds ...
3 years during which time we had consensus from 3 different doctors that we, particularly I (with my advancing age etc etc) had only a 3% chance of natural conception and that our best hope for a sibling for our firstborn, Lara Anoushka, was via IVF.
Lara herself was an 'intervention baby', being one of the 20% of babies successfully conceived through the less intrusive IUI process, after a year and a half of trying naturally and already being told then my age was a debilitating factor.
We had tried another round of IUI for her sibling in 2017 when Lara was a year old. And that time we fell into the ranks of the 80% of would-be parents for whom it would be an exercise in futility... who would go home, comfort each other as best they could, while individually masking their own personal disappointment... hoping for the best, 'the next time around'...
So the improbability ratio of 97% against natural conception of our second baby, as concurred by the combined opinion of 3 medical professionals, was a very real, very daunting figure for us to have to mentally deal with.
Deep, DEEP, down in my heart however, though I had many a day of doubt... I kept a core kernel of faith that somehow, I would again experience the privilege of pregnancy, and again, have a chance at childbirth.
And so, the optimist in me would tell myself, "Well, there have to be people who fall in the 3% bucket... why shouldn't WE be part of the 3%?"
Those who know me well, understand my belief in the Law of Attraction, the philosophy of focusing your mind only on what you want to attract, not on what you don't want, and so even as Kishore and I prepared to go into significant personal debt to attempt IVF in the 2nd half of 2019, I marshalled a last ditch effort to hone in on that 3% chance of natural conception... through research coming across fertility supplements that I ordered from the US and sent to a friend in Singapore to redirect to me because the supplier would not deliver to Malaysia.
I made us as a couple take the supplements in the 3 month 'priming period' in the lead up to the IVF procedure - preconditioning our bodies for optimum results, if you will.
At the same time, I had invested in a sophisticated fertility monitor, with probes and digital sensors for daily tracking of saliva and other unmentionable fluid samples, designed to pinpoint with chemical accuracy my state of fertility on any given day.
(UPDATE: For those interested - I obtained the supplements and Ovacue Fertility Monitor from https://www.fairhavenhealth.com/. Though I had my supplies delivered to a friend in Singapore, and redirected to me here since the US site does not deliver to Malaysia, there are local distributors for these products, you will just have to research the trustworthiness of the vendors yourself...)
I had set an intention - in the 3 months of pre-IVF priming, I would consume what seemed like a pharmacy's worth of supplements, and track fertility religiously... in hopes that somehow, within the 3 month priming period, we would conceive naturally and potentially save ourselves a down payment on a new property... and this was just a projection on financial costs of IVF, not even considering the physical, emotional and mental toll it involves, with no guarantee of a baby at the end of it all...
It was a continuation of an intention embedded even with my first pregnancy, where all the big ticket baby items were consciously purchased for use by a future sibling, in gender neutral colours, in hopes that sibling would be a brother "for a balanced pair", though of course any healthy child would be a welcome blessing.
It was a very conscious determination to always skew my thoughts in service of what the end objective was. For example, when 3+year old Lara would innocently express impatience at not yet having a sibling, at one point suggesting that since we were "taking too long to give her a baby brother/sister", perhaps we should just "go buy a baby from a shop", instead of getting defensive or berating the baby that she herself was, we enlisted Lara's help to pray for her sibling... so in any place of worship, or sacred ground of any kind that we passed thereon, Lara would stop, close her eyes, bow her small head and place her tiny hands together in prayer, reciting earnestly, "Please God, please give me a baby brother or baby sister."
After months and months of watching Lara do this, in the constancy of her childlike chant, Kishore started feeling the pressure of possibly disappointing Lara if her prayer was not answered. Whereas for me, Lara's recitation of her simple wish became like a strengthening mantra, our collective intention imbued with greater power with each repetition, and the goal of a sibling kept very much in the forefront of our minds (hence our calling Lara our 'project manager' in this endeavour).
And somehow in the 2nd month of that 3 month period, a positive + sign appeared on one of the home pregnancy tests I had grown accustomed to taking - my version of the lottery tickets others keep buying in hopes of hitting the jackpot, with all the cyclical anticipation and more often than not, disappointment, that entails...
This time however I was not disappointed.
With God's Grace, (hence 'Kiaen', a variation of 'Kiaan' which means 'Grace of God'), my focus on our joining the ranks of the 3% had materialised.
It seems poetic then, that Kiaen chose to make his appearance on the 3rd May, ironically the same date that his paternal great-grandfather departed this world for the next... such that in the combined words of Kishore and his father Kai Vello Suppiah,
"The 1st generation Suppiah left on 3rd May and the 4th generation Suppiah arrived on 3rd May after 41yrs...
One leaves, another comes, the legacy lives on..."
***
KIAEN AARYAN SUPPIAH'S BIRTH STORY
On Sunday 3rd May, I was 40 weeks and 5 days pregnant.
The baby was, in my mind, very UN-fashionably late past his due date of 29th April, so as much as I had willed and 'manifested' the privilege of pregnancy, to say I was keen to be done with it all was an understatement.
In the weeks leading to up to my full term, I had experienced increasingly intense Braxton-Hicks 'practice contractions' - annoying for me for the discomfort involved, stressful for Kishore who was on tenterhooks with the false alarms, on constant alert for when we would actually need to leave home for the hospital.
Having become a Hypnobirthing student and advocate from my first pregnancy with Lara, and thus being equipped with
(1) a lack of fear about childbirth in general and
(2) a basic understanding of how all the sensations I would experience fit into the big picture of my body bringing our baby closer to us,
I was less stressed - content to wait for the baby to be "fully cooked" and come out whenever he was ready... though I wouldn't have minded at all if the cooking time ended sooner, rather than later.
With Lara, I had been somewhat 'forced' into an induced labour, even though she was not yet due, and that had resulted in a 5 DAY LABOUR, a Birth Story for another post, so I was not inclined to chemically induce labour, even though I was assured that for second time mothers, it would be 'much faster and easier'...
That morning, I had a hunch *maybe* that day was the day, because in contrast to previous weeks' sensations of tightening, pressure and even spasms that were concentrated in the front of my abdomen and occasionally shot through my sides and legs, I felt period - like cramping in my lower back which I had not felt before throughout the pregnancy.
It was about 8am in the morning then, and my 'surges' were still relatively mild ('surges' being Hypnobirthing - speak for 'contractions', designed to frame them with the more positive connotations needed to counteract common language in which childbirth is presented as something that is unequivocally painful and traumatic, instead of the miraculous, powerful and natural phenomenon it actually is).
I recall (masochistically?) entertaining the thought of opting NOT to have an epidural JUST TO SEE WHAT IT WOULD BE LIKE...
I figured this would be the last time I would be pregnant and so it would be my 'last chance' to experience 'drug free labour' which, apart from the health benefits for baby and mother, might be *interesting* in a way that people who are curious about what getting a tattoo and skydiving and bungee jumping are like, might find these *interesting*...even knowing there will be pain and risk involved...
Since I have tried tattoos and skydiving (unfortunately not being able to squeeze in bungee-jumping while my life was purely my own to risk at no dependents' possible detriment) a similar curiousity about a no-epidural labour was on my mind...
In the absence of other signs of the onset of labour (like 'bloody show' or my waters breaking), I wanted to wait until the surges were coming every few minutes before we actually left the house for the hospital, not wanting to be one of those couples who rushed in too early and had interminable waits for the next stage in unfamiliar, clinical surroundings and/or were made to go home in an anti-climatic manner.
I was even calm enough through my surges to have the presence of mind to wash and blowdry my hair, knowing if I did deliver soon I would not be allowed this luxury for a while.
Around 9am I asked Kishore to prep for Lara and himself to be dressed and breakfasted so we could head to hospital soon, while I sent messages to family members on both sides informing them 'today might be the day.'
My mother, who had briefly served as a midwife before going back into general nursing and then becoming a nursing tutor, prophetically stated that if what I was experiencing was true labour, "the baby would be out by noon".
The pace in which my surges grew closer together was surprisingly quicker than I expected; and while I asked Lara to "Hurry up with breakfast" with only a tad more urgency than we normally tell her to do, little Missy being prone to dilly-dallying at meals, I probably freaked Kishore out when about 930am onwards, I had to instinctively get on my hands and knees a couple of times, eyes closed, trying to practice the Hypnobirthing breathing techniques I had revised to help along the process of my body birthing our child into the world.
I recall him saying a bit frantically as I knelt at our front door, doubled over as he waited for Lara to complete something or other, "Lara hurry up! Can't you see Mama is in so much pain and you are taking your own sweet time??!!"
SIDETRACK: Just the night before, Lara and I had watched a TV show in which a woman gave birth with the usual histrionics accompanying pop culture depictions of labour.
Lara watched the scene, transfixed.
I told her, simply and matter-of-factly, "That's what Mama has to do to get baby brother out Lara, and that's what I had to do for you also."
In most of interactions with my daughter, I have sought to equip her to face life's situations with calmness, truthful common sense, and ideally a minimum of drama.
Those who know the dramatic diva that Lara can be will know that this is a work-in-progress, but her response to me that night showed me some of my 'teachings' were sinking in:
She looked at me unfazed, "But Mama," she said. "You won't cry and scream like that lady, right? You will be BRAVE and stay calm, right?"
#nopressure.
So as we prepped to leave for the hospital I did indeed attempt to be that role model of calm for her, asking her only for her help in keeping very quiet,
"Because Mama needs to focus on bringing baby brother out and she needs quiet to concentrate...".
As we left the house at 10.11am, I texted Kishore's sister Geetha to please prep to pick up Lara from the hospital, and was grateful Kishore had the foresight to ask our gynae to prepare a letter for Geetha to show any police roadblocks between my in-laws' home in Subang Jaya and the hospital in Bangsar, this all happening under the Movement Control Order (MCO).
To Lara's credit, in the journey over to the hospital, she - probably sensing the gravity of the situation, sat very quietly in her seat at the back, and the silence was punctuated only by my occasional deep intakes of breath and some variation of my Ohmmm-like moans when the sensations were at their height.
By the time we got to Pantai Hospital at around 10.30am, my surges were strong enough I requested a wheelchair to assist me in getting to the labour ward, as I did not trust my own legs to support me... and Kishore would have to wait until Geetha had arrived to take Lara back to my in-laws' house before he himself could go up.
I slumped in the wheelchair and was wheeled up to the labour room with my eyes closed the whole time, trying to handle my surges.
I didn't even look up to see the attendant who pushed me... but did make the effort to thank him sincerely when he handed me over, with what seemed like a palpable sense of relief on his part, to the labour ward nurses.
The nurse attending me at Pantai was calm, steady and efficient. I answered some questions and changed into my labour gown while waiting for Kishore to come up, all the while managing the increasingly intense surges with my rusty Hypnobirthing breathing techniques.
By the time Kishore joined me at around 11am (I know these timings based on the timestamps of the 'WhatsApp live feed' of messages Kishore sent to his family), I was asking the nurse on duty, "How soon can I get an epidural??" thinking what crazy woman thought she could do this without drugs???!!!
The nurse checked my cervix dilation, I saw her bloodied glove indicating my mucous plug had dislodged, and she told me, "Well you are already at 7cm (which, for the uninitiated, is 70% of the way to the 10cm dilation needed for birthing), you are really doing well, if you made it this far without any drugs, if can you try and manage without it... I suspect within 2 hours or less you will deliver your baby and since it will take about that time for the anaesthesiologist to be called, epidural to be administered and kick in... it might all be for nothing... but of course the decision is completely up to you... "
So there I was, super torn, should I risk the sensations becoming worse... or risk the epidural becoming a waste?? And of course I was trying to decide this as my labour surges were coming at me stronger and stronger...
I was in such a dilemma...because as a 'recovering approval junkie' there was also a silly element of approval-seeking involved, ("The nurse thinks I can do this without drugs... maybe I CAN do this without drugs... Yay me!") mixed with that element of curiosity I mentioned earlier ("What if I actually CAN do this without drugs... plenty of other women have done it all over the world since time immemorial.. no big deal, how bad can it be...??") so then I thought I would use the financial aspect to be the 'tiebreaker' in my decision making...
I asked the nurse how much an epidural would cost and when she replied "Around MYR1.5k", I still remember Kishore's incredulous face as I asked the question, i.e."Seriously babe, you are gonna think about money right now? If you need the epidural TAKE IT, don't worry about the money!!!"... and while we are not rich by any stretch of the imagination, thankfully RM1.5k is not a quantum that made me swing towards a decision to "better save the money"...
So in the end, I guess my curiosity won out, and I turned down the epidural "just to see what it would be like and if I had it in me" (in addition of course to avoiding the side effects of any drugs introduced into my and the baby's body).
My labour occuring in the time of coronavirus, it was protocol for me to have a COVID19 test done, so the medical staff could apply the necessary precautions. I had heard from a friend Sharon Ruba that the test procedure was uncomfortable, so when the nurse came with the test kit as I was starting another surge, I asked, "Please can I just finish this surge before I do the test?" as I really didn't think I could multitask tackling multiple uncomfortable sensations in one go.
The COVID19 test involved what felt like a looong, skinny cotton bud being inserted into one nostril... I definitely felt more than a tickle as it went in and up, being told to take deep breaths by the nurse. Then she asked me to "Try to swallow" and I felt it go into my nasal cavities where I didn't think anything could go any further, but was proven wrong when she asked me to swallow again and the swab was probed even deeper. Then she warned me there would be some slight discomfort as she prepared to collect a sample... but at that point all I could think about was:
(i) I really don't have much of a choice
(ii) please let this be over before my next surge kicks in
(iii) if all the people breaking the MCO rules knew what it feels like to do this test maybe they won't put themselves at risk of the need to perform one...
In full disclosure as I was transferred into the actual delivery room at some point after 11am, another nurse offered me 'laughing gas' to ostensibly take some of the edge off... I took the self-operated breathing nozzle passed to me but don't recall it making any difference to my sensations..so didn't use it much as it seemed pretty pointless.
I recall some measure of relief when I heard my gynae Dr. Paul entering the room, greeting Kishore and me, and telling us it was going well and it wouldn't be long now and he would see us again shortly.
From my previous labour with Lara I knew the midwives pretty much take you 90% of the way through the labour and when the Dr is called in you are really at the home stretch, so was very relieved to hear his voice though knowing he would leave and come back later meant it wasn't quite over yet.
I do remember realising when I had crossed the Thinning and Opening Phase of labour to the Birthing Phase, by the change in sensations... it is still amazing to me that as the Hypnobirthing book mentioned, having this knowledge I was instinctively able to switch breathing techniques for the next stage of labour .
Was my opting against epidural the right choice for me?
Overall? Yes.
Don't get me wrong.
I *almost* regretted the decision several times during active labour... especially when I felt my body being taken over by an overwhelming compulsion to push that did not seem conscious and was accompanied by involuntary gutteral moans where I literally just thought to myself, "I surrender, God do with me what you will..." (super dramatic I know but VERY real at the time...).
I think I experienced 3-4 such natural explusive reflexes (?), rhythmically pushing the baby down the birth path, one of which was accompanied by what felt like a swoosh of water coming out of a hose with a diameter the size of a golf ball... this was when I realised my water had finally broken...
The nurses kept instructing me to do different things, to keep breathing, to move to my side, then to move to the middle, to raise my feet... and when I didn't comply, Kishore (who was with me throughout both my labours) tried to help them by repeating the instructions prefaced with "Sayang..." but I basically ignored all the intructions because I felt I had no capacity to direct any part of my body to do anything and someone else would have to physically manoeuvre that body part themselves.
When I heard Dr. Paul's voice again and the flurry of commotion surrounding his presence, I knew the time was close... and when I heard the nurse say to Kishore, "Sir, these are your gloves, for when you cut the baby's cord", it was music to my ears...
I'm very, VERY grateful Kiaen slid out after maybe the 4th of those involuntary pushes... the wave of RELIEF when he came out so quickly... it still boggles my mind that my mother was essentially right and as his birth time was 12.02pm, it was *only* about 1.5 hours between our arrival at the hospital and his arrival into the world.
Kiaen was placed on my chest for skin to skin bonding and remained there for a considerable time.
For our short stay in the hospital he would be with us in my maternity ward number C327... another trivially serendipitous sign for me because he was born on the 3rd (May) and our wedding anniversary is 27th (July).
I was discharged the following day 4th May at about 5.30pm, after I got an all clear on COVID19 and a paediatric surgeon did a small procedure on Kiaen to address a tongue-tie that would affect his breastfeeding latch... making the entire duration of our stay about 31 hours.
I have taken the time and effort to record all this down so that whenever life's challenges threaten to get me down I can remind myself, "Ignore the 97% failure probability, focus on the 3% success probability".
Also that the human condition is miraculous and it is such a privilege to experience it.
To our son Kiaen Aaryan, thank you for coming into our lives and choosing us as your parents.
Even though Papa and I are both zombies trying to settle into a night time feeding routine with you, I look forward to spending not only all future Mother's Days, but every day, with you and your Akka...
And last but not least, to my husband Kishore...without whom none of this would be possible - we did it sayang, I love you ❤️
Photo credit: Stayhome session with Samantha Yong Photography (http://samanthayong.com/)
consensus protocol 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] ELI5! 區塊鏈到底在幹嘛?
✍️ Juin Chiu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
用生活化的例子輕鬆學會區塊鏈技術的重要概念
前言
我們熟知的世界正在慢慢地被區塊鏈技術瓦解與重建。不論背景,有愈來愈多人想對區塊鏈技術一探究竟,或許更進一步成為從業者、貢獻者或佈道者。
不幸的是,初學者若想學習區塊鏈技術,第一個問題可能會是高學習門檻,這是因為目前在各種主流平台上所流傳的區塊鏈知識或資源,都不免會大量使用艱澀的術語,長久以來便塑造出區塊鏈高大上的距離感,好似區塊鏈是只專屬於一小群駭客或者專業人士才能理解的技術。然而這是不準確的,事實上,區塊鏈技術中許多概念都能用一般常識理解,頂多只需要國小數學。
本文中,筆者將化繁為簡,試著把區塊鏈技術中的每個元素都使用生活化的例子比擬,讓區塊鏈愛好者與初學者不需用到密碼學/經濟學/資訊科學,也能領會區塊鏈技術的精髓之處。
本文將提及的概念如下:
什麼是帳本?
什麼是交易?
為什麼需要區塊?
有哪些共識機制?
區塊鏈安全嗎?
智能合約如何運作?
以下正文開始:
區塊鏈:一個公平的記錄系統
簡單來說,區塊鏈技術旨在打造一個去中心化的(Decentralized)狀態紀錄系統,更準確一點:區塊鏈技術旨在打造是一個追求真正「公平」的系統。
區塊鏈實現公平的關鍵在於:它完全仰賴自然法則運作,只透過一系列精細的規則就能保證系統的正確,這打破了人類社會一直以來的仰賴的中心化系統,使促成不平等的最大因素不復存在。
區塊鏈技術可以打造出具世界規模的去中心化運算平台,由數千甚至數萬個參與者共同維護狀態並提供計算資源。如果這個運算平台是應用在貨幣與資產的場景中,那麼這個平台可被稱為分散式帳本。
在接下來的段落,筆者將用一個例子展示一個極度精簡、只用紙跟筆的就可以運作的分散式帳本。在這個例子中,一群學生可以使用區塊鏈技術發行屬於他們自己的虛擬幣:「考卷幣」(Exam Paper Coin, EPC)。
考卷幣:使用區塊鏈技術發行的虛擬幣
考卷幣(EPC)是一種使用區塊鏈技術發行的虛擬幣,並存在於分散式帳本中。它的用途是為考卷加分,這將會吸引想考高分或者擔心被當的人學生持有。為什麼 EPC 只能被稱作虛擬幣,而不被稱作密碼貨幣?這是因為 EPC 的發行不會使用任何有關密碼學的技術,因此 EPC 嚴格來說不是密碼貨幣。
在分散式帳本被創建之初,沒有任何人擁有 EPC ,那麼 EPC 是怎麼「鑄造」與分配的?至少可以肯定的是,EPC 不能憑空產生,否則所有參與者就能不斷製造 EPC,使分散式帳本崩潰。事實上,EPC 的價值奠基於參與者的「付出」。
分散式帳本中最重要的角色非記帳者莫屬。每當記帳者成功完成工作,它便可以獲得固定數量的 EPC 作為報酬。於是,分散式帳本中的 EPC 便如此逐步地被鑄造出來。將 EPC 賦予具有貢獻的記帳者除了能夠公平分配 EPC,同時也是一種激勵機制(Incentivizing Mechanism),提供參與者維護帳本的動機。
那麼每個人所具有的 EPC 是怎麼記錄在帳本中的?
帳本: EPC 都要記錄下來
帳本即為依時間順序與特定格式記錄價值的系統。在分散式帳本中,每一批紀錄都會由某一個特定的「記帳者」維護,而記帳者會以特定的規則從所有的參與者中選出,因此分散式帳本是具有多個「記帳者」的系統。
為了確保能公平選出 EPC 的所有記帳者,分散式帳本不會使用任何記帳者的個人資訊,例如姓名、電話,做為帳本上的識別。記帳者可以自由地使用假名(Pseudonym)作為帳本上唯一的識別(Identifier),或者稱為地址(Address)。所以王小庭同學可以使用 Alice 這個假名,而且如果王小庭同學喜歡的話,他也可以同時使用 Bob 這個假名。
EPC 使用如下的格式記錄每個地址幣的數量:
Alice 100 EPCBob 0 EPCCharlie 0 EPCDavid 0 EPCEva 0 EPC
多數區塊鏈稱其識別為地址(Address),其為非對稱密碼學中公鑰(Public Key)的雜湊值(Hash)。地址具有統一的格式,例如以太坊的地址為長度 160 位元的 16 進位數字。
交易:把我的 EPC 轉移給別人
EPC 是可以轉移的,現在 Alice 可以將它持有的 100 EPC 中的 60 EPC 轉移給 Bob,以幫助 Bob 在下一次考試中免於被當。這樣的轉幣紀錄稱為交易(Transaction, Tx),可以如下表示:
Tx1
60 EPC, from [Alice] to [Bob]
而這筆交易會由 Alice 以上述格式記在紙條上,以 Tx1 表示。
簽章:讓參與者的所有動作都不可抵賴
EPC 的每個參與者的每個行為,例如交易,都必須附帶簽章(Signature),證明「這個動作確實是由我本人發起的」,簽署者不可抵賴,任何沒有附帶簽名的動作都是不被承認的。一個附帶簽名的交易紙條會像這樣:
Tx1
60 EPC, from [Alice] to [Bob], ALICE
簽章分為簽署(Sign)及驗證(Verify)兩個動作。驗證即是確認簽章是否確實是由行為發起者所簽署。在這個例子中,僅用一個簡單的驗證:若簽章與識別相符,則驗證成功。例如 Tx1 中,簽名 ALICE 確實與交易發起者 Alice 相符,因此驗證成功。
簽章就是區塊鏈的數位簽章(Digital Signature),其使用私鑰(Private Key)簽署,公鑰(Public Key)驗證,非常難以偽造。
訊息的散佈:怎麼讓所有參與者都收到訊息?
由於 Tx1 是由 Alice 發起的,因此 Alice 將於它自己的帳本記下這筆交易,接著 Alice 必須把這筆交易的內容也轉達所有的參與者,讓所有參與者皆具有所有的交易內容。
EPC 的參與者們不以口語,而是以傳紙條的方式互相交換訊息。紙條要如何有效率地傳播訊息給所有在教室中的參與者呢?可以使用「一傳十、十傳百」的策略。也就是:一次傳 10 張紙條給自己周圍的參與者,參與者收到後再抄寫 10 次後傳給周圍尚未收到該紀錄的其他參與者,逐步將訊息擴散致所有參與者。
這樣的傳播策略正如同流言被散佈的方式,因此也被稱為流言散佈協定(Gossip Protocol)。紙條傳播的網路就是對等網路(Peer-to-peer Network),紙條就是對等網路的封包(Packet)。關於對等網路的介紹,可以參考筆者日前的撰文:
隱私、區塊鏈與洋蔥路由
區塊:記錄一段時間內的交易順序
經過一段時間之後,每個 EPC 參與者手上都會有許多來自別的參與者的紙條,每張紙條都記載著不同的交易。在理想狀況下,如果所有參與者收到紙條的順序都相同,且每個參與者都收到了所有紙條,則所有參與者的帳本上的狀態,也就是餘額,都會相同。然而,若採用上述的訊息散佈策略,會發生兩種情況:每個參與者收到紙條的順序會不同,或者某些紙條可能會被遺漏。這些情況都會讓每個參與者的帳本產生差異,使帳本不可靠。而一個不可靠的帳本,不能作為貨幣發行的工具。
有沒有辦法能使所有 EPC 參與者用相同的交易順序記帳呢?這便是區塊鏈技術的奧秘之處。
為此,我們需要使用一個精心設計的結構:區塊(Block)。每個參與者皆會將一段時間內收到的交易紙條的編號,依照自己的順序寫在另一張紙條上,這張紙條就是區塊紙條,簡稱區塊,產出區塊的參與者則稱為區塊生產者。收到區塊紙條的其他參與者便會知道區塊生產者在這段時間內的交易順序。
為了要讓所有帳本都具有一致的狀態,EPC 的所有參與者必須要選出其中一個區塊作為所有參與者的共識(Consensus)。所有參與者都必須要遵照共識區塊的交易順序來更新自己的帳本,而這個區塊生產者就是記帳者。由於記帳者可以獲得報酬,因此在利益的驅使下,所有參與者都會努力生產區塊以爭取記帳權。
值得注意的是,每個區塊當中都會記錄前一個已達成共識的區塊的編號。例如接下來的範例,Bk15 的前一個已達成共識的區塊為 Bk3:
Bk15
Last Block: Bk3
Height: 15
Transactions:- Tx1- Tx5- Tx4- Tx10- Tx7- Tx13
Nonce: 1
Signature: CHARLIE
由於每個新的共識區塊都會指向前一個共識區塊,如此便會形成一條長鏈般的結構,已形成共識的區塊接成一條鏈,這就是區塊鏈(Blockchain)名稱的由來。
而當 EPC 參與者在收取共識的區塊後,將按照共識依序為每個交易內容進行帳本餘額的轉換。如此,所有的帳本都將具有一致的狀態。
依據特定輸入及轉換函數(Transition Function)執行狀態更新的系統,稱為狀態機複製(State Machine Replication)
摘要:濃縮紙條上的訊息
在介紹達成共識的方法前,筆者要先來介紹一個樸實無華但重要的概念:摘要(Digest),其顧名思義就是一段內容經過消化的產物。假設有一種摘要產生器,這個機器可以放入一張紙條,然後透過 3 個步驟計算出紙條的摘要。
摘要產生器將記載訊息的紙條切成一條一條固定寬度的細長條狀紙帶,如下圖:
2. 將這些紙帶依照順序接成一個長條紙帶。紙帶上有字跡的黑色部分與沒字跡的白色部分會出現不規則相間,測量每個黑色區塊之間相鄰的距離,如下圖:
3. 每段距離的數字相乘後的數字就是這個紙條的摘要(Digest)。
每個 EPC 參與者都會有一台摘要產生器,而它需要上緊發條才能開始工作,且每計算完一張紙條便須重新上一次發條。
摘要的計算雖然簡單,卻具有一些很有用的特性:
首先,摘要會隨著紙條內容的變動而更動。只要更動了任何一點紙條內容,例如區塊的交易順序,或者流水號(Nonce),都會使摘要改變。因此一個附上摘要的紙條,可以讓收到紙條的人在收到後再自行計算一次摘要並比對兩者,以驗證紙條的內容是否被修改過。因此,摘要是可驗證的(Verifiable)。
若想在不更動摘要的情況下同時變動紙條內容,只能不斷嘗試用不同內容產生摘要,直到發生碰撞(Collision) — 意即兩個不同內容的紙條出現相同摘要。
其次,摘要也是單向的:一個紙條很容易產出摘要,但摘要很難還原出原本的紙條內容。這也代表摘要是隨機且難以預測的,因此摘要可以作為一種亂數(Random Number)來源。
正式的區塊鏈使用更難預測且更不易碰撞的的密碼雜湊函數(Cryptograpgic Hash Function)產生訊息摘要。
理解關於區塊鏈技術的基本要件後,接下來就來看看區塊鏈技術的精妙之處:共識機制。
共識機制:如何達成共識?
在區塊鏈技術中,大致上有兩種方式可以產生共識:抽彩(Lottery)或表決(Vote),它們各自有不同特性,每一種分散式帳本都會使用其中之一作為共識機制。
抽彩
在抽彩機制中,唯有摘要小於門檻值的「合法」區塊才會被所有參與者收受。然而,區塊生產者無法預測摘要,且可驗證的摘要使區塊生產者難以作弊。因此若想生產數字小於門檻值的摘要,區塊生產者必須不斷改動區塊內容,例如流水號或者交易順序,直到找到摘要小於門檻值的區塊,就像抽彩一樣。只有合法的區塊才會被區塊生產者散佈給其他 EPC 參與者。
在這樣的規則下,可能會同時出現多個合法區塊。還記得區塊鏈中「鏈」的部分嗎?當收受多個低於門檻的區塊時,該選哪個區塊作為上一個區塊呢?這裡我們可以用一些簡單的規則來做抉擇:選擇合法區塊中高度(Height)最高的區塊,若高度一樣則選擇摘要數字較低的區塊。
區塊紙條的摘要就是正式區塊鏈中的區塊雜湊值。在正式的區塊鏈中,門檻值愈低,困難度(Difficulty)也愈高。區塊的選擇規則也稱為分岔選擇規則(Fork Choice Rule),使用可驗證的亂數作為共識的做法又稱為中本共識(Nakamoto Consensus)。
表決
有別於複雜的抽彩,表決機制相當直觀:所有參與者針對某個預先選出的領袖(Leader)的提案(Proposal),也就是區塊,進行投票。領袖是怎麼選出的?一個直覺的做法是按照假名的順序,按照 Alice / Bob / Charlie 的順序,所有參與者輪流擔任領袖。
所有參與者在收到提案後,可以選擇同意或反對這個區塊的內容,若同意的話,則將自己對提案的同意票記在紙條上,並將這個投票紙條散佈給所有其他參與者。若多數的參與者同意了提案,則所有參與者皆須認定該提案為共識。
然而,表決機制雖然直觀,卻不如抽彩具有可驗證性,參與者若想作弊則相對容易:例如,參與者可以重複投票,或者串通其他參與者一起不投票,以破壞帳本;另一方面,表決比抽彩來得有效率,因其不需要所有參與者都費功去製造可能將不被收受的區塊。
拜占庭錯誤(Byzantine Fault)特指這些不在預期內的行為,表決機制事實上也就是拜占庭容錯(Byzantine-fault-tolerant, BFT)演算法。PBFT 家族的協定是目前拜占庭容錯演算法的主流,然而其至多只能容忍不超過參與者總數一半的拜占庭錯誤。若想了解更多 PBFT 的細節,可以參考筆者日前的撰文:
若想搞懂區塊鏈就不能忽視的經典:PBFT
女巫:如何避免帳本被單一個體掌控?
上文提到:為了保證公平的記帳權,帳本上的識別都是假名,如上文提及,Alice 跟 Bob 實際上都是由同一個參與者王小庭所控制,其他參與者不僅難以得知,而且王小庭喜歡的話,他愛用幾個假名就用幾個假名 — 掌控多個假名的王小庭就成為了「女巫」(Sybil)。
不論是採取何種共識機制,女巫的存在都會破壞分散式帳本的安全性:
在抽彩機制中,如果多數的參與者皆由女巫控制,則女巫有很大的機會可以無視規則,不需抽彩便竄改帳本。
在表決機制中,如果由女巫控制的參與者可以集體進行不在預期內的行為,例如重複投票或者不投票。
因此,抵抗女巫對於分散式帳本的安全至關重要。對此,一個直覺的思路是:讓每個假名的行為都必須付出有限的資源,例如錢跟力。因此有兩種方式可以抵抗女巫:要嘛出錢,要嘛出力。
出力:在抽彩機制中,每個合法區塊的生產都必須附有低於門檻的摘要,而摘要的計算需要參與者出力不斷地重上發條。
出錢:在表決機制中,抵押一定數量 EPC 的參與者才能獲選為領袖被生產提案,且若違反規則,參與者的押金將會被沒收。
出力即是工作證明(Proof of Work, PoW);出錢即是權益證明(Proof of Stake, PoS),抵抗女巫的機制稱為抗女巫機制(Sybil-control Mechanism)。
合約:進行條件式的交易
回顧一下本文開頭所提:區塊鏈技術可以用來打造去中心化的運算平台,它可以用以記錄任何資訊,不止餘額,例如一段合約(Contract)。合約就是指一段會依據不同條件而達成不同執行結果的語句。例如:
CheckAndPay
給定 A、B 兩個假名,若 A 的餘額大於/等於 30 EPC,則 A 支付 20 EPC 給 B ,否則 A 不支付任何 EPC。
這個合約就可以被記錄在帳本中:
Alice 100 EPCBob 0 EPCCharlie 0 EPCDavid 0 EPCEva 0 EPCCheckAndPay "給定 A、B 兩個假名,若 A 的餘額大於/等於 30 EPC,則 A 支付 20 EPC 給 B ,否則 A 不支付任何 EPC。"
之後 Alice 就可以發起像這樣的交易:
Tx 99
CheckAndPay, {[Alice], [Bob]}, ALICE
如此,若 Alice 的 EPC 餘額不足 30 EPC 則不會支付 Bob。
觸發合約的 Tx 99 ,它的執行過程比較煩瑣:執行 Tx 99 的參與者首先會從帳本中尋找 CheckAndPay 的合約內容,並從 Tx 99 中取出合約需要的輸入:A 與 B,接著參與者再解讀合約的語句,依照條件進行帳本的狀態轉換。其中,為了使參與者能解讀合約,合約需用所有參與者皆能看懂的語言書寫。
合約又稱智能合約(Smart Contract)。正式的區塊鏈使用虛擬機(Virtual Machine)來解讀與執行合約。事實上,智能合約能做的事情非常多,這使具有智能合約功能的分散式帳本得以成為去中心化的運算平台,例如以太坊(Ethereum)。
總結: 分散式帳本究竟是一個怎樣的系統?
如果以上環節皆運作順利,那麼便能成功只用紙筆便發行了專由學生使用的貨幣。最後再次強調一次:這是一個為了便於使初學者掌握核心觀念而極度簡化的例子。正式運行的區塊鏈,例如以太坊,其實際運作遠遠複雜得多。
還有一些比較進階的概念,雖然礙於篇幅未在此文章提及,但部分主題筆者曾撰文介紹:
可擴展性(Scalability):第二層方案(Layer 2)與分片(Sharding)
隱私(Privacy)與匿名(Anonymity)
共識機制的安全性(Safety)與活躍性(Liveness)
最後,如果日後朋友/家人問起「什麼是區塊鏈」時,我想你會知道如何解釋了:)
ELI5! 區塊鏈到底在幹嘛? was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
consensus protocol 在 L13: Bitcoin Blockchain Consensus - YouTube 的必吃
How does the bitcoin consensus protocol work?This video develops the bitcoin consensus algorithm from scratch, starting with a simple ... ... <看更多>