diff --git a/src/main/java/org/p2p/solanaj/rpc/types/ConfirmedTransaction.java b/src/main/java/org/p2p/solanaj/rpc/types/ConfirmedTransaction.java index 60c1e765..d159dffa 100644 --- a/src/main/java/org/p2p/solanaj/rpc/types/ConfirmedTransaction.java +++ b/src/main/java/org/p2p/solanaj/rpc/types/ConfirmedTransaction.java @@ -77,34 +77,48 @@ public static class TokenBalance { private TokenResultObjects.TokenAmountInfo uiTokenAmount; } - @Getter - @ToString - public static class Meta { + @Getter + @ToString + public static class LoadedAddresses { - @Json(name = "err") - private Object err; + @Json(name = "readonly") + public List readOnly; - @Json(name = "fee") - private long fee; + @Json(name = "writable") + public List writable; + } - @Json(name = "innerInstructions") - private List innerInstructions; + @Getter + @ToString + public static class Meta { - @Json(name = "preTokenBalances") - private List preTokenBalances; + @Json(name = "err") + private Object err; - @Json(name = "postTokenBalances") - private List postTokenBalances; + @Json(name = "fee") + private long fee; - @Json(name = "postBalances") - private List postBalances; + @Json(name = "innerInstructions") + private List innerInstructions; - @Json(name = "preBalances") - private List preBalances; + @Json(name = "preTokenBalances") + private List preTokenBalances; - @Json(name = "status") - private Status status; - } + @Json(name = "postTokenBalances") + private List postTokenBalances; + + @Json(name = "postBalances") + private List postBalances; + + @Json(name = "preBalances") + private List preBalances; + + @Json(name = "status") + private Status status; + + @Json(name = "loadedAddresses") + private LoadedAddresses loadedAddresses; + } @Getter @ToString @@ -116,7 +130,7 @@ public static class Transaction { @Json(name = "signatures") private List signatures; - + @Json(name = "blockTime") private String blocktime; diff --git a/src/test/java/org/p2p/solanaj/core/MainnetTest.java b/src/test/java/org/p2p/solanaj/core/MainnetTest.java index 23ace977..66de3823 100644 --- a/src/test/java/org/p2p/solanaj/core/MainnetTest.java +++ b/src/test/java/org/p2p/solanaj/core/MainnetTest.java @@ -206,7 +206,7 @@ public void getToken2022Metadata() throws RpcException { Optional symbol = token2022AccountInfo.getTokenSymbol(); assertTrue(symbol.isPresent()); - assertEquals("ai16z", symbol.get()); + assertEquals("ai16z", symbol.get()); Optional uri = token2022AccountInfo.getTokenUri(); assertTrue(uri.isPresent()); @@ -994,4 +994,21 @@ public void testGetBlocksWithLimitAndCommitment() throws RpcException { assertTrue(blocks.get(0) >= startSlot); assertTrue(blocks.size() <= limit); } -} \ No newline at end of file + + @Test + public void getTransactionLoadedAccounts() throws RpcException { + String transactionSignature = + "5CZPX2R1Sjg7m6y79buiXah3QYcrrBBQ3WuTigqUcmKYScHGUiFvJ1UuCZaG63kB2ivwpUrHNSbvQf7N1riBaeUC"; + + ConfirmedTransaction transactionInfo = client.getApi().getTransaction(transactionSignature); + + String fromKey = transactionInfo.getTransaction().getMessage().getAccountKeys().get(0); + String toKey = transactionInfo.getTransaction().getMessage().getAccountKeys().get(1); + + assertEquals("7Xa3P2XCmyasD3vQEz8igWM2KAhQyTSiPd2zKcrgFvBd", fromKey.toBase58()); + assertEquals("3L4BCuZ8YzHzMoCLQ6wnp1Y7SDjzVQckq6xpGWkU3CJ8", toKey.toBase58()); + + assertEquals("SysvarRent111111111111111111111111111111111",transactionInfo.getMeta().getLoadedAddresses().getReadOnly().get(0)); + assertEquals("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1",transactionInfo.getMeta().getLoadedAddresses().getReadOnly().get(3)); + } +}