private void OnCommandWithdrawAndWaitReceipt(string[] args)
        {
            string name = args[0];

            if (!wallets.TryGetValue(name, out Account sender))
            {
                BConsole.WriteLine("account name (", name, ") not found");
                return;
            }

            if (sender.Locked && !sender.Unlock(BConsole.ReadPassword("password: "******"can't unlock account");
                return;
            }

            Task.Run(async() =>
            {
                string to   = args[1];
                ulong value = Coin.ToBeryl(decimal.Parse(args[2]));
                ulong gas   = args.Length > 3 ? Coin.ToBeryl(decimal.Parse(args[3])) : 0;
                ulong?nonce = args.Length > 4 ? (ulong?)Convert.ToInt64(args[4]) : null;

                (JObject receipt, string error) = await web4b.SendWithdrawAndWaitReceiptAsync(sender.Key, to, value, gas, nonce);
                BConsole.WriteLine("receipt=", receipt, ", error=", error);
            });
        }