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多亿美元......
说了上面这么多其实就是想说明区块链的几个特性:
- 去中心化,没有第三方中介,一切都由程序来完成。
- 安全性,主要体现在分布式、51%攻击,即使一个节点被攻击或宕机也不会影响网络的运行。
- 最核心的就是:去信任。一切社会行为都要建立在”信任“的基础上,这也是区块链解决的最根本的问题。
区块链的落地场景
全球P2P租赁 https://atlant.io/cn/#contribute
京东区块链 https://www.leiphone.com/news/201612/VGtxUJDpj12JswTv.html
微众银行:贷款清算
中国银联:积分兑换
Ripple:跨境支付
ABRA:跨境支付
Circle:境内外支付
BTCJam:网络借贷
Wave:供应链金融& 贸易金融
Chain:股权交易发行
ShoCard:身份识别
技术书籍
《区块链技术指南》 CSDN上必须要设置一个分数,所以弄了最低2分,本来想免费的。