主页 > 如何从imtoken转出以太坊 > 几种区块链的优缺点

几种区块链的优缺点

如何从imtoken转出以太坊 2023-06-15 07:25:26

一.设计目标1.比特币

有色币,通过仔细跟踪一些特定比特币的来龙去脉,可以将它们与其他比特币区分开来,这些特定的比特币被称为有色币。它们具有一些特殊的属性,因此它们具有独立于比特币面值的价值。使用彩色硬币的这一功能,开发人员可以在比特币网络上创建其他数字资产。有色币本身就是比特币,存储和传输不需要第三方,可以使用现有的比特币基础网络

2.以太坊

除了以上特点,还有

3.面料4.Corda

比特币有几种_比特币比特币的行情_有币领比特币

Corda 是用于银行业务和银行间业务的技术框架。尽管 R3 声称 Corda 不是区块链,但它具有区块链的一些重要属性。

Corda 使用 Java 和 Kotlin 开发比特币有几种,在智能合约、数据访问接口等各种功能上完全依赖 Java。Corda 的主要设计目标是:

因此,所有的 Corda 交易都不会广播到全网,所有节点直接通信,无需 P2P 网络。这导致其网络规模受限于小规模,无法形成大规模的联盟链,适用的业务场景也比较狭窄。

二.账户系统

比特币比特币的行情_有币领比特币_比特币有几种

UTXO(Unspent Transaction Output)是一种机制:每一种数字货币都会被登记在一个账户的所有权下,而一种数字货币有两种状态,要么没有被花费,要么已经被花费。当需要使用数字货币时,将其状态标记为已使用,创建相同数量的新数字货币,并在新账户下注册其所有权。在这个过程中,标记为已花费的数字货币称为交易的输入,新创建的数字货币称为交易的输出。在一笔交易中,它可以包含多个输入和多个输出,但输入之和必须等于输出之和。计算账户余额时,只需将该账户下注册的所有数字货币的面额相加即可。

比特币和Corda使用UTXO等账户机制,而以太坊采用更直观的余额机制:每个账户都有一个状态,直接记录账户当前余额和转账逻辑。就是从一个账户中减去一部分金额,将相应的金额添加到另一个账户中。相减部分和相加部分必须相等

那么UTXO模式和平衡模式有什么区别呢? UTXO 最大的优势是基于 UTXO 的交易可以并行验证,任意排序,因为所有的 UTXO 都是不相关的,这对区块链未来的可扩展性有很大帮助,而基于余额的设计则没有这样的优势。反过来,余额设计的优点是设计思路非常简洁直观,便于程序实现,尤其是在智能合约中,处理UTXO的状态非常困难。这也是为什么以智能合约为主要功能的以太坊选择平衡设计的原因,而比特币、Corda等以数字资产为中心的架构更倾向于UTXO设计。

关于身份认证,比特币和以太坊基本没有身份认证设计。原因很简单,因为既强调隐私和匿名,又反对监督和中心化的设计思路,身份认证必然会引入一些中央或弱化的中央机构。

比特币有几种_比特币比特币的行情_有币领比特币

Fabric 和 Corda 选择使用数字证书来验证用户身份。原因是两者都有适用于现有金融体系的设计目标,金融体系必须考虑合规性和接受监管。另外,现有金融系统广泛采用数字证书方案,可以快速与区块链系统集成

三.共识机制

不同于传统的分布式系统,区块链是一个去中心化的系统,可能承载大量的金融资产,因此可能面临大量的拜占庭式故障而不是一般性故障,而中心化分布式系统很少出现拜占庭式故障。因此,区块链的共识机制与传统的分布式系统有很大的不同

比特币出块时间约10分钟,以太坊约15秒

比特币比特币的行情_比特币有几种_有币领比特币

即使维持大算力来保护网络,工作量证明也不能从根本上保证交易的最终性。例如,比特币经常会产生孤块,而孤块中包含的数据交易可能会被逆转。所以比特币通常需要用户等待 6 个区块进行确认比特币有几种,或者大约 1 小时,才会认为交易已经以可接受的概率完成,而这个概率不是最终的——你永远不知道是否有远超的巨大算力整个网络在黑暗中试图撤消以前的交易。维持庞大算力的电费也是相当可观的。因此,以太坊已经在设计一种从工作量证明机制切换到其他共识机制的方案

拜占庭容错模型对网络中的节点做出假设和要求:如果共识中有f个节点会经历拜占庭式故障,那么至少需要3f+1个节点参与共识以避免网络分叉在该模型下,每个区块的构建过程需要至少 2f+1 个节点的参与才能完成,不同于每个节点独立构建区块的工作量证明机制。一个区块一旦构建,就不能被撤销,因为 2f+1 个诚实的记账节点不会在同一高度签署两个不同的区块。

相比之下,工作量证明机制提供了极高的灵活性和可用性,因为每个节点独立构建区块,无需其他节点参与,节点可以随时加入或离开网络,即使整个网络中只剩下一个节点,网络可以继续工作,但相应地也失去了交易的最终性;相反,拜占庭容错机制牺牲了一定的灵活性和可用性,必须在线提供记账节点。该服务不能从网络中撤回。一旦 1/3 的记账节点宕机,网络将变得不可用,但它确保了交易的最终确定性。

四.智能合约

有币领比特币_比特币比特币的行情_比特币有几种

比特币内置基于堆栈的脚本执行引擎,可以运行独特的脚本代码,对交易进行简单的有效性验证,例如签名验证和多重签名验证。比特币脚本语言被有意设计为非图灵完备的,足够简单以处理货币转账的各种需求。

以太坊是第一个以图灵完备的智能合约为主要功能的区块链。用户可以在以太坊平台上创建自己的合约,合约的内容可以包含包括货币转账在内的任何逻辑。该合约是用一种名为 Solidity 的语言编写的,这是一种由以太坊团队开发的用于编写智能合约的高级语言。语法类似于 JavaScript,最终编译成字节码,运行在 EVM(以太坊虚拟机)上。 ) 之中。 EVM 提供堆栈、内存、存储等虚拟硬件和专用指令集,所有代码都在沙箱中运行。它提供了合约之间相互调用的能力,甚至可以动态加载其他合约的代码在运行时执行。这种能力使得以太坊合约非常灵活,但也可能让合约的功能变得不确定。

不同于以太坊自己开发语言和虚拟机的思路,Fabric 选择利用现有的容器技术来支持智能合约功能。 Fabric 的智能合约理论上可以用任何语言编写,对开发者非常友好。他们不需要学习一门新语言,可以重用现有的业务代码和丰富的开发库,使用自己熟悉的开发工具。相比之下,使用Docker的智能合约架构也存在很多问题:第一,智能合约的执行过程难以控制,无法限制其功能;二是无法准确计算合约运行所消耗的计算资源另外,运行Docker是一项相对资源密集型的操作,使得合约在移动设备上运行变得困难;最后,不同节点的硬件配置、合约引用的开发库等。行为高度不确定。

Corda 的智能合约功能和它本身一样,都是基于 JVM(Java 虚拟机)。因此,您可以使用任何与 JVM 兼容的语言进行开发,例如 Java、Kotlin 等。但是,它对 JVM 进行了某些更改,以使在其上运行的合约脚本具有确定性。开发过程大致是这样的:使用Java创建一个实现Contract接口的类(Class),并提供一个名为verify的函数(Function)来验证交易。该函数接受当前交易作为参数,如果交易验证失败,则会抛出异常,如果没有异常,则验证通过。 Corda 使用 JPA(Java Persistence Architecture)提供持久化功能,支持 SQL 语句和常用数据库,但需要安装相应的插件,并且由于数据只存储在合约执行器的节点中,全局持久化存储不能执行。

五.可扩展性

区块链的数据结构通常只是追加记录,而不是修改或删除记录。真实记录完整的历史数据,让新加入的节点有能力验证全网完整的交易历史。不信任其他节点。这一特性带来了去中心化的便利,但也影响了区块链系统的可扩展性,因为区块会无限增长,直到填满整个硬盘。所以有必要提供一种空间回收机制来处理不断增长的数据