一、Moonbeam 与 以太坊异同之处
目前Moonbeam在努力实现兼容以太坊,但是Moonbeam相对于以太坊还存在一些区别。
1.1 账户余额
(资料图片仅供参考)
以太坊中将账户划分为两类:外部账户(EOAs)和合约账户(contract account),虽然二者功能有所区分,但是却都使用相同的地址空间。
外部账户(external owned accouts):用工具生成一个私钥作为账户的密码,谁掌握这个私钥,谁就可以控制这个账户。在持有这个私钥之后,通过椭圆曲线算法生成一个公钥,然后通过keccak256(public key)得到结果后再取后40位得到。外部账户的核心就是私钥,创建的外部账户具有以下特点:
(1)拥有以太余额
(2)能发送交易,包括转账和执行合约代码
(3)被私钥控制
(4)没有相关的可执行代码
合约账户:含有合约代码的账户,被外部账户或者合约创建,合约在创建时被自动分配到一个账户地址,用于存储合约代码以及合约部署或执行过程中产生的存储数据。因为没有私钥,所以没有人可以拿合约账户当做外部账户使用,只能通过外部账户来驱动合约账户执行合约代码。其具有如下特点:
(1)不能发送交易
(2)合约账户接收到外部账户发来的交易以后可以通过Message调用其他合约账户
(3)合约账户存储了合约代码和合约状态
但不论账户类型为何,私钥的拥有者可以使用账户进行转账和查询余额,余额的计算使用Wei计算,1ETH = 1*1018Wei。
在Moonbeam中,账户是一个拥有Token余额(Token种类取决于网络)的实体账户。账户可以由用户(用私钥签署)或智能合约控制。Moonbeam的账户类型和以太坊一样,但是额外多了代理账户,该代理账户是用来代表另一个帐户执行有限数量的操作。在余额方面,Moonbeam账户有五种不同的余额类型:
(1)Free:指在Substrate API内可使用(未锁定/冻结)的余额。 free余额的概念取决于要执行的操作。 例如,民主投票不会从free余额中减少分配给投票的余额,但Token持有者将无法转移该余额
(2)Reducible:指通过Moonbeam上的以太坊API可使用(未锁定/冻结)的余额。 例如,MetaMask显示的余额是真正的可支出余额,是所有可被民主治理锁定的余额(在Polkadot.js中显示为可转移)
(3)Reserved:指由于链上要求而持有的余额,可以通过执行一些链上操作来释放。 例如,用于创建代理账户或设置链上身份的绑定会显示为reserved balance。这些资金在被释放之前不能通过以太坊API访问
(4)Misc frozen:指在提取资金时free余额可能不会低于的余额,交易费除外。 例如,用于对治理提案进行投票的资金会显示为misc frozen。 这些资金在被释放之前不能通过以太坊API访问
(5)Fee frozen:指在专门支付交易费时free余额可能不会低于的余额。 这些资金在被释放之前不能通过以太坊API访问
以太坊和Moonbeam上账户余额的主要区别在于Moonbeam中锁定和保留余额的概念。账户仍然拥有这些Token,但不能用来交易。
1.2 共识和确定性
在以太坊中,采用的是权益证明 (PoS)。权益证明是区块链用来达成分步式共识的一种共识机制。 在工作量证明共识机制中,矿工通过消耗能源来证明他们拥有资本以应对风险。 而在权益证明共识机制中,验证者明确地通过以太币将资本质押到以太坊上的智能合约中。 质押的以太币随后将作为抵押品,如果验证者表现出不诚实或懒惰,就可以销毁这些以太币。 之后,验证者负责检查在网络上传播的新区块是否有效,并偶尔自己也创建和传播新区块。与工作量证明体系相比,权益证明有许多改进:
(1)能效更高:无需在工作量证明计算中使用大量能源
(2)门槛更低、硬件要求下降:无需购买高性能硬件以便获得创建新区块的机会
(3)中心化风险降低:权益证明应该可以增加保护网络安全的节点
(4)由于能源需求低,发行较少的以太币就可以激励大家参与
(5)与工作量证明相比,对不当行为的经济处罚让 51% 攻击的代价呈指数级增加
(6)如果 51% 攻击是为了攻破加密经济的防御,那么社区可以求助于诚实链的社会恢复
一个交易在分布式网络具有“最终确定性”是指,该交易是区块的一部分且无法改变,除非燃烧掉大量以太币。 在权益证明以太坊上,通过“检查点”区块来管理确定性。 每个时段中的第一个区块是检查点。 验证者为他们认为有效的“检查点对”投票。 如果一对检查点获得至少达到质押以太币总数三分之二的投票,那么这两个检查点会升级。 这两个检查点中较新的一个会变成“合理”状态。 较旧的一个检查点已经是合理状态,因为它是上一个时段中的“目标”。 现在,这个检查点会升级为“已确定”状态。 要回滚已确定区块,攻击者将承担至少相当于质押以太币总数(目前约价值 $10,000,000,000)三分之一的损失。
在Moonbeam中,主要基于委托权益证明(NPoS)模式,是PoS模式的变种。在 NPoS 中,委托者被称为提名者。提名者在候选列表中提名验证器,并锁定一定数量的标代币来支持它们。在 NPoS 中,验证程序的数量受治理的限制,并且这些验证器是根据它们在网络中的总质押量来选择的。与验证器不同,提名者可以有无数的参与者。提名者被激励不断寻找可靠的新候选人。有了这两个角色,NPoS 可以让所有代币持有者持续参与网络。因此,它保持有限验证器数量的同时,保持了高级别的安全性。Moonbeam的最终确定性的策略如下:
(1)您查询网络最新终结区块的哈希
(2)您使用哈希截取区块编号
(3)您使用区块编号对比您的交易,如果您的交易被包含在先前区块当中代表它已经被确认
(4)进行安全检查,按编号检索区块,并验证给定的交易哈希被包含在该区块当中
1.3 转账API
在以太坊中,简单余额转账依赖于eth_sendRawTransactionJSON RPC。这可以直接从一个账户到另一个账户,或通过智能合约。
在Moonbeam中,有两种方式启动Moonbeam的余额转账功能。
(1)用户可以通过MetaMask、MathWallet或其他任何使用以太坊JSON-RPC的工具等应用程序来使用以太坊API
(2)用户可以通过Polkadot.js App网站使用Substrate API或直接使用Substrate RPC
当然要注意的是,Token持有者可以利用这两类API来转移原生代币。例如Moonriver或Moonbeam EVM中基于ERC-20的资产,这些资产的转移只能通过以太坊API完成,因为需要与智能合约交互。
1.4 RPC 支持
在Moonbeam中,Moonbeam团队与Parity密切合作开发Frontier。Frontier是基于Substrate的以太坊兼容层,它允许开发人员运行未经修改的以太坊dApp。Moonbeam致力于兼容以太坊Web3 API和EVM,但是并不是所有JSON-RPC方法都支持。
二、以太坊合并是否影响Moonbeam
以太坊合并是将以太坊的底层共识机制从PoW 变为PoS。 升级后的以太坊网络虽变成了PoS共识机制,但其中EVM和相关的执行API都和合并前一样。但是,目前以太坊PoW和PoS链之间已经出现分叉。这样的情况对于部署在Moonbeam并且有业务在以太坊网络的项目方来说,项目方需要考虑支持哪条链。其实,不管是支持那条链。对于Moonbeam愿景来说,都是在预期范围内。
因为Moonbeam在过去是Polkadot网络上的以太坊兼容智能合约平台,为原生互操作应用程序的开发提供便利。现在,Moonbeam是一个智能合约平台,用于构建跨链互连应用程序,能够访问任何链上的用户、资产和服务。通过将来自以太坊、Cosmos、波卡等功能整合到一个平台中,Moonbeam解决了当今用户体验碎片化的问题,解锁了真正的互操作性,并为下一代应用程序奠定基础。
Moonbeam平台使用集成的跨链信息传递,允许开发者创建访问多个远程区块链服务的智能合约。通过此方式结合Moonbeam的开发者友好型EVM平台、各类工具支持和Substrate架构,为构建互连应用程序提供理想化的开发环境。因此,以太坊合并对Moonbeam影响很小。
三、合约安全与链上安全分析
Moonbeam非常重视开发者社区的建设和发展,也非常重视生态的安全和项目的安全,这一点是非常重要的。因为一方面全面兼容以太坊的将带来以太坊、BNBChain上以solidity开发的项目迁移到Moonbeam上时会带来合约和业务安全风险,另一方面跨链因为技术的复杂性和细节性本来就是安全事件高发业务容易遭到黑客攻击。
SharkTeam将在链上安全角度为Moonbeam社区做出贡献,参与保护Moonbeam上的合约安全和链上安全。SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。
关键词: 应用程序