package com.asf.appcoins.toolbox; import com.asf.appcoins.sdk.core.web3.AsfWeb3jImpl; import com.asf.appcoins.toolbox.microraidenj.DefaultNonceObtainer; import com.asf.microraidenj.contract.MicroRaidenContract; import com.asf.microraidenj.eth.TransactionSender; import com.asf.microraidenj.type.Address; import com.bds.microraidenj.DefaultChannelBlockObtainer; import com.bds.microraidenj.DefaultGasLimitEstimator; import com.bds.microraidenj.DefaultMicroRaidenBDS; import com.bds.microraidenj.DefaultMicroRaidenClient; import com.bds.microraidenj.MicroRaidenBDS; import com.bds.microraidenj.util.DefaultTransactionSender; import com.bds.microraidenj.ws.BDSMicroRaidenApi; import java.math.BigInteger; import org.web3j.protocol.Web3j; import org.web3j.protocol.Web3jFactory; import org.web3j.protocol.http.HttpService; public class BDSMicroRaidenjSingleton { private static final Address channelManagerAddr = Address.from("0x97a3e71e4d9cb19542574457939a247491152e81"); private static final Address tokenAddr = Address.from("0xab949343E6C369C6B17C7ae302c1dEbD4B7B61c3"); private static MicroRaidenBDS instance = create(false); private BDSMicroRaidenjSingleton() { } public static MicroRaidenBDS create(boolean debug) { Web3j web3j = Web3jFactory.build(new HttpService("https://ropsten.infura.io/1YsvKO0VH5aBopMYJzcy")); AsfWeb3jImpl asfWeb3j = new AsfWeb3jImpl(web3j); TransactionSender transactionSender = new DefaultTransactionSender(web3j, () -> BigInteger.valueOf(50000000000L), new DefaultNonceObtainer(asfWeb3j), new DefaultGasLimitEstimator(web3j)); return new DefaultMicroRaidenBDS( new DefaultMicroRaidenClient(channelManagerAddr, BigInteger.valueOf(13), new DefaultChannelBlockObtainer(web3j, 3, 1500), new MicroRaidenContract(channelManagerAddr, tokenAddr, transactionSender)), BDSMicroRaidenApi.create(debug)); } public static MicroRaidenBDS getInstance() { return instance; } }