Tooling
这里介绍各种合约开发相关工具。
tron-solidity
solc 是标准的 Solidity 编译器, TRON 对此的 fork 修改位于 tronprotocol/solidity.
用法:
> solc --allow-paths `pwd` --overwirte -o ./out/ --abi --bin token/TRC20/TRC20.sol
...相对于原始 solc 的修改
- 增加 - trcToken基础类型, int256
- 删除 - wei|szabo|finney|ether单位,增加- sun|trx
- 增加 - TOKENBALANCE指令,- 0xd1, 方法- tokenBalance- address.tokenBalance(trcToken) -> uint
 
- 增加 - address.transferToken(uint, trcToken)
- 增加 - CALLTOKENVALUE,- CALLTOKENID指令,- 0xd2,- 0xd3- msg.tokenvalue: uint256
- msg.tokenid: trcToken
 
- CALLVALUE更名- CALLTOKEN
- 增加 - ISCONTRACT指令- 隶属 - address.isContract: bool
 
- 增加全局函数 - batchvalidatesign- bytes32 batchvalidatesign(bytes32 hash, bytes[] memory signatures, address[] memory addresses)
- 位图表示第 N 个地址验证成功 
- 最多同时验证 10 个签名 
 
- 全局函数 - validatemultisign- bool batchvalidatesign(address address, uint256 permissionid, bytes32 content, bytes[] memory signatures)
 
- 增加匿名合约相关函数 - verifyMintProof
- verifyTransferProof
- verifyBurnProof
- pedersenHash
 
理论上这些函数可以通过 library 方式实现对非 tvm 改版 Solidity 编译器的兼容。 官方应提供相应的 library 地址,作为标准参考实现。例如:
pragma solidity >=0.4.22 <0.6.0;
library Tron {
    function tokenBalance(address addr, uint256 tokenId) public view returns (uint256) {
        require(tokenId > 1000000);
        return addr.tokenBalance(tokenId);
    }
    function transferToken(address payable addr, uint256 tokenId, uint256 amount) public  {
        require(tokenId > 1000000);
        addr.transferToken(amount, tokenId);
    }
}pragma solidity >=0.4.22 <0.6.0;
import "./libtron.sol";
contract TestCall {
    function run() external view returns (uint256) {
        // address converted to 20-bytes checksum address
        address myAddress = 0x5CbDd86a2FA8Dc4bDdd8a8f69dBa48572EeC07FB;
        return Tron.tokenBalance(myAddress, 1000001);
    }
}注意事项
TRON-IDE
https://www.tronide.io/, forked from remix, the ethereum IDE.
Doc: https://tron-ide.readme.io/
基本使用很简单,但对 library 支持欠佳。
TronBox
TronBox, forked from Truffle.
wallet-cli
https://github.com/tronprotocol/wallet-cli
官方命令行工具,功能全面。但写的很傻逼。
wallet-cli(rust-tron)
Doc: https://github.com/andelf/rust-tron/blob/master/docs/contract.md
最后更新于
这有帮助吗?