Exemple #1
0
        public async Task PrepareFunds()
        {
            var nrlBalance = (await NRustLightningHttpClient.GetWalletInfoAsync()).OnChainBalanceSatoshis;

            if (nrlBalance > 0)
            {
                return;
            }

            var clAddress  = (await CLightningClient.NewAddressAsync());
            var lndAddress = BitcoinAddress.Create((await LndClient.SwaggerClient.NewWitnessAddressAsync()).Address, Network.RegTest);
            var nrlAddress = (await NRustLightningHttpClient.GetNewDepositAddressAsync()).Address;

            foreach (var addr in new[] { clAddress, lndAddress, nrlAddress })
            {
                await this.BitcoinRPCClient.SendToAddressAsync(addr, Money.Coins(2m));

                await this.BitcoinRPCClient.SendToAddressAsync(addr, Money.Coins(2m));

                await this.BitcoinRPCClient.SendToAddressAsync(addr, Money.Coins(2m));
            }

            await this.BitcoinRPCClient.GenerateAsync(20);

            // check wallet info and nbxplorer info is synchronized.
            await Support.Utils.Retry(5, TimeSpan.FromSeconds(3), async() =>
            {
                var walletInfo = await this.NRustLightningHttpClient.GetWalletInfoAsync();
                if (walletInfo.OnChainBalanceSatoshis == 0)
                {
                    return(false);
                }
                var explorerInfo = await NBXClient.GetBalanceAsync(walletInfo.DerivationStrategy);
                return(NBitcoin.Money.Satoshis(walletInfo.OnChainBalanceSatoshis).Equals(explorerInfo.Total));
            }, "walletinfo in nbxplorer and nrustlightning not synchronized");

            await WaitChainSync();
        }