以太坊账户和节点的区别
❶ ETH转账的2种方式的对比
web3j支持使用以太坊钱包文件(推荐)和以太网客户端管理命令来发起一笔交易。当你创建了一个拥有以太币的账户后,你可以通过以下两种交易机制,和以太坊网络(私网/公网)交易:
这里主要讲一下 线下签名交易(Offline transaction signing) 。线下签名交易允许你使用web3j提供的钱包账户发起交易,你完全控制自己的私钥,交易发送到网络上的其它节点并广播。
线下签名交易使用 RawTransaction 对象来完成,一共有如下几步:
1、通过私钥或密码+钱包文件(keystore)来加载转账凭证Credentials
2、获取发起转账账户的nonce 值,也就是第几笔交易
3、创建 RawTransaction交易 对象
4、签名 RawTransaction 对象,也就是对交易做签名
5、发送交易( RawTransaction 对象)给节点处理。
6、获取交易哈希值TxHash
以太坊实战-再谈nonce使用陷阱: https://blog.csdn.net/wo541075754/article/details/79054937
此外,还有一种简单的转账方式
这种方式,不需要自己管理nonce。
这2种方式都是离线交易,先组装交易,然后发送到链上。
参考:
https://docs.web3j.io/getting_started.html#transactions
https://www.jianshu.com/p/6650d2a3aea9
❷ 以太坊是什么丨以太坊开发入门指南
以太坊是什么丨以太坊开发入门指南
很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门。
以太坊是什么
以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。
对这句话不理解的同学,姑且可以理解为以太坊是区块链里的Android,它是一个开发平台,让我们就可以像基于Android Framework一样基于区块链技术写应用。
在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币)。
以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。
目前围绕以太坊已经形成了一个较为完善的开发生态圈:有社区的支持,有很多开发框架、工具可以选择。
智能合约
什么是智能合约
以太坊上的程序称之为智能合约, 它是代码和数据(状态)的集合。
智能合约可以理解为在区块链上可以自动执行的(由事件驱动的)、以代码形式编写的合同(特殊的交易)。
在比特币脚本中,我们讲到过比特币的交易是可以编程的,但是比特币脚本有很多的限制,能够编写的程序也有限,而以太坊则更加完备(在计算机科学术语中,称它为是“图灵完备的”),让我们就像使用任何高级语言一样来编写几乎可以做任何事情的程序(智能合约)。
智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。
目前除数字货币之外,真正落地的应用还不多(就像移动平台刚开始出来一样),相信1到3年内,各种杀手级会慢慢出现。
编程语言:Solidity
智能合约的默认的编程语言是Solidity,文件扩展名以.sol结尾。
Solidity是和JavaScript相似的语言,用它来开发合约并编译成以太坊虚拟机字节代码。
还有长像Python的智能合约开发语言:Serpent,不过建议大家还是使用Solidity。
Browser-Solidity是一个浏览器的Solidity IDE, 大家可以点进去看看,以后我们更多文章介绍Solidity这个语言。
运行环境:EVM
EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境。
Solidity之于EVM,就像之于跟JVM的关系一样,这样大家就容易理解了。
以太坊虚拟机是一个隔离的环境,在EVM内部运行的代码不能跟外部有联系。
而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。
合约的编译
以太坊虚拟机上运行的是合约的字节码形式,需要我们在部署之前先对合约进行编译,可以选择Browser-Solidity Web IDE或solc编译器。
合约的部署
在以太坊上开发应用时,常常要使用到以太坊客户端(钱包)。平时我们在开发中,一般不接触到客户端或钱包的概念,它是什么呢?
以太坊客户端(钱包)
以太坊客户端,其实我们可以把它理解为一个开发者工具,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能。
EVM是由以太坊客户端提供的。
Geth是典型的开发以太坊时使用的客户端,基于Go语言开发。 Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。Geth的使用我们之后会有文章介绍,这里大家先有个概念。
Geth控制台和Chrome浏览器开发者工具里的面的控制台是类似,不过是跑在终端里。
相对于Geth,Mist则是图形化操作界面的以太坊客户端。
如何部署
智能合约的部署是指把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址称为合约账户。
以太坊中有两类账户:
· 外部账户
该类账户被私钥控制(由人控制),没有关联任何代码。
· 合约账户
该类账户被它们的合约代码控制且有代码与之关联。
和比特币使用UTXO的设计不一样,以太坊使用更为简单的账户概念。
两类账户对于EVM来说是一样的。
外部账户与合约账户的区别和关系是这样的:一个外部账户可以通过创建和用自己的私钥来对交易进行签名,来发送消息给另一个外部账户或合约账户。
在两个外部账户之间传送消息是价值转移的过程。但从外部账户到合约账户的消息会激活合约账户的代码,允许它执行各种动作(比如转移代币,写入内部存储,挖出一个新代币,执行一些运算,创建一个新的合约等等)。
只有当外部账户发出指令时,合同账户才会执行相应的操作。
合约部署就是将编译好的合约字节码通过外部账号发送交易的形式部署到以太坊区块链上(由实际矿工出块之后,才真正部署成功)。
运行
合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。
Gas
和云计算相似,占用区块链的资源(不管是简单的转账交易,还是合约的部署和执行)同样需要付出相应的费用(天下没有免费的午餐对不对!)。
以太坊上用Gas机制来计费,Gas也可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量和类型,占用的内存等),用来完成运行就需要越多Gas。
任何特定的合约所需的运行合约的Gas数量是固定的,由合约的复杂度决定。
而Gas价格由运行合约的人在提交运行合约请求的时候规定,以确定他愿意为这次交易愿意付出的费用:Gas价格(用以太币计价) * Gas数量。
Gas的目的是限制执行交易所需的工作量,同时为执行支付费用。当EVM执行交易时,Gas将按照特定规则被逐渐消耗,无论执行到什么位置,一旦Gas被耗尽,将会触发异常。当前调用帧所做的所有状态修改都将被回滚, 如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。
如果没有这个限制,就会有人写出无法停止(如:死循环)的合约来阻塞网络。
因此实际上(把前面的内容串起来),我们需要一个有以太币余额的外部账户,来发起一个交易(普通交易或部署、运行一个合约),运行时,矿工收取相应的工作量费用。
以太坊网络
有些着急的同学要问了,没有以太币,要怎么进行智能合约的开发?可以选择以下方式:
选择以太坊官网测试网络Testnet
测试网络中,我们可以很容易获得免费的以太币,缺点是需要发很长时间初始化节点。
使用私有链
创建自己的以太币私有测试网络,通常也称为私有链,我们可以用它来作为一个测试环境来开发、调试和测试智能合约。
通过上面提到的Geth很容易就可以创建一个属于自己的测试网络,以太币想挖多少挖多少,也免去了同步正式网络的整个区块链数据。
使用开发者网络(模式)
相比私有链,开发者网络(模式)下,会自动分配一个有大量余额的开发者账户给我们使用。
使用模拟环境
另一个创建测试网络的方法是使用testrpc,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更方便快捷。而且testrpc可以在启动时帮我们创建10个存有资金的测试账户。
进行合约开发时,可以在testrpc中测试通过后,再部署到Geth节点中去。
更新:testrpc 现在已经并入到Truffle 开发框架中,现在名字是Ganache CLI。
Dapp:去中心化的应用程序
以太坊社区把基于智能合约的应用称为去中心化的应用程序(DecentralizedApp)。如果我们把区块链理解为一个不可篡改的数据库,智能合约理解为和数据库打交道的程序,那就很容易理解Dapp了,一个Dapp不单单有智能合约,比如还需要有一个友好的用户界面和其他的东西。
Truffle
Truffle是Dapp开发框架,他可以帮我们处理掉大量无关紧要的小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程。
总结
我们现在来总结一下,以太坊是平台,它让我们方便的使用区块链技术开发去中心化的应用,在这个应用中,使用Solidity来编写和区块链交互的智能合约,合约编写好后之后,我们需要用以太坊客户端用一个有余额的账户去部署及运行合约(使用Truffle框架可以更好的帮助我们做这些事情了)。为了开发方便,我们可以用Geth或testrpc来搭建一个测试网络。
注:本文中为了方便大家理解,对一些概念做了类比,有些严格来不是准确,不过我也认为对于初学者,也没有必要把每一个概念掌握的很细致和准确,学习是一个逐步深入的过程,很多时候我们会发现,过一段后,我们会对同一个东西有不一样的理解。
❸ 以太坊节点一年分红多少
约60美元。根据最新的以太坊数据分析,以太坊节点每天的分红大约是60美元。考虑到每天24小时不间断运行,这个数字乘以一年的天数,意味着节点一年的分红总额可观。以太坊节点是指那些连接到以太坊网络并运行特定软件的计算机或服务器。
❹ 什么是以太币/以太坊ETH
以太币(ETH)是以太坊(Ethereum)的一种数字代币,被视为“比特币2.0版”,采用与比特币不同的区块链技术“以太坊”(Ethereum),一个开源的有智能合约成果的民众区块链平台,由全球成千上万的计算机构成的共鸣网络。开发者们需要支付以太币(ETH)来支撑应用的运行。和其他数字货币一样,以太币可以在交易平台上进行买卖 。
温馨提示:以上解释仅供参考,不作任何建议。入市有风险,投资需谨慎。您在做任何投资之前,应确保自己完全明白该产品的投资性质和所涉及的风险,详细了解和谨慎评估产品后,再自身判断是否参与交易。
应答时间:2020-12-02,最新业务变化请以平安银行官网公布为准。
[平安银行我知道]想要知道更多?快来看“平安银行我知道”吧~
https://b.pingan.com.cn/paim/iknow/index.html
❺ 大区块链中节点有哪些类型,区块链节点什么意思
区块链的链分类前两天有朋友微信上问了许多关于区块链的一些问题,其中一个问题就是区块链的这个链怎么去分类。区块链目前可以分为四类:公链,私链,联盟链以及侧链。北京木奇移动技术有限公司,专业的区块链外包开发公司,欢迎洽谈合作。下面带大家了解区块链这几个链各自的特点以及如何应用,希望对大家有所帮助。
1.公链——人人可参与
公链是指任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。
公链采取了采取工作量证明机制(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)等方式,并将经济奖励和加密数字验证结合了起来,并建立一个原则就是每个人从中可获得的经济奖励与工作量成正比。这些区块链通常被认为是完全去中心化的。
特性:
1.开源,由于整个系统的运作规则公开透明,这个系统是开源系统;2.保护用户免受开发者的影响,在公有链中程序开发者无权干涉用户,所以区块链可以保护使用他们开发的程序的用户;3.访问门槛低,任何拥有足够技术能力的人都可以访问,也就是说,只要有一台能够联网的计算机就能够满足访问的条件;4.所有数据默认公开,尽管所有关联的参与者都隐藏自己的真实身份,这种现象十分的普遍。他们通过他们的公共性来产生自己的安全性,在这里每个参与者可以看到所有的账户余额和其所有的交易活动。
案例:公有链中有许多我们熟悉的身影:BTC,ETH,EOS,AE,ADA等
2.私链——权利掌握在少数人手里
私链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。
特性:
1.交易速度快,一个私链的交易速度可以比任何其他的区块链都快,甚至接近了并不是一个区块链的常规数据库的速度。这是因为就算少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易。2.隐私性好,给隐私更好的保障私有链使得在那个区块链上的数据隐私政策像在另一个数据库中似的完全一致;不用处理访问权限和使用所有的老办法,但至少说,这个数据不会公开地被拥有网络连接的任何人获得。3.交易成本低交易成本大幅降低甚至为零私有链上可以进行完全免费或者至少说是非常廉价的交易。如果一个实体机构控制和处理所有的交易,那么他们就不再需要为工作而收取费用。
案例:Linux基金会、R3CEVCorda平台以及GemHealth网络的超级账本项目(Hyperledgerproject)或在开发或在使用私链。
3.联盟链——部分去中心化
联盟链开放程度和去中心化程度是有所限制的。其参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。
特性:
1.交易成本低,交易只需被几个受信的高算力节点验证就可以了,而无需全网确认;2.节点容易连接,若是出了问题,联盟链可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成交易;3.灵活,如果需要的话,运行私有区块链的共同体或公司可以很容易地修改该区块链的规则,还原交易,修改余额等。
案例:瑞波用于日韩国际汇款及日本本国银行间汇款建立了联盟链,同时之前火过一阵子的迅雷链克也是一种半开放的联盟链。
4.侧链——拓展协议
侧链”从严格上来说,其本身并不是区块链,可以理解为区块链的一种扩展协议。早期“侧链”是为了解决比特币区块链技术的限制问题。侧链就像是一条条通路,将不同的区块链互相连接在一起,以实现区块链的扩展。侧链完全独立于比特币区块链,但是这两个账本之间能够“互相操作”,实现交互。
特性:
1.独立性,侧链架构的好处是代码和数据独立,不增加主链的负担,避免数据过度膨胀。侧链有独立的区块链,有独立的受托人或者说见证人,同时也有独立的节点网络,就是说一个侧链产生的区块只会在所有安装了该侧链的节点之间进行广播。2.灵活性,侧链所有的区块链参数是可以定制的,简单的比如区块间隔、区块奖励、交易费的去向等,高级用户还可以修改共识算法。
案例:LSK,RDN,ARDR等币种是利用的侧链技术。
对于目前整个数字货币领域而言,今年可能仍然是底层公有链项目的竞争大赛,原因是目前公链作为区块链的基础设施还是存在明显的不足,尚且无法实现真正的安全、可靠和高效。这也明显制约着整个区块链产业的发展。
浅析FabricPeer节点
HyperledgerFabric,也称之为超级账本,是由IBM发起,后成为Linux基金会Hyperledger中的区块链项目之一。
Fabric是一个提供分布式账本解决方案的平台,底层的账本数据存储使用了区块链。区块链平台通常可以分为公有链、联盟链和私有链。公有链典型的代表是比特币这些公开的区块链网络,谁都可以加入到这个网络中。联盟链则有准入机制,无法随意加入到网络中,联盟链的典型例子就是Fabric。
Fabric不需要发币来激励参与方,也不需要挖矿来防止有人作恶,所以Fabric有着更好的性能。在Fabric网络中,也有着诸多不同类型的节点来组成网络。其中Peer节点承载着账本和智能合约,是整个区块链网络的基础。在这篇文章中,会详细分析Peer的结构及其运行方式。
在本文中,假设读者已经了解区块链、智能合约等概念。
本文基于Fabric1.4LTS。
区块链网络是一个分布式的网络,Fabric也是如此,由于Fabric是联盟链,需要准入机制,所以在网络结构上会复杂很多,下面是一个简化的Fabric网络:
各个元素的含义如下:
对于Fabric网络,外部的用户需要通过客户端应用,也就是图中的A1、A2或者A3来访问网络,客户端应用需要通过CA证书表明自己的身份,这样才能访问到Fabric网络中有权限访问的部分。
在上面的网络中,共有四个组织,R1、R2、R3和R4。其中R4是整个Fabric网络的创建者,网络是根据NC4配置的。
在Fabric网络中,不同的组织可以组成联盟,不同的联盟之间数据通过Channel来隔离。Channel中的数据只有该联盟中的组织才能访问,每一个新的Channel都可以认为是一条新的链。与其他的区块链网络中通常只有一条链不一样,Fabric可以通过Channel在网络中快速的搭建出一个新的区块链。
上面R1和R2组成了一个联盟,在C1上交易。R2同时又和R3组成了另外一个联盟,在C2上交易。R1和R2在C1上交易时,对R3是不可见的,R2和R3在C2上交易时,对R1是不可见的。Channel机制提供了很好的隐私保护能力。
Orderer节点是整个Fabric网络共有的,用来为所有的交易排序、打包。比如上面网络中O4节点。本文不会对Orderer节点进行详细说明,可以把这个功能理解为比特币网络中的挖矿过程。
Peer节点表示网络中的节点,通常一个Peer就表示一个组织,Peer是整个区块链网络的基础,是智能合约和账本的载体,Peer也是本文讨论的重点。
一个Peer节点可以承载多套账本和智能合约,比如P2节点,既维护了C1的账本和智能合约,也维护了C2的账本和智能合约。
为了可以更深入了解Peer节点的作用,先了解一下Fabric整体的交易流程。整体的交易流程图如下:
Peer节点按照功能来分可以分为背书节点和记账节点。
客户端会提交交易请求到背书节点,背书节点开始模拟执行交易,在模拟执行之后,背书节点并不会去更新账本数据,而是把这个交易进行加密和签名,然后返回给客户端。
客户端收到这个响应之后就会把响应提交到Orderer节点,Orderer节点会对这些交易进行排序,并打包成区块,然后分发到记账节点,记账节点就会对交易进行验证,验证结束之后,就会把交易记录到账本里面。
一笔交易是否能成功是根据背书策略来指定的,每一个智能合约都会指定一个背书策略。
Peer节点代表着联盟链中的各个组织,区块链网络也是由Peer节点来组成的,而且也是账本和智能合约的载体。
通过对上面交易过程的了解可以知道,Peer节点是主要的参与方。如果用户想要访问账本资源,都必须要和peer节点进行交互。在一个Peer节点中,可以同时维护多个账本,这些账本属于不同的Channel。每个Peer节点都会维护一套冗余账本,这样就避免了单点故障。
Peer节点根据在交易中的不同角色,可以分成背书节点(Endorser)和记账节点(Committer),背书节点会对交易进行模拟执行,记账节点才会真正将数据存储到账本中。
账本可以分成两个部分,一部分是区块链,另一部分是CurrentState,也被称之为WorldState。
区块链上只能追加,不能对过去的数据进行修改,链上也包含两部分信息,一部分是通道的配置信息,另一部分是不可修改,序列化的记录。每一个区块记录前一个区块的信息,然后连成链,如下图所示:
第一个区块被称之为genesisblock,其中不存储交易信息。每个区块可以被分为区块头、区块数据和区块元数据。区块头中存储着当前区块的区块号、当前区块的hash值和上一个区块的hash值,这样才能把所有的区块连接起来。区块数据中包含了交易数据。区块元数据中则包括了区块写入的时间、写入人及签名。
其中每一笔交易的结构如下,在Header中,包含了ChainCode的名称、版本信息。Signature就是交易发起用户的签名。Proposal中主要是一些参数。Response中是智能合约执行的结果。Endorsements中是背书结果返回的结果。
WorldState中维护了账本的当前状态,数据以Key-Value的形式存储,可以快速查询和修改,每一次对WorldState的修改都会被记录到区块链中。WorldState中的数据需要依赖外部的存储,通常使用LevelDB或者CouchDB。
区块链和WorldState组成了一个完整的账本,WorldState保证的业务数据的灵活变化,而区块链则保证了所有的修改是可追溯和不可篡改的。
在交易完成之后,数据已经写入账本,就需要将这些数据同步到其他的Peer,Fabric中使用的是Gossip协议。Gossip也是Channel隔离的,只会在Channel中的Peer中广播和同步账本数据。
智能合约需要安装到Peer节点上,智能合约是访问账本的唯一方式。智能合约可以通过Go、Java等变成语言进行编写。
智能合约编写完成之后,需要打包到ChainCode中,每个ChainCode中可以包含多个智能合约。ChainCode需要安装,ChainCode需要安装到Peer节点上。安装好了之后,ChainCode需要在Channel上实例化,实例化的时候需要指定背书策略。
智能合约在实例化之后就可以用来与账本进行交互了,流程图如下:
用户编写并部署实例化智能合约之后,就可以通过客户端应用程序来向智能合约提交请求,智能合约会对WorldState中数据进行get、put或者delete。其中get操作直接从WorldState中读取交易对象当前的状态信息,不会去区块链上写入信息,但put和delete操作除了修改WorldState,还会去区块链中写入一条交易信息,且交易信息不能修改。
区块链上的信息可以通过智能合约访问,也可以在客户端应用通过API直接访问。
Event是客户端应用和Fabric网络交互的一种方式,客户端应用可以订阅Event,当Event发生时,客户端应用就会接受到消息。
事件源可以两类,一类是智能合约发出的Event,另一类是账本变更触发的Event。用户可以从Event中获取到交易的信息,比如区块高度等信息。
在这篇文章中,首先介绍了Fabric整体的网络架构,通过对Fabric交易流程的分析,讨论了peer节点在交易中的作用,然后详细分析了peer节点所维护的账本和智能合约,并分析了peer节点维护账本以及peer节点执行智能合约的流程。
文/Rayjun
[1]
[2]
[3]
区块链的分类目前区块链分为三类,其中混合区块链和私有区块链可视为:广义私有链,公共区块链公共区块链。意味着世界上任何个人或团体都可以发送交易,交易可以由区块链有效确认,任何人都可以参与其共识过程。公共区块链是目前最早的区块链,也是使用最广泛的区块链。每个比特币系列的虚拟数字货币都以公共的区块链为基础,世界上只有一个区块链对应这种货币。
拓展资料
1.工业区块链行业blockchains:组内多个预选节点指定为记账员,每个区块的生成由所有预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不干扰核算过程(本质上,它是管理簿记,但它成为分布式簿记。多少预先选择的节点和如何确定每个块的簿记员成为区块链的主要风险点),其他任何人都可以通过区块链的开放API进行有限的查询。私人区块链Private区块链((privateblockchains)):只有区块链的总账技术用于记账。它可以是一个公司或个人独家书面许可的区块链。这个链与其他分布式存储方案没有太大的不同。目前(2015年12月),保守的巨头(传统金融)想要尝试私有的区块链,而公共链的应用,如比特币,已经产业化,私有链的应用产品还在探索中。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的一种新的应用模式。区块链是比特币的一个重要概念。本质上,它是一个去中心化的数据库。
2.同时,作为比特币的底层技术,它是一系列与加密方法相关联的数据块。每个数据块包含一批比特币网络交易信息,验证其信息的有效性(防伪)并生成下一个区块。事实上,区块链这个词并没有出现在英文原版的比特币白皮书中,而是出现在区块链中。在最早的比特币白皮书中,区块链被翻译为区块链。这是汉语“区块链”最早出现的时间。国家互联网信息办公室于2019年1月10日发布《区块链信息服务管理条例》,自2019年2月15日起施行。从狭义上讲,区块链是一种按时间顺序组合数据块的链式数据结构,以及由密码学保证的防篡改和可伪造的分布式分类帐。广义上讲,区块链技术是一种新的分布式基础设施和计算方法,它使用区块链数据结构来验证和存储数据,使用分布式节点共识算法来生成和更新数据,使用密码学来确保数据传输和访问的安全性,采用由自动脚本代码组成的智能契约对数据进行编程和操作。
节点的类型有哪些?比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工,每个比特币节点都是钱包、矿工、完整区块链、网络路由节点的功能集合。
主流区块链技术有哪些本文试图对区块链有关技术流派和主流平台进行一个概览,作为学习区块链技术体系的导览,意在抛砖引玉,促进区块链开发社区的讨论与共识。区块链技术的流派未战先谋局,你想投入区块链开发这个领域,至少先要搞清楚现在有哪些玩家,各自的主张和实力如何。划分区块链技术流派并无一定之规,据我所见,或可有以下四种方式:第一是按照节点准入规则,划分为公有链、私有链和联盟链。公有链的代表自然是比特币和以太坊,私有链则以R3Corda声名最盛,联盟链的代表作品是Hyperledger名下的Fabric。公有链注重匿名性与去中心化,而私有链及联盟链注重高效率,而且还往往设置了准入门槛。公有链、私有链与联盟链之间的这些不同都在技术中有所体现,比如私有链和联盟链假设节点数目不大,可以采用PBFT算法来形成共识。而公有链假设有大量且不断动态变化的节点网络,用PBFT效率太低,只能采用类似抽彩票的算法来确定意见领袖。这就意味着,私有链与联盟链很难变成公有链,而用公有链来作联盟链或私有链虽然容易,却也并非即插即用。此种差异,学者不可不察。第二是按照共享目标,划分为共享账本和共享状态机两派。比特币是典型的共享账本,而Chain和BigchainDB也应属此类,这几个区块链系统在各个节点之间共享一本总账,因此对接金融应用比较方便。另一大类区块链系统中,各个节点所共享的是可完成图灵完备计算的状态机,如以太坊、Fabric,它们都通过执行智能合约而改变共享状态机状态,进而达成种种复杂功能。第三是按照梅兰妮·斯旺所描述的代际演进,将区块链系统分为1.0、2.0和3.0三代。其中1.0支撑去中心化交易和支付系统,2.0通过智能合约支撑行业应用,3.0支撑去中心化的社会体系。比特币和Chain应属于区块链1.0系统,而以太坊和Fabric是区块链2.0系统,目前尚无成功的区块链3.0系统出现,不成功的尝试倒是有那么一个,就是著名的TheDAO。第四是按照核心数据结构,分为区块链和分布式总账两派。区块链这一派在系统中真的实现了一个区块的链作为核心数据结构,而分布式总账这一派,只是吸取了区块链的精神,并没有真用一条区块链作为核心数据结构,或者虽然暂时用了,但声明说吾项庄舞区块链,意在分布式总账耳,若假以时日,因缘际会,未尝不可取而代之也。主流区块链技术平台了解流派划分,仍是只能用来指点江山,吹牛论道,要动手,总要有个切入点。区块链货币据说已经有上千个了,但值得关注的技术平台大概只有数十个,而如果要进入区块链开发领域,打下一个好基础,练出一身好功夫,捞到几个好offer,则值得深入研究学习的平台,屈指可数。首先当然是比特币。比特币作为区块链的第一个也是目前为止最成功、最重要的样板工程,已经上线运行了八年多,本身没有发生任何严重的安全和运维事故,其稳定与强悍堪称当代软件系统典范。比特币BitcoinCore是一个代码质量高、文档良好的开源软件,从学习区块链原理、掌握核心技术的角度来说,BitcoinCore是最佳切入点,能够学到原汁原味的区块链技术。当然,BitcoinCore是用C++写的,而且用了一些C++11和Boost库的机制,对学习者的C++水平提出了较高的要求。学习比特币平台开发还有一个优势,就是可以对接繁荣的比特币技术社区。目前围绕比特币进行改进和提升的人很多,人多力量就大,诸如隔离验证、闪电网络、侧链等比较新的想法和技术,都率先在比特币社区里落地。比如侧链技术的主要领导者Blockstream是由密码学货币元老AdamBack领衔的,而Blockstream是BitcoinCore最大的贡献者之一,所以一些有关侧链的技术在比特币社区里讨论最充分。但比特币作为一个典型的区块链1.0系统,是不是支撑其他类型区块链应用的最佳技术平台,存在很大的争议。另外,也不是所有人都有能力和必要精通区块链底层技术。所以对那些急于冲到区块链领域里做(quān)事(qián)的人来说,可能更直截了当的学习目标是以太坊和HyperledgerFabric。在以太坊上面用Solidity进行的智能合约开发是切入区块链开发最简单的方式,没有之一。以太坊的理想非常宏大,由于配备了强大的图灵完备的智能合约虚拟机,因此可以成为一切区块链项目的母平台,是驮住整个区块链世界的大乌龟。在以太坊上开发一个类似比特币的加密货币,是一个不折不扣的小目标。一般有经验的开发者在文档指导下,半天到一天即可入门。问题在于,入门以后又如何?靠写Solidity是否就可以包打天下?这是大大存疑的。我们也可以反过来说,如果以太坊+Solidity是区块链的终极解决方案,那么怎么还会出现那么多区块链技术门派呢?特别是,以太坊似乎并没有给现实世界中巨型的中心化组织们留下一条活路,这种彻底不妥协的革命态度有可能也成为以太坊推广的障碍。当前以太坊项目的开发进展并不顺利。一个比较突出的问题是项目过多,力量分散,导致项目质量参差不齐。但尽管如此,跟其他区块链2.0平台相比,以太坊提供的开发环境是最简单最完善的。初学区块链的人绝对有必要学习以太坊,从而对区块链和智能合约建立起一个最“正宗”的认识。主流区块链技术平台的第三支就是Fabric,它是Hyperledger的第一个也是最知名的孵化项目。Fabric最早来自IBM的OpenBlockchain项目,到2015年11月,IBM将当时已经开发完成的44,000行Go语言代码交给Linux基金会,并入Hyperledger项目之中。在2016年3月一次黑客马拉松中,Blockstream和DAH两家公司将各自的代码并入OpenBlockchain,随后改名为Fabric。到目前为止,Fabric与Intel提供的SawtoothLake并列为Hyperledger的一级孵化项目,但前者得到的关注远超后者。从技术角度来说,Fabric思路不错,重点是满足企业商用的需求,比如解决交易量问题。众所周知,比特币最大的短板是它每秒钟7个交易的上限,完全无法满足现实需要。而Fabric目标是实现每秒钟10万交易,这个量接近刚刚过去的双十一交易量瞬时峰值,完全可以满足正常条件下的行业级应用。Fabric用Go语言开发,也提供多种语言的API。特别值得一提的是,Fabric比较充分地运用了容器技术,比如其智能合约就运行在容器当中。这也是Go语言带给Fabric的一项福利,因为Go语言静态编译部署的特征很适合开发容器中的程序。Fabric还有一些特点,比如其membership服务可以设置节点准入审查,这是典型的联盟链特征。再比如其共识算法是可定制的。Fabric的短板是体系较为复杂,虽有文档,但缺少经验的开发者学习起来障碍比较大。然而由于其定位清楚,迎合了不少企业的心态,所以已经有多家机构在基于Fabric秘密研发行业内的联盟链项目。
❻ 以太坊节点:全节点、轻节点、归档节点
以太坊节点的多样性和角色在区块链网络中起着关键作用。主要有全节点、轻节点和归档节点三种类型。全节点是网络中的基石,拥有完整的区块链数据,确保交易验证和区块链同步,确保去中心化系统的安全。轻节点则是轻量级的选择,存储最少的状态信息,通过请求全节点获取交易详情进行验证,以节省存储空间。归档节点则在全节点的基础上,储存每个区块的快照状态,便于快速查询历史状态,但对硬件要求较高,主要用于特殊服务。
全节点确保了网络的完整性和安全性,而轻节点则在资源有限的情况下提供了验证交易的可能。归档节点虽然对整体安全性影响不大,但对历史数据查询至关重要。在实际应用中,全节点通常能满足大部分需求,而归档节点则更多见于专业服务场景。通过理解这些节点类型,用户可以更好地参与到以太坊网络的维护和使用中。