基于以太坊的开发,教你如何节省手续费

以太坊手续费之殇

以太坊本质上是一个虚拟机,交易的gas成本主要由虚拟机的运行成本组成。当你发送 Token或者执行智能合约时,以太坊在处理这笔交易的过程中需要进行计算,会根据复杂度消耗一笔gas费(ETH)。

目前以太坊上的大部分应用都是以智能合约的形态在运行,而以太坊智能合约采用solidity语言编写,因而在编写智能合约时,不仅要考虑安全,还要考虑语言的优化,以便合约应用更高效便宜,一方面也为自己的用户节省应用手续费。

如何节省手续费

设计合约

因为合约执行的复杂度和计算量直接与执行消耗的gas相关,所以在合约设计,创建合约时,最好对需要上链的数据结构进行优化设计,只将必要的数据上链存储,比如基于ERC-721的NFT标准,NFT合约只要求将NFT的唯一TokenId上链存储,TokenId与对应标记物品的关系可以用URI的方式指向传统互联网网络上的一个资源;

比如,我们设计一个基于鱼类的NFT合约,按照ERC-721标准,我们只需要实现类似如下的合约即可

Contract MyFish { 
    // Mapping from token ID to owner address 
    mapping(uint256 => address) private _owners; 
 
    // ....... 
 
    function tokenURI(uint256 tokenId) public view returns (string memory) { 
       // ...... 
    } 
    //...... 
} 
 

以上合约中,我们只将NFT唯一TokenId在以太坊上,并通过URI标记对应物品

假如我们将鱼类的其它属性也上链存储,合约设计成如下形式

Contract MyFish { 
 
    struct Fish { 
        uint length; 
        uint weight; 
        uint age; 
    } 
    // Mapping from token ID to owner address 
    mapping(uint256 => address) private _owners; 
 
    // Mapping
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值