### Question:
CreditFundingTransaction extends Transaction { public KeyId getCreditBurnPublicKeyId() { if(creditBurnPublicKeyId == null || creditBurnPublicKeyId.equals(KeyId.KEYID_ZERO)) { byte [] opReturnBytes = lockedOutput.getScriptPubKey().getChunks().get(1).data; if(opReturnBytes.length == 20) creditBurnPublicKeyId = new KeyId(opReturnBytes); } return creditBurnPublicKeyId; } CreditFundingTransaction(NetworkParameters params);  CreditFundingTransaction(Transaction tx);  CreditFundingTransaction(NetworkParameters params, ECKey creditBurnKey, Coin fundingAmount);  CreditFundingTransaction(NetworkParameters params, byte [] payload); TransactionOutput getLockedOutput(); TransactionOutPoint getLockedOutpoint(); Coin getFundingAmount(); Sha256Hash getCreditBurnIdentityIdentifier(); ECKey getCreditBurnPublicKey(); KeyId getCreditBurnPublicKeyId(); int getUsedDerivationPathIndex(); void setCreditBurnPublicKeyAndIndex(ECKey creditBurnPublicKey, int usedDerivationPathIndex); static boolean isCreditFundingTransaction(Transaction tx);  }### Answer:
@Test public void creditFundingFromWalletTest() throws UnreadableWalletException { String mnemonic = "odor hammer panda sunset strong fee keep demise start eagle wagon avocado"; DerivationPathFactory factory = new DerivationPathFactory(PARAMS); AuthenticationKeyChain blockchainIdentityFundingChain = AuthenticationKeyChain.authenticationBuilder() .accountPath(factory.blockchainIdentityRegistrationFundingDerivationPath()) .seed(new DeterministicSeed(mnemonic, null, "", Utils.currentTimeSeconds())) .type(AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY_FUNDING) .build(); AuthenticationKeyChainGroup group = AuthenticationKeyChainGroup.authenticationBuilder(PARAMS) .addChain(blockchainIdentityFundingChain) .build(); DeterministicKey firstKey = group.currentKey(AuthenticationKeyChain.KeyChainType.BLOCKCHAIN_IDENTITY_FUNDING); byte [] txData = Utils.HEX.decode("0100000001f19f93e98caea51ab67560a52b237dad7ca54546d0985aa11a1a639e9354fdba000000006a473044022074cd6796416991302d89954e458b996203428482a2d6650419ef0bba3f2a4791022054dead5e4a4eb2797628e4aecbd4be7679680293c668ae5008dc8174ec9dcd560121022535f1ee20879f1189656abd502a64c6dcbcbe5b732d4c2f780a4f6580a9f20affffffff0240420f0000000000166a14b98ac3c815ec340d9543cdc78ca2d24db1951aec20083d00000000001976a914afe755e29b119efa77f1b08c5ceacd885b53e5d088ac00000000"); CreditFundingTransaction cftx = new CreditFundingTransaction(PARAMS, txData); assertArrayEquals(cftx.getCreditBurnPublicKeyId().getBytes(), firstKey.getPubKeyHash()); }