给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.mzph.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…