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}"); }