【python】mac+appium+python的環境配置完整流程
面對如火如荼的區塊鏈,一大批 “比特幣”、“挖礦”、“賬本”、“礦工”、“以太坊”等名詞叫的火熱,都是什麼意思、有什麼聯絡,下面來看一下吧!
什麼是區塊鏈?
區塊鏈是一個分散式的共享賬本或資料庫,儲存於其中的資料或資訊,具有去中心化、不可篡改等特點。
將資料加密,存放在區塊中,保證這些資料無法篡改,區塊鏈系統會檢驗期間產生的所有資料,比如交易記錄以及該區塊何時被編輯或建立的記錄等,並將這些資料儲存在一個新的區塊上。這個區塊會與前一個區塊連線,每個區塊都必須包含前一區塊的相關資訊才能生效,從而形成一根鏈條,因此稱為“區塊鏈”。
區塊鏈本質上是一個去中心化的資料庫,傳統的資料庫是需要有人維護的,即中心化,區塊鏈無需第三方參與維護。
能允許使用者在無第三方中介參與的情況下進行協作,且不必彼此信任,且區塊中的資料是無法篡改的。
使用者若要執行和獨立驗證區塊鏈的狀態,必須下載特定的錢包軟體。軟體啟動後,便會接入區塊鏈網路中的其他計算裝置,目的是上傳或下載資訊(例如,交易、區塊)。軟體將會下載一個個區塊資料,檢查它的真實性,然後將檢驗過的相關資訊廣播傳遞給其他計算裝置。
於是,我們得到了由成百上千、甚至是上萬個計算裝置組成的區塊鏈生態系統。這些計算裝置被稱為“節點”,全部運行同一個軟體,並同時彼此同步更新、廣播交易資料,實現了區塊鏈的資料真實而去中心化的特性。
結構
資料是儲存在一個一個的區塊中,一個區塊分為區塊頭和區塊體
區塊頭:上一個區塊的hash值和本區塊的hash值、時間戳等
區塊體:儲存的資料,例如交易資訊、比特幣等
分類
區塊鏈大致可分為:公有鏈、私有鏈、聯盟鏈
1、公有鏈:所有的資料公開透明、所有人可以參與(訪問、交易、驗證)
缺點可能包括:絕大部分公鏈系統需要較高的硬體資源來保障安全性,交易的隱私性極低或根本沒有隱私性可言。而這些又是區塊鏈企業用例的重要考慮因素。
2、聯盟鏈:參與的節點是事先選好的,資料可以公開也可以是內部的
多個組織可以分擔維護區塊鏈的責任,這些預先選定的組織將決定誰可以提交交易或訪問資料。
3、私有鏈:參與的節點有所限制,且所有權歸參與者所有 ,資料可以修改,和傳統的資料庫很像
私有鏈的整個網路由一個組織管理,該組織有完全的許可權來控制允許誰參與、維護區塊鏈網路。根據使用情況,可以顯著提高參與者之間的信任和信心。私有區塊鏈可以在企業防火牆後面執行,甚至可以在企業內部託管。
特點
優點:
1、去中心化
2、集體維護
3、高安全性
4、無需信任
缺點:
1、安全性(私鑰丟失、量子破解)
2、延遲性(交易會有延遲)
3、監管(國家需要監管)
區塊鏈如何解決拜占庭將軍問題?
拜占庭將軍問題:
拜占庭位於如今的土耳其的伊斯坦布林,是東羅馬帝國的首都。由於當時拜占庭羅馬帝國國土遼闊,為了達到防禦目的,每個軍隊都分隔很遠,將軍與將軍之間只能靠信差傳訊息。在戰爭的時候,拜占庭軍隊內所有將軍和副官必須達成一致的共識,決定是否有贏的機會才去攻打敵人的陣營。但是,在軍隊內有可能存有叛徒和敵軍的間諜,左右將軍們的決定又擾亂整體軍隊的秩序。在進行共識時,結果並不代表大多數人的意見。這時候,在已知有成員謀反的情況下,其餘忠誠的將軍在不受叛徒的影響下如何達成一致的協議,拜占庭問題就此形成。
總結一下問題:
1、如何防止叛徒冒充將軍釋出軍令?
2、如何保證忠誠將軍釋出的軍令是一致性的?
下面引入區塊鏈:
將軍抽象成節點、傳輸的軍令抽象成交易資訊
轉成區塊鏈中的問題:
1、如何防止惡意節點冒充誠實節點?
使用非對稱加密,將用私鑰加密交易資訊,傳播給其他誠實節點,惡意節點無法獲取私鑰解密,保證訊息無法篡改。
2、如何保證所有節點記錄的交易資訊是一致的?
規定每隔一段時間打包一次交易資訊(工作量最多的節點的打包的資料為準)
共識機制
什麼是比特幣?
比特幣是區塊鏈的一種應用。
比特幣的交易資訊被記錄在一個去中心化的賬本(區塊鏈)上,賬本中有一頁(區塊)一頁的 交易資訊,每十分鐘生成一頁新的賬本資訊(交易資訊)
比特幣這種新型的貨幣模式和傳統的模式有幾點不同,首先它不是有一箇中央機構發行的,其次他的總量恆定2100萬枚永不超發,再者比特幣所有的交易都是記錄在一個公共賬本當中,這樣所有人都可以檢視,所有人都可以參與記賬,這樣既保證了整個系統的公開透明,又保證了貨幣不會因為濫發而導致的貶值。
在使用者看來,比特幣就是一個手機APP或電腦程式、一個比特幣錢包,使用者可以用來支付和接收比特幣。
和傳態貨幣的不同?
1、沒有管理機構
2、必須用電子方式結算
如何獲取比特幣?
1、在一個比特幣交易所購買比特幣
2、和你附近的人兌換比特幣
3、通過挖礦獲取比特幣
挖礦?
上面說到比特幣的所有交易記錄在一個賬本(區塊鏈)中,這份賬本包含了每一筆處理過的交易,使得使用者的電腦可以核實每一筆交易的有效性,每一筆交易的真實性由傳送地址對應的私鑰保護。
任何人都可以利用專門計算裝置來處理、記錄交易並獲得比特幣獎勵。這一服務經常被稱作“挖礦”。通過挖礦,調動了挖礦者(礦工)的積極性,還保證了交易的確認速度、交易記錄的正確性及比特幣網路的安全性。
UTXO模型?
unspent transaction output
點對點的現金交易系統(面額)
小明收到了1個幣和0.5個幣,總數為1.5個幣(兩條記錄-兩張幣),現在小明想買小花的衣服,需要花0.8個幣,系統自動轉出1個幣(對方地址),自動找回0.2個幣(原來地址新建一個地址)
優點:
1、保護隱私
2、資料模型小
3、高併發處理(多個轉賬可以同時進行)
賬戶模型:支付寶、微信用的
如何交易?
如果你接觸比特幣夠久,你一定聽說過比特幣是個區塊鏈,一個區塊裡包含很多交易,而交易都是鏈在一起的。那麼,具體交易的細節如何?通常的技術文件都充滿了術語,即使是中本聰的白皮書也難以直接聯絡實際,我最近又仔細研究了一下,這裡用一種簡單的比喻來解釋下
比方說你的錢包裡有三個地址A,B,C。你在地址A有1個幣,你在錢包軟體裡把幣傳送到地址B,可以在區塊鏈上查到這筆交易,不妨叫做交易甲。然後你又做了一筆交易乙,把幣從地址B發到地址C。假設手續費是0.0001個幣,每次傳送你都花了0.0001個幣作為手續費,那交易甲被確認後地址B就是0.9999個幣,而交易乙被確認後地址C裡就是0.9998個幣
交易甲:地址A 1BTC -> 地址B 0.9999 BTC, 手續費 0.0001
交易乙:地址B 0.9999BTC -> 地址C 0.9998 BTC,手續費 0.0001
用賬簿的比喻最好理解
賬簿就是區塊鏈,賬簿的每頁紙就是區塊,這些紙依次裝訂在一起形成了一整個賬簿。每頁紙上貼滿了一條又一條的匯款單(交易)
如果仔細觀察匯款單交易乙(把0.9998個幣從地址B轉到地址C,並付0.0001手續費),你會發現交易乙是由兩大部分組成,前一部分可稱為付款資訊(input),後一部分可稱為收款資訊(output)
按一般在銀行填匯款單的習慣,付款資訊裡該填支出賬戶名(也就是地址B)和賬戶所有人簽名(授權交易),而收款資訊裡應該填金額和收款方賬戶名(也就是地址C)。事實上,比特幣交易也大致是這麼寫的,只有細微差別
交易甲
付款資訊:簽名 + 公鑰A(簽名相當於蓋章,是用地址A的私章(私鑰)產生,而地址A的公鑰可用於讓其他人驗證這個章是否有效 (私鑰公鑰加密原理到處都有))
收款資訊:0.9999 (金額) + 地址B + 兌現條件 (這裡的兌現條件註明了未來要花地址B的幣需要滿足何種條件,下面有詳述)
交易乙
付款資訊:簽名 + 公鑰B
收款資訊:0.9998 + 地址C + 兌現條件
交易丙
付款資訊:簽名 + 公鑰C
收款資訊:0.9997 + 地址D + 兌現條件
有幾點和銀行匯款單不同的地方
第一,每個匯款單都是花前一個匯款單的收款地址裡的幣,這樣所有交易就一個個鏈結在一起,而如果要徹底核實某筆交易丙是否有效,就要順著這個鏈一直回溯到最原始的挖礦產出交易(在交易甲之前還有別的交易),這樣保證了只要使用者有區塊鏈的完整拷貝(也就是目前全節點的那60G資料),就可以獨立驗證任何一筆交易的有效性
第二,每次匯款只能完全將支出賬戶裡所有的幣都花掉。以交易乙為例,匯款完成後原來的地址B就空了。如果只想轉一半的資金到地址C,剩下的那一半就要在收款資訊裡另外填一個賬戶地址E,也就是所謂的找零地址
第三,總彙款金額小於地址B的部分就是手續費。如果地址B裡有0.9999個幣,匯款到地址C的金額是0.9998個幣,那中間的差額0.0001就是礦工的手續費
第四,驗證交易乙是否有效,是靠上一個交易即交易甲的收款資訊中的兌現條件來保證的。可以有多種規則,目前最常見的兩種就是提供收款地址的簽名 (P2PKH)以及提供一段程式的雜湊值(P2SH,這個涉及到雜湊,一種防偽的手段)
如果你完全看懂了,那你對比特幣交易的功能理解,就接近於core程式設計師的水平了,以後碰到很多名詞如scriptSig (簽名+公鑰) 和scriptPubKey(兌現規則)之類你就很容易知道那都是匯款單上的哪個部分了
閃電網路?
閃電網路是構建在比特幣網路上的第二層支付協議,用來解決比特幣網路堵塞問題,其理念是,在區塊鏈之外開通一條“綠色通道”,將大量高頻的、小額的交易在區塊鏈外進行。
如此,交易雙方可在這條“綠色通道”上進行多次、高頻、雙向地、點對點的交易,可實現瞬間確認的微支付,而且雙方若無直接的點對點支付通道,只要閃電網路中存在一條連通雙方的、由多個支付通道構成的支付路徑,那麼也可以利用這條支付路徑實現交易。
閃電網路能夠提高加密貨幣每秒的交易數量,同時保持較低的轉賬費用。
什麼是以太坊?
以太坊(Ethereum) 類似於區塊鏈版的安卓、iOS系統,一個區塊鏈APP平臺,是一個為去中心化應用(DApp)而生的全球開源平臺。
就是區塊鏈的一個實際的應用,升級版的區塊鏈。
以太坊是去中心化的、可以執行可轉移計算和資料的自洽經濟系統,一個去中心化的區塊鏈平臺,用於構建去中心化應用程式(DApp),以太幣(Ether)是該平臺所使用的加密貨幣。
以太坊可以輕鬆建立智慧合約,自行執行程式碼,開發人員可以利用這些程式碼來處理各種應用程式。
以太坊幾乎可以用於任何型別的交易或協議,其成本比傳統的替代方案要低,例如銀行卡支付,PayPal 和投票等,並且全程採用去中心化、去信任(無需中介)、安全有效並且抗審查的形式。
通過以太坊,使用者可以建立任何去中心化應用程式(即DApp)和智慧合約。
使用者只需要通過網際網路就能夠以去信任化的方式訪問應用程式、產品和服務。每一個人都可以與以太坊網路進行互動,親自參與到這種數字經濟形式中,而不需要第三方。
人們可以使用智慧合約來為專案眾籌資金、公司可以在區塊鏈上運用智慧合約進行股票發行、銀行等金融機構可以用它來管理貸款收發、保險公司可以用它來實現自動理賠等等等等,甚至任何現實金融交易都可以被改造到區塊鏈上進行,這些都是區塊鏈的功勞。
以太坊沒有中心伺服器,所以在以太坊上執行的APP不存在崩潰、宕機的可能,資料也不會洩露,甚至不能被關閉
和比特幣的區別?
以太坊節點儲存著每個智慧合約的最新狀態,對於每個以太坊應用程式,網路都需要跟蹤“狀態”或所有這些應用程式的當前資訊,包括每個使用者的餘額、所有智慧合約程式碼以及它們的儲存位置等。
以太坊也採用POW機制,通過礦工挖礦來產生新的以太坊。不同的是,以太坊是一個可以程式設計的區塊鏈,它允許任何人在上面建立去中心化的APP、編寫智慧合約和發行屬於自己的數字貨幣。
相比比特幣,以太坊添加了新的功能:包括虛擬機器(EVM, Etheruem Virtual Machine)、賬戶系統,在其上可以執行智慧合約。
以太坊使用者可以將以太坊儲存在以太坊錢包中,也可以與以太坊網路上的智慧合約進行互動。錢包是一種應用程式,可以便捷地儲存和傳送ETH,同時可以通過錢包與以太坊上構建的應用程式進行互動。
以太坊網路中發生的每筆交易都需要一定數量的gas,gas是用於度量處理交易所需計算能力的單位。幫助驗證資訊真實下要付出算力成本處理交易並將其打包在區塊中,理應獲得相應的補償,在以太坊系統中,這就要通過在每次交易中設定gas價格來完成,gas以Gwei(1 ETH = 1,000,000,000 Gwei)作為單位。
舉個例子:使用者將ETH從一個帳戶傳送到另一個帳戶需要花費21,000 gas,如果將gas價格定為1 Gwei,則此交易花費0.000021 ETH。
什麼是智慧合約?
根據區塊鏈可程式設計的特點,人們可以將合同變成程式碼的形式放到區塊鏈上,並在約定的條件下自動執行, 這就是所謂的智慧合約。
簡單地認為,智慧合約就是一種“ 程式”, 只是這種“ 程式”處理的是人與人之間的權利和義務的約定。
當滿足某些條件時,它則執行特定任務。因此,智慧合約系統通常遵循“if ... then ...”語句,但是,即便智慧合約成為一種主流的技術,但智慧合約既不是法定的也不是智慧化的,它們只是在分散式系統(區塊鏈)上執行的一段程式碼。
參考:鏈節點
作者: Pam
出處: https://www.cnblogs.com/pam-sh/>
關於作者:網安在讀
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出, 原文連結 如有問題, 可郵件([email protected])諮詢.