public void LocalTimestamp(BlockchainProof proof)
        {
            var _fundingKeyWIF     = _configuration.FundingKey(proof.Blockchain);
            var _blockchainService = _blockchainServiceFactory.GetService(proof.Blockchain);
            var fundingKey         = _blockchainService.DerivationStrategy.KeyFromString(_fundingKeyWIF);

            var tempTxKey      = proof.Blockchain + "_previousTx";
            var previousTx     = _keyValueService.Get(tempTxKey);
            var previousTxList = (previousTx != null) ? new List <Byte[]> {
                previousTx
            } : null;

            var OutTx = _blockchainService.Send(proof.MerkleRoot, fundingKey, previousTxList);

            //OutTX needs to go to a central store for that blockchain
            _keyValueService.Set(tempTxKey, OutTx[0]);

            var merkleRootKey = _blockchainService.DerivationStrategy.GetKey(proof.MerkleRoot);

            proof.Address = _blockchainService.DerivationStrategy.GetAddress(merkleRootKey);

            CombineLog(_logger, $"Proof ID:{proof.DatabaseID} Merkle root: {proof.MerkleRoot.ConvertToHex()} has been timestamped with address: {proof.Address}");
        }