zoukankan      html  css  js  c++  java
  • 如何开始学习以太坊及区块链,辍学程序员创办以太坊

     

    扎克伯格的 Facebook 就是这样的数据寡头,而以太坊之父Vitalik代表的区块链技术正在向其发起挑战, 辍学程序员改变世界,这个长的像马云的90后少年真要击败扎克伯格

    1、百度百科-区块链

    2、比特币公司BTCC于2015年推出了一项服务“千年之链”即区块链刻字服务,就是采用的以上原理。用户可以将通过这项服务将文字刻在区块链上,永久保存

    3、区块链核心技术简介

    区块链主要解决的交易的信任和安全问题,因此它针对这个问题提出了四个技术创新:
    第一个叫分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。不同于传统的中心化记账方案,没有任何一个节点可以单独记录账目,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。另一方面,由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。
    第二个叫做非对称加密和授权技术,存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
    第三个叫做共识机制,就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能。
    最后一个技术特点叫智能合约,智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息(包括医疗信息和风险发生的信息)都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。
     
    5、

    链接:https://www.zhihu.com/question/31112808/answer/122099628

    在谈应用之前,最重要的是先理解它的技术本质是什么, 所有介绍区块链的答案里, 都最先提到了区块链不可篡改的特性, 所以第一个要理解的是它到底是怎么实现不可篡改性的。

    • 先修知识;
      • 密码学Hash()函数的单向性: Hash(x) =y , 通过y很难找到x
      • 哈希链: 假如现在有顺序产生的数据块 A, B , C 。 那么我们可以这样计算一个hash 。 注意 “||” 表示拼接
    h0=  Hash(A) 
    h1 = Hash(B || h0)
    h2 = Hash(C || h1)
    

    • h2是我们计算的hash头部,现在来看, 为什么我们管这个东西叫Hash链, 因为h2 的值依赖于之前一系列数据的内容和计算顺序。 假如说现在你知道了h2 , 别人拿着A,B, C, 他不管是修改A,B, C的任一点内容还是A,B, C的出现顺序,你都无法再次计算出正确的h2

    • 好的, 其实到这里区块链的概念就有点感觉了不是吗, 它其实就是一个哈希链的变种。 怎么变? 添加一个随机数(Nonce)
      • 假如现在有顺序产生的数据块 A, B , C 。 我们来这样计算hash头。 注意 “||” 表示拼接
    h0=  Hash(A|| Nonce0) 
    h1 = Hash(B || h0 || Nonce1)
    h2 = Hash(C || h1 || Nonce2)
    

    • 这里我们还添加一个额外的要求, 就是 h0, h1, h2 必须都得是以指定数目的0 bit开头的,例如要求每个哈希值都必须以5个0开头,则h0,h1,h2都应该是这样的形式(00000*****************)
    • 添加了这个要求以后, h0, h1, h2就都不是那么容易计算的了, 因为你不能根据输出的形式来反推输入是什么, 而A, B, C又是给定的, 那只能不断更改Nonce来穷举计算, 然后找到一个可以满足要求的Nonce值 ,使得h0, h1, h2符合要求
    • 到这里大家就知道所谓的矿工是在干什么了, 就是接受广播出来的数据块,然后计算当前最新的哈希链的头部, 当成功计算出了一个符合要求的Hash后, 就告诉所有人,自己找到了, 让别人再去计算下一个哈希头部。
    • 其实到这里, 区块链的本质就已经差不多了, 假如网络中大家都默认遵守协议, 只在最长的哈希链后计算新的头部,那么一切都很好, 但是如果有人想搞不一样,那他就得拥有更强的计算能力, 在诚实者都遵守规则的情况下, 自己能够计算出一个链条分叉甚至说直接计算出一个新的链条,让大家都承认。
    • 至于这个难度的证明,中本聪就是建立了一个泊松分布的概率模型, 假设了诚实结点计算出新的哈希头的概率p和不诚实结点计算出新的Hash头的概率q后,算出了一个N值。
      • 这个N值的含义是给出了当一个新的哈希头部 h1 计算出来后,其后追加N个头部(h2,h3,h4....)后,网络才应该承认这个新的头部 h1. 因为此时, 攻击者要想成功发动攻击, 至少需要计算出一个长度大于N的分支, 这个概率在攻击者没有掌握全网算力50%的时候是很难达到的

    所以到这里, 区块链就已经清楚了,就是一个密码学工具的一种巧妙应用而已, 没什么神奇的 。

     

     

     

      一、以太坊和区块链的关系

           从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取了技术架构和体系,称之为区块链技术。

    从比特币提取的区块链技术称之为区块链1.0时代,那个时候的应用主要以电子货币和去中心化交易为主,比如各种山寨币。而以太坊将区块链带入了2.0的时代,

    区块链2.0不是推翻了1.0,而是在1.0的基础上实现了区块知晓、价值知晓、图灵完备,并进行了细节优化,从而形成了以智能合约为特色的区块链2.0。

    比特币定位于一个应用,而以太坊定位于平台,你可以在这个平台上利用智能合约做各种应用。

           所以,学习区块链,直接学习以太坊就好了

    二、    以太坊入门的方法

            对于没有接触过区块链的人,建议先参会以太坊的日常应用。

    1、使用客户端

        这里的教程很多,推荐一个以太坊钱包教程

    2、挖矿

        挖矿的教程很多,一般分布在各个矿池,这里推荐一个国内矿池的教程,并且可以加入各个矿池的群去交流一下。国内的矿池有www.f2pool.com,www.bw.com 等几大矿池。

    http://pan.baidu.com/s/1c27DOCo

    3、浏览公有链的区块信息

        在经历以上事情后,可以通过区块链浏览器去查看自己的账户和交易,更直观感受。

        通过以上的操作,基本可以算对区块链有了一个初步的了解和感知。

    三、    以太坊各个项目说明

        以太坊发布以后,有 多个客户端,同时也支持多个平台,初学者往往被各种各样的客户端弄迷糊,本文进行了详细的总结。

        以太坊客户端以语言进行分类,在github上分成了不同项目,源代码地址:https://github.com/ethereum/,虽然以太坊客户端众多,但是有两个共同特点:

        1、同一语言的客户端在不同平台上的使用是完全相同的

        2、不同语言的客户端(mist、geth、eth等等)之间在同一个平台(Linux、windows或OSX)上共用一样的应用配置,同时其命令行可使用的参数也是一致。

        下面就以github上的项目为分类说明各个客户端的用途和特点:

    (一)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多倍,也可以用于矿池挖矿

    四、    以太坊常用网址(含智能合约)

        以太坊有很多有用的网站都分布在国外,找起来很费劲,这里总结一下

    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

  • 相关阅读:
    JavaScript与多线程的不解之缘!
    CSS居中的常用方式以及优缺点
    聊一聊Axios与登录机制
    熟悉而陌生API:Promise
    Cassandra数据类型:
    Cassandra 键空间(keyspace),表(table)
    Cassandra 配制 cassandra.yaml
    Linux 环境变量PS1设置
    添加sudo权限
    ssh免密码认证
  • 原文地址:https://www.cnblogs.com/timssd/p/7163881.html
Copyright © 2011-2022 走看看