手把手教你区块链java开发智能合约nft(第四篇)-如何动态获取gasPrice和gasLimit?

手把手教你区块链java开发智能合约nft(第三篇)-如何动态获取gasPrice和gasLimit?

初学区块链,那真叫一个痛苦并无助。如果没有人带你的话

今天写的这篇是在前面文章基础上写的,初学区块链的朋友建议先看我前面写的文章
手把手教你区块链java开发智能合约nft-第一篇
手把手教你区块链java开发智能合约nft-第二篇(部署第一个NFT智能合约)

什么是gas?什么是gasPrice?什么是gasLimit?

关于这几个概念,可以点击参考官方的说明

开发中怎么给入gasPrice和gasLimit?

对于这个问题,刚入门的我就非常吐槽了,在区块链上任何操作EVM的,都会耗用一定的gas,给少了矿工就罢工了,直接报错

刚入门的我真不了解这些,利用web3j 依赖进行java开发,在部署智能合约时,采用默认的方式获取gasPrice和gasLimit,demo如下

 		Web3j web3j = Web3j.build(new HttpService("http://192.168.159.101:9545/"));
        BigInteger chainId = web3j.ethChainId().send().getChainId();
        RawTransactionManager transactionManager = new RawTransactionManager(web3j, getCredentials(),chainId.longValue());
        NFT721 nft721 = NFT721.deploy(web3j,transactionManager,new DefaultGasProvider()),

然后就是使劲的报错,报错内容拿去网上搜索,还真搜索不到什么内容,简直就是一脸的懵逼,问了有一定经验的大佬,也不鸟我,最最无助的就是使劲的报错,却哪里也查不出问题

后面就超了官网上的某个地方,看到几个配置值,就随便配置了对应的值,竟然神奇的成功了

 NFT721 nft721 = NFT721.deploy(web3j,transactionManager,new StaticGasProvider(BigInteger.valueOf(22_000_000_000l),BigInteger.valueOf(6_700_000l)),

然后就一直用这个值进行开发测试,完事后向领导汇报情况,说当前这两个值配置死了,配置其他的都报错,后面领导说这个不能写死,要动态获取,于是,开始探索动态获取的方式

动态获取gasPrice

gasPrice动态获取还是比较简单的,因为可以直接调用web3j依赖的api,就能获取到

  private static BigInteger getGasPrice(Web3j web3j){
   
    BigInteger gasPrice=null;
    try {
   
      EthGasPrice send = web3j.ethGasPrice(
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值