色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用不到50行的 Python 2.x代碼實現一個簡單的區塊鏈

阿銘linux ? 來源:未知 ? 作者:李倩 ? 2018-03-29 15:29 ? 次閱讀

雖然有些人認為區塊鏈是一個早晚會出現問題的解決方案,但是毫無疑問,這個創新技術是一個計算機技術上的奇跡。那么,究竟什么是區塊鏈呢?

區塊鏈

比特幣Bitcoin或其它加密貨幣按時間順序公開地記錄交易的數字賬本。

更通俗的說,它是一個公開的數據庫,新的數據存儲在被稱之為區塊block的容器中,并被添加到一個不可變的鏈chain中(因此被稱為區塊鏈blockchain),之前添加的數據也在該鏈中。對于比特幣或其它加密貨幣來說,這些數據就是一組組交易,不過,也可以是其它任何類型的數據。

區塊鏈技術帶來了全新的、完全數字化的貨幣,如比特幣和萊特幣Litecoin,它們并不由任何中心機構管理。這給那些認為當今的銀行系統是騙局并將最終走向失敗的人帶來了自由。區塊鏈也革命性地改變了分布式計算的技術形式,如以太坊Ethereum就引入了一種有趣的概念:智能合約smart contract。

在這篇文章中,我將用不到 50 行的 Python 2.x 代碼實現一個簡單的區塊鏈,我把它叫做 SnakeCoin。

不到 50 行代碼的區塊鏈

我們首先將從定義我們的區塊是什么開始。在區塊鏈中,每個區塊隨同時間戳及可選的索引一同存儲。在 SnakeCoin 中,我們會存儲這兩者。為了確保整個區塊鏈的完整性,每個區塊都會有一個自識別的哈希值。如在比特幣中,每個區塊的哈希是該塊的索引、時間戳、數據和前一個區塊的哈希值等數據的加密哈希值。這里提及的“數據”可以是任何你想要的數據。

真棒,現在我們有了區塊的結構了,不過我們需要創建的是一個區塊鏈。我們需要把區塊添加到一個實際的鏈中。如我們之前提到過的,每個區塊都需要前一個區塊的信息。但問題是,該區塊鏈中的第一個區塊在哪里?好吧,這個第一個區塊,也稱之為創世區塊,是一個特別的區塊。在很多情況下,它是手工添加的,或通過獨特的邏輯添加的。

我們將創建一個函數來簡單地返回一個創世區塊解決這個問題。這個區塊的索引為 0 ,其包含一些任意的數據值,其“前一哈希值”參數也是任意值。

現在我們可以創建創世區塊了,我們需要一個函數來生成該區塊鏈中的后繼區塊。該函數將獲取鏈中的前一個區塊作為參數,為要生成的區塊創建數據,并用相應的數據返回新的區塊。新的區塊的哈希值來自于之前的區塊,這樣每個新的區塊都提升了該區塊鏈的完整性。如果我們不這樣做,外部參與者就很容易“改變過去”,把我們的鏈替換為他們的新鏈了。這個哈希鏈起到了加密的證明作用,并有助于確保一旦一個區塊被添加到鏈中,就不能被替換或移除。

這就是主要的部分。

現在我們能創建自己的區塊鏈了!在這里,這個區塊鏈是一個簡單的 Python 列表。其第一個的元素是我們的創世區塊,我們會添加后繼區塊。因為 SnakeCoin 是一個極小的區塊鏈,我們僅僅添加了 20 個區塊。我們通過循環來完成它。

讓我們看看我們的成果:

別擔心,它將一直添加到 20 個區塊

很好,我們的區塊鏈可以工作了。如果你想要在主控臺查看更多的信息,你可以編輯其完整的源代碼并輸出每個區塊的時間戳或數據。

這就是 SnakeCoin 所具有的功能。要使 SnakeCoin 達到現今的產品級的區塊鏈的高度,我們需要添加更多的功能,如服務器層,以在多臺機器上跟蹤鏈的改變,并通過工作量證明算法(POW)來限制給定時間周期內可以添加的區塊數量。

讓這個極小區塊鏈稍微變大些

這個極小的區塊鏈及其簡單,自然也相對容易完成。但是因其簡單也帶來了一些缺陷。首先,SnakeCoin 僅能運行在單一的一臺機器上,所以它相距分布式甚遠,更別提去中心化了。其次,區塊添加到區塊鏈中的速度同在主機上創建一個 Python 對象并添加到列表中一樣快。在我們的這個簡單的區塊鏈中,這不是問題,但是如果我們想讓 SnakeCoin 成為一個實際的加密貨幣,我們就需要控制在給定時間內能創建的區塊(和幣)的數量。

從現在開始,SnakeCoin 中的“數據”將是交易數據,每個區塊的“數據”字段都將是一些交易信息的列表。接著我們來定義“交易”。每個“交易”是一個 JSON 對象,其記錄了幣的發送者、接收者和轉移的 SnakeCoin 數量。注:交易信息是 JSON 格式,原因我很快就會說明。

現在我們知道了交易信息看起來的樣子了,我們需要一個辦法來將其加到我們的區塊鏈網絡中的一臺計算機(稱之為節點)中。要做這個事情,我們會創建一個簡單的 HTTP 服務器,以便每個用戶都可以讓我們的節點知道發生了新的交易。節點可以接受 POST 請求,請求數據為如上的交易信息。這就是為什么交易信息是 JSON 格式的:我們需要它們可以放在請求信息中傳遞給服務器。

真棒!現在我們有了一種保存用戶彼此發送 SnakeCoin 的記錄的方式。這就是為什么人們將區塊鏈稱之為公共的、分布式賬本:所有的交易信息存儲給所有人看,并被存儲在該網絡的每個節點上。

但是,有個問題:人們從哪里得到 SnakeCoin 呢?現在還沒有辦法得到,還沒有一個稱之為 SnakeCoin 這樣的東西,因為我們還沒有創建和分發任何一個幣。要創建新的幣,人們需要“挖”一個新的 SnakeCoin 區塊。當他們成功地挖到了新區塊,就會創建出一個新的 SnakeCoin ,并獎勵給挖出該區塊的人(礦工)。一旦挖礦的礦工將 SnakeCoin 發送給別人,這個幣就流通起來了。

我們不想讓挖新的 SnakeCoin 區塊太容易,因為這將導致 SnakeCoin 太多了,其價值就變低了;同樣,我們也不想讓它變得太難,因為如果沒有足夠的幣供每個人使用,它們對于我們來說就太昂貴了。為了控制挖新的 SnakeCoin 區塊的難度,我們會實現一個工作量證明Proof-of-Work(PoW)算法。工作量證明基本上就是一個生成某個項目比較難,但是容易驗證(其正確性)的算法。這個項目被稱之為“證明”,聽起來就像是它證明了計算機執行了特定的工作量。

在 SnakeCoin 中,我們創建了一個簡單的 PoW 算法。要創建一個新區塊,礦工的計算機需要遞增一個數字,當該數字能被 9 (“SnakeCoin” 這個單詞的字母數)整除時,這就是最后這個區塊的證明數字,就會挖出一個新的 SnakeCoin 區塊,而該礦工就會得到一個新的 SnakeCoin。

我們差不多就要完成了。在運行了完整的 SnakeCoin 服務器代碼之后,在你的終端可以運行如下代碼。(假設你已經安裝了 cCUL)。

對代碼做下美化處理,我們看到挖礦后我們得到的新區塊的信息:

大功告成!現在 SnakeCoin 可以運行在多個機器上,從而創建了一個網絡,而且真實的 SnakeCoin 也能被挖到了。

你可以根據你的喜好去修改 SnakeCoin 服務器代碼,并問各種問題了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4807

    瀏覽量

    84958
  • 區塊鏈
    +關注

    關注

    111

    文章

    15563

    瀏覽量

    106497

原文標題:用python構建一個極小的區塊鏈

文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    教你用Python從0開始創建區塊

    對數字貨幣的崛起感到新奇的我們,并且想知道其背后的技術——區塊是怎樣實現的。本文通過 Python 構建
    的頭像 發表于 04-20 06:55 ?6217次閱讀
    教你用<b class='flag-5'>Python</b>從0開始創建<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>區塊</b><b class='flag-5'>鏈</b>

    分享50條經典的Python一行代碼

    今天浩道跟大家分享python學習過程中非常經典的50一行代碼,讓大家體驗它簡潔而功能強大的特點。同時給大家分享號主收集到的所有關于python
    發表于 08-16 15:00 ?1077次閱讀

    簡單學學之課堂二:區塊的透明性指的是什么?

    的基礎上教學習者如何去查詢轉賬信息。 般說到透明,大致包括兩含義:1)用來形容物體能透過光線的,例如水是透明的;2)比喻公開,不隱藏。如:透明度。此次課堂里說的透明就是指公開、不隱藏。說到
    發表于 01-05 14:19

    什么是區塊 區塊有什么用

    與存儲數據、利用分布式節點共識算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的種全新的分布式基礎架構與計算范式。 簡單地說,
    發表于 03-26 11:31

    區塊軟件開發公司談未來區塊的主要應用方向

    。它使用由自動腳本代碼組成的智能契約對數據進行編程和操作。以下是未來世界區塊應用的四方面。  1、財務管理行業  區塊
    發表于 11-22 16:54

    區塊將如何優化產業

    的新區塊渠道的興起,運用和基礎渠道開端解耦合,在以太坊開發的更為完善的區塊基礎協議上面,開發者可以開發各式各樣的去中心化運用(Dap
    發表于 12-13 15:19

    區塊在其他領域的些應用

    通過區塊技術的匿名性和數據公開透明性,就可以實現數據的前臺匿名、后臺實名可控,以及區塊的可溯源、不可篡改等特性,是可以運用在法定的數字貨
    發表于 01-07 17:42

    企業結合區塊創建區塊技術落地應用有什么特色

    操作都會使得賬冊狀態發生改變,比如增加條記錄;(2區塊(Block):記錄某段時間內發生的所有交易和狀態結果,是對當前賬本狀態的次共識;(3)
    發表于 12-19 11:30

    區塊+從全球50案例看區塊的應用與未來》高清pdf

    區塊+從全球50案例看區塊的應用與未來》高清pdf百度網盤鏈接: https://pan
    發表于 03-13 00:42

    區塊錢包軟件開發,區塊錢包源碼搭建

    什么是區塊錢包?區塊錢包本質上是工具,目前絕大多數的
    發表于 05-26 16:30

    區塊分成兩部分, 一個區塊一個

    就稱之為“區塊(block)”。以比特幣的區塊為例,它完整記錄了網絡上的每筆歷史交易,好比是
    發表于 03-20 08:55

    什么是區塊區塊都有哪些應用?

    什么是區塊區塊未來的應用前景怎樣?
    發表于 06-28 09:20

    如何使用50Python代碼實現AI的動作平衡

    本文將為大家展示如何通過 Numpy 庫和 50 Python 代碼,使用標準的 OpenAI Gym平臺創建智能體 (agent),就教會機器處理推車桿問題 (cart pole
    的頭像 發表于 06-16 10:40 ?3153次閱讀

    python設計簡單推薦系統的資料和完整代碼

    本文檔的主要內容詳細介紹的是python設計簡單推薦系統的資料和完整代碼免費下載。
    發表于 03-30 09:32 ?14次下載

    如何在Rust項目中使用InfluxDB 2.x

    Rust是種系統編程語言,它具有高性能、內存安全和并發性等特點。InfluxDB是開源的時序數據庫,它專門用于存儲和查詢時間序列數據。InfluxDB 2.x是InfluxDB的
    的頭像 發表于 09-19 16:33 ?703次閱讀
    主站蜘蛛池模板: 国产人妻人伦精品59HHH | 亚洲视频 在线观看 | 玖玖热视频一区二区人妻 | 欧美多人群p刺激交换电影 欧美多毛的大隂道 | 99福利视频| 国产成人精品亚洲线观看 | 共妻肉多荤文高h一女n男 | 岛国大片在线播放高清 | 国产成人啪精视频精东传媒网站 | 啊灬啊别停灬用力啊老师 | 忘忧草在线影院www日本 | 老师的蕾丝小内内湿透了 | 久久九九青青国产精品 | 青青久在线视频免费观看 | 成人麻豆日韩在无码视频 | 精品国产乱码久久久久久口爆 | 欧美大片免费观看 | 国产精品高清在线观看地址 | 日本成熟bbxxxxxxxx | 久草色香蕉视频在线 | 亚洲精品沙发午睡系列 | 老司机试看午夜 | 日本护士在线观看 | 精品无码一区二区三区不卡 | 国产精品视频yy9099 | 亚洲AV久久无码精品九九软件 | 伦理电影v男人天堂 | 成人国产在线观看 | 日本熟妇乱妇熟色在线电影 | 亚洲不卡高清免v无码屋 | 久久婷婷色香五月综合激情 | 久久成人a毛片免费观看网站 | 欧美日韩无套内射另类 | 久久免费精品国产72精品剧情 | 九九热视频免费 | 亚洲妈妈精品一区二区三区 | 亚洲 视频 在线 国产 精品 | 玩弄朋友娇妻呻吟交换电影 | 无码任你躁久久久久久老妇双奶 | 爆操大胸美女 | 九九热这里只有国产精品 |