1. 程式人生 > 其它 >【python】mac+appium+python的環境配置完整流程

【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模型?

參考:【區塊鏈探索筆記十一】:UTXO

unspent transaction output

點對點的現金交易系統(面額)

小明收到了1個幣和0.5個幣,總數為1.5個幣(兩條記錄-兩張幣),現在小明想買小花的衣服,需要花0.8個幣,系統自動轉出1個幣(對方地址),自動找回0.2個幣(原來地址新建一個地址)

優點:

1、保護隱私

2、資料模型小

3、高併發處理(多個轉賬可以同時進行)

賬戶模型:支付寶、微信用的

如何交易?

轉載:深入淺出比特幣交易 (transaction)


如果你接觸比特幣夠久,你一定聽說過比特幣是個區塊鏈,一個區塊裡包含很多交易,而交易都是鏈在一起的。那麼,具體交易的細節如何?通常的技術文件都充滿了術語,即使是中本聰的白皮書也難以直接聯絡實際,我最近又仔細研究了一下,這裡用一種簡單的比喻來解釋下
比方說你的錢包裡有三個地址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])諮詢.