給Web開發人員的以太坊入坑指南

以太坊現在各種學習資料數不勝數,但由于以太坊正處于飛速發展階段,有些學習資料很快就過時了。所以想找到有價值的資料無異于大海撈針。我費了很大功夫,才建立起對以太坊的整體認識,搞清楚它的工作機制。我相信很多躍躍欲試的開發人員正面臨著跟我一樣的問題,所以我把自己的認識整理出來,希望能對大家有所幫助。

對于web開發人員來說,webapp的客戶端服務器架構很清晰。

我們一般會把web程序部署在AWS、Heroku或某個云平臺提供的云主機上,所有客戶端都跟這個中心程序交互。這些客戶端可能是瀏覽器,也可能是使用API的其它程序,不管怎樣,總是客戶端發起請求給服務器,服務器再跟數據庫或緩存交互,讀/寫/更新數據庫中的數據,然后給客戶端發送一個響應。

大部分情況下,這個架構很好用。但有時候,如果數據庫是公開的,所有人都可以安全地訪問,不用把數據全權交給webapp的控制者,對你來說真的非常重要。

比如說你是eBay上的明星賣家,已經賺了上千個好評了。但不知為什么eBay忽然把你的賬號給封了,這可能會讓你損失慘重,甚至給你的生意帶來毀滅性的打擊。如果能把顧客對你的評論和打分都挪到另外一個平臺上,比如到eBay的競爭對手那里,你是不是馬上就會有種絕處逢生的感覺?

雖然eBay還充當著買賣雙方的擔保人,但每一筆生意他都是要抽取傭金的。如果不需要擔保人,買賣雙方不僅能降低交易成本,并且還能訪問到自己的所有數據,你是不是會覺得特別理想?去中心化應用就是要幫你實現這個理想,而以太坊會讓DApp(去中心化應用)的搭建變得非常輕松。

以太坊DApp的架構如下所示:

\"image\"

如果仔細觀察,你會發現所有客戶端(瀏覽器)都是跟自己的程序實例通訊的,不再連到一個中心服務器上。這就是說每個想要跟Dapp交互的人都要在自己的電腦/手機上跑一份完整的區塊鏈,也就是說想用這個程序,你必須先把整條區塊鏈全都下載到本地。乍一看你可能會覺得這很搞笑,但這樣確實能解決對中心服務器的依賴問題。

實際上也并不需要真的把整條區塊鏈都下載下來,有幾種兩全其美的辦法,既能得到去中心化的好處,又可以快捷地完成交互。

那么區塊鏈究竟是什么呢?

  • 數據庫:以太坊網絡中每出現幾筆交易,就會打包成一個區塊,并且每個新的區塊都會連到區塊鏈的最后一個區塊上。所有的交易數據都放在這些連在一起的區塊里,這就是區塊鏈。如果eBay用區塊鏈做數據庫,那么買賣雙方之間發生的所有交易,不管是銷售、退款,還是糾紛,都被記錄在區塊鏈上,并且所有人都能看到。為了確保網絡中所有節點都有相同的數據副本,同時也為了確保寫到這個數據庫中的數據都是有效的,以太坊用了一種被稱為工作證明的算法。

  • 代碼:剛才只是介紹了區塊鏈作為數據庫存儲數據的一面。但購買、銷售、取消訂單、退款等諸如此類的業務邏輯要放在哪里呢?在以太坊上,我們用一種被稱為Solidity的語言編寫程序代碼(被稱為合約)。然后再用Solidity編譯器將這些合約編譯成以太坊字節碼,部署到區塊鏈上。雖然目前能夠編寫合約的不止Solidity一種語言,但其他語言相對來說要小眾得多。
    所以我們基本上可以說,區塊鏈存儲你的數據,存儲你的代碼,還在EVM(以太坊虛擬機)上運行這些代碼。

為了搭建在web上運行的dapp,以太坊推出了一個Javascript庫,web3.js,它可以連接區塊鏈節點。所以我們只要把這個庫加到自己熟悉的框架中就可以了,比如reactjs、angularjs或vuejs。

這個平臺的另一個重要特性是它的金融功能。如果我告訴你,只要用上dapp,就會給你一個銀行賬戶,你會不會覺得很吃驚?實際上不是一個銀行賬戶,而是隨便你創建多少個賬戶都行。這些賬戶被稱為錢包,用來存放你的以太幣(以太坊體系內所用的貨幣)和交易。

本文沒有介紹區塊鏈的內部工作機制,因為我想一篇文章能完成一件事情就夠了,這里的重點是讓你了解基于區塊鏈的dapp跟中心化的webapp有什么不同。希望你現在對以太坊是什么,以及怎么用它搭建去中心化應用程序有了一個清晰的總體認識。

原文鏈接:https://medium.com/@mvmurthy/ethereum-for-web-developers-890be23d1d0c

活動推薦

\"\"
12 月 7 日北京 ArchSummit 全球架構師峰會上,來自阿里、京東、360 的講師齊聚一堂,共同分享“分布式 BaaS”、“區塊鏈安全”和“智能合約”等區塊鏈技術相關經驗與實踐。詳情點擊 https://bj2018.archsummit.com/schedule

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281508.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

和碩看重物聯網大勢 程建中:從擅長領域出發

物聯網(IoT)前景可期已是全球科技產業的共識,但是如何真正找出到位的商機,卻考驗產業鏈業者的智能。蘋果iPhone代工廠和碩聯合科技執行長程建中表示,物聯網與大數據相關應用商機看俏,物聯網筑的夢比網際網路還大,當年網…

html選擇文本框后提示消失,兩種方法實現文本框輸入內容提示消失

第一種方法:基于HTML5 input標簽的新特性 - placeholder 。另外,x-webkit-speech 屬性可以實現語音輸入功能。第二種方法:用span模擬,定位span,借助JS鍵盤事件判斷輸入,確定span里的內容顯示隱藏。無標題文…

TensorFlow基本計算單元——變量

# -*- coding: utf-8 -*- import tensorflow as tf a 3 # 創建變量 w tf.Variable([[0.5, 1.0]]) #行向量 x tf.Variable([[2.0], [1.0]]) y tf.matmul(w, x) #矩陣相乘 print(y) # Tensor("MatMul:0", shape(1, 1), dtypefloat32)init_op tf.global_variables…

程序人生:織夢dedecms后臺/會員驗證碼關閉

dedecms默認是所有的功能幾乎只要用到驗證碼的地方我們都需要驗證的,如果要關閉一些驗證功能我們可以參考下面的教程,這里介紹了關閉后臺,留言板,會員系統等驗證碼功能關閉了。提示:支持DedeCMS V5.6 以上的所有版本取…

html中圖片的屬性優化,Html標簽元素在SEO中的優化方式(二)

接上html標簽元素在SEO中的優化方式(一)中對HTML界面的介紹,我們今天繼續補充HTML標簽的SEO優化方式在內容中有幾個值得去研究一下的優化元素--導航和內部鏈接:很明顯的一點,建立導航會使搜索引擎可以容易的確定網站結構,但是很多…

Gartner認為安全性將取代成本和敏捷性成為政府部門采用云服務的首要原因

全球領先的信息技術研究和顧問公司Gartner表示,公有云如今具備可擴展性、計算威力、海量存儲和安全性,可打造更好的政府數字化平臺并滿足對業績和價值不斷增長的期望值。 Gartner預計到2018年,提升的安全性將取代成本節約和敏捷性成為政府部門…

一款簡單的縮放拖拽圖片控件

本文介紹一個針對 .NET 桌面應用程序的獨立圖片縮放拖拽顯示控件 SQPhoto[1]。SQPhoto 是一個 Windows 桌面應用的組件,支持 .NET6 和 .NET Framework 4.6 。基于 PictureBox 的圖片展示工具,增加了拖動和縮放功能,便于在某些場景下的圖片展…

安卓虛擬機與Hyper-V沖突

經過各種經驗,哪個安卓虛擬機跟Hyper-V都存在著沖突。 解決方案一 程序中卸載Hyper-V,之后還要再配置太麻煩。 解決方案二 1、關掉Hyper-V的啟動項,命令如下。 bcdedit /set hypervisorlaunchtype off 重啟在開安卓模擬器藍屏就沒有了。 2、重…

共軌之家獲吉利家族基金新一輪融資 5個月前曾獲磐霖資本領投A輪融資

11月27日消息,近日,國內最大商用車技術服務平臺共軌之家對外宣布完成新一輪融資。本輪融資由吉利家族基金投資,未來將推進共軌之家占領商用車后市場。 成立于2014年的共軌之家,以商用車技術知識科普社區起家,積累起國…

光伏產業的發展推動太陽能組件技術進步

從全球能源發展趨勢的角度來看,太陽能等可再生能源勢必逐步替代不可再生的傳統能源,光伏產業將在全球各國的經濟發展中扮演重要的角色。大力開發和利用光伏產業,對于優化我國能源結構,優化環境,保證我國社會經濟可持續…

HTML怎么讓div全透明,設置div為透明 怎樣才讓div里面的div不透明?

#a{ background:#FFCC33; filter:alpha(opacity:0); width: 300px; heig#a{background:#FFCC33; filter:alpha(opacity50); /*支持 IE 瀏覽器*/-moz-opacity:0.50; /*支持 FireFox 瀏覽器*/opacity:0.50; /*支持 Chrome, Opera, Safari 等瀏覽器*/width: 300px;height:300px;}還…

k64 datasheet學習筆記12---System Integration Module (SIM)

1.前言 Features of the SIM include: System clocking configuration(1)System clock divide values(2) Architectural clock gating control(3) USB clock selection and divide values(4&…

informix linux安裝步驟

informix linux安裝步驟整個安裝過程都以root用戶運行1. 創建informix用戶# groupadd informix# useradd -g informix informix2. 創建安裝目錄: "/opt/informix"# mkdir /opt/informix# chown informix.informix /opt/informixyum install libc.so.6 libncurses.so.…

html overflow 樣式,css樣式之overflow-x屬性樣式

overflow-x是overflow子花樣,平日也很少用的。overflow-x設置匿伏溢出過寬模式(比如過寬圖片)、設置對象底部轉折條等重要。overflow-x語法與根本懂得1、overflow-x可設置值overflow-x : visible | auto | hidden| scroll值與解釋引見:visible :  不剪切…

泰國能源部攜手本土企業打造智慧城市

泰國能源部與泰國安美德集團簽署諒解備忘錄,共同投資開發新能源在工業生產領域的應用。俞懿春 攝 泰國能源部與泰國安美德(AMATA)集團昨天在曼谷簽署諒解備忘錄,以公私合作模式推動安美德智慧城市開發,響應泰國政府提出…

MAMP升級mysql5.6到5.7

RT 1.先把mamp環境停掉 sudo sh /Applications/MAMP/bin/stop.sh 2.然后使用brew安裝mysql5.7 brew install mysql 3.默認安裝的是最新版本,因為是5.7所以要手動設置一下root用戶的密碼,跟著步驟設置就行 /usr/local/Cellar/mysql/5.7.20/bin sudo ./mysql_secure_…

C# WPF GridControl用法舉例

概述GridControl是Dev中的表格控件&#xff0c;類似于Winfrom中的DataGridView&#xff0c;以及WPF中的DataGrid&#xff0c;但是這個控件功能比原生的功能要強大很多&#xff0c;下面用實例舉例說明此控件的用法.代碼前臺XAML&#xff1a;<UserControl x:Class"Calibu…

js中關于Blob對象的介紹與使用

js中關于Blob對象的介紹與使用 blob對象介紹 一個 Blob對象表示一個不可變的, 原始數據的類似文件對象。Blob表示的數據不一定是一個JavaScript原生格式 blob對象本質上是js中的一個對象&#xff0c;里面可以儲存大量的二進制編碼格式的數據。 創建blob對象 創建blob對象本質上…

計算機應用基礎答案解析,計算機應用基礎答案

專業課作業1.一般認為&#xff0c;世界上第一臺電子數字計算機誕生于________。A.1946年2.當前的計算機一般被認為是第四代計算機&#xff0c;它所采用的邏輯元件是_______。C.大規模集成電路3、下列關于世界上第一臺電子計算機ENIAC的敘述中&#xff0c;錯誤的是_______。D.確…

光伏發展路線圖將發布 促產業優勝劣汰

工信部官網3月2日消息&#xff0c;工信部發布《2016年我國光伏產業運行情況》。2016年&#xff0c;我國光伏產業總產值達3360億元&#xff0c;同比增長27%。下一步將繼續發布《中國光伏產業發展路線圖》(2017年版)&#xff0c;推動應用光伏系統的新能源充電設施試點&#xff0c…