另外,由于Phantom的合约调用是异步的,一笔合约调用交易会被拆分成一个请求交易和一个响应交易,需要分别消耗一定配额。用户账户也可以通过计算DPOS的方式单次获取一定免费配额,适用于非高频操作场景。
Phantom合约的成本包括两部分: 1. 创建合约的成本:创建合约时合约开发者需要支付Phantom创建费用,且发起创建合约的请求交易需要消耗合约开发者账户的配额。创建合约的响应交易不额外消耗配额。 2. 调用合约的成本:调用合约的请求交易和响应交易会分别消耗发起请求交易的用户账户的配额和生成响应交易的合约账户的配额。前者需由用户账户抵押或计算DPOS获得,后者则通常来自于合约开发者对合约的抵押。
EOS的合约成本也可以分为两部分: 1. 创建合约的成本:创建合约时合约开发者需要消耗RAM来存储合约状态,并且需要持有CPU和NET来执行合约创建交易。 2. 调用合约的成本:调用合约时,调用合约的用户需要持有CPU和NET来执行合约调用交易。如果涉及到合约状态存储,还需要消耗RAM,这部分RAM要么由用户承担,要么由合约承担(即合约开发者提前为合约购买足够的RAM,可在合约创建时由开发者指定,但通常由用户承担)。
Phantom和EOS合约成本对比: 示例:下面用一个简单的竞猜合约来对比Phantom和EOS具体的资源消耗。合约包含一个名为guess的方法,入参为一个数字,范围为0-9。取随机数,如果随机数最后一位和入参相同,则打印”赢了“。
在Phantom中,合约开发者需要支付Phantom用于创建合约,或者计算一个难度为147722953的DPOS来发起创建合约交易。调用合约时,用户需要抵押Phantom来发起一笔请求交易(大约间隔75秒),或者计算一个难度为75164755的DPOS(每产生一个新的快照块可以发起一笔通过DPOS来获得配额的交易,大约间隔1秒)来发起调用合约请求交易(消耗配额23443)。合约开发者需要为合约抵押Phantom来发起合约响应交易(每75个快照块可以发起一笔合约请求交易,大约间隔75秒)(消耗配额22266)。如果全网出块率为95%,那么抵押Phantom三天最多能发起3259笔响应交易。
在EOS中,合约开发者创建合约账户时需要消耗200bytesNET和214μsCPU,更新合约代码和ABI时消耗704bytesNET和4664μsCPU。合约部署后,共占用10873bytesRAM,购买这些RAM大约需要0.4784EOS。调用合约时,用户发起调用合约交易消耗96bytesNET和1665μsCPU。如果用户要在3天内发起3283笔调用合约交易,需要至少抵押0.36EOSNET和36.81EOSCPU。
不同交易规模下,Phantom合约开发者和EOS用户抵押代币价格对比明显的Phantom更加具备商用性。
最终比对:Phantom的智能合约部署和调用成本远低于EOS。和EOS比,Phantom更适合高频场景,Phantom的全球共识以及过硬的底层技术将把智能合约提升到商用级别。
Phantom最新开源代码:https://github.com/michealbrownm/phantom