7704
Ethereum(以太坊)是一个平台和一种编程语言,使开发人员能够建立和发布下一代分布式应用。在继承比特币网络框架基础上,以太坊(Ethereum)主要提出了可编程的“智能合约”概念-根据事先任意制订的规则来自动转移数字资产的系统。 在以太坊中,智能合约可以用Solinity(一种以太坊特定的编程语言)编写,然后上传到区块并永久存在。由于区块链是安全且不可更改的,因此可以完全相信以太坊的智能合约将按预期执行。代码的强制执行性使得赖账和毁约不可能发生。 Vitalik Buterin在Ethereum的白皮书中解释了智能合约: “智能合约不应被视为应履行或遵守的义务,它们更像是居住在 EVM 中的机器人,当收到外部条件(消息或交易)时就自动执行特定的代码并修改相关地址的余额或其它信息。” 以太坊几乎垄断了整个区块链智能合约的市场。 以太坊应用拓展了区块链能够处理的交易类型。主要场景是应用于货币以外的金融领域:分散,担保和交易任何事物,投票,域名,金融交易所,众筹,公司管理, 合同和大部分的协议,知识产权,还有得益于硬件集成的智能资产。 ![]() 以以太坊(Ethereum)为代表的区块链技术被称为2.0时代。 以太币(Ether),默克尔树协议(Merkle-tree),链上元协议(on-chainMetacoins-protocol),改进版幽灵协议,身份和信誉系统,去中心化存储,去中心化自治组织(DAO),费用规范机制都是以太坊(Ethereum)的重要创新。 以太坊(Ethereum)在早期采取POW的共识机制保障网络不受攻击,之后通过分叉的方式转变为POS的共识机制。这样的设计主要考虑的是初期整个系统的安全性问题。2016年7月,以太坊开发团队通过修改以太坊软件的代码,在第1920000区块强行把The DAO及其子DAO的所有资金全部转到一个特定的退款合约地址,从而“夺回”黑客所控制的DAO合约的币。从而形成两条链,一条为原链(ETC),一条为新的分叉链(ETH),各自代表不同的社区共识以及价值观。 以太坊的历史 2013年12月,V神发布了以太坊白皮书。 2014年1月,以太坊正式宣布诞生。 2014年4月,以太坊发布了三版测试网络。 2014年4月,以太坊发布了黄皮书。 2014年7月,创立了第一个以太坊基金会。 2014年7月,以太坊发布了第5版测试网络。 2014年7月,以太坊开始募集代币,总共1843万美元。 2015年7月,以太坊主网正式上线。 以太坊的基础元素 什么是以太坊账户 以太坊账户分两类: ◆ 外部拥有账户(EOA),也就是普通账户 ◆ 合约账户 普通账户 所谓的普通账户就是我们存放以太币的账户,可以随意生成,它具有以下特性: ◆ 拥有以太币余额(以太币存放的地方,与比特币的UTXO模式不同)的balance。 ◆ 用于确定每笔交易只能被处理一次的计数器(nonce)。 ◆ 发送交易(以太币转账、发布合约、调用智能合约) ◆ 通过私钥控制 ◆ 没有相关联的代码 合约账户 合约账户也是最激动人心的概念和底层代码实现,它是功能和数据的集合,存在于以太坊的特定地址(发布智能合约的地址上),拥有一下特性: ◆拥有以太币余额 ◆有相关联的代码 ◆通过交易或消息调用的方式触发并由以太坊虚拟机(EVM)解释执行 当被执行时: ◆运行在随机复杂度(图灵完备性) ◆只能操作其拥有的特定储存,例如可以拥有其永久state ◆可以呼叫其他合约 所有以太坊区块链上的操作都是由各账户发起的交易来出发。智能合约账户收到一笔交易,交易所带的参数都会成为代码的入参。合约代码会被以太坊虚拟机(EVM)在每一个参与网络的节点上运行,以作为它们新区块的验证。 交易和消息 交易 “交易”术语通俗来讲就是一个账户向另外一个账户发送一笔被签名的消息数据包的过程,区块链会记录并存储相应的数据。延伸一下,调用智能合约改变一个合约账户的数据状态,也是一笔交易,同样需要花费手续费。 交易包括: ◆消息的发送者 ◆消息的接收者 ◆签名信息,用来证明发送者有意向通过区块链向接收者发送消息 ◆价值域,从发送方转移到接受方的以太币的数量 ◆可选的数据域,用来储存智能合约或调用智能合约的代码 ◆GasLimit,该交易的执行时使用Gas的上限 ◆GasPrice,交易发送者愿意支付的Gas费用的价格。一个单位的Gas表示了执行一个基本指令,例如一个计算步骤。 消息 合约具有发送”消息”到其他合约的能力。消息是一个永不串行且只在以太坊执行环境中存在的虚拟对象。它们可以被理解为函数调用(function calls)。曾有人咨询,智能合约是否可以调用比特币转账,这里的解释已经给出了明确的答复。 消息包括: 消息发送者 ◆ 消息的接收者 ◆ 可选的数据域,合约实际上的输入数据 ◆ GasLimit,同交易。 总体来说,一个消息就是一笔交易,除了它不是由外部账户生成,而是合约账户生成。当合约正在执行的代码中运行了call 或者delegatecall这两个命令时,就会生成一个消息。消息有的时候也被称为”内部交易”。与一个交易类似,一个消息会引导接收的账户运行它的代码。因此,合约账户可以与其他合约账户发生关系。 什么是Gas 比特币网络中的计算机(节点)维护和更新区块链。在以太坊中,这些节点运行以太坊虚拟机(EVM)。以太坊虚拟机是一台超级计算机,它结合了网络中所有节点的计算能力。这种计算能力用于在区块链上运行用户提交的代码(智能合约)。为了执行智能合约,EVM收取非常小的交易费以换取智能合约需要的计算能力。这个费用被称为“Gas”。这笔费用以Gas作为单位计数,也就是俗称的燃料。 Gas和交易消耗的Gas 每笔交易都包含Gas limit和Gas price。矿工可以有选择的打包这些交易并收取这些费用。Gasprice 会影响到该笔交易被打包所需等待的时间。如果该交易的操作所使用的Gas数量小于或等于所设置的Gas limit,交易会被处理。但如果Gas总消耗超过Gas limit,所有的操作都会被重置,但手续费依旧会被收取。区块链会显示这笔交易完成尝试,但因为没有提供足够的Gas导致所有的合约命令都被复原。交易完成之后没有被使用的Gas会以以太币的形式返还给发起者。Gas消耗只是一个预估值,所以许多用户会超额支付Gas来保证他们的交易会被接受。 估算交易消耗 交易费由两部分组成: GasUsed:该交易消耗的总Gas数量 GasPrice:该交易中单位Gas的价格(用以太币计算) 交易费 = GasUsed * GasPrice GasUsed 每个EVM中的命令都被设置了相应的Gas消耗值。GasUsed是所有被执行的命令的Gas消耗值总和。如果希望估算GasUsed,可以web3.eth.estimateGas。 GasPrice 用户可以自行设置的GasPrice的价格。由于网络拥堵等多种情况,此价格会动态变化,可根据交易字节数和当前区块中打包的平均值进行大概的预估。 以太坊网络上的”DoS”攻击 CryptoKitties 在 2017 年 11 月 28 日于以太坊区块链亮相,是一款虚拟的养猫游戏。它就造成过以太坊网络的拥堵。太坊网络减速的过程称为对以太坊网络的”DoS”攻击。当以太坊网络上持续地出现全满区块并且有大量交易在网络上待处理时就会出现所谓的DoS情况。同时,矿工有权利根据交易费选择打包哪些交易。如果当时队列中(交易池中)有上千笔交易正在等待打包,那么就有可能造成几个小时的非正常交易延迟。DDoS可能是恶意的也有可能是非恶意的。 以太坊现状却面临到几个重要的瓶颈: 1.产生区块及运算的速度不够快足以承载够多的Dapp。 2. 目前ETH为POW的验证机制,矿池算力的不平均使得以太坊基金会的主导能力稍微降低。 3. 要使用DAPP的使用者们必须要在钱包中拥有ETH不然没办法运行程式。 V神的分片扩展方案 V神在Twitter上发帖称“分片即将到来”,并且他还分享了一个全新的代码仓库,其中记录了所谓的“分叉选择规则”中部分概念验证,这些代码展示了以太坊分片如何与主区块链交互。Buterin发布的推文还推出了一个12个分片模拟图像。 2018年6月,V神(Vitalik Buterin)发布了一个新的概念验证,演示了如何将分片扩展解决方案“栓在”Ethereum主链上,旨在显着提高以太坊区块链的事务吞吐量和可扩展性。以太坊每秒处理小于10笔交易,不能满足目前的吞吐量需求。 然而,业内认为以太坊目前分片技术还要等待至少3个月才能出来。 早在2014年,井通科技的区块链底层分层技术就已经落地,领先市场4年。同时,井通科技的兄弟企业项目墨客--在分层构架设计的帮助下,无须硬分叉,其分片技术也已经落实。 井通区块链技术的底层分层架构设计,将信任栈分为5层,网络层、区块层、数据层、价值层以及合约层,实现区块链不同层次的业务场景。 区块链的发展成熟也是多层次的,并不是一个单一的成熟路径。基于分层设计的区块链,就能够根据不同层次的成熟情况,推出相应的区块链产品。 井通区块链技术基于分层跨链技术,简化了智能合约的使用流程,便利了实际操作;并在此架构的基础上提供了分级账本的功能,是全球第一家实现分层架构的底层技术。 ![]() 把分片看成是一个区块链,上面有上百个不同的漩涡,每个漩涡都是独立的账户空间一个账户,一个合约的生成和发起都可以在不同的漩涡上,也可以在多个漩涡间发起一笔交易,而这个交易仅仅会对涉及到的漩涡产生影响。 |