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(