Skip to content

Commit afbace5

Browse files
committed
fix: 1559 tx rlp encoding with access list
1 parent fb46403 commit afbace5

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction1559.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,8 @@
3232
* For the specification, refer to p4 of the <a href="http://gavwood.com/paper.pdf">yellow
3333
* paper</a>.
3434
*/
35-
public class Transaction1559 extends LegacyTransaction implements ITransaction {
35+
public class Transaction1559 extends Transaction2930 implements ITransaction {
3636

37-
private long chainId;
3837
private BigInteger maxPriorityFeePerGas;
3938
private BigInteger maxFeePerGas;
4039

@@ -48,8 +47,7 @@ public Transaction1559(
4847
BigInteger maxPriorityFeePerGas,
4948
BigInteger maxFeePerGas,
5049
List<AccessListObject> accessList) {
51-
super(EIP1559, nonce, null, gasLimit, to, value, data);
52-
this.chainId = chainId;
50+
super(chainId, nonce, null, gasLimit, to, value, data,accessList);
5351
this.maxPriorityFeePerGas = maxPriorityFeePerGas;
5452
this.maxFeePerGas = maxFeePerGas;
5553
}
@@ -86,7 +84,7 @@ public List<RlpType> asRlpValues(Sign.SignatureData signatureData) {
8684
result.add(RlpString.create(data));
8785

8886
// access list
89-
result.add(new RlpList());
87+
result.add(new RlpList(rlpAccessListRlp()));
9088

9189
if (signatureData != null) {
9290
result.add(RlpString.create(Sign.getRecId(signatureData, getChainId())));
@@ -129,10 +127,6 @@ public BigInteger getGasPrice() {
129127
throw new UnsupportedOperationException("not available for 1559 transaction");
130128
}
131129

132-
public long getChainId() {
133-
return chainId;
134-
}
135-
136130
public BigInteger getMaxPriorityFeePerGas() {
137131
return maxPriorityFeePerGas;
138132
}

crypto/src/main/java/org/web3j/crypto/transaction/type/Transaction2930.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,18 @@ public List<RlpType> asRlpValues(Sign.SignatureData signatureData) {
7171
result.add(RlpString.create(data));
7272

7373
// access list
74+
result.add(new RlpList(rlpAccessListRlp()));
75+
76+
if (signatureData != null) {
77+
result.add(RlpString.create(Sign.getRecId(signatureData, getChainId())));
78+
result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getR())));
79+
result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getS())));
80+
}
81+
82+
return result;
83+
}
84+
protected List<RlpType> rlpAccessListRlp() {
85+
7486
List<AccessListObject> accessList = getAccessList();
7587
List<RlpType> rlpAccessList = new ArrayList<>();
7688
accessList.forEach(
@@ -89,15 +101,7 @@ public List<RlpType> asRlpValues(Sign.SignatureData signatureData) {
89101
rlpAccessListObject.add(new RlpList(keyList));
90102
rlpAccessList.add(new RlpList(rlpAccessListObject));
91103
});
92-
result.add(new RlpList(rlpAccessList));
93-
94-
if (signatureData != null) {
95-
result.add(RlpString.create(Sign.getRecId(signatureData, getChainId())));
96-
result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getR())));
97-
result.add(RlpString.create(Bytes.trimLeadingZeroes(signatureData.getS())));
98-
}
99-
100-
return result;
104+
return rlpAccessList;
101105
}
102106

103107
public static Transaction2930 createEtherTransaction(

0 commit comments

Comments
 (0)