以太坊深度解讀
區塊鏈1.0時代通常是指在2009年到2014年之間,以比特幣為代表的區塊鏈應用發展階段,它們主要致力於解決貨幣和支付手段的去中心化問題;2014年之後,開發者們越來越注重於解決比特幣在技術和擴展性方面的不足。2013年底,Vitalik Buterin發布了以太坊白皮書《以太坊:下一代智能合約和去中心化應用平台》,將智能合約引入區塊鏈,打開了區塊鏈在貨幣領域以外的應用,從而開啟了區塊鏈2.0時代。(更好的數字貨幣交易平台盡在「幣匯」)
所謂智能合約實際上就是一種基於規定觸發規則的,可自動執行的計算機合約,也可以看作是傳統合約的數字版本,在20多年前,由跨領域法律學者、密碼學研究工作者 Nick Szabo 提出。這項技術曾一度因為缺乏可編程數字系統和相關技術而沒有被用於實際產業中,直到區塊鏈技術和以太坊的出現為其提供了可信的執行環境。
與比特幣相比,以太坊屬於圖靈完備的腳本語言,支持開發者在該平台創建和發布任意去中心化的應用程序,從誕生到現在,全球基於以太坊的去中心化應用已經超過了200個。
比特之窗區塊鏈首席研究員表示:以以太坊為代表的區塊鏈2.0時代,已逐漸將區塊鏈技術從貨幣和支付領域擴展到金融領域。而隨著技術的發展,以及區塊鏈應用的愈加廣泛,超越貨幣和金融領域的區塊鏈3.0時代也將指日可待。文章摘自比特之窗,中國專業區塊鏈、數字貨幣行業分析媒體,秉承中立、客觀、辯證的態度,洞悉和解讀區塊鏈、數字貨幣的最新動向。
B. 以太坊簡介
如何購買ETH?
如何用信用卡/借記卡購買ETH?
幣安(以貨幣兌換為例)允許您通過瀏覽器無縫購買ETH。操作步驟:
也可以在P2P市場買賣ETH。你可以通過移動使用程序山念Coin向其他用戶購買代幣。操作步驟是:
與比特幣不同,以太坊不僅用於加密貨幣網路。它還可以用來構建去中心化的使用,以太作為一種可交易的令牌,已經成為生態系統的燃料。所以以太的主要功能是為以太坊網路提供電力。
不僅如此,以太還可以像其他傳統貨幣一樣用來購買商品和服務。
零售商接受乙醚作為支付方式的熱圖
人們可以使用以太坊的原生貨幣ETH作為數字貨幣或抵押品。也有人把ETH看成和比特幣一樣的價值存儲手段。但它不同於比特幣,因為以太坊區塊鏈的高度可編程性賦予了ETH更多的效用。也意味著以太成為去中心化金融使用、去中心化市場、交易所、游戲等使用的活力之源。
ETH不基於任何銀行,也就是說你會對自己的資金負責。你可以把代幣存放在交易所或你自己的錢包里。但是要記住,當你為了自保而使用錢包的時候,一定要妥善保管助記符,這樣當你失去錢包的存取權的時候,你就可以追回你的錢了。
一旦數據被添加到以太坊區塊鏈,它幾乎不能被更改或刪除。這意味著在交易固定之前(交易指令發出之前),必須仔細核對要發送的資金目的地址和金額。大額匯款的時候,最好是小額匯款到地址進行地址確認。
由於智能合約被黑,以太坊為了逆轉惡意交易,在2016年被迫硬分叉。但是,這種反轉只是特殊事件的極端措施,並不是常態。
所有加入以太坊區塊鏈的交易對公眾都是可見的。即使以太坊地址上沒有顯示你的真實姓名,觀察者也會通過其他方法確定你的身份。
由於ETH不是一個穩定的資產,它可能會給你帶來收益和損失。有些人選擇長期持有以太,賭網路將來會成為全球可編程的結算層。還有的選擇用乙醚與其他Altcoins(假幣)交易。這兩種策略也有各自的財務風險。
作為分散金融(DeFi)的主要支柱,ETH也可以用於借貸,作為貸款的抵押品,鑄造合成資產,或作為未來的賭注。
一些投資者可能會長期投資比特幣,他們的投資組合中不包含其他數字資產。有些投資者更加靈活,在投資組合中混合使用ETH和其他假幣,或者使用一定比例的資金進行短線交易(例如日內交易或搖擺交易)。市場上沒有萬能的賺錢方法,每個投資者都要根據自己的實際情況選擇最適合自己的策略。
目前市面上代幣的存儲方式有很多種,每種方式都有其優缺點。就像其他有風險的事情一樣,最好的選擇方式就是在可用的選項中進行多元化的選擇。桐核
通常,存儲解決方案要麼是託管的,要麼是非託管的。託管解決方案意味著您可以將資金委託給第三方(如交易所)。此時,您需要登錄託管人平台進行加密資產交易。
非託管解決方案正好相反:3354使用加密貨幣錢包管理資金。加密錢包不像物理錢包那樣裝載硬幣,而是提供允許您訪問區塊鏈上的資產的加密密鑰。記住:當使用非託管錢包時,一定要備份你的助記符!
如果您想在交易所存放乙醚,請遵循以下步驟:
您需要將ETH存入交易所賬戶,以方便各種交易活動。將ETH儲存在幣安上既簡單又安全。幣安生態系統還允許你通過貸款、職位返利、空投促銷和抽獎獲得收入。
如果您想從您的exchange帳戶中提取ETH,您需要遵循以下步驟:
如果你想在錢包里存放ETH,那麼有兩種選擇:熱錢包和冷錢包。
以某種方式連接到互聯網的加密貨幣錢包被稱為熱門錢包。它通常是一個移動或桌面使用程序,並允許您檢查余額,或發送和接收令牌。因為熱錢包是聯網的,很容易被攻擊,但是對於人們的日常使用非常方便。信任錢包是一款支持多種貨幣的手機錢包。
冷錢包是一種不暴露於互聯網的加密錢包。因為沒有網路攻擊載體,被攻擊的概率明顯降低。不過冷錢包不如熱錢包便攜好用。硬體錢包和紙質錢包都是冷錢包。現在已經很少有人用過時且有風險的紙幣袋了。
加密錢包分類詳情請查看《解讀加密錢包類型》。
維塔利克布特林設計了最初的以太坊圖案。它由兩個旋轉求和符號組成(希臘字母中的適局唯掘馬)。以太坊最終的logo(基於這個圖案)被一個菱形(稱為八面體)和四個三角形包圍。與其他加密貨幣類似,以太坊由標準的Unicode符號組成,因此以太坊的價格可以很容易地顯示在使用程序和網站中。就像美元是用符號$,以太坊使用的符號是
相關問答:以太幣是什麼意思?
以太幣(ETH)是以太坊(Ethereum)的一種數字代幣,以太幣和其他數字貨幣一樣,可以在交易平台上進行買賣。但是由於最近幣價不穩定,所以現在很少有人炒幣了!但是不一定只有炒幣才能獲得虛擬幣ETH,通過挖礦同樣可以獲得,哈魚礦工可以快速獲得以太坊,那樣你就可以快速了解什麼是以太坊了!
C. 以太坊技術系列-以太坊數據結構
本篇文章和大家介紹一下以太坊的數據結構,上篇文章我們提到,以太坊為了實現智能合約這一功能,使用了基於賬戶的模型。我們來看看以太坊中數據結構。
既然是基於賬戶的模型,我們需要通過賬戶地址找到賬戶的狀態。就像通過銀行卡號可以找到你在銀行中的各種信息一樣。最簡單的想法當然是一個簡單的哈希表 key是賬戶地址 value是賬戶狀態。但這里有個問題解決不了。
輕節點如何校驗賬戶合法性?
上篇我們說過,區塊鏈中有2類節點,全節點和輕節點,輕節點只會存儲block header,所以輕節點如何才能校驗賬號是否合法呢?
這個思路和我們平時用的md5校驗一致,我們會對區塊內的信息進行hash運算從而得出區塊內信息唯一確定的值,區塊鏈所有節點中這個值都是相同的。
在這個過程中我們用到了一種數據結構Merkle Tree(哈希樹),我們先看下Merkle Tree(哈希樹)的示意圖。
上篇文章說到區塊鏈中的鏈表(哈希鏈)和我們平時常見鏈表不同的是將指針從地址改為了hash指,這里也一樣,哈希樹和二叉樹的區別有2個
1.將地址改為了哈希值
2.只有葉子節點存儲數據
回到之前的問題輕節點是如何校驗1個賬戶或交易是否是在鏈上的呢?
整個流程如上圖所示
1.輕節點需要判斷1個賬號是否合法
2.輕節點由於只存儲block header,所以拿到1個賬號的時候會向全節點發出請求
3.全節點存儲了所有賬戶狀態,將賬戶路徑中的需要計算用到的hash值返回給輕節點
4.輕節點本地進行計算根hash值,如果計算結果和自己存儲一致則賬戶合法,不一致則不合法。
那以太坊中的賬戶信息的數據結構就是這樣嗎?
直接用這樣的數據結構來存儲賬戶信息會有2個問題
查找困難
生成hash值不確定
第1個問題應該比較容易發現,在這個樹中尋找1個賬號需要的復雜度是O(n),因為沒有任何順序。
第2個問題其實也是因為無序導致的,無序的組合每個節點針對同一批賬戶生成的hash值不一致,這就導致無法達成共識。
既然2個問題都和順序有關,那我們類似二叉排序樹一樣,使用哈希排序樹是不是就可以解決問題了呢?
使用排序樹後會帶來另外1個問題
插入困難
因為要維持樹是有序的,很可能帶來樹結構的很大變動。
以太坊中使用了另外一種數據結構字典樹。和哈希樹不同,字典樹應該是很多地方都有使用。我們簡單來看下字典樹的結構。
字典樹能夠較好地解決哈希樹的2個缺點1.查找困難 2.生成的hash值不確定以及排序二叉樹的1個缺點 插入困難。
但字典樹我們可以看到可能樹的深度可能由於部分元素導致整棵樹深度非常深。
這時我們可以進一步優化,將相同路徑進行壓縮。這就是壓縮字典樹。
將哈希樹和壓縮字典樹結合,就可以得到以太坊存儲賬戶的最終數據結構-MPT。
將壓縮字典樹裡面的指針從地址改為指針,並且將數據存儲在葉子節點中即可。
介紹完狀態樹的數據結構,我們接下來討論1個問題,區塊中存儲的賬戶狀態是什麼樣的范圍。有2種選擇。
只保存當時區塊中產生交易的賬戶狀態。
保存全局所有的賬戶。
我們可以看下這2種方式,無非就是空間和時間的平衡,只保存當前區塊產生的交易意味著是做懶載入(需要的時候才去尋找賬戶),在區塊鏈中這個代價是非常大的,因為尋找的賬戶之前從未交易過,這樣會遍歷整個區塊鏈。另外一種保存全局的賬戶方式雖然看起來空間消耗較大,但查找快捷,而且空間的問題我們可以通過其他方式優化。所以最終以太坊選擇了第2種每個區塊都報錯全局所有賬戶的方式。
我們來看下以太坊中是如何保存狀態樹的。
可以看到以太坊中雖然每個區塊都保存了全部賬戶,但是會將未發生變化的賬戶狀態指向前1個節點,本身只存儲發生變化的狀態,這樣可以較大程度優化空間佔用。
介紹完以太坊中比較復雜的狀態樹後,我們繼續來看看以太坊中的另外兩棵樹,交易樹和收據樹。
首先介紹一下,為什麼需要交易樹&收據樹。
1.交易樹
雖然以太坊是基於賬戶的模型,但是就像銀行不僅會存儲銀行卡的余額,還會存儲卡中的每筆錢怎麼來的以及怎麼花的。交易樹中就存儲著當前區塊中的包含的所有交易。
2.收據樹
由於智能合約的引入增加了不少復雜性,所以以太坊用收據樹存儲著一些交易操作的額外信息。比如交易過程中執行日誌就包含在收據樹中方便查詢。收據樹和交易樹是一一對應的。每發生一次交易就會有一次收據。
和狀態樹不同交易樹和收據樹只維護當前區塊內發生的交易,因為當時區塊發生交易時不需要再去查找另外1個交易,也就之前需要可能遍歷整個區塊鏈的查找操作了。
由於以太坊中的出塊速度較快,我們進行一些查詢一些符合條件交易的時候會面臨大量數據遍歷困難的問題。收據樹中引入了布隆過濾器可以幫助我們有效緩解這一困難。
布隆過濾器將大集合中每個元素進行hash運算映射到1個較小的集合,這時再來1個元素要判斷是否在大集合的時候,不需要遍歷整個大集合,而是去進行hash運算去小集合中尋找是否存在,如果不存在,肯定不在大集合中,如果存在則不能說明任何問題。
如上圖所示,布隆過濾器只能證明某1個元素不在集合中,不能證明1個元素在結合中。
以太坊中如果我們要在較多區塊中尋找某1個交易,則可以利用布隆過濾器,過濾掉肯定不存在目標交易的區塊,然後進入收據樹內繼續利用布隆過濾器篩選,剩下的才是可能的目標交易的交易,進行一一比對即可。
我們介紹了以太坊的核心數據結構,狀態樹&交易樹&收據樹,他們都是使用相同的數據結構-哈希壓縮字典樹。但狀態樹是維護1顆全局賬戶樹,交易樹和收據樹則是維護本區塊內的交易或收據。
介紹完數據結構後,後面我們會用幾篇文章來介紹以太坊中的一些核心演算法,比如共識機制,挖礦演算法等。
D. 建行在以太坊發行區塊鏈債券,你看懂了嗎
看不懂,轉摘一份資料給大家分享:建設銀行(CCB)是中國「四大」金融機構之一,它計劃通過出售債券來籌集高達30億美元的資金,個人和機構可以使用比特幣和美元進行交易。
SCMP報道,中國建設銀行將通過比特幣出售價值30億美元的債務,將在馬來西亞交易所進行交易。
過去幾個月來,隨著全球確定性和通貨膨脹的迫在眉睫,經驗豐富的投資者和 科技 企業家(例如對沖基金經理Paul Tudor Jones和MicroStrategy首席執行官Michael Saylor)對比特幣領域的興趣日益濃厚。
中國銀行的比特幣 游戲
建行還以成為世界第二大銀行而著稱,它正在出售一種廉價的數字債券,購買者可以投資至100美元。該證券每三個月滾動一次,並支付Libor的年化利息加50個基點。
出於合法目的,債券將通過馬來西亞納閩縣的建設銀行分行發行和安排。由於其有利的法規和政策,該小鎮成為東南亞企業的避稅天堂。
該數字債券將在扶桑交易所上市,該交易所還將促進加密貨幣的交易。它還接受比特幣作為所有購買的付款方式,然後立即將其轉換為美元。
扶桑集團首席執行官張崇中指出:
「債券本質上就像是三個月的定期存款產品,向持有人支付的費用遠高於大多數美元銀行存款利率。這些證券可以被世界各地的投資者購買,除了美國和中國的稅收居民以及伊朗和朝鮮的人民和實體。
中國建設銀行馬來西亞分公司首席運營和財務策略師史蒂芬·王(Steven Wong)補充說,該公司通過收取比特幣付款並未違反任何法律。他說:「我們正在接受銀行存款,這是我們的核心業務。」
Wong補充說,該銀行認為發行債券既是試點項目,又是創新發行。但是,他也告誡不要謠言。Wong說:「銀行不從事比特幣或加密貨幣交易。」
沒聽說啊?自然不懂,難道以太幣要起飛?
建行有區塊鏈專利?
建行不但准備在以太坊發行債券,之前還有在比特幣發行債券的說法,這說明:賣東西的,並不在乎用什麼渠道去賣。
我相信,建行不是第一個銀行,也不會是最後一個在虛擬貨幣市場發行債券的銀行。
其中,有幾點可以做解讀:
1,為什麼建行要選擇在比特幣以太坊發行區塊鏈債券呢?
原因很簡單。比特幣區塊鏈這兩個品種玩的人比較多。在這兩個幣種上發行債券,可以獲得這兩類幣種的目標人群。
這如同:你拿著一筐雞蛋賣。鎮上已經很多賣雞蛋的了,你為了把你的雞蛋賣出去,所以你跑到鄉下,找到一個人多的地方賣。
其目的很簡單,只是為了把雞蛋賣出去而已。和那個村子沒關系,重點是雞蛋。
同理,建行在比特幣以太坊上發行債券,目的只是為了把債券賣出去。
2,為什麼建行不在其他幣種上發行債券?
玩其他幣種的人很少。建行也擔心在其他幣種上賣債券,極有可能歸零等現象。所以,為了杜絕風險,選擇在玩的人的比特幣以太坊上發債券,不會擔心沒人買,更不擔心歸零風險。
總結:建行在比特幣以太坊上發行區塊鏈債券,只是一次正常的債券銷售行為,和比特幣以太坊關系並不大,更不能說明很多虛擬貨幣就是合法的了。
E. eth挖礦是什麼原理
凡是涉及到幣,就一定離不開挖礦。以太坊網路中,想要獲得以太坊,也要通過挖礦來實現。說到挖礦,就一定離不開共識機制。
不知道大家還記得比特幣的共識機制是什麼嗎?比特幣的共識機制是 PoW (這是英文 Proof of Work 的縮寫,意思是「工作量證明機制」)。簡單來說,就是多勞多得,你付出的計算工作越高,那麼你就越有可能第一個找到正確的哈希值,就越有可能得到比特幣獎勵。
但是,比特幣的PoW存在著一定的缺陷,就是它處理交易的速度太慢,礦工們需要不斷地通過計算來碰撞哈希值,這是勞民傷財且效率低下的。對區塊鏈知識有涉獵的朋友們應該看到這樣一種說法:
以太坊為了彌補比特幣的不足,提出了新的共識機制,名叫 PoS(這是英文的縮寫,意思是「權益證明」,也有翻譯成「股權證明」的)。
PoS 簡單來講,其實就跟它的字面意思一樣:權益嘛,股權嘛,你持有的幣越多相當於你的股權越多,你的權益越高。
以太坊的PoS就是說:你持幣越多,你持有幣的時間越久,你的計算難度就會降低,挖礦會容易一些。
在以太坊最初的設定中,以太坊希望能夠通過階段性的升級,在前期依舊採用PoW來構建一個相對穩定的系統,之後逐漸採用 PoW+PoS,最後完全過渡到 PoS。所以,說以太坊的共識機制是PoS,沒錯,但是PoS只是以太坊發布之初的一個計劃或者說目標,目前以太坊還沒有過渡到 PoS,以太坊採用的共識機制仍是 PoW,就是比特幣那個 PoW,但是又和比特幣的PoW稍稍不同。
這里的信息量有點大,
第一個信息點是:以太坊目前採用的共識機制也是PoW,但是和比特幣的PoW稍稍不同。那麼,和比特幣的PoW到底有什麼不同呢:簡單來說,就是以太坊挖礦難度可以調節,比特幣挖礦難度不能調節。就好比咱們高考,因為各個省份的教學情況、生源人數都不一樣,所以高考分為全國卷和各省自主命題。
以太坊說我贊成這樣分地區出題,比特幣說:不行,必須全國同一卷,大家難度都一樣!
通俗解釋,就是,比特幣是利用計算機算力做大量的哈希碰撞,列舉出各種可能性,來找到一個正確哈希值。而以太坊系統呢,它有一個特殊的公式用來計算之後的每個塊的難度。如果某個區塊比前一個區塊驗證的更快,以太坊協議就會增加區塊的難度。通過調整區塊難度,就可以調整驗證區塊所需的時間。
以太坊協議規定,難度的動態調整方式是使全網創建新區塊的時間間隔為 15 秒,網路用 15 秒時間創建區塊鏈,這樣一來,因為時間太快,系統的同步性就大大提升,惡意參與者很難在如此短的時間發動51%(也就是半數以上)的算力去修改歷史數據。
第二個信息點是:以太坊最初的設定中,希望通過階段性升級來最終實現由 PoW 向
PoS過渡的。
時間追溯到 2014 年,在以太坊發布之初,團隊宣布將項目的發布分為四個階段,即 Froniter(前沿)、Homestead(家園)、Metropolis(大都會)和 Serenity(寧靜)。前三個階段共識機制採用 PoW(工作量證明機制),第四個階段切換到 PoS(權益證明機制)。
2015年7月30號,以太坊第一個階段「前沿」正式發布,這個階段只適用於開發者使用,開發人員可於在以太坊網路上編寫智能合約和去中心化應用程序 DAPP,礦工開始進入以太坊網路維護網路安全並挖礦得到以太幣。前沿版本類似於測試版,證明以太坊網路到底是不是可靠的。
2016年3月14日,以太坊進入到第二個階段「家園」,這一階段,以太坊提供了錢包功能,讓普通用戶也可以方便體驗和使用以太坊。其他方面沒有什麼明顯的技術提升,只是表明以太坊網路已經可以平穩運行。
2017 年 9 月,以太坊已經進行到第三個階段「大都會」。「大都會」由拜占庭和君士坦丁堡兩次升級組成,這個階段的的目標是希望能夠引入 PoW 和 PoS 的混合鏈模式,為 PoW向PoS的順滑過渡做准備。最近比較熱門的「以太坊君士坦丁堡升級」升級的就是這個,在君士坦丁堡升級中呢,以太坊將對底層協議和演算法做一些改變,來為實現 PoW 和
PoS奠定良好的基礎。
以太坊挖礦會得到對多少獎勵呢?贏得區塊創建競爭成功的礦工會得到這么幾項收入:
1、 靜態獎勵,5個以太坊;
2、 區塊內所花費的燃料成本,也就是Gas,這部分我們上一期內容講過;
3、 作為區塊組成部分,包含「叔區塊」的額外獎勵,叔就是叔叔的叔,每個叔區塊可以得到挖礦報酬的1/32作為獎勵,也就是5乘以1/32,等於0.15625 個以太坊。這里我們簡單解釋一下「叔區塊」,「叔區塊」這個概念是以太坊提出來的,為什麼要引進叔塊的概念?這還要從比特幣說起。在比特幣協議中,最長的鏈被認為是絕對的正確。如果一個塊不是最長鏈的一部分,那麼它被稱為是「孤塊」。一個孤立的塊是一個塊,它也是合法的,但是可能發現的稍晚,或者是網路傳輸稍慢,而沒有能成為最長的鏈的一部分。在比特幣中,孤塊沒有意義,隨後將被拋棄掉,發現這個孤塊的礦工也拿不到采礦相關的獎勵。
但是,以太坊不認為孤塊是沒有價值的,以太坊系統也會給與發現孤塊的礦工回報。在以太坊中,孤塊被稱為「叔塊」(uncle block),它們可以為主鏈的安全作出貢獻。 以太坊十幾秒的出塊間隔太快了,會降低安全性,通過鼓勵引用叔塊,使引用主鏈獲得更多的安全保證(因為孤塊本身也是合法的) ,而且,支付報酬給叔塊,還能激發礦工積極挖礦,積極引用叔塊,所以,以太坊認為,它是有價值的。
F. 近有消息稱以太坊開發者保守將在2021年底結束PoW挖礦,怎麼解讀
如下:
回顧ETH2.0的發展是這樣的:V神從2015年便開始研究把以太坊切換到PoS,並在2018年正式提出 2.0計劃,後來進展非常緩慢,直到2020爆發的各類DeFi項目。
導致鏈上GAS費用從平時的20-30Gwei,一度漲到500Gwei以上,鏈上生態體驗非常差,最後不得已於2020年底啟動了ETH2.0升級(0階段)。
由於ETH2.0已經說了很久,各種關於升級周期的分析文章也很多,普遍認為大概要升級2-3年,因為當中有半年至壹年時間要PoS和PoW雙鏈並行,以檢驗PoS是否真的安全可靠,大概到2022年-2023年才會合並雙鏈,完全結束PoW,保留PoS。
但現在突然公告加速,出乎所有人的預料,尤其是礦工們的預期,畢竟持幣和持有礦機的人的心態是不一樣的,礦工對PoS非常敏感。從星火昨天發文的公告來看,就是要求以太坊官方再明確一次升級預期,別找一個非核心開發員發短短的一句話就算,會引起很多誤讀。
之前大家一直以為ETH2.0升級在技術上非常復雜且龐大,然而現在我的解讀是,大夥都高估了升級的復雜性,我猜官方團隊其實已基本掌握核心要點,畢竟ETH不是第一個吃PoS共識的螃蟹,可供參考借鑒的例子很多。
以前升級進度緩慢,其實是官方一直在遷就和照顧礦工們的利益,直到去年才迫不得已才啟動升級,然後又模糊地公布一個升級計劃和時間表。
到了今年一看,情勢不對,別家的生態鏈發展迅速,如火如荼,手續費低,交易速度快,使用體驗不是一般地好,官方很擔心,怕再這樣下去生態會崩,於是不管了,在沒有任何吹風的情況下,直接讓一個開發人員發布消息,然後官方再轉發確認消息,我的天,這是不好意思的表現嗎?
那麼結論來了(我們只關心結論),年底前真能結束PoW嗎?有人說是假消息,有人說肯定會跳票,前者基本否定,後者呢?
如我上面解讀,就是不會跳票啊,你以前有看過官方說得這么明確和肯定嗎?沒有。這次還用了conservatively(保守地)這個詞,意思是就是只會提前,不會跳票。我認為這種可能高達90%。
還沒投資顯卡的建議可以緩一下。或者把錢定投ETC吧,估計年底有大量算力轉移到ETC上面,估計對幣價利好。有朋友說可能未必轉移算力,可能賣顯卡,我認為這種比例不會太高,畢竟顯卡算力是多年累積下來,如果在同一時間點集中拋售,賣不了幾個錢,礦工們的更優選擇是挖別的幣種。
以上為個人看法,自己獨立思考最重要,錢是自己的。
G. 【深度知識】以太坊數據序列化RLP編碼/解碼原理
RLP(Recursive Length Prefix),中文翻譯過來叫遞歸長度前綴編碼,它是以太坊序列化所採用的編碼方式。RLP主要用於以太坊中數據的網路傳輸和持久化存儲。
對象序列化方法有很多種,常見的像JSON編碼,但是JSON有個明顯的缺點:編碼結果比較大。例如有如下的結構:
變數s序列化的結果是{"name":"icattlecoder","sex":"male"},字元串長度35,實際有效數據是icattlecoder 和male,共計16個位元組,我們可以看到JSON的序列化時引入了太多的冗餘信息。假設以太坊採用JSON來序列化,那麼本來50GB的區塊鏈可能現在就要100GB,當然實際沒這么簡單。
所以,以太坊需要設計一種結果更小的編碼方法。
RLP編碼的定義只處理兩類數據:一類是字元串(例如位元組數組),一類是列表。字元串指的是一串二進制數據,列表是一個嵌套遞歸的結構,裡面可以包含字元串和列表,例如["cat",["puppy","cow"],"horse",[[]],"pig",[""],"sheep"]就是一個復雜的列表。其他類型的數據需要轉成以上的兩類,轉換的規則不是RLP編碼定義的,可以根據自己的規則轉換,例如struct可以轉成列表,int可以轉成二進制(屬於字元串一類),以太坊中整數都以大端形式存儲。
從RLP編碼的名字可以看出它的特點:一個是遞歸,被編碼的數據是遞歸的結構,編碼演算法也是遞歸進行處理的;二是長度前綴,也就是RLP編碼都帶有一個前綴,這個前綴是跟被編碼數據的長度相關的,從下面的編碼規則中可以看出這一點。
對於值在[0, 127]之間的單個位元組,其編碼是其本身。
例1:a的編碼是97。
如果byte數組長度l <= 55,編碼的結果是數組本身,再加上128+l作為前綴。
例2:空字元串編碼是128,即128 = 128 + 0。
例3:abc編碼結果是131 97 98 99,其中131=128+len("abc"),97 98 99依次是a b c。
如果數組長度大於55, 編碼結果第一個是183加數組長度的編碼的長度,然後是數組長度的本身的編碼,最後是byte數組的編碼。
請把上面的規則多讀幾篇,特別是數組長度的編碼的長度。
例4:編碼下面這段字元串:
The length of this sentence is more than 55 bytes, I know it because I pre-designed it
這段字元串共86個位元組,而86的編碼只需要一個位元組,那就是它自己,因此,編碼的結果如下:
184 86 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
其中前三個位元組的計算方式如下:
184 = 183 + 1,因為數組長度86編碼後僅佔用一個位元組。
86即數組長度86
84是T的編碼
例5:編碼一個重復1024次"a"的字元串,其結果為:185 4 0 97 97 97 97 97 97 ...。
1024按 big endian編碼為004 0,省略掉前面的零,長度為2,因此185 = 183 + 2。
規則1~3定義了byte數組的編碼方案,下面介紹列表的編碼規則。在此之前,我們先定義列表長度是指子列表編碼後的長度之和。
如果列表長度小於55,編碼結果第一位是192加列表長度的編碼的長度,然後依次連接各子列表的編碼。
注意規則4本身是遞歸定義的。
例6:["abc", "def"]的編碼結果是200 131 97 98 99 131 100 101 102。
其中abc的編碼為131 97 98 99,def的編碼為131 100 101 102。兩個子字元串的編碼後總長度是8,因此編碼結果第一位計算得出:192 + 8 = 200。
如果列表長度超過55,編碼結果第一位是247加列表長度的編碼長度,然後是列表長度本身的編碼,最後依次連接各子列表的編碼。
規則5本身也是遞歸定義的,和規則3相似。
例7:
["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]
的編碼結果是:
248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
其中前兩個位元組的計算方式如下:
248 = 247 +1
88 = 86 + 2,在規則3的示例中,長度為86,而在此例中,由於有兩個子字元串,每個子字元串本身的長度的編碼各佔1位元組,因此總共佔2位元組。
第3個位元組179依據規則2得出179 = 128 + 51
第55個位元組163同樣依據規則2得出163 = 128 + 35
例8:最後我們再來看個稍復雜點的例子以加深理解遞歸長度前綴,
["abc",["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]]
編碼結果是:
248 94 131 97 98 99 248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
列表第一項字元串abc根據規則2,編碼結果為131 97 98 99,長度為4。
列表第二項也是一個列表項:
["The length of this sentence is more than 55 bytes, ", "I know it because I pre-designed it"]
根據規則5,結果為
248 88 179 84 104 101 32 108 101 110 103 116 104 32 111 102 32 116 104 105 115 32 115 101 110 116 101 110 99 101 32 105 115 32 109 111 114 101 32 116 104 97 110 32 53 53 32 98 121 116 101 115 44 32 163 73 32 107 110 111 119 32 105 116 32 98 101 99 97 117 115 101 32 73 32 112 114 101 45 100 101 115 105 103 110 101 100 32 105 116
長度為90,因此,整個列表的編碼結果第二位是90 + 4 = 94, 佔用1個位元組,第一位247 + 1 = 248
以上5條就是RPL的全部編碼規則。
各語言在具體實現RLP編碼時,首先需要將對像映射成byte數組或列表兩種形式。以go語言編碼struct為例,會將其映射為列表,例如Student這個對象處理成列表["icattlecoder","male"]
如果編碼map類型,可以採用以下列表形式:
[["",""],["",""],["",""]]
解碼時,首先根據編碼結果第一個位元組f的大小,執行以下的規則判斷:
1.如果f∈ [0,128),那麼它是一個位元組本身。
2.如果f∈[128,184),那麼它是一個長度不超過55的byte數組,數組的長度為 l=f-128
3.如果f∈[184,192),那麼它是一個長度超過55的數組,長度本身的編碼長度ll=f-183,然後從第二個位元組開始讀取長度為ll的bytes,按照BigEndian編碼成整數l,l即為數組的長度。
4.如果f∈(192,247],那麼它是一個編碼後總長度不超過55的列表,列表長度為l=f-192。遞歸使用規則1~4進行解碼。
5.如果f∈(247,256],那麼它是編碼後長度大於55的列表,其長度本身的編碼長度ll=f-247,然後從第二個位元組讀取長度為ll的bytes,按BigEndian編碼成整數l,l即為子列表長度。然後遞歸根據解碼規則進行解碼。
以上解釋了什麼叫遞歸長度前綴編碼,這個名字本身很好的解釋了編碼規則。
(1) 以太坊源碼學習—RLP編碼( https://segmentfault.com/a/1190000011763339 )
(2)簡單分析RLP編碼原理
( https://blog.csdn.net/itchosen/article/details/78183991 )
H. 以太坊區塊鏈ETH目前存在哪些問題
以太坊區塊鏈目前暴露出三大問題,長時間以來其創始人Vitalik
Buterin一直無力解讀。第一是以太坊區塊鏈整體很低的性能和TPS;第二是資源不隔離,CryptoKitties虛擬貓咪的事件,一度占據了整個以太坊
20%
的流量,直接造成以太坊網路用戶無法展開及時的交易,就是資源不隔離最大的痛點;第三個問題在於以太坊治理結構的體現,區塊鏈作為去中心化的分布式賬本,以太坊過去以來,創始人團隊主導了其網路發展,過於中心化的治理模式,讓目前的以太坊出現了ETH、ETC、ETF等分叉,以太坊社區目前進入四分五裂的治理狀態。而以太坊網路目前出現的各種弊病,在「aelf」創始人與CEO馬昊伯看來,這是無法接受的。於是,「aelf」定位,就是為對標以太坊的下一代去中心化底層計算平台,重點解決目前以太坊存在的性能不足、資源不隔離、治理結構三方面的問題而誕生的。