diff --git a/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction1559.java b/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction1559.java index e44047490..6490ba784 100644 --- a/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction1559.java +++ b/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction1559.java @@ -32,9 +32,8 @@ * For the specification, refer to p4 of the yellow * paper. */ -public class Transaction1559 extends LegacyTransaction implements ITransaction { +public class Transaction1559 extends Transaction2930 implements ITransaction { - private long chainId; private BigInteger maxPriorityFeePerGas; private BigInteger maxFeePerGas; @@ -48,8 +47,7 @@ public Transaction1559( BigInteger maxPriorityFeePerGas, BigInteger maxFeePerGas, List accessList) { - super(EIP1559, nonce, null, gasLimit, to, value, data); - this.chainId = chainId; + super(chainId, nonce, null, gasLimit, to, value, data,accessList); this.maxPriorityFeePerGas = maxPriorityFeePerGas; this.maxFeePerGas = maxFeePerGas; } @@ -86,7 +84,7 @@ public List asRlpValues(Sign.SignatureData signatureData) { result.add(RlpString.create(data)); // access list - result.add(new RlpList()); + result.add(new RlpList(rlpAccessListRlp())); if (signatureData != null) { result.add(RlpString.create(Sign.getRecId(signatureData, getChainId()))); @@ -129,10 +127,6 @@ public BigInteger getGasPrice() { throw new UnsupportedOperationException("not available for 1559 transaction"); } - public long getChainId() { - return chainId; - } - public BigInteger getMaxPriorityFeePerGas() { return maxPriorityFeePerGas; } diff --git a/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction2930.java b/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction2930.java index b278ea185..4e7bb84d0 100644 --- a/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction2930.java +++ b/crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction2930.java @@ -71,6 +71,18 @@ public List asRlpValues(Sign.SignatureData signatureData) { result.add(RlpString.create(data)); // access list + result.add(new RlpList(rlpAccessListRlp())); + + if (signatureData != null) { + result.add(RlpString.create(Sign.getRecId(signatureData, getChainId()))); + result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getR()))); + result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getS()))); + } + + return result; + } + protected List rlpAccessListRlp() { + List accessList = getAccessList(); List rlpAccessList = new ArrayList<>(); accessList.forEach( @@ -89,15 +101,7 @@ public List asRlpValues(Sign.SignatureData signatureData) { rlpAccessListObject.add(new RlpList(keyList)); rlpAccessList.add(new RlpList(rlpAccessListObject)); }); - result.add(new RlpList(rlpAccessList)); - - if (signatureData != null) { - result.add(RlpString.create(Sign.getRecId(signatureData, getChainId()))); - result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getR()))); - result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getS()))); - } - - return result; + return rlpAccessList; } public static Transaction2930 createEtherTransaction(