链客,专为开发者而生,有问必答!html
此文章来自[区块链技术社区](https://www.liankexing.com),未经容许拒绝转载。linux
开发系列c++
一、【区块链】以太坊区块链技术初探 二、【区块链】以太坊区块链环境搭建 三、【区块链】以太坊区块链概念了解 四、【区块链】以太坊区块链技术进阶
源码系列git
一、【以太坊源码】编译以太坊源码,打造本身的公链私链 二、【以太坊源码】以太坊源码研究系列(以太坊模拟机、挖矿、点对点网络库、节点发现、合约代码传输、加密签名等)
区块链基本概念github
区块链就是经过密码学的方式造成的一个由集体维护的分布式数据库。 区块链的概念最近很火,它来自于比特币等加密货币的实现,可是目前,这项技术已经逐步运用在各个领域。什么是区块链技术?为了感性认识这个问题,咱们可使用谷歌地球的例子作类比,ajax不是什么新技术,但组合在一块儿就成就了产品谷歌地球,与之相似,区块链也不是什么新技术,但与加密解密技术、P2P网络等组合在一块儿,就诞生了比特币。技术人员,特别是Web开发工程师,学习了解ajax技术最先是被谷歌地球酷炫的效果所吸引。而如今,历史再一次重演,不少人被比特币的疯狂发展所吸引,进而开始研究其背后的技术——区块链。 区块链做为比特币背后的技术,无需中心服务器,可实现各种存储数据公开、透明、可追溯。本来是比特币等加密货币存储数据的一种独特方式,是一种自引用的数据结构,用来存储大量交易信息,每条记录从后向前有序连接起来,具有公开透明、没法篡改、方便追溯的特色。实际上,这种特性也直接体现了整个比特币的特色,所以使用区块链来归纳加密货币背后的技术实现是很是直观和恰当的。区块链是一项技术,加密货币是其开发实现的一类产品(含有代币,也有不含代币的区块链产品),不能等同或混淆。与加密货币相比,区块链这个名字抛开了代币的概念,更加形象化、技术化、去政治化,更适合做为一门技术去研究、去推广。 因此,目前当你们单独说到区块链的时候,就是指的区块链技术,是实现了数据公开、透明、可追溯的产品的架构设计方法,算做广义的区块链。而当在具体产品中谈到区块链的时候,能够指相似比特币的数据存储方式,或许是数据库设计,或许是文件形式的设计,这算做狭义的区块链。广义的区块链技术,必须包含点对点网络设计、加密技术应用、分布式算法的实现、数据存储技术的使用等4个方面,其余的可能涉及到分布式存储、机器学习、VR、物联网、大数据等。狭义的区块链仅仅涉及到数据存储技术,数据库或文件操做等。本文的区块链,指的是广义的区块链。
区块链架构web
区块链专业名词ajax
特定用户:指按照中国法律法规及政策规定必需要配合融识履行我的信息披露义务的用户。算法
待续~shell
以太坊经常使用网址数据库
一、以太坊官方网站:https://ethereum.org/
该网站为以太坊的官方网站,有详细的以太坊介绍和各类链接地址,推荐详细看一看
二、以太坊全部源码地址(官方):https://github.com/ethereum/
该github为以太坊全部项目的源码地址,以及更新和发布。
三、以太坊Homestead文档地址(官方):http://www.ethdocs.org/en/lat...
该网站为以太坊的详细介绍文档,基本包括了以太坊的方方面面,若是有什么不清楚的原理和应用,基本均可以在这里找到答案和线索。
四、以太坊网络状态地址(官方):https://ethstats.net/
该网站能全面的显示网络状态,包括节点、难度、算力等等,很是直观
五、以太坊资源网站(官方):http://ether.fund/
该网站提供了以太坊不少应用资源,好比市场状况、合约辅助工具、已发布的智能合约、以太坊网络、DAAP等,方便开发和发布。
六、Solidity编程文档(官方):http://solidity.readthedocs.i...
该网站提供了以太坊Solidity语言的全面参考手册,学习Solidity语言必备。
七、以太坊网络扫描(官方):http://etherscan.io/
该网站提供了以太坊网络的各类状态,好比账号的详情、TOKEN详情,难度详情、区块详情,很是方便和直观。
八、以太坊官方博客:https://blog.ethereum.org/
九、以太坊wiki百科地址:https://github.com/ethereum/w...
在这里有白皮书、黄皮书以及开发指南,比较全面。
十、以太坊中文爱好者网站:http://ethfans.org/
该网站为国内以太坊爱好者自发创建的网站,内容比较全,信息更新很快。
十一、以太坊的gitter的实时交流网站:https://gitter.im/orgs/ethere...
该网站是以太坊的gitter chart的网站,根据项目分了不少房间,只要你提问题,大部分有人回答,很不错,不过只能英语交流。
十二、以太坊的官方论坛:https://forum.ethereum.org/
官方论坛,没什么好说的,我遇到的几个问题,都是在这里找到的答案
1三、以太坊第三方强大的IDE:https://live.ether.camp/
这个是第三方发布的Solidity IDE,我看了一下,很强大,强大到还不太会用,他的目标是企业级IDE,老外用的较多。
1四、以太坊开发框架Truffle说明书:http://truffle.readthedocs.io...
以太坊目前很流行的开发框架Truffle的说明书,这个框架比较流行。
1五、以太坊开发框架dapple说明书:http://dapple.readthedocs.io/...
这个开发框架是在gitter chart上看到的,感受用的人很少,先观察
1六、以太坊官方推荐开发框架Meteor说明书:https://github.com/ethereum/w...
这个开发框架是以太坊官方推荐的,写进了以太坊的官方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:身份识别