Art of the STATE — 論狀態

in #state7 years ago

這篇要來說說state。

不是要說國家,不是要談政治。如果你略懂blockchain跟我一樣,你很可能也聽說過這一個詞,state。稱之為「狀態」也許可以,但似乎,原文還是傳神點?

state這個概念,在我略懂區塊鏈後,感到這是一個很神妙的東西。很多區塊鏈的東西,可以很技術面討論,也可以拉到概念面,讓許多非技術的人也能感受。這是因為,區塊鏈是一項非常與現實連結的技術,並不是那種埋在深深的機器碼內的神演算法什麼的,簡言之,接地氣嘛!

我這篇就來說說我對於state的理解,如果有觀念怪怪或技術比喻錯誤的,請不用客氣指正一下。關於難度請放心,我是能說出什麼技術晦澀的言論?不會的,不會的。

但是如果你還是看不懂,那.... 說真的也不要怪伯父伯母啦,畢竟他們也不希望這樣的。LOL....

另外也預告一下,下周會有一篇與人合作的文章,就比較從技術觀點來談state了。我這一篇的想法,其實已經有大半年了,都差點忘記了,趕緊趁 幣價高漲 還記得來寫一寫。

time-3222267_640.jpg

什麼是state?

複習一下區塊鏈基本常識:區塊鏈其實就是一本大帳本,透過各節點共同維護一本單一的帳本。帳本的一致性如何取得?那就是透過所謂的共識機制(consensus mechanism),你常常聽到的POW、POS等。這裡出現另一個字,consensus,這跟我們要談的state非常有關係,或者你可以說,state是consensus達成後的結果。

講簡單一點,什麼是state?

這個大帳本裡面有許多資料欄位,隨著時間的推移,這些資料內容不斷變化。可以說,state就是某特定時間點的帳本內容快照,所以state可以說是時間的函數:state(t),t = 0, 1, 2, 3.... 時間理論上是連續的,但在機器系統裡是間斷地,例如以Steem blockchain為例,每3秒一個區塊,就可以當成是每一期的時間。

敲桌敲桌!再簡單一點!

那就舉例吧!以你最熟悉的Steem為例。某特定時間時,所有steem帳戶的所有上鏈資料,例如你的SP, Steem, SBD, post generation, rewards claimed, SP delegated ... 這些都是構成這個時間點的state的內容。

好吧,然後呢?

假設我們現在是在 t = 2,那麼,state(2)的內容,將是以 state(1) 為基礎,透過區塊鏈目前的rules,來完成對於 state(2) 的計算。又難啦?這麼說吧!t = 0 時我打你一巴掌,t = 1 時你回我一巴掌同時罵我媽媽,t = 2 時我踢你肚子。假設這系統的規則是:有人首次打你一巴掌則你回打兼罵娘,有人罵你媽則你踢他肚,那麼就會是上面這樣的結果。大致上來說,就是一種連環反應。現實中很好理解,你打我我才打你,我不可能從 t0 跳到 t2,意思是我還沒"認知"到你罵我娘時,不會直接踢你...

那跟區塊鏈有毛關係啊?

BTC其實是一種基於UTXO的stateless的區塊鏈,但我們且不去管這件事,假裝它是好了。那麼這本大帳本記錄的就是各個帳戶的當時餘額,這是一切的關鍵,這些餘額必須是永遠加總一致,沒有雙花問題的。這樣的單純關於金額的鏈比較單純。但如果要進一步到Steem這種互動多的鏈,那事情就複雜起來了。你的財產總值,會隨著你獎勵進來增加,隨你轉帳出去減少;你分配獎勵的權力,來自於你把財產鎖定多少(SP),以及你是否把你這份權力讓渡出去(delegation)... 所以,state中的金錢變量,透過時間前後,會有很多複雜的相關性,而數位的區塊鏈系統,是一定得確定所有state中的變數之後,才能繼續往下走。所以,設計上勢必要簡化,方便系統的運作。

Steem的設計

所以,獎勵如何設計才會比較單純?我直接講結論吧:7天後才結算獎勵,獎勵要去主動Claim才入帳,Power Up後想拿出來要等一周才能開始拿出來,Delegation解除後得等上7天,權力才會返回帳戶。這些,都是為了簡化state的計算,同時還能保有這種點讚內容打賞的特性。如果沒有這樣設計,原本只需要處理單一幣的一致性問題,會變成要處理太多變量之間的衝突矛盾問題 .... 唉呀,這部分還真難講....

為何需要DPOS?

共識機制優劣什麼的,這裡不討論,我也討論不動。要說的是結果,DPOS可以到3秒一個塊,意思是每3秒就可以重新更新state。對於Steem這種社交式互動多的鏈來說,至關重要。否則,如果要1小時才能確認state,那麼你Power up的SP,要等1小時才有影響力,你寫的文章,要等1小時才能開始接受點讚.... 那鬼才玩這個吧?

課後作業

好吧,老師講得有點心虛了,似乎沒講得太清楚... 所以趕緊出作業來假裝一下我很懂。.... 咳咳,.... 好!同學們回去可以想一下,現實生活中的state是什麼?其實並沒有,或是這概念不一樣。因為這世界的實際運作,並沒有共識機制這種邏輯。虛擬世界為什麼需要共識機制?那是因為需要去構築一個世界的基礎,才能變成是「一個世界」。現實生活本來就是一個世界,受到物理法則,人間常識,文化習慣,法規運作等法則來約束,所以沒辦法直接對應到虛世界的這一套。但是,如果你去思考這裏面的共通性,其實是有很多可以想的空間喔!


老師等一下要開會,那我就先走了啊..... 草草下課,不敢多留

holiday-1569608_640.jpg

images - pixabay

Sort:  

Nice photo

the image of the plane in awesome......awesome articule

我常常都把POW和POS搞错,到底它们俩有啥区别?

POW是Proof of Work,是需要全世界的礦工透過挖礦提供算力共同維繫的共識方式。
POS 是Proof of Stake,則是不需要礦工,直接由大的貨幣持有者投票的方式達成共識。
總之現在POS是個趨勢吧,畢竟環境傷害是個議題、從「規模經濟」的角度來看POS也是一個比較公平的機制(對窮人而言,一塊錢能買到的POS股份百分比 > POW 算力百分比)。

解释的很详细,受教了,谢谢啊 :)

第三個字母不一樣你沒發現嗎?

嗯,我知道不一样,但是就是不明白两者的构思。

没关系,@antonsteemit 兄给我解释过了,谢谢啊~

哈哈,你怎麼這麼老實地回覆啊。真是不好意思了~~~

晕,我这个人就是不懂幽默,别见怪啊前辈 XD

i dont understand, but i like the photos-

  • Saludos <3

听说 Steem 有机会整合到 EOS 上,那么所有 transaction 都是即时的了。说真的,三秒对一个社交平台来说还是久了一点,因为每个操作包括点赞留言都是 transaction的一种,好不容易留个言还要看着它转三秒确认成功留言才敢离去,实在也是有点烦。

這麼說也是有道理,越快當然越好。

听说 Steem 有机会整合到 EOS 上

Source? thanks...

似乎找不出了,以后看到再给你看。

와우, 놀랍습니다. 게시물이 너무 좋고 시계가 고급스러워 보였으므로 나를보고 유혹을 받았습니다.

肉體就是state........我來亂的..

那我跟你沒consensus.... 我這是私有鏈... >_<

The state has an art in how to manage its economy's success
The image of the plane is very beautiful indeed amazing
Featured article

hi there. you've got to stop this kind of meaningless engagement. I know you don't understand Chinese, so, why bother. save your time for other valuable things. or at least, comment when I do an English post. ok?

这是我听过讲区块链原理最形象生动的一篇文章!

哇!得到一姐的肯定,太感動了~~~~ >_<~~~~~~ 是因為搧巴掌那一段嗎?LOL~~~~~

拉倒吧,区块链我其实不懂呀,不过现在懂了一些,哈哈刘美女厉害!

Congratulations @deanliu! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Coin Marketplace

STEEM 0.21
TRX 0.25
JST 0.038
BTC 95714.36
ETH 3331.05
USDT 1.00
SBD 3.10