TRON Developer Hub CN

TRON开发者中心

欢迎来到TRON开发者中心。您将找到全面的指南和文档,以帮助您尽快开始使用TRON Developer Hub,并在遇到困难时提供支持。让我们跳进去吧!

Get Started    

与以太坊 EVM 虚拟机的不同

TVM 基本兼容以太坊 EVM,但在部分特有功能及细节上有所不同。

  • TVM 使用 energy 替代 gas 概念, energy 是全网统一的价格, 目前是 140 sun/energy;

  • GASPRICE, DIFFICULTY, GASLIMIT 在 TVM 中目前都返回0, TVM暂不支持 BASEFEE 指令;

  • VM指令消耗:TVM中多数指令执行的能量消耗等于EVM,少部分指令的能量消耗低于EVM(如SLOAD、CALL);

  • CREATE2指令创建的合约地址计算公式前缀不同:TVM选取0x41作为计算前缀,具体计算公式为 keccak256( 0x41 ++ address ++ salt ++ keccak256(init_code))[12:];

  • 预编译合约Ripemd160(0x03)不同:波场目前对输入做了2次sha256, 后续会提供一个新的预编译合约来实现标准的 Ripemd160 算法;

  • 预编译合约0x09不同:以太坊在该地址为Blake2F,波场为 BatchValidateSign [详见: https://github.com/tronprotocol/tips/blob/master/tip-43.md];

  • 在波场可以通过 Transfer 交易和带有 callValue 的 TriggerSmartContract 交易两种系统交易向合约地址发送 TRX,但是 Transfer 交易不会像 TriggerSmartContract 一样调用目标合约的fallback 函数;

在此基础上,TVM依托于波场网络特有的机制及生态新增了若干新特性

  • 增加了TRC10Token相关操作指令,包含CALLTOKEN(0xd0)指令、TOKENBALANCE(0xd1)指令、CALLTOKENVALUE(0xd2)指令、CALLTOKENID(0xd3)指令

  • 增加判断地址是否为合约地址指令ISCONTRACT(0xd4) TIP-44

  • 增加批量验证签名和验证多签的预编译合约,包含BatchValidateSign(合约地址0x09, TIP-43)、ValidateMultiSign(合约地址0x0a, TIP-60)

  • 增加匿名合约TIP-135及若干librustzcash相关预编译合约,包含verifyMintProof(地址0x1000001)、verifyMintProof(合约地址0x1000002)、verifyMintProof(合约地址0x1000003) TIP-137及merkleHash(合约地址0x1000004, TIP-138)

  • 增加合约质押和解锁balance功能相关指令 TIP-157,包含FREEZE(0xd5)UNFREEZE(0xd6)FREEZEEXPIRETIME(0xd7)指令

  • 增加合约投票功能相关的指令及预编译合约 TIP-271,包含VOTEWITNESS(0xd8)指令、WITHDRAWREWARD(0xd9)指令及RewardBalance(合约地址0x1000006)、IsSrCandidate(合约地址0x1000006)、VoteCount(合约地址0x1000007)、UsedVoteCount(合约地址0x1000008)、ReceivedVoteCount(合约地址0x1000009)、TotalVoteCount(合约地址0x100000a)预编译合约

关于提供上述差异性的兼容方案目前在讨论中,如您感兴趣请移步相关ISSUE参与讨论,讨论链接接地址ISSUE-272,相关TIP链接地址TIP-272

Updated about a month ago

与以太坊 EVM 虚拟机的不同


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.