I'm trying to create an api where i have to provide transaction logs in json objects but im unable to add result of replayPastTransactionsFlowable into an collection object

public List<Transaction> test() throws InterruptedException, ExecutionException, IOException {
    String address = "0xeedc155ae507fb0a9becae6315286183a23229b0";
    List<Transaction> transactions = new ArrayList<Transaction>();
    Web3j web3j = web3jConfig.initializeWeb3j();
    System.out.println("test Running.......");
    BigInteger block = web3j.ethBlockNumber().send().getBlockNumber();
    System.out.println("blockno:" + block.intValue());
    int block_no = block.intValue();

Flowable<Transaction> replyBlocks   = web3j.replayPastTransactionsFlowable(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST);
    System.out.println("into replyBlocks");
        transactions.add(temp); //It's an collection object,and value is not adding into it 
})  ;

    return transactions;

} Im using following two dep


  • which version of web3j are you using – Majd TL Feb 14 '20 at 9:36
  • @MajdTL just updated the QS with web3j version – Aniket Feb 14 '20 at 9:41
  • you get an error by transaction.add(temp) or it just return an empty array? – Majd TL Feb 14 '20 at 9:46
  • if you got an empty array, it mean your code responds back before adding the transactions to the list. i will check if you can somehow wait unitl it finish – Majd TL Feb 14 '20 at 9:53
  • @MajdTL yes,im getting an empty array and not getting any error at transaction.add(temp) – Aniket Feb 14 '20 at 10:01

Try this

import java.math.BigInteger;

import org.springframework.web.bind.annotation.*;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.DefaultBlockParameterName;
import org.web3j.protocol.core.methods.response.Transaction;
import org.web3j.protocol.core.methods.response.Web3ClientVersion;
import org.web3j.protocol.http.HttpService;

import io.reactivex.Flowable;

public class SimpleResource {

    public Flowable<Transaction> getTransactions() throws Exception {
        System.out.println("call transactions");
        Web3j web3j = Web3j.build(new HttpService());
        Web3ClientVersion web3ClientVersion = web3j.web3ClientVersion().send();
        String clientVersion = web3ClientVersion.getWeb3ClientVersion();
        System.out.println("clientVersion......." + clientVersion);
        BigInteger block = web3j.ethBlockNumber().send().getBlockNumber();
        System.out.println("blockno:" + block.intValue());
        Flowable<Transaction> transactions =  web3j.replayPastTransactionsFlowable(DefaultBlockParameterName.EARLIEST,
        return  transactions;
  • 1
    as i said you can't get the transactions of a very big range of blocks, it will just crash. you should set limits. You can do it like this instead of DefaultBlockParameterName.LATEST to DefaultBlockParameter.valueOf(BigInteger.valueOf(30)); or 300 .... – Majd TL Feb 14 '20 at 16:57
  • Thanks alot., will research more on this.,i would like to connect with u over Linkdin,here's an link to connect with me: linkedin.com/in/aniket-tikone-27808a138 – Aniket Feb 17 '20 at 4:58
  • Getting error on your code snippet :No converter found for return value of type: class io.reactivex.internal.operators.flowable.FlowableSerialized – Aniket Feb 17 '20 at 5:39
  • This serialized come from your old code from the last question before u edit it – Majd TL Feb 17 '20 at 13:16
  • That code worked for me with the last webj version and Java 11 – Majd TL Feb 17 '20 at 13:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.