Skip to content

Commit 252f052

Browse files
Merge pull request #966 from lontivero/save-mempool
Save mempool rpc call
2 parents 58307cc + 8bfa744 commit 252f052

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

NBitcoin.Tests/RPCClientTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,25 @@ public void CanGetMemPool()
193193
}
194194
}
195195

196+
[Fact]
197+
public void CanSaveMemPool()
198+
{
199+
using (var builder = NodeBuilderEx.Create())
200+
{
201+
var node = builder.CreateNode();
202+
var rpc = node.CreateRPCClient();
203+
builder.StartAll();
204+
node.Generate(101);
205+
206+
var mempoolFilePath = Path.Combine(node.Folder, "data", "regtest", "mempool.dat");
207+
File.Delete(mempoolFilePath);
208+
Assert.False(File.Exists(mempoolFilePath));
209+
rpc.SendToAddress(new Key().PubKey.GetAddress(ScriptPubKeyType.Legacy, rpc.Network), Money.Coins(1.0m), "hello", "world");
210+
rpc.SaveMempool();
211+
Assert.True(File.Exists(mempoolFilePath));
212+
}
213+
}
214+
196215
[Fact]
197216
public async Task RPCBatchingCanFallbackIfAccessForbidden()
198217
{

NBitcoin/RPC/RPCClient.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ blockchain gettxoutproof
5757
blockchain verifytxoutproof
5858
blockchain gettxoutsetinfo Yes
5959
blockchain verifychain
60+
blockchain savemempool Yes
6061
6162
------------------ Mining
6263
mining getblocktemplate
@@ -1690,6 +1691,16 @@ public async Task<MempoolEntry> GetMempoolEntryAsync(uint256 txid, bool throwIfN
16901691
};
16911692
}
16921693

1694+
public async Task SaveMempoolAsync()
1695+
{
1696+
await SendCommandAsync(RPCOperations.savemempool).ConfigureAwait(false);
1697+
}
1698+
1699+
public void SaveMempool()
1700+
{
1701+
SaveMempoolAsync().GetAwaiter().GetResult();
1702+
}
1703+
16931704
private FeeRate AbsurdlyHighFee { get; } = new FeeRate(10_000M);
16941705

16951706
public MempoolAcceptResult TestMempoolAccept(Transaction transaction, bool allowHighFees = false)

NBitcoin/RPC/RPCOperations.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,5 +122,6 @@ public enum RPCOperations
122122
loadwallet,
123123
unloadwallet,
124124
addpeeraddress,
125+
savemempool,
125126
}
126127
}

0 commit comments

Comments
 (0)