diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h
--- a/src/interfaces/chain.h
+++ b/src/interfaces/chain.h
@@ -47,10 +47,6 @@
 //!   asynchronously
 //!   (https://github.com/bitcoin/bitcoin/pull/10973#issuecomment-380101269).
 //!
-//! * The relayTransactions() and submitToMemoryPool() methods could be replaced
-//!   with a higher-level broadcastTransaction method
-//!   (https://github.com/bitcoin/bitcoin/pull/14978#issuecomment-459373984).
-//!
 //! * The initMessages() and loadWallet() methods which the wallet uses to send
 //!   notifications to the GUI should go away when GUI and wallet can directly
 //!   communicate with each other without going through the node
@@ -136,12 +132,6 @@
         virtual bool contextualCheckTransactionForCurrentBlock(
             const Consensus::Params &params, const CTransaction &tx,
             CValidationState &state) = 0;
-
-        //! Add transaction to memory pool if the transaction fee is below the
-        //! amount specified by absurd_fee (as a safeguard). */
-        virtual bool submitToMemoryPool(const Config &config,
-                                        CTransactionRef tx, Amount absurd_fee,
-                                        CValidationState &state) = 0;
     };
 
     //! Return Lock interface. Chain is locked when this is called, and
@@ -170,9 +160,6 @@
     //! Check if transaction has descendants in mempool.
     virtual bool hasDescendantsInMempool(const TxId &txid) = 0;
 
-    //! Relay transaction.
-    virtual void relayTransaction(const TxId &txid) = 0;
-
     //! Transaction is added to memory pool, if the transaction fee is below the
     //! amount specified by max_tx_fee, and broadcast to all peers if relay is
     //! set to true. Return false if the transaction could not be added due to
diff --git a/src/interfaces/chain.cpp b/src/interfaces/chain.cpp
--- a/src/interfaces/chain.cpp
+++ b/src/interfaces/chain.cpp
@@ -149,14 +149,6 @@
             LockAssertion lock(::cs_main);
             return ContextualCheckTransactionForCurrentBlock(params, tx, state);
         }
-        bool submitToMemoryPool(const Config &config, CTransactionRef tx,
-                                Amount absurd_fee,
-                                CValidationState &state) override {
-            LockAssertion lock(::cs_main);
-            return AcceptToMemoryPool(config, ::g_mempool, state, tx,
-                                      nullptr /* missing inputs */,
-                                      false /* bypass limits */, absurd_fee);
-        }
 
         using UniqueLock::UniqueLock;
     }; // namespace interfaces
@@ -295,9 +287,6 @@
             auto it = ::g_mempool.GetIter(txid);
             return it && (*it)->GetCountWithDescendants() > 1;
         }
-        void relayTransaction(const TxId &txid) override {
-            RelayTransaction(txid, *m_node.connman);
-        }
         bool broadcastTransaction(const Config &config,
                                   const CTransactionRef &tx,
                                   std::string &err_string,