• web3.js 发送EIP1559交易


    EIP-1559简介

    以太坊经过伦敦硬分叉后,实施了EIP-1559提案,该提案主要有以下内容。

    添加新字段

    EIP-1559添加了基本费用最高优先费用最高费用三个字段,分别解释如下:

    1. 基本费用(Base Fee):在以太坊上发送交易所需的最低Gas价格。基本费随着上一区块的Gas使用量而动态调整。
    2. 最高优先费用(MaxPriority Fee):用户愿意向矿工支付的Gas价格,越高越可能更快被打包到区块中。即给矿工的小费,默认是2gwei。
    3. 最高费用(Max Fee):用户愿意支付的最高Gas价格(基本费用+优先费用)。

    使用原交易字段Gas Price的交易类型,现在被称为Type 1。

    使用新交易字段Base Fee、MaxPriority Fee、Max Fee,而不使用Gas Price的交易类型,现在被称为Type 2。

    基本费的调整

    以太坊中存在Gas上限(Gas Limit)和目标Gas使用量(Gas Target)两个参数。

    可将Gas上限视为以太坊的区块大小,它限制了一个区块所能容纳的交易数量。目标Gas使用量是Gas上限的50%,是以太坊网络希望长期维持的理想区块空间。

    为了使当前Gas使用量尽量维持在目标Gas使用量,当父区块的Gas使用量小于目标Gas使用量时,以太坊会降低基本费,而如果大于目标Gas使用量时,会提高基本费。

    销毁基本费

    以太坊会将小费(最高优先费用)支付给矿工,而基本费将被销毁。因为如果将基本费支付给矿工,矿工会为了追求利益而恶意推高基本费。

    以太币过去是一个通胀模型,而这个改变可能使以太币成为一个通缩模型。

    发送Type-2交易

    使用web3.js以及@ethereumjs/tx库发送Type-2交易。

    代码如下:

    const EthereumCommon = require('@ethereumjs/common')
    const EthereumTx = require('@ethereumjs/tx')
    
    web3.eth.getTransactionCount(address).then(nonce => {
        var txParams = {
            chainId: chainId,
            nonce: web3.utils.toHex(nonce),
            maxFeePerGas: maxFeePerGas, 
            maxPriorityFeePerGas: maxPriorityFeePerGas,
            type: '0x2', //EIP-1559
            gasLimit: 3000000,
            to: address,
            data: data
        };
    
        var common = new EthereumCommon.default({ chain: EthereumCommon.Chain.Ropsten, hardfork: EthereumCommon.Hardfork.London });
        var tx = EthereumTx.FeeMarketEIP1559Transaction.fromTxData(txParams, { common });
    
        var signedtx = tx.sign(privatekey);
        var serializedTx = signedtx.serialize();
    
        web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex')).then(result => {
            //success code
        }).catch(error => {
            //error code
        });
    ).catch(error => {
        //error code
    });
    

    这里@ethereumjs/tx库的用法参考自官方文档:https://www.npmjs.com/package/@ethereumjs/tx

  • 相关阅读:
    Node.js:工具模块
    Node.js:GET/POST请求
    shell之任务控制
    java实现杨辉三角系数
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现显示为树形
    java实现文件管理
  • 原文地址:https://www.cnblogs.com/lnjoy/p/16268395.html
Copyright © 2020-2023  润新知