Java Code Examples for org.bitcoinj.params.TestNet3Params#get()

The following examples show how to use org.bitcoinj.params.TestNet3Params#get() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SegWitP2WPKHTransaction.java    From GreenBits with GNU General Public License v3.0 6 votes vote down vote up
public static void main(String[] args) throws Exception {
    NetworkParameters params = TestNet3Params.get();
    final Coin fee = Coin.SATOSHI.times(10000);
    final Coin fundAmount = Coin.SATOSHI.times(405000000);

    final String segwitWIF = "cRynQP5ysWF3jmz5bFy16kqKRoSYzzArJru5349ADBwsoyKoh8aq";
    final ECKey segwitKey = DumpedPrivateKey.fromBase58(params, segwitWIF).getKey();
    final Script segwitPkScript = ScriptBuilder.createP2WPKHOutputScript(segwitKey);

    final Sha256Hash fundTxHash =
        Sha256Hash.wrap("e7e953f119179f71a58865f3d1ae2157847778404f89b48d0f695f786fba1dd4");

    // Sign segwit transaction
    final Address sendTo = Address.fromBase58(params, "mvpr4mkDSPYcbN6XW6xCveCLa38x23fs7B");
    final Coin outAmount = fundAmount.minus(fee);
    final Script outPkScript = ScriptBuilder.createOutputScript(sendTo);
    final TransactionOutPoint segwitOutPoint = new TransactionOutPoint(params, 0L, fundTxHash, fundAmount);
    final Transaction outTx = new Transaction(params);
    outTx.addOutput(outAmount, outPkScript);
    outTx.addSignedInput(segwitOutPoint, segwitPkScript, segwitKey);
    final Sha256Hash outTxHash = outTx.getHash();
    System.out.println(Hex.toHexString(outTx.bitcoinSerialize()));
    System.out.println(Hex.toHexString(outTxHash.getBytes()));
}
 
Example 2
Source File: FetchBlock.java    From green_android with GNU General Public License v3.0 6 votes vote down vote up
public static void main(String[] args) throws Exception {
    BriefLogFormatter.init();
    System.out.println("Connecting to node");
    final NetworkParameters params = TestNet3Params.get();

    BlockStore blockStore = new MemoryBlockStore(params);
    BlockChain chain = new BlockChain(params, blockStore);
    PeerGroup peerGroup = new PeerGroup(params, chain);
    peerGroup.start();
    PeerAddress addr = new PeerAddress(params, InetAddress.getLocalHost());
    peerGroup.addAddress(addr);
    peerGroup.waitForPeers(1).get();
    Peer peer = peerGroup.getConnectedPeers().get(0);

    Sha256Hash blockHash = Sha256Hash.wrap(args[0]);
    Future<Block> future = peer.getBlock(blockHash);
    System.out.println("Waiting for node to send us the requested block: " + blockHash);
    Block block = future.get();
    System.out.println(block);
    peerGroup.stopAsync();
}
 
Example 3
Source File: SegWitP2WPKHTransaction.java    From green_android with GNU General Public License v3.0 6 votes vote down vote up
public static void main(String[] args) throws Exception {
    NetworkParameters params = TestNet3Params.get();
    final Coin fee = Coin.SATOSHI.times(10000);
    final Coin fundAmount = Coin.SATOSHI.times(405000000);

    final String segwitWIF = "cRynQP5ysWF3jmz5bFy16kqKRoSYzzArJru5349ADBwsoyKoh8aq";
    final ECKey segwitKey = DumpedPrivateKey.fromBase58(params, segwitWIF).getKey();
    final Script segwitPkScript = ScriptBuilder.createP2WPKHOutputScript(segwitKey);

    final Sha256Hash fundTxHash =
        Sha256Hash.wrap("e7e953f119179f71a58865f3d1ae2157847778404f89b48d0f695f786fba1dd4");

    // Sign segwit transaction
    final Address sendTo = Address.fromBase58(params, "mvpr4mkDSPYcbN6XW6xCveCLa38x23fs7B");
    final Coin outAmount = fundAmount.minus(fee);
    final Script outPkScript = ScriptBuilder.createOutputScript(sendTo);
    final TransactionOutPoint segwitOutPoint = new TransactionOutPoint(params, 0L, fundTxHash, fundAmount);
    final Transaction outTx = new Transaction(params);
    outTx.addOutput(outAmount, outPkScript);
    outTx.addSignedInput(segwitOutPoint, segwitPkScript, segwitKey);
    final Sha256Hash outTxHash = outTx.getHash();
    System.out.println(Hex.toHexString(outTx.bitcoinSerialize()));
    System.out.println(Hex.toHexString(outTxHash.getBytes()));
}
 
Example 4
Source File: BitcoinURITest.java    From green_android with GNU General Public License v3.0 5 votes vote down vote up
@Test
public void testUnescapedPaymentProtocolReq() throws Exception {
    BitcoinURI uri = new BitcoinURI(TestNet3Params.get(),
            "bitcoin:?r=https://merchant.com/pay.php?h%3D2a8628fc2fbe");
    assertEquals("https://merchant.com/pay.php?h=2a8628fc2fbe", uri.getPaymentRequestUrl());
    assertEquals(ImmutableList.of("https://merchant.com/pay.php?h=2a8628fc2fbe"), uri.getPaymentRequestUrls());
    assertNull(uri.getAddress());
}
 
Example 5
Source File: BackupToMnemonicSeed.java    From green_android with GNU General Public License v3.0 5 votes vote down vote up
public static void main(String[] args) {

        NetworkParameters params = TestNet3Params.get();
        Wallet wallet = new Wallet(params);

        DeterministicSeed seed = wallet.getKeyChainSeed();
        System.out.println("seed: " + seed.toString());

        System.out.println("creation time: " + seed.getCreationTimeSeconds());
        System.out.println("mnemonicCode: " + Utils.join(seed.getMnemonicCode()));
    }
 
Example 6
Source File: BitcoinURITest.java    From GreenBits with GNU General Public License v3.0 5 votes vote down vote up
@Test
public void testPaymentProtocolReq() throws Exception {
    // Non-backwards compatible form ...
    BitcoinURI uri = new BitcoinURI(TestNet3Params.get(), "bitcoin:?r=https%3A%2F%2Fbitcoincore.org%2F%7Egavin%2Ff.php%3Fh%3Db0f02e7cea67f168e25ec9b9f9d584f9");
    assertEquals("https://bitcoincore.org/~gavin/f.php?h=b0f02e7cea67f168e25ec9b9f9d584f9", uri.getPaymentRequestUrl());
    assertEquals(ImmutableList.of("https://bitcoincore.org/~gavin/f.php?h=b0f02e7cea67f168e25ec9b9f9d584f9"),
            uri.getPaymentRequestUrls());
    assertNull(uri.getAddress());
}
 
Example 7
Source File: BackupToMnemonicSeed.java    From GreenBits with GNU General Public License v3.0 5 votes vote down vote up
public static void main(String[] args) {

        NetworkParameters params = TestNet3Params.get();
        Wallet wallet = new Wallet(params);

        DeterministicSeed seed = wallet.getKeyChainSeed();
        System.out.println("seed: " + seed.toString());

        System.out.println("creation time: " + seed.getCreationTimeSeconds());
        System.out.println("mnemonicCode: " + Utils.join(seed.getMnemonicCode()));
    }
 
Example 8
Source File: RefreshWallet.java    From green_android with GNU General Public License v3.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {
    File file = new File(args[0]);
    Wallet wallet = Wallet.loadFromFile(file);
    System.out.println(wallet.toString());

    // Set up the components and link them together.
    final NetworkParameters params = TestNet3Params.get();
    BlockStore blockStore = new MemoryBlockStore(params);
    BlockChain chain = new BlockChain(params, wallet, blockStore);

    final PeerGroup peerGroup = new PeerGroup(params, chain);
    peerGroup.startAsync();

    wallet.addCoinsReceivedEventListener(new WalletCoinsReceivedEventListener() {
        @Override
        public synchronized void onCoinsReceived(Wallet w, Transaction tx, Coin prevBalance, Coin newBalance) {
            System.out.println("\nReceived tx " + tx.getHashAsString());
            System.out.println(tx.toString());
        }
    });

    // Now download and process the block chain.
    peerGroup.downloadBlockChain();
    peerGroup.stopAsync();
    wallet.saveToFile(file);
    System.out.println("\nDone!\n");
    System.out.println(wallet.toString());
}
 
Example 9
Source File: SegWitP2WSHTransaction.java    From GreenBits with GNU General Public License v3.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {
    NetworkParameters params = TestNet3Params.get();
    final Coin fee = Coin.SATOSHI.times(10000);
    final Coin fundAmount = Coin.SATOSHI.times(60700000);

    // Funding segwit address
    final String segwitWIF = "cU4tWJk3BGymoJgbGbxNA6NJapTwrbfWWaPsz1bCZBzkoeszb4ML";
    final ECKey segwitKey = DumpedPrivateKey.fromBase58(params, segwitWIF).getKey();
    final Script segwitScript = ScriptBuilder.createOutputScript(segwitKey);
    final Sha256Hash fundTxHash =
        Sha256Hash.wrap("09888a2fcfb9b982e2765e56c866f12c426687fc35be2a6de52ea956501c7778");

    // Sign segwit transaction
    final Address sendTo = Address.fromBase58(params, "mkoC1zHJJeNnyr8ttonNzh2ZZV4b9qAJtd");
    final Coin outAmount = fundAmount.minus(fee);
    final Script outPkScript = ScriptBuilder.createOutputScript(sendTo);
    final Transaction outTx = new Transaction(params);
    outTx.addOutput(outAmount, outPkScript);

    final TransactionInput input = outTx.addInput(fundTxHash, 0L, new Script(new byte[0]));
    final TransactionWitness witness = new TransactionWitness(2);
    Sha256Hash sigHash =
        outTx.hashForSignatureWitness(0, segwitScript, fundAmount, Transaction.SigHash.ALL, false);
    ECKey.ECDSASignature sig = segwitKey.sign(sigHash);
    TransactionSignature txSig = new TransactionSignature(sig, Transaction.SigHash.ALL, false);
    witness.setPush(0, txSig.encodeToBitcoin());
    witness.setPush(1, segwitScript.getProgram());

    outTx.setWitness(0, witness);

    final Sha256Hash outTxHash = outTx.getHash();
    System.out.println("Has witnesses: " + outTx.hasWitness());
    System.out.println(Hex.toHexString(outTx.bitcoinSerialize()));
    System.out.println(Hex.toHexString(outTxHash.getBytes()));
}
 
Example 10
Source File: HDMnemonicKeystore.java    From token-core-android with Apache License 2.0 5 votes vote down vote up
public HDMnemonicKeystore(Metadata metadata, String password, List<String> mnemonics, String path, String id) {
  MnemonicUtil.validateMnemonics(mnemonics);
  DeterministicSeed seed = new DeterministicSeed(mnemonics, null, "", 0L);
  DeterministicKeyChain keyChain = DeterministicKeyChain.builder().seed(seed).build();
  this.mnemonicPath = path;

  DeterministicKey parent = keyChain.getKeyByPath(BIP44Util.generatePath(path), true);
  NetworkParameters networkParameters = metadata.isMainNet() ? MainNetParams.get() : TestNet3Params.get();
  this.xpub = parent.serializePubB58(networkParameters);
  String xprv = parent.serializePrivB58(networkParameters);
  DeterministicKey mainAddressKey = keyChain.getKeyByPath(BIP44Util.generatePath(path + "/0/0"), true);
  if (Metadata.P2WPKH.equals(metadata.getSegWit())) {
    this.address = new SegWitBitcoinAddressCreator(networkParameters).fromPrivateKey(mainAddressKey.getPrivateKeyAsHex());
  } else {
    this.address = mainAddressKey.toAddress(networkParameters).toBase58();
  }
  if (metadata.getTimestamp() == 0) {
    metadata.setTimestamp(DateUtil.getUTCTime());
  }
  metadata.setWalletType(Metadata.HD);

  this.crypto = Crypto.createPBKDF2CryptoWithKDFCached(password, xprv.getBytes(Charset.forName("UTF-8")));
  this.metadata = metadata;
  this.encMnemonic = crypto.deriveEncPair(password, Joiner.on(" ").join(mnemonics).getBytes());
  this.crypto.clearCachedDerivedKey();

  this.version = VERSION;
  this.info = new Info();
  this.id = Strings.isNullOrEmpty(id) ? UUID.randomUUID().toString() : id;
}
 
Example 11
Source File: AddressCreatorManager.java    From token-core-android with Apache License 2.0 5 votes vote down vote up
public static AddressCreator getInstance(String type, boolean isMainnet, String segWit) {
  if (ChainType.ETHEREUM.equals(type)) {
    return new EthereumAddressCreator();
  } else if (ChainType.BITCOIN.equals(type)) {

    NetworkParameters network = isMainnet ? MainNetParams.get() : TestNet3Params.get();
    if (Metadata.P2WPKH.equals(segWit)) {
      return new SegWitBitcoinAddressCreator(network);
    }
    return new BitcoinAddressCreator(network);
  } else {
    throw new TokenException(Messages.WALLET_INVALID_TYPE);
  }
}
 
Example 12
Source File: BitcoinTransaction.java    From token-core-android with Apache License 2.0 5 votes vote down vote up
private void collectPrvKeysAndAddress(String segWit, String password, Wallet wallet) {
  this.network = wallet.getMetadata().isMainNet() ? MainNetParams.get() : TestNet3Params.get();
  if (wallet.getMetadata().getSource().equals(Metadata.FROM_WIF)) {
    changeAddress = Address.fromBase58(network, wallet.getAddress());
    BigInteger prvKey = DumpedPrivateKey.fromBase58(network, wallet.exportPrivateKey(password)).getKey().getPrivKey();
    prvKeys = Collections.singletonList(prvKey);
  } else {
    prvKeys = new ArrayList<>(getOutputs().size());
    String xprv = new String(wallet.decryptMainKey(password), Charset.forName("UTF-8"));
    DeterministicKey xprvKey = DeterministicKey.deserializeB58(xprv, network);
    DeterministicKey changeKey = HDKeyDerivation.deriveChildKey(xprvKey, ChildNumber.ONE);
    DeterministicKey indexKey = HDKeyDerivation.deriveChildKey(changeKey, new ChildNumber(getChangeIdx(), false));
    if (Metadata.P2WPKH.equals(segWit)) {
      changeAddress = new SegWitBitcoinAddressCreator(network).fromPrivateKey(indexKey);
    } else {
      changeAddress = indexKey.toAddress(network);
    }

    for (UTXO output : getOutputs()) {
      String derivedPath = output.getDerivedPath().trim();
      String[] pathIdxs = derivedPath.replace('/', ' ').split(" ");
      int accountIdx = Integer.parseInt(pathIdxs[0]);
      int changeIdx = Integer.parseInt(pathIdxs[1]);

      DeterministicKey accountKey = HDKeyDerivation.deriveChildKey(xprvKey, new ChildNumber(accountIdx, false));
      DeterministicKey externalChangeKey = HDKeyDerivation.deriveChildKey(accountKey, new ChildNumber(changeIdx, false));
      prvKeys.add(externalChangeKey.getPrivKey());
    }
  }
}
 
Example 13
Source File: Constants.java    From thunder with GNU Affero General Public License v3.0 4 votes vote down vote up
public static NetworkParameters getNetwork () {
    return TestNet3Params.get();
}
 
Example 14
Source File: NetworkData.java    From green_android with GNU General Public License v3.0 4 votes vote down vote up
@JsonIgnore
public boolean isTestnet() {
    return getNetworkParameters() == TestNet3Params.get();
}
 
Example 15
Source File: Constants.java    From thundernetwork with GNU Affero General Public License v3.0 4 votes vote down vote up
/**
 * Get the Network we are working on..
 *
 * @return the network
 */
public static NetworkParameters getNetwork () {
    return TestNet3Params.get();
    //		return RegTestParams.get();
    //		return MainNetParams.get();
}
 
Example 16
Source File: SendRequest.java    From GreenBits with GNU General Public License v3.0 4 votes vote down vote up
public static void main(String[] args) throws Exception {

        // We use the WalletAppKit that handles all the boilerplate for us. Have a look at the Kit.java example for more details.
        NetworkParameters params = TestNet3Params.get();
        WalletAppKit kit = new WalletAppKit(params, new File("."), "sendrequest-example");
        kit.startAsync();
        kit.awaitRunning();

        System.out.println("Send money to: " + kit.wallet().currentReceiveAddress().toString());

        // How much coins do we want to send?
        // The Coin class represents a monetary Bitcoin value.
        // We use the parseCoin function to simply get a Coin instance from a simple String.
        Coin value = Coin.parseCoin("0.09");

        // To which address you want to send the coins?
        // The Address class represents a Bitcoin address.
        Address to = Address.fromBase58(params, "mupBAFeT63hXfeeT4rnAUcpKHDkz1n4fdw");

        // There are different ways to create and publish a SendRequest. This is probably the easiest one.
        // Have a look at the code of the SendRequest class to see what's happening and what other options you have: https://bitcoinj.github.io/javadoc/0.11/com/google/bitcoin/core/Wallet.SendRequest.html
        // 
        // Please note that this might raise a InsufficientMoneyException if your wallet has not enough coins to spend.
        // When using the testnet you can use a faucet (like the http://faucet.xeno-genesis.com/) to get testnet coins.
        // In this example we catch the InsufficientMoneyException and register a BalanceFuture callback that runs once the wallet has enough balance.
        try {
            Wallet.SendResult result = kit.wallet().sendCoins(kit.peerGroup(), to, value);
            System.out.println("coins sent. transaction hash: " + result.tx.getHashAsString());
            // you can use a block explorer like https://www.biteasy.com/ to inspect the transaction with the printed transaction hash. 
        } catch (InsufficientMoneyException e) {
            System.out.println("Not enough coins in your wallet. Missing " + e.missing.getValue() + " satoshis are missing (including fees)");
            System.out.println("Send money to: " + kit.wallet().currentReceiveAddress().toString());

            // Bitcoinj allows you to define a BalanceFuture to execute a callback once your wallet has a certain balance.
            // Here we wait until the we have enough balance and display a notice.
            // Bitcoinj is using the ListenableFutures of the Guava library. Have a look here for more information: https://github.com/google/guava/wiki/ListenableFutureExplained
            ListenableFuture<Coin> balanceFuture = kit.wallet().getBalanceFuture(value, BalanceType.AVAILABLE);
            FutureCallback<Coin> callback = new FutureCallback<Coin>() {
                @Override
                public void onSuccess(Coin balance) {
                    System.out.println("coins arrived and the wallet now has enough balance");
                }

                @Override
                public void onFailure(Throwable t) {
                    System.out.println("something went wrong");
                }
            };
            Futures.addCallback(balanceFuture, callback);
        }

        // shutting down 
        //kit.stopAsync();
        //kit.awaitTerminated();
    }
 
Example 17
Source File: MockTestnetCoin.java    From bisq with GNU Affero General Public License v3.0 4 votes vote down vote up
public Testnet() {
    super(Network.TESTNET, TestNet3Params.get());
}
 
Example 18
Source File: RestoreFromSeed.java    From GreenBits with GNU General Public License v3.0 4 votes vote down vote up
public static void main(String[] args) throws Exception {
    NetworkParameters params = TestNet3Params.get();

    // Bitcoinj supports hierarchical deterministic wallets (or "HD Wallets"): https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
    // HD wallets allow you to restore your wallet simply from a root seed. This seed can be represented using a short mnemonic sentence as described in BIP 39: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki

    // Here we restore our wallet from a seed with no passphrase. Also have a look at the BackupToMnemonicSeed.java example that shows how to backup a wallet by creating a mnemonic sentence.
    String seedCode = "yard impulse luxury drive today throw farm pepper survey wreck glass federal";
    String passphrase = "";
    Long creationtime = 1409478661L;

    DeterministicSeed seed = new DeterministicSeed(seedCode, null, passphrase, creationtime);

    // The wallet class provides a easy fromSeed() function that loads a new wallet from a given seed.
    Wallet wallet = Wallet.fromSeed(params, seed);

    // Because we are importing an existing wallet which might already have transactions we must re-download the blockchain to make the wallet picks up these transactions
    // You can find some information about this in the guides: https://bitcoinj.github.io/working-with-the-wallet#setup
    // To do this we clear the transactions of the wallet and delete a possible existing blockchain file before we download the blockchain again further down.
    System.out.println(wallet.toString());
    wallet.clearTransactions(0);
    File chainFile = new File("restore-from-seed.spvchain");
    if (chainFile.exists()) {
        chainFile.delete();
    }

    // Setting up the BlochChain, the BlocksStore and connecting to the network.
    SPVBlockStore chainStore = new SPVBlockStore(params, chainFile);
    BlockChain chain = new BlockChain(params, chainStore);
    PeerGroup peers = new PeerGroup(params, chain);
    peers.addPeerDiscovery(new DnsDiscovery(params));

    // Now we need to hook the wallet up to the blockchain and the peers. This registers event listeners that notify our wallet about new transactions.
    chain.addWallet(wallet);
    peers.addWallet(wallet);

    DownloadProgressTracker bListener = new DownloadProgressTracker() {
        @Override
        public void doneDownload() {
            System.out.println("blockchain downloaded");
        }
    };

    // Now we re-download the blockchain. This replays the chain into the wallet. Once this is completed our wallet should know of all its transactions and print the correct balance.
    peers.start();
    peers.startBlockChainDownload(bListener);

    bListener.await();

    // Print a debug message with the details about the wallet. The correct balance should now be displayed.
    System.out.println(wallet.toString());

    // shutting down again
    peers.stop();
}
 
Example 19
Source File: RestoreFromSeed.java    From green_android with GNU General Public License v3.0 4 votes vote down vote up
public static void main(String[] args) throws Exception {
    NetworkParameters params = TestNet3Params.get();

    // Bitcoinj supports hierarchical deterministic wallets (or "HD Wallets"): https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
    // HD wallets allow you to restore your wallet simply from a root seed. This seed can be represented using a short mnemonic sentence as described in BIP 39: https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki

    // Here we restore our wallet from a seed with no passphrase. Also have a look at the BackupToMnemonicSeed.java example that shows how to backup a wallet by creating a mnemonic sentence.
    String seedCode = "yard impulse luxury drive today throw farm pepper survey wreck glass federal";
    String passphrase = "";
    Long creationtime = 1409478661L;

    DeterministicSeed seed = new DeterministicSeed(seedCode, null, passphrase, creationtime);

    // The wallet class provides a easy fromSeed() function that loads a new wallet from a given seed.
    Wallet wallet = Wallet.fromSeed(params, seed);

    // Because we are importing an existing wallet which might already have transactions we must re-download the blockchain to make the wallet picks up these transactions
    // You can find some information about this in the guides: https://bitcoinj.github.io/working-with-the-wallet#setup
    // To do this we clear the transactions of the wallet and delete a possible existing blockchain file before we download the blockchain again further down.
    System.out.println(wallet.toString());
    wallet.clearTransactions(0);
    File chainFile = new File("restore-from-seed.spvchain");
    if (chainFile.exists()) {
        chainFile.delete();
    }

    // Setting up the BlochChain, the BlocksStore and connecting to the network.
    SPVBlockStore chainStore = new SPVBlockStore(params, chainFile);
    BlockChain chain = new BlockChain(params, chainStore);
    PeerGroup peers = new PeerGroup(params, chain);
    peers.addPeerDiscovery(new DnsDiscovery(params));

    // Now we need to hook the wallet up to the blockchain and the peers. This registers event listeners that notify our wallet about new transactions.
    chain.addWallet(wallet);
    peers.addWallet(wallet);

    DownloadProgressTracker bListener = new DownloadProgressTracker() {
        @Override
        public void doneDownload() {
            System.out.println("blockchain downloaded");
        }
    };

    // Now we re-download the blockchain. This replays the chain into the wallet. Once this is completed our wallet should know of all its transactions and print the correct balance.
    peers.start();
    peers.startBlockChainDownload(bListener);

    bListener.await();

    // Print a debug message with the details about the wallet. The correct balance should now be displayed.
    System.out.println(wallet.toString());

    // shutting down again
    peers.stop();
}
 
Example 20
Source File: BSQ.java    From bisq with GNU Affero General Public License v3.0 4 votes vote down vote up
public Testnet() {
    super(Network.TESTNET, TestNet3Params.get());
}