2019独角兽企业重金招聘Python工程师标准>>>

[国内首家]以太坊区块链实战教学:http://edu.csdn.net/course/detail/6455

LinApex个人简介

奋斗在区块链网络在数字货币交易平台,底层框架设计,区块链钱包,区块链解决方案一线,做过人工智能,金融支付行业,目前正在做一款区块链+黄金的App系统。

玩赚区块链QQ群:128148617

连载系列(基于以太坊)

开发系列

1、【区块链】以太坊区块链技术初探

2、【区块链】以太坊区块链环境搭建

3、【区块链】以太坊区块链概念了解

4、【区块链】以太坊区块链技术进阶

源码系列

1、【以太坊源码】编译以太坊源码,打造自己的公链私链

2、【以太坊源码】以太坊源码研究系列(以太坊模拟机、挖矿、点对点网络库、节点发现、合约代码传输、加密签名等)

区块链基本概念

    区块链就是通过密码学的方式形成的一个由集体维护的分布式数据库。

区块链的概念最近很火,它来自于比特币等加密货币的实现,但是目前,这项技术已经逐步运用在各个领域。什么是区块链技术?为了感性认识这个问题,我们可以使用谷歌地球的例子做类比,ajax不是什么新技术,但组合在一起就成就了产品谷歌地球,与之类似,区块链也不是什么新技术,但与加密解密技术、P2P网络等组合在一起,就诞生了比特币。技术人员,特别是Web开发工程师,学习了解ajax技术最早是被谷歌地球酷炫的效果所吸引。而现在,历史再一次重演,很多人被比特币的疯狂发展所吸引,进而开始研究其背后的技术——区块链。

区块链作为比特币背后的技术,无需中心服务器,可实现各类存储数据公开、透明、可追溯。原本是比特币等加密货币存储数据的一种独特方式,是一种自引用的数据结构,用来存储大量交易信息,每条记录从后向前有序链接起来,具备公开透明、无法篡改、方便追溯的特点。实际上,这种特性也直接体现了整个比特币的特点,因此使用区块链来概括加密货币背后的技术实现是非常直观和恰当的。区块链是一项技术,加密货币是其开发实现的一类产品(含有代币,也有不含代币的区块链产品),不能等同或混淆。与加密货币相比,区块链这个名字抛开了代币的概念,更加形象化、技术化、去政治化,更适合作为一门技术去研究、去推广。

所以,目前当大家单独说到区块链的时候,就是指的区块链技术,是实现了数据公开、透明、可追溯的产品的架构设计方法,算作广义的区块链。而当在具体产品中谈到区块链的时候,可以指类似比特币的数据存储方式,或许是数据库设计,或许是文件形式的设计,这算作狭义的区块链。广义的区块链技术,必须包含点对点网络设计、加密技术应用、分布式算法的实现、数据存储技术的使用等4个方面,其他的可能涉及到分布式存储、机器学习、VR、物联网、大数据等。狭义的区块链仅仅涉及到数据存储技术,数据库或文件操作等。本文的区块链,指的是广义的区块链。

区块链架构

区块链专业名词

1. 特定用户:指按照中国法律法规及政策规定必须要配合融识履行个人信息披露义务的用户。
2. 私钥:由256位随机字符构成,是用户拥有并使用数字代币的核心。
3. 公钥:由私钥借助密码学原理单向推导生成,并用以生成区块链数字钱包地址,数字钱包地址即为公开收款地址。
4. 助记词:符合区块链BIP39 行业标准,由随机算法生成的12(或15/18/21/24)个有序单词组成。是私钥的易记录表现形式,方便用户备份保管。
5. Keystore: 是私钥或助记词经过用户设置的钱包密码加密保存的文件形式,它只存储在您的这台移动设备中,不会同步至融识服务器。
6. 数字代币:指以太坊目前支持的数字代币种类,包括但不限于ETH、DGD等。
7. 个人信息:指以电子或者其他方式记录的能够单独或者与其他信息结合识别用户个人身份的各种信息,包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码、银行卡号、邮件地址、钱包地址、移动设备信息、操作记录、交易记录等,但不包括用户的钱包密码、私钥、助记词、Keystore。
8. 去中心化:这个系统在最初设定完规则后就可以自主开始在互联网中运行,不依靠中央的服务器和监管机构,每个参与的节点都是平等和自由竞争的。是一种去中心化自治系统(DAC)。
9. 以太坊:以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统,以太坊从诞生到2017年5月,短短3年半时间,全球已有200多个以太坊应用诞生。以太坊是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。 以太坊可以用来编程,分散,担保和交易任何事物:投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产。

待续~

以太坊常用网址

1、以太坊官方网站:https://ethereum.org/

该网站为以太坊的官方网站,有详细的以太坊介绍和各种连接地址,推荐详细看一看

2、以太坊所有源码地址(官方):https://github.com/ethereum/

该github为以太坊所有项目的源码地址,以及更新和发布。

3、以太坊Homestead文档地址(官方):http://www.ethdocs.org/en/latest/index.html

该网站为以太坊的详细介绍文档,基本包括了以太坊的方方面面,如果有什么不清楚的原理和应用,基本都可以在这里找到答案和线索。

4、以太坊网络状态地址(官方):https://ethstats.net/

该网站能全面的显示网络状态,包括节点、难度、算力等等,非常直观

5、以太坊资源网站(官方):http://ether.fund/

该网站提供了以太坊很多应用资源,比如市场情况、合约辅助工具、已发布的智能合约、以太坊网络、DAAP等,方便开发和发布。

6、Solidity编程文档(官方):http://solidity.readthedocs.io/en/latest/

该网站提供了以太坊Solidity语言的全面参考手册,学习Solidity语言必备。

7、以太坊网络扫描(官方):http://etherscan.io/

该网站提供了以太坊网络的各种状态,比如帐号的详情、TOKEN详情,难度详情、区块详情,非常方便和直观。

8、以太坊官方博客:https://blog.ethereum.org/

9、以太坊wiki百科地址:https://github.com/ethereum/wiki/wiki

在这里有白皮书、黄皮书以及开发指南,比较全面。

10、以太坊中文爱好者网站:http://ethfans.org/

该网站为国内以太坊爱好者自发建立的网站,内容比较全,信息更新很快。

11、以太坊的gitter的实时交流网站:https://gitter.im/orgs/ethereum/rooms

该网站是以太坊的gitter chart的网站,根据项目分了很多房间,只要你提问题,大部分有人回答,很不错,不过只能英语交流。

12、以太坊的官方论坛:https://forum.ethereum.org/

官方论坛,没什么好说的,我遇到的几个问题,都是在这里找到的答案

13、以太坊第三方强大的IDE:https://live.ether.camp/

这个是第三方发布的Solidity IDE,我看了一下,很强大,强大到还不太会用,他的目标是企业级IDE,老外用的较多。

14、以太坊开发框架Truffle说明书:http://truffle.readthedocs.io/en/latest/

以太坊目前很流行的开发框架Truffle的说明书,这个框架比较流行。

15、以太坊开发框架dapple说明书:http://dapple.readthedocs.io/en/master/

这个开发框架是在gitter chart上看到的,感觉用的人不多,先观察

16、以太坊官方推荐开发框架Meteor说明书:https://github.com/ethereum/wiki/wiki/Dapp-using-Meteor

这个开发框架是以太坊官方推荐的,写进了以太坊的官方wiki,值得学习,当然,以太坊官方经常转换方向,以后换别的也没准

以太坊各个项目说明

(一)Go-ethereum项目

开发语言:go语言

客户端文件:Geth

界面:命令行

适用平台:windows、linux和OSX

功能和特点:该项目是使用最广泛的以太坊客户端,大部分节点都是运行的该客户端,教程和例子也最多,推荐使用,可用于挖矿,组建私有链,管理账号,部署智能合约等常用功能,不可以编译智能合约。

(二)webthree-umbrella项目

此项目包含3个客户端

开发语言:c++

客户端文件:AlethZero、Mix和Eth

使用平台:windows、linux和OSX

界面:图形化界面

功能和特点:该项目严格来说是cpp-ethereum 项目的一个shell,是以太坊基金会的前CTO,Gavin Wood主持编写的,所以人气也很高,易用性也很好。AlethZero是图形化的钱包客户端,对应的是Geth的功能,不过是全图形化的。但是随着后续以太坊基金会主推的图形化钱包Mist的推出,渐渐没落。Mix 是智能合约(以太坊称为DAPP)的开发IDE,可以支持智能合约(DAPP)的编写、调试,部署,全图形化界面,但是目前已经停止开发了,开发组转向了Remix。Eth是C++编写的命令行客户端功能和Geth一样。

(三)Mist项目

开发语言:JavaScript

客户端文件:Mist(目前使用Ethereum-Wallet的名称)

使用平台:windows、linux和OSX

界面:图形化界面

功能和特点:该项目是以太坊基金会主推的项目,Mist定位不只是一个钱包,而是将来DAPP(智能合约的应用APP)市场,类似于苹果市场,在这里可以有你的账号,可以浏览、发布和买卖以太坊的DAPP应用。目前因为开发还不够全面,名称暂时显示为Ethereum-Wallet,作用也很简单,就是一个钱包的功能。强烈推荐,未来的主流客户端。

(四)solidity项目

开发语言:C++

客户端文件:solc

使用平台:windows、linux和OSX

界面:命令行界面

功能和特点:该项目是以太坊智能合约(DAPP)的编程语言,使用solc作为编译程序,该项目主要用于编译,严格来说是一个基本的编译平台,一般开发可用MIX替代。

(五)browser-solidity项目

开发语言:C++

客户端文件:浏览器中显示

使用平台:windows、linux和OSX

界面:浏览器界面

功能和特点:该项目是智能合约浏览器版本的开发环境,可以支持在浏览器中直接开发、调试和编译,对于初学者来说,可以快速上手,不需要安装,非常方便,直接访问地址使用:https://ethereum.github.io/browser-solidity/

(六)pyethereum项目和ethereumj项目

pyethereum项目是用Python语言编写的以太坊客户端,ethereumj项目是用Java语言编写的以太坊客户端,只是语言不同,和前面GO语言编写的客户端Geth的功能完全相同。

(七)etheminer项目

开发语言:C++

客户端文件:ethminer

使用平台:windows、linux和OSX

界面:命令行

功能和特点:该项目是cpp-ethereum项目的一部分,用于和Geth配合进行GPU挖矿,比CPU挖矿效率高100多倍,也可以用于矿池挖矿

区块链的诞生是为了解决什么问题?

在支付宝转账的时候,作为用户的你感觉是把你的钱直接打到对方的账户中。但!....事实是这样的:

这里的支付宝等公司就是“第三方”,那为什么我们俩转账为什么要有一个“第三方”出现?

这是阿里巴巴的纪录片《造梦者》中的一段话,ps:下文会多次引用,就可以很好解释“第三方”这个名词,这也是淘宝和支付宝诞生的伊始。换句话说,当时的阿里是被逼做了这个“第三方”,因为当时没有任何一家公司能够担任这样的角色,于是阿里成为了信任的中心,商家和用户因为“信任”,选择把钱给阿里。但是,如果阿里携款潜逃了(尽管不可能...)或者财务运营商出了问题(毕竟是人嘛...)怎么办?如果有一个机器或者一个“超级系统”来做这些事就好了!在互联网技术更新替换了十几年后的今天,区块链出现在我们面前,没错!它就是那个“超级系统"!一个信任的机器

有了区块链,事情开始变得不一样了。

传统中心化的方式:

区块链网络下的”去中心化的方式:

在去中心化的网络下,每个用户之间都可以是直接联系的,不再有任何第三方的参与,用户间的转账就像手递手付现金一样,这也是为什么比特币会被称为”电子现金“。

好了,现在A已经把钱转给B了,那么谁来记这笔账呢?之前有支付宝帮我记账对账,会统一存在支付宝后台系统中。为了让所有用户的交易都被记录下来并且账目都是正确的,支付宝会为此付出巨大努力。看看支付宝的初期...

每天1000笔的账单,人工对账就已经很痛苦了。以现在支付宝的体量,每天少则几十万的账单,即使是系统对账也难免漏单,并且要付出相应的人力、物力来维护这一套非常复杂的收支清算系统。说了这么多,那区块链是怎么对账的呢?答案是:没有!在区块链的网络中根本不需要对账,零清算,因为区块链中的每一个节点(就是一台计算机或理解为一个用户)自己都有一个账本,这个账本是实时更新的,区块链网络中发生的任何交易都会被记到你自己的账本中,没错,别人的帐你也有,但是你是不知道这个人是谁的,因为他们统一都长这个样子:

0x3c7e7bd1ff2952fbf5a16d0d8b0fc2803162b088

这就意味着,以前由一个中心化的机构帮你记账对账,现在由每一个网络中的参与者帮你记账,大家都有同一个账本。如下图

每个人拥有同一个账本,即使你篡改了你自己的账本,让你的账上多了1亿,可是51%以上的账本中你的账户还是1分钱,那就说明你的帐上余额就是1分钱,无法抵赖。当然,如果你能控制网络51%的人在账本中帮你把一分钱变成1亿,你就能获得一亿,但基本上就要动用举国之力了....骚年,你确定你可以?

这就是为什么大家说区块链网络是安全的,因为攻击成本太过巨大,打个比方:比特币现在市值80亿美元,如果你想攻破它并得到这80亿美元,你可能要花费200多亿美元......

说了上面这么多其实就是想说明区块链的几个特性:

  1. 去中心化,没有第三方中介,一切都由程序来完成。
  2. 安全性,主要体现在分布式、51%攻击,即使一个节点被攻击或宕机也不会影响网络的运行。
  3. 最核心的就是:去信任。一切社会行为都要建立在”信任“的基础上,这也是区块链解决的最根本的问题。

区块链的落地场景

全球P2P租赁    https://atlant.io/cn/#contribute

京东区块链    https://www.leiphone.com/news/201612/VGtxUJDpj12JswTv.html

微众银行:贷款清算
    中国银联:积分兑换
    Ripple:跨境支付
    ABRA:跨境支付
    Circle:境内外支付
    BTCJam:网络借贷
    Wave:供应链金融& 贸易金融
    Chain:股权交易发行
    ShoCard:身份识别

技术书籍

《区块链技术指南》 CSDN上必须要设置一个分数,所以弄了最低2分,本来想免费的。

转载于:https://my.oschina.net/linapex/blog/1553703

【区块链】以太坊区块链技术初探相关推荐

  1. 区块链 以太坊 区块结构详解

    一.结构 区块由两部分组成,分别是 区块头(header) 区块体(body) 1. 结构图 2. 区块头(header) 区块头存储了区块的元信息,用来对区块内容进行一些标识,校验,说明等. 通用字 ...

  2. java以太坊源码分析_以太坊区块链Java(EthereumJ)学习笔记:区块链结构-Go语言中文社区...

    本文对EthereumJ的区块链相关的代码做一个简单的介绍. 以太坊区块链 以太坊区块链是在Bitcoin区块链的基础上发展起来的.区块链的数据结构既保留了Bitcoin区块链验证数据的真实性和完整性 ...

  3. 曲速未来 揭秘:以太坊区块链和ERC20代币的技术挑战

    区块链安全咨询公司 曲速未来 消息:在2018年,可以看到以太坊区块链的能力的许多进步.这些创新是由遍及庞大且不断发展的生态系统的以太坊和ERC20令牌项目推动的. 这些创新对于以太坊作为新标记的顶级 ...

  4. 最新重点关注区块链技术,发现以太坊(etherenum)的技术进行两次分叉etz和etf。

    发现以太坊(etherenum)的技术进行两次分叉,一个是ETF(以太雾),另一个ETZ(以太零). ETF:可视为ETH的扩展(发展以太雾技术为主) ETZ:挖矿算法跟ETH一样,但有意思的是它继承 ...

  5. 区块链以太坊五大开发工具,你喜欢哪个?

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 以太坊(Ethereum)是运行智能合约的最受欢迎的分布式平台之一.因为虚拟货币近年来的发展,以太坊以区块链为基础引起广 ...

  6. 以太坊区块链同步_以太坊69:如何在10分钟内建立完全同步的区块链节点

    以太坊区块链同步 by Lukas Lukac 卢卡斯·卢卡奇(Lukas Lukac) Ethereu M 69:如何在10分钟内建立完全同步的区块链节点 (Ethereum 69: how to ...

  7. 如何搭建socks5和ss节点_以太坊区块链搭建与使用(三)-联盟链

    首先对以下概念说明下: 一.以太坊大家都知道比特币使用的技术是区块链技术,比特币也是区块链技术的代表. 即比特币=区块链1.0随着区块链技术的发展以太坊也诞生了,也就是我们说的 区块链2.0.为什么说 ...

  8. EOS区块链和以太坊区块链那个更好?

    显然,你已经听说过两个最受欢迎的智能合约区块链,但想知道EOS与以太坊之中哪个更好?或许你想比较一下两种技术?好吧,你来对了地方,因为我要告诉你你需要知道的一切! 在这个EOS vs Ethereum ...

  9. 以太坊区块链快速入门

    一.基本概念 1.什么是以太坊? 以太坊是由社区驱动的技术,为加密货币以太币(ETH)和成千上万的去中心化应用程序提供动力. 属于所有人的银行服务 现实生活中不是每个人都能使用金融服务.但是只要您有网 ...

最新文章

  1. 李飞飞对话顶级神经科学家纽瑟姆:大脑也做「微积分」,最高效GPU依然很浪费...
  2. ETH Zurich提出新型网络「ROAD-Net」,解决语义分割域适配问题
  3. ROS学习笔记三:编写第一个ROS节点程序
  4. gzip, gunzip, zcat - 压缩或展开文件
  5. 基于django的视频点播网站开发-step11-后台用户管理功能...
  6. did双重差分法_Stata中双重差分操流程及代码
  7. Linux编译程序时加-I指定头文件位置
  8. 高斯噪声,椒盐噪声的思想及多种噪声的实现
  9. Spring AOP之公共的切入点配置
  10. 图片列表页的显示方法
  11. 【渝粤教育】国家开放大学2018年秋季 0242-21T机械制图 参考试题
  12. Java对象序列化原理以及Serializable接口
  13. 区分微信小程序是否支持canvas 2d
  14. 基于51单片机的数字电流电压表
  15. linux调整列显示宽度,使单元格或列自动调整宽度 - 在SWT中使用OLE操纵Excel_Linux编程_Linux公社-Linux系统门户网站...
  16. SQLOS任务调度算法
  17. windows service.bat java 内存设置_Tomcat加大内存设置从windows服务启动不生效的问题...
  18. 美国签证(B1)经验总结
  19. C、C++、java的区别
  20. Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解

热门文章

  1. TCM、TPM、TPCM
  2. 制作视频中的字幕很麻烦?一个免费工具帮你搞定!
  3. linux mount命令
  4. js时间转换,国际时间
  5. 气象-数据同化学习(OBSPROC)(2)
  6. thinkPHP打包下载
  7. mysql memory 索引_理解MySQL——索引与优化
  8. Win10桌面右键,显示设置报错,解决办法
  9. druid监控数据转存mysql_使用Druid监控SQL执行状态
  10. java高级--泛型