精华内容
下载资源
问答
  • 区块链开发技术入门

    2019-12-09 15:52:11
    区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点...

    区块链是目前一个比较热门的新概念,蕴含了技术与金融两层概念。从技术角度来看,这是一个牺牲一致性效率且保证最终一致性的的分布式的数据库,当然这是比较片面的。从经济学的角度来看,这种容错能力很强的点对点网络,恰恰满足了共享经济的一个必须要求——低成本的可信环境。

    「区块链技术」

    1. 技术人员看待区块链的正确姿势

    区块链虽然是一个新兴的概念,但它依赖的技术一点也不新,如非对称加密技术、P2P网络协议等。好比乐高积木,积木块是有限的,但是不同组合却能产生非常有意思的事物。

    我接触过一些工程师,初次接触区块链时,不约而同的表达了:都是成熟的技术,不就是分布式存储嘛。站在工程师的角度,第一反应将这种新概念映射到自己的知识框架中,是非常自然的。但是细究之下发现,这种片面的理解可能将对区块链的理解带入一个误区,那就是作为一个技术人员,忽略了区块链的经济学特性——一个权力分散且完全自治的系统。

    区块链本质上是一个基于P2P的价值传输协议,我们不能只看到了P2P,而看不到价值传输。同样的,也不能只看到了价值传输,而看不到区块链的底层技术。

    可以这么说,区块链更像是一门交叉学科,结合了P2P网络技术、非对称加密技术、宏观经济学、经济学博弈等等知识,构建的一个新领域——针对价值互联网的探索。

    那 什么是价值互联网 ?价值互联网可以是当下如日中天的电子商务所衍生的支付业务。但,真的只是支付领域吗?很显然这是不够的,一级资本市场,实体资产确权与转移,证券登记交割、征信与反欺诈。我们再仔细想想,我们的各大电商平台的专业差评师,恶意刷单还少吗?

    如今的金融领域,除了支付比较便利之外,在其他绝大部分的业务中,我们就像是被套着锁链走路一样,我们反复确认,反复审核,反复监督,我们反复构建一个又一个的大大小小的高可用集群,保证线上服务的可靠性与连续性,我们雇佣一个又一个的安全工程师,交付一个又一个的渗透测试项目。为什么?因为作弊的成本太低了,低到只要改数据库的一行记录就可以提取上百万的资金。

    强大的互联网给了我们成本几乎为零的高速信息传输通道,却没有一个成本低廉可靠的高速价值传输通道,那么这也就是区块链即将带来的。

    区块链是一个公共的分布式总账,下面从技术角度简单介绍一下:

    想象有一个100台的分布式数据库集群,现在的情况是这100个节点实际上的拥有者是一个机构,并且所有节点处在该机构的内网当中,所以这个机构想让这100个数据库节点干嘛就干嘛,换句话说这100个节点之间是处于一个可信任的环境,并且受控于一个实体,这个实体具有绝对仲裁分配权。

    另外的情况是这样的,想象这100个节点分别归不同的人所有,且每个人的节点数据都是一样的,即完全冗余,并且所有的节点是处在广域网当中,换句话说就是这100个节点之间是不信任的,且不存在一个实体,它拥有绝对仲裁权。

    现在考虑第二种情况,采用什么样的算法(共识模型)能够提供一个可信任的环境,使:

    每个节点交换数据过程不被篡改;交换历史记录不可被篡改;

    每个节点的数据会同步到最新数据,且承认经过共识的最新数据;

    基于少数服从多数的原则,整体节点维护的数据本身客观反映了交换历史。

    区块链本质上就是要解决以上第二种情况的一种技术方案,更确切的说应该叫分布式的冗余的链式总帐本方案。有关区块链的一些要素,在我以往的文章里有总结过一些:

    包含一个分布式数据库

    分布式数据库是区块链的物理载体,区块链是交易的逻辑载体,所有核心节点都应包含该条区块链数据的全副本

    区块链按时间序列化区块,且区块链是整个网络交易数据的唯一主体

    区块链只对添加有效,对其他操作无效

    基于非对称加密的公私钥验证

    记账节点要求拜占庭将军问题可解/避免

    共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。

    共识过程能够解决double-spending问题

    所以作为一个技术人员,不应当只看到了区块链所依赖的技术,更应该关注区块链以外的点和面,综合来看,区块链将会有趣得多。

    2. 区块链的一般性架构介绍

    有关区块链本身的发展史,网络上资料比较多,本文不再赘述。

    而有关区块链技术的介绍,在各个区块链平台的社区是有详细资料的,但是针对这些资料的总结,以及抽象出一共通概念的介绍,还是凤毛麟角,本文尝试总结一下。

    在介绍之前,我想稍微介绍一下公有链,联盟链的概念,这些概念是以太坊创始人Vitalik提出的,我在这些概念的基础上做了一些研究。

    其实区分公有链、联盟链很简单,只要看这个区块链的访问权限就可以了,如果访问该区块链需要获得链上节点的许可,那么这是一个联盟链,否则是公有链。

    根据名称,我们也可以”望文生义“,公有表示一个完全开放的网络,联盟表示一个半开放的网络,成员之间是共享的,非成员身份是没有自由访问权限的,所以我们也称联盟链为许可链。

    下面我们来看几个比较主流的区块链平台(公有链,皆开源):

    比特币 Bitcoin

    以太坊 Ethereum/经典以太坊 Ethereum Classic

    比特股 Bitshares

    我一般戏称为”三巨头“,从生态上来看,比特币是最为成熟稳定的,以太坊更像是一个冲在前面的勇士,比特股相比前两位生态要小很多,但是从创新的角度,也不亚于前两位。

    其他的很多项目,是从这三个区块链上衍生出来的,所以以这三个为基础,基本上可以吃透区块链了。

    不得不提的还有Linux基金会项目——HyperLedger项目(主打联盟链,开源),也是旨在打造一个通用的区块链技术,不过我认为目前尚在开发迭代当中,还没有具体的应用案例,按下不讲。

    另外还有一些银行寡头间的联盟链项目——R3 CEV项目(联盟链,闭源),以及中国的R3项目——ChinaLedger(联盟链,闭源),当然这些不是开源的,我无法获得有用的资料进行分析,所以就不展开了。

    从技术上来看,针对不同的业务场景,对区块链有不同需求,比如实时结算业务,要求区块链提供秒级的交割,相对应的就是出块速度的要求,而出块速度过快往往会导致区块链分叉(fork),形成孤儿链,孤儿链是无效的,那么交易也就作废了,影响了区块链的最终一致性。

    如果频繁产生分叉造成相当比例的用户交易失效,那么可以认为系统是不可靠的。

    如果我们将这种实时性要求比较高的业务安插到联盟链中,就可以控制风险,通过调整共识算法,利用快速一致共识模型(Consensus Model)来避免上述问题,虽然不如公有链那么健壮,但对某些特殊场景足够了。

    所以架构层面,对公有链和联盟链的技术也要差异化对待。

    不过客户端整体的设计还是有一些通用的概念的,如下图:

    「区块链技术」区块链开发技术入门(教程分享)

    一个区块链至少分为三层,最底层是一些通用的基础模块,比如基础加密算法,网络通讯库,流处理,线程封装,消息封装与解码,系统时间等;

    中间一层是区块链的核心模块,一般包含了区块链的主要逻辑,如P2P网络协议,共识模块,交易处理模块,交易池模块,简单合约或者智能合约模块,嵌入式数据库处理模块,钱包模块等等;

    最上面一层,往往都是基于Json Standard RPC的交互模块,基于Json-RPC,我们还可以做出更好的UI界面,也可以是一个web-service。

    如果区块链 支持智能合约,可能还要分更多的层,比如增加BaaS层,区块链上的智能合约提供自治的服务,比如下面这张以太坊的架构图(来自Google,仅作参考):

    「区块链技术」区块链开发技术入门(教程分享)

    这种分层更加关注的是区块链本身的分层,即业务上的视角,而不完全是技术的。

    我们再转向比特币的设计:

    比特币几个模块之间的耦合度其实比较高,而且有不少历史包袱,比特币的发明者——中本聪在开发比特币的时候,使用VC++开发,而VC++的标准库中的sstream流处理性能非常感人,不得不放弃,自行实现了了基于vector 的流处理容器。而随着c++11的推出以及标准库的更新迭代,性能不可同日而语。

    从整张图我们可以看出,比特币的模块比较少,也比较简单。chain-paramters描述了整个区块链的参数设置,wallet是与地址/加密还有存储相关的,mem-pool是未确认的交易池。得益于比特币核心开发者的不朽贡献,相比中本聪时代的比特币代码,现在的比特币代码质量已经相当不错了。

    以上无论哪种设计,一般都要从P2P网络协议作为切入,作为一个P2P钱包,既要提供Service也要提供Client,作为Service依赖P2P网络协议,作为Client依赖Json-RPC。

    需要指出的是,目前”三巨头”所使用的账户模型是不同的(所谓账户模型是指账户记账方法),比特币使用UXTO模型,以太坊和比特股使用账户余额模型。

    UXTO模型(Unspent Transaction Outputs (UTXOs) ):此模型表达了一种转移的概念,即任何产生的新币,在以后的生命周期中,只有转移,没有消亡,转移实质上是由加密算法的签名与验证控制的:

    账户余额模型:账户余额模型摒弃了这种强验证的账户模型,即账户余额回归到数字加减,这样做提升了交易的效率。

    3. 共识算法与分布式

    终于来到重点了,本文每节其实都可以展开成为独立的文章,内容所限,简单讲。

    所谓区块链共识过程,在上文有所提及,是指如何将全网交易数据客观记录并且不可篡改的过程。目前"三巨头"分别使用不同的共识算法(Consensus Algorithm), 比特币使用工作量证明PoW(Proof of Work),以太坊即将转换为权益证明PoS(Proof of Stake),比特股使用授权权益证明DPoS(Delegated Proof of Stake)。

    以上这些算法我称之为“经济学”的算法,所谓经济学的算法,是指让作弊成本可计算,且让作弊成本往往远大于作弊带来的收益,即作弊无利可图,通过这种思想构造一个用于节点之间博弈的算法,并使之趋向一个稳定的平衡。

    相对应的我们还有计算机领域的分布式一致性算法,例如Paxos、Raft,我也称之为传统分布式一致性算法。

    他们之间的最大区别是:系统在拜占庭将军(Byzantine Generals Problem)情景下的可靠性,即拜占庭容错(PBFT算法支持拜占庭容错)。然而无论是Paxos还是Raft算法,理论上都可能会进入无法表决通过的死循环(尽管这个概率其实是非常非常低的),但是他们都是满足safety的,只是放松了liveness的要求, PBFT也是这样。

    下面是一些传统分布式一致性算法和区块链共识过程的异同点。先来看相同点:

    Append only

    强调序列化

    少数服从多数原则

    分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志

    这是不同点:

    传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题;

    传统分布式一致性算法是面向日志(数据库)的,即更通用的情况,而区块链共识模型面向交易的,所以严格来说,传统分布式一致性算法应该处于区块链共识模型的下面一层。

    考虑上面的不同点,结合公有链和联盟链的特征,我们有:

    联盟链:半封闭生态的价值网络,存在对等的不信任节点,如某某协会成员之间。

    公有链:开放生态的价值网络,这层主要是为行业链和私有链提供全球交易网络。

    由于联盟行业链其半封闭半开放特性,使用Delegated Proof of XXX 是可行的,可以考虑以传统一致性算法作为基础加入拜占庭容错/安全防护机制进行改进也是可以的。

    而针对公有链,PoW/Pos/DPos等“经济学”的算法可能是最优算法。

    技术上,以上不同的共识算法,我们很多新开发区块链都相应的支持一个特性:共识模块可插拔,以应对不同场景下的要求。

    下图是一张未来区块链生态示意图:

    「区块链技术」区块链开发技术入门

    公有链提供可信可靠的价值传输网络,上面可以继续组建去中心化应用(DAPP)或者部署联盟链,甚至传统数据库都行,在上层搭建C端应用。

    4. 数字资产与价值流通网络

    这里有张未来区块链发展的示意图:

    ref: Metaverse元界白皮书-CN(概要)

    “三巨头”中,比特币在“数字货币”处,比特股在“去中心化交易所”附近,以太坊在“去中心化组织”处。而实际上,区块链和现实的接触点,还在图示位置。

    所以区块链仍是一个正在成长的事物,结合图5,我们希望构建一个基础设施完善的价值传输网络,上层应用丰富的区块链生态,仍然需要付出巨大的努力。

    下一步目标,是将资产数字化(类比资产证券化),例如我们可以将珍稀物品(艺术品/古董)数字化、知识产权数字化、票据基金等收益权数字化,将极大的提升市场运作效率,配备智能合约,甚至人工智能,可编程社会不再是梦想。

    精彩问答

    问题:还是感觉太抽象,至今都还不能具象化的理解这个区块链,也没找到具象化的解释。

    正如区块链这个名词一样,它是被创造出来的,并没有以往的概念可以映射到上面,所以容易费解。我们不谈这个概念,我们只需要想想我们的互联网还需要什么。正如比特币白皮书提到的,一个点对点的现金系统,他使用的前提要求是很低的,不需要注册,不需要手机号,一个点对点的网络,只要你用设备接入,那么你就可以使用。区块链这个概念也一样,目的是构建一个点对点的生态,解构权力带来的不对称。它本身只是一个共享的总账本,不同于网络中多节点自己记账,再对账,这就瓦解了中心权力。

    问题:区块链技术在互联网身份认证方面如何应用?

    这个问题很好。我目前所做的区块链项目是涵盖了这个概念的,也就是你所说的互联网身份认证。我们认为它是使区块链接入现实业务的必要一环。

    在我们的设想中,首先什么是身份?身份不单单是一个ID号,一个密码,而是一个使用者所有的操作记录集,这个记录集的代号才是身份。正如账户丢失,然后申诉一样,申诉的内容才是真正定位到你这个人。区块链也一样,它需要一样ID,同样它也需要自动验证你历史记录的合法性。目前互联网的身份认证是依赖公安系统的,最简单的方案就是把公安系统中的身份系统映射到区块链中。另外一个方案也是用户自定义记录集,根据交易历史核对身份。当然再更远的未来,结合人工智能,区块链可能有更好的表现。

    问题:实时交割数据如果放到联盟链中,联盟链的数据是否要最终同步到公有链?按分享所说,联盟链的数据对公有链来说是不可信任的,联盟链和公有链中数据是什么关系?

    我认为不可能所有机构都愿意把资产放到公有链上的,一定会出现并存的现象。理想的情况当然完全使用公有链搭建去中心化应用。联盟链和公有链直接的数据是单纯的引用关系,我认为开放的关键数据集,如用户身份应该沉淀到公有链,让用户自己管理,而机构比较私有的关键数据,应该使用访问权限将它与公有链隔离,所以联盟链的数据和公有链的数据我认为是互补的。也就是说,联盟链的数据是否要同步到公有链,这个要是视机构本身的需求而定。另外,公有链的外部数据引用,我们称之为data-feed,这个东西就要把人的因素引入了,比方说法务,律师,政府机构等等,作为一个仲裁者帮助引用数据,好坏可以让市场评价信用,正如对一个机构评级一样,如果这样就很透明开放了。

    问题:有一些很有趣的实体项目比如智能门锁,无人租车,这些都是线下项目,怎么做到互联互通呢?

    首先区块链的项目都是跨平台的,也就是说嵌入式设备可以依托区块链的低信用成本的优势,自动记账,可以是联盟链的,也可以是直接基于某个公有链的DAPP,这些账本是共享的,这些数据在发生引用关系的时候,可以进入公有链通道,打通两者关系。

    其次,任何具体的区块链项目,都是需要依托一个公有链进行的,正如现在很多落地项目都是基于“三巨头”,然而其实目前并没有一个让大家都特别满意的标准,让大家都服,所以我我们还要拭目以待。

    问题:多谢分享,能谈谈最后一张图中区块链发展的各个阶段可能对传统金融行业尤其是银行业的影响吗

    对银行业的影响,我认为现阶段影响不大,尤其是国内。这个要视区块链发展的程度而定。我所了解的,央行已经开始着手自己的数字货币了,这对银行来说,顶多就是再来一次IT架构升级的事儿而已,可以帮助银行业降低IT成本,也可以方便加强监管。但如果在更远的未来,银行可能不会特别封闭,变成一些区块链的代理节点,也会被所有人所监督,而不是几个特殊机构。

    问题:如果公有链能够记录所有历史,有没有技术能破坏或封禁,有没有生命终结的那天?

    有一点技术风险,通用量子计算商用的时候,目前的加密技术很多都失效了,基于密码学的区块链受影响最大(当然现在的中心化架构也会受到影响)。这取决于理论研究的成果,如果出现了新的密码学理论可以抵抗量子计算就没问题。如果从P2P网络的角度,是没有任何机构或个人能封禁的,只要有两个节点还能做交易也能记账,这个区块链就是alive的。

    从经济学的角度,区块链的生死也不主要在于加密技术是否被攻破,而主要在于链上聚集了多少财富和利益,链上的数据有多少价值,如果没有价值了,链自然就死了,反之如果被攻破了,不过是分叉、或者等待新的加密算法出来之后进行数据迁移,这一点跟中心化数据库恢复备份没有什么太大区别。

    展开全文
  • 大概我所了解的在区块链开发的分为区块链底层开发、区块链Dapp开发、区块链生态开发这三类。 如果想要从事与区块链底层开发,需要做以下三步: 1.Go语言基础,掌握流行区块链开发用到的Go库。 2.简单区块链搭建,...

    如果你想要从事区块链行业,那么当前区块链技术开发划分必然值得一看。

    大概我所了解的在区块链开发的分为区块链底层开发、区块链Dapp开发、区块链生态开发这三类。

    如果想要从事与区块链底层开发,需要做以下三步:

    1.Go语言基础,掌握流行区块链开发用到的Go库。

    2.简单区块链搭建,掌握区块链基本概念与简单算法。

    3.阅读商业级别区块链源码,了解区块链技术流行设计与最新技术。

     

    最后要掌握的技能:

    1.熟悉数据结构和算法,对密码学、安全协议和加密算法有研究;

    区块链算法和密码学加密:这个需要了解看以下剑指offer或者leetcode,密码学也就是最基础的对称和非对称,加密算法包括RSA、ECC。至于安全协议不需要代码级别了解,只要了解概念即可。

    2.理解各类主流的共识算法,包括不限于PoW,PoS,DPoS,PBFT,Paxos,Raft等;

    区块链共识部分:这个很简单,只要会一些简单代码或者伪代码明确具体步骤即可,不需要和商业设计对接。

    3.了解主流NoSQL数据库的原理与使用,尤其是KV型数据库,包括不限于LevelDB,RocksDB等;

    区块链数据服务部分:这个需要掌握流行的数据库,即实现代码对数据库的增删改查即可。

    4.了解HTTP/2协议,理解RPC框架,具备使用protobuf的开发实践经验;

    区块链编码部分:这个需要对以太坊RLP进行了解,大公司可能需要代码级别操作,了解原理就会很简单了。RPC框架我推荐使用微服务,这个有造好的轮子,便于掌握。

    5.有相关分布式系统架构和P2P网络系统开发经验者优先;

    区块链P2P部分:这个最为重要,也就是这个是区分你和他人所在,需要完整的看一些区块链源码,了解P2P节点发现、区块交易数据同步、共识设置。

    6.了解区块链技术(hyperledger、以太坊)者优先,有比特币或其他类似币类系统研究经验者优先;

    区块链框架:这个是你和面试官侃大山时用的,这个最为基础,连这个都不会面试官会直接让你走人。

     

    如果你想要从事区块链Dapp开发,这个目前招聘还比较少,需要做以下三步:

    1.搭建以太坊网络、fabric网络,了解区块链基本概念。

    2.了解最基本Go或者C++或者java,掌握solidity合约语言。

    3.掌握nodejs开发,最基本JavaScript、html、css,了解前后端一些框架。

    需要掌握以下技能:

    1.熟悉WEB开发,了解前端开发流程

    前端开发部分:这个掌握前端的流行框架,和基础前端语言。

    2.熟悉Java、Nodejs

    后台开发:掌握nodejs一些框架,譬如express、koa等,最好有自己的产品。

    3.掌握常见的算法和数据结构,并拥有良好的编码能力;

    算法能力:剑指offer。

    4.合约语言

    合约开发:这个比较简单,容易入门,去看一些流行和合约代码即可。

     

    对于区块链生态开发部分,我不太了解,目前流行的有交易所和钱包开发,这个最好的掌握方式是查看源码。

    我目前从事与区块链底层开发,也掌握区块链Dapp开发能力,如果想要了解具体技术的可以留言。

    展开全文
  • 部分目录: 6.区块宝:史上最全的区块链报告 ...一年10倍的区块链投资经验谈一次性学完比特币走势预测技巧数字货币投资价值观数字货币投资避雷手册深入浅出比特币区块链世界的赚钱门道区块链开发技术区块链...

    部分目录:

    • 6.区块宝:史上最全的区块链报告
    • 5.区块链编程视频教程(视频+课程+代码)
    • 4.三点钟区块链技术从入门到精通
    • 3.第三阶段:最新高值精选电子书全集
    • 2.第二阶段:区块链技术研发入门到精通
    • 1.第一阶段:区块链技术理论入门基础


    一年10倍的区块链投资经验谈
    一次性学完比特币走势预测技巧
    数字货币投资价值观
    数字货币投资避雷手册
    深入浅出比特币
    区块链世界的赚钱门道
    区块链开发技术
    区块链技术与创业机会
    火爆的 ICO 究竟是怎么回事儿
    从零入门区块链技术
    从零开始了解区块链资产投资
    拨开区块链“钱包”的层层迷雾
    比特币挖矿那点事儿


    下载地址:百度网盘

    展开全文
  • 本文将对区块链开发使用的技术、工具、语言、平台做一次全景扫描,并对其应用状况进行分类。 新工具不仅提升效率,还可为前人所不能。作为活跃开发领域之一,区块链新技术、工具、平台、语言与框架层出不穷,然而...

    本文将对区块链开发使用的技术、工具、语言、平台做一次全景扫描,并对其应用状况进行分类。

    新工具不仅提升效率,还可为前人所不能。作为活跃开发领域之一,区块链新技术、工具、平台、语言与框架层出不穷,然而面对纷繁复杂的选择,开发者难以面面俱到。

    区块链开发——工具与框架篇
    Ethers.js是针对以太坊钱包功能完整实现的工具包,其API文档十分详尽。

    Truffle用于开发合约工程的框架,是一套本地集成开发环境和编译测试调试工具。在Truffle提供的开发环境里,整合了前端实例化合约的方法,可以很便捷的调用合约功能。另外还有各种box支持开箱即用,整合了前端应用调用合约工程的途径。

    Geth是一个以太坊客户端,用Go语言编写,它是目前最常用的以太坊客户端,有着丰富的API,不过没有可视化操作界面。可以与Mist配合来进行以太坊智能合约的开发调试。

    Solc是以太坊官方提供的Solidity编译工具。

    OpenZeppelin是已实现的一系列经安全验证的合约工具和ERC标准合约库,开发者可以通过继承这些合约和libray方便的进行合约开发。

    Mist是以太坊PC钱包,可以选择连接不同的网络。包含账户管理、交易、调用合约、部署合约以及部分DApp功能的调用。针对以上功能所提供的界面化操作极大的方便了普通用户发送交易和调用合约。

    使用Mist可以轻松连接以太坊测试网络,并支持开发、部署、调试智能合约。对开发者非常友好。

    Remix是一个集成的编写部署调试合约的浏览器IDE,可以在remix提供的浏览器页面快速编写部署合约,支持正式和测试网络连接、静态检查、本地调试、交易记录、事件和日志查询等功能。另外结合Remixd提供的ws服务可以连接本地文件进行开发。对兼容以太坊智能合约的链平台来说,Remix是非常好用的合约编辑、测试、部署工具,用户众多,已经比较成熟。

    Docker在区块链中有多种用途,包括用于 BaaS 服务中作为实现动态节点管理的基础组件,在Fabric作为智能合约的运行容器等。

    RocksDB是一种NoSQL数据库,具有高性能和使用简单的特点,许多区块链项目都以 RocksDB 作为底层的存储数据库。

    MyEtherWallet是一个很受欢迎的网页版以太坊在线钱包,具有丰富的资产管理,账户备份功能。对于不想在本地安装钱包客户端,存储全量区块信息的用户来说,是一个不错的选择。曾经因为DNS劫持的问题,导致一些用户访问了钓鱼网站,损失了大量以太币资产。MyEtherWallet代码开源,它不会存储用户的钱包信息账号,就算有一天MyEtherWallet网站不能使用,你也可以通过钱包的私钥和密码在其他钱包上找回你的钱包账号,可放心使用。

    MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器添加对应的扩展程序即可,非常轻量级,使用起来也非常方便,不需要下载全量区块信息,也能让小白用户管理自己的数字资产。对于以太坊Dapp的普及和传播起到了非常大的作用。当年的以太猫游戏的火爆,Metamask功不可没。

    Embark目前集成了 EVM 区块链(以太坊)、去中心化存储(IPFS) 和去中心化通信平台(Whisper 和 Orbit),部署支持 Swarm,方便开发者搭建自己的区块链应用。

    Ganache是Truffle官方推荐使用的客户端之一(另一个是Truffle内置的Truffle Develop)。

    以太坊联合创始人Gavin Wood认为,所有人都从头构建网络和共识代码,非常浪费精力。使用Substrate来构建新项目,开发者所要做的,就是在代码调用少量函数,就能获得各种密码学模板,以及定制、搭建和发布新区块链所需要的方方面面,“Substrate为区块链开发者提供最大限度的自由,花费最少的精力”。

    关系数据,如MySQL在一些区块链系统中用作记录系统对象的关联关系,以便提供比NoSQL更丰富的查询能力。但关系数据库的灵活性、伸缩性不好,并不太适合区块链这类数据单调递增的场景,在数据量增长上来之后对关系数据库的运维管理复杂,因此不推荐使用,建议考虑其它的替代方案。

    曾经广泛使用的EtherScripter已被淘汰,Embark、Truffle是其替代者。

    区块链开发——技术篇
    GOSSIP是一种消息通讯算法,广泛用于面向公链的区块链系统中,包括比特币、以太坊等,用于实现点对点通信。

    POW是目前面向公链的众多共识算法中唯一具有安全性证明的算法,在中本聪的论文已论证,并且得到比特币系统的运行所证明。缺点是需要消耗算力。

    PBFT是一种拜占庭容错的共识算法,适合用于面向联盟链的场景,在许多区块链项目上都采用了 PBFT 算法及其变种算法;但原始的 PBFT 算法本身不支持节点的动态增加,在实际应用时需要注意。

    区块链开发——语言篇
    Java作为一项成熟的通用语言,掌握开发人员多,生态全面,被广泛运用于各类企业级系统、中间件的开发,在区块链中也被一些项目用做系统开发语言和合约开发语言。

    Go是高效快速的应用逻辑开发语言,编译速度优越,已经有较为强大的基础库,属于新兴语言,很被大家看好。作为一项通用语言,具有内存安全、性能优异的特点,使用用作区块链底层系统的开发语言。由于Go简洁易用的语言特性、功能丰富的代码库以及优异的性能表现,很多区块链底层是用Go语言实现的,Hyperledger Fabric等项目也主推用Go编写智能合约或DApp,可说Go语言在区块的应用中已经非常成熟。

    Go的高性能,预编译与语言学习的易上手性,使得它非常适合被用来编写区块链项目。目前,大量的新的区块链项目都是用Go来编写。

    JavaScript开发方便,很多区块链项目支持。Lisk支持使用JavaScript来开发智能合约,这使得智能合约的开发对于Web开发者来说,变得更加的简单。

    Solidity是以太坊EVM虚拟机上编写智能合约的图灵完备语言,也是当前智能合约最实用和使用最广泛的语言,语法类似JavaScript,适用于以太坊及其扩展实现,只能由 EVM 加载执行。但受制于EVM包括以太坊本身的扩展性不够等设计缺陷,在开发效率和运行速度上有一定的限制。不过Solidity还在不断的发展和更新,可以期待未来更优的使用体验,但如果用于正式的重要的业务中,需要谨慎考虑。

    Rust作为一项通用语言,具有内存安全、性能优异的特点,使用用作区块链底层系统的开发语言。已经有一些区块链项目采用了该语言作为开发语言。但开发人群还相对较少,选择该语言还需要考虑开发生态的成熟度。Rust在不影响性能的前提下提供的安全特性非常有吸引力,这些安全特性也很适用于区块链开发。如steem等区块链项目用Rust开发,经过适当的限制后也适用于智能合约开发。Rust可以被C及其它多种语言轻松调用,且由于其高性能特性,非常适合被用来编写区块链相关组件,比如可插拔密码库和共识机制。

    作为一项有历史的成熟的经典语言,C++通常用于开发偏底层的系统,且不断迭代升级,引入新特性新思想,性能一直较好,但由于语言特性复杂,容易产生内存安全的问题,对开发者要求高,在有其它内存安全的语言可选择的情况下,C++不是进行区块系统开发的最优选择。EOS等项目是用C++开发的,但由于其复杂性,使用时需要非常小心。

    另外,学习曲线较陡,使得越来越多的新的区块链项目不再使用C++语言来进行编写。但是C++高性能和编译特性,使得它仍然会在一些区块链项目的底层开发中发挥作用。

    Vyper是新的以太坊语言,它为开发者提供了Solidity的一种替代选择。

    已有项目采用Clojure编写合约解释器,但学习曲线较为陡峭,现有开发者中,熟练掌握的人相当少,可能会面对缺人或维护困难的窘境。

    Red拥有出色的表达及DSL能力,但项目仍在开发中,基础尚不完备。

    区块链开发——平台篇
    迅雷链平台(Thunder Chain)是高性能、高可靠性、开发方便、技术支持完善的主链平台。

    EVM是以太坊上的智能合约引擎,用于执行 Solidity 的智能合约,它是一个栈式虚拟机,其安全性是还需要完善,众多针对以太坊的攻击方法都是由 EVM 本身的缺陷带来的,虽然爆出的缺陷已经大部分修复,但毕竟EVM出现的时间相对还很短,所以还需更多时间来观察其进展。

    和普通节点相比,Azure BaaS节点好处主要是,能让开发者快速建立自己所需的开发环境,能帮助更快地验证自己的概念和模型,工具性更强,便于创建、部署、运行和监控区块链服务。但其实用性还有待验证。

    Blockchain Testnet可用于测试和体验操作。允许DApp开发者使用测试网络方便的进行开发和调试,而不必担心在主链上测试导致的费用问题。

    Coinbase’s API的提供者Coinbase是全球用户最多的交易所之一。

    Tierion是将区块链用于验证任何数据、文件或过程的平台,应用场景包括文件存在性证明、审计跟踪等,应用场景有限,决定使用这个平台之前请先评估是否跟自己的实际业务场景相匹配。

    展开全文
  • 1.1 区块链实战 一、区块链是什么?...五、区块链四大核心技术 (1)区块 + 链 (2)分布式结构——开源、去中心化协议 (3)非对称加密算法 (4)脚本:智能合约 一种可编程的智能合约。在区块链的...
  • 区块链开发入门

    2019-09-29 13:51:10
    那么,要掌握区块链开发技术,应该学习哪些知识,应该学习哪些编程语言,才能快速入门区块链开发? 如果你希望马上开始学习以太坊区块链应用开发,可以访问汇智网提供的出色的在线互动教程: 以太坊应用开发入门教程...
  • Go语言区块链开发入门视频教程:了解区块链的基本原理(算力、旷工、挖矿、分叉、智能合约、共识等、...区块链开发技术、哈希算法、非对称加密、base64编码、梅克尔树介绍、区块链原型创建等区块链开发所用到的知识。
  • 『课程目录』 1.1.1-区块链实战 ...9.4.4区块链开发实现 10.4.5疑问解答! 11.5.1flask网络原理与挖矿原理) 12.5.2交易记录链实现 13.5.3区块链与挖矿的基本实现 14.5.4网络节点与共识算法实现...
  • 区块链应用开发入门

    2018-08-07 15:39:00
    区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种。作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想...
  • 『课程目录』 1.1.1-区块链实战 ...9.4.4区块链开发实现 10.4.5疑问解答! 11.5.1flask网络原理与挖矿原理) 12.5.2交易记录链实现 13.5.3区块链与挖矿的基本实现 14.5.4网络节点与共识算法实现...
  • 区块链开发入门书籍和文档: 文章 一个故事告诉你比特币的原理及运作机制比特币白皮书汪晓明对区块链、以太坊的思考以太坊智能合约实例深入内窥: 《区块链技术分析》csdn的blockchain知识库什么是区块链 ...
  • 区块链技术入门到精通--免费视频 区块链入门开发视频,从基础知识介绍到开发入门,最后结合项目实例来进行讲解,适合区块链入门人员学习!
  • Fabric区块链开发入门

    2018-05-26 11:02:21
    PPT一共70页左右。 是笔者在第四届全球技术周(南京)会后深度区块链培训的授课内容。 包括: - HyperLedger项目的介绍 - Fabric平台基础知识 - ChainCode开发入门 - 基于SDK的DAPP应用开发
  • 区块链开发入门书籍推荐

    千次阅读 2018-10-15 17:05:02
    区块链开发公司无疑是现阶段求职者的热门选择,想要成为区块链开发人员,没点技术怎么行。零基础要怎样学习区块链在这里为大家整理了几本区块链相关的书籍,从不同的角度切入区块链,有助于你更深入、系统、全面的...
  • 区块链的重要性已经毋庸置疑,但对大多数跃跃欲试的开发者而言,去中心化思想、非对称加密、共识算法等技术点的理解和运用,都是入门区块链开发的挑战。合适的区块链开发教程可以极大地缩短区块链开发的学习周期,...
  • 最新整理区块链技术视频包含开发工具,源码,视频教程,从小白到大神,分享给大家学习。 区块链最早是比特币的基础技术,目前世界各地均在研究,可广泛应用于金融等各领域 区块链的基本原理 交易(Transaction)...
  • 区块链开发入门学习线路图

    万次阅读 多人点赞 2018-07-20 18:01:30
    区块链是什么?我们可以将区块链可以理解成是一个类似电子表格的数据结构,通过互联网定时在成千上万台...特此千锋小编献上区块链开发入门学习线路图(小白珍藏版)。 新科技的出现,通常伴随着业务活动被IT所自动...
  • 区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种。作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想...
  • 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。 区块链(Blockchain)是比特币的一个重要概念,...
  • 智能合约和区块链技术入门指南 多年前,在没有数字合约和区块链技术存在的情况下,双方的合约往往以传统的方式进行。在加密货币市场中,智能合约的集成在区块链技术的帮助下成为可能。然而,比特币也改变了交易...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 479
精华内容 191
关键字:

区块链开发技术入门