Author

Topic: A smart self-custodial wallet for bitcoin (Read 324 times)

legendary
Activity: 1512
Merit: 7340
Farewell, Leo
September 19, 2023, 08:42:42 AM
#21
Well that's not exactly what I had in mind. You said locktime can be used on the transactions to force a delay of it being included  into a block until a particular time, but what if you change your mind and decide not to continue paying for the service?
If I've sent transaction A, and I want to cancel subscription, I only have to spend transaction B's coins and invalidate the subscription-tx-chain.

Although another challenge that would be faced with any subscription strategy is where you would like to subscribe for multiple months in advance so that you don't have to remember to make a transaction every month, but you only have funds for let's say 2 months or something. The software would have to be intelligent enough to create more locktime transactions on top of those, when additional funds come, if you want it to allocate the money there.
The software needn't to be so intelligent, because even if that would be the case, you wouldn't want from the software to select inputs and create locktime transactions the moment you receive some additional money. You would want it to do that with only coins you approve of. I may not want to use the money a friend owed me to immediately create a transaction paying subscription for an additional month; only when I approve it. So, you could just use a separate account from your derivation path, specifically for subscription-based services.

Third challenge is similar to the second, you have multiple months paid in advance but you have not left any more UTXOs unlocked for you to make other transactions to unrelated stuff, so making any transaction means the entire subscription chain needs to be invalidated and re-constructed. So I guess its as easy to solve as the other challenges.
No problem. Spend the subscription coins if you need them now, but take into consideration that you have to either fill the subscription account (from your wallet) soon or you will get less months automatically paid.

Fourth challenge and I think this is the most concerning one is, what if you create the subscription chain, and everything is fine except one month later, fees have shot up and your fee is too low to get it confirmed quickly.
Quick solution: create several transactions paying various fees, each of which comes with a tree of its future transactions. If you wanted to pay a subscription of 12 months, you would create TX A1, TX A2, TX A3 (with low, medium, high fee respectively). Your wallet software will check the mempool at the time of TX broadcasting, and will select which transaction fits best. If A2 is selected, for example, then it does the same for TX B2,1, B2,2, B2,3. Then for C the same, it goes on and on.

You'd need to have signed 3^1 (A-s) + 3^2 (B-s) + 3^3 (C-s) + ... + 3^12 (L-s) = 797160 transactions though.  Tongue
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
September 19, 2023, 07:44:18 AM
#20
That will work, but what if you want to cancel and get a refund?
What's the problem with contacting your merchant and requesting a refund?

Well that's not exactly what I had in mind. You said locktime can be used on the transactions to force a delay of it being included into a block until a particular time, but what if you change your mind and decide not to continue paying for the service?

Example: suppose Twitter Verified (or whatever it's called now) has this futuristic infrastructure you can use to make these kind of bitcoin transactions with, so you make some locktimed transactions, but then mid-way through your subscription, you learn that the site is going to make a change you don't like, so you want to cancel the locktime and get a refund.

Now that I think about it, I guess that the refunds could be effected by moving the funds to one of your other addresses before the locktime expires, thus invalidating the locktime transaction. Doesn't sound like a bad idea after all.

Although another challenge that would be faced with any subscription strategy is where you would like to subscribe for multiple months in advance so that you don't have to remember to make a transaction every month, but you only have funds for let's say 2 months or something. The software would have to be intelligent enough to create more locktime transactions on top of those, when additional funds come, if you want it to allocate the money there.

Third challenge is similar to the second, you have multiple months paid in advance but you have not left any more UTXOs unlocked for you to make other transactions to unrelated stuff, so making any transaction means the entire subscription chain needs to be invalidated and re-constructed. So I guess its as easy to solve as the other challenges.

Fourth challenge and I think this is the most concerning one is, what if you create the subscription chain, and everything is fine except one month later, fees have shot up and your fee is too low to get it confirmed quickly. This will require user intervention to recreate another transaction manually, and to be honest, this is the kind of scenario where users should not have to intervene or do anything to make the subscription "just work". Maybe it can be solved by using higher-than-normal fees by default such as 50 sats/vbyte or maybe even 100 sats/vbyte - dynamically calculated by a decentralized network of servers as basically the "high" feerate x5 is a good setting - but that might be taxing for very small microtransactions.

But in the case of microtransactions I feel as though only Lightning Network is suitable for sending those. Not on-chain.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
September 19, 2023, 07:15:05 AM
#19
That will work, but what if you want to cancel and get a refund?
What's the problem with contacting your merchant and requesting a refund?
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
September 19, 2023, 07:11:04 AM
#18
The alternative is signing a bunch of future transactions using future, unconfirmed inputs and starting from a single, large enough confirmed input, which has its own set of problems e.g. what happens if they are broadcasted all at once, by accident?
How about this: locktime. You sign transaction A to be valid in September 19th, transaction B to be valid in October 19th etc. Transaction B uses outputs from transaction A, so A must be already confirmed. All transactions can't be broadcasted at once, unless we've reached the last transaction (Z) and none is broadcasted yet (which couldn't happen either, as the person would report to the merchant that they didn't receive money in September 19th).

That will work, but what if you want to cancel and get a refund?
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
September 19, 2023, 07:08:29 AM
#17
The alternative is signing a bunch of future transactions using future, unconfirmed inputs and starting from a single, large enough confirmed input, which has its own set of problems e.g. what happens if they are broadcasted all at once, by accident?
How about this: locktime. You sign transaction A to be valid in September 19th, transaction B to be valid in October 19th etc. Transaction B uses outputs from transaction A, so A must be already confirmed. All transactions can't be broadcasted at once, unless we've reached the last transaction (Z) and none is broadcasted yet (which couldn't happen either, as the person would report to the merchant that they didn't receive money in September 19th).
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
September 19, 2023, 06:59:04 AM
#16
so if you need to halt the schedule for any reason, you can't do that currently using any of the available Bitcoin infrastructure.
You mean you can't do it automatically? It pretty much sounds plausible to do it manually, and it sounds easy to automate it in a wallet software either.

For Bitcoin, unless some soft fork allows this kind of behavior in the future, its automation is only possible if you are continuously able to sign and broadcast transactions every period. This requires your wallet password to be available somewhere for the computer to access without your supervision, which is a huge security risk.

The alternative is signing a bunch of future transactions using future, unconfirmed inputs and starting from a single, large enough confirmed input, which has its own set of problems e.g. what happens if they are broadcasted all at once, by accident?
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
September 19, 2023, 06:45:10 AM
#15
so if you need to halt the schedule for any reason, you can't do that currently using any of the available Bitcoin infrastructure.
You mean you can't do it automatically? It pretty much sounds plausible to do it manually, and it sounds easy to automate it in a wallet software either.
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
September 19, 2023, 06:40:37 AM
#14
What if someone wants to lock his bitcoin for his future generation and wants to set up a lock for 10 years so that his children will not be able to transfer these funds for the next 10 years, or a business owner wants to pay his workers monthly salary in bitcoin and he doesn't want to log in every time he needs to do that? He just simply set up a contract that will send monthly salary to some predefined address every month. Another possible use case is to prevent any unwanted transactions from coming through. Like only whitelisted addresses can send funds to a specific address, transactions from any unknown address will not be mined in this way, and the receiver address can pay for the transaction fees. There are countless more possibilities for the use of a smart wallet, and I think this will be a much-needed development in the future. Also, using and securing manmonic phrases or privet keys seems inconvenient for many of us, so using NFT's or some other possible ways to make your bitcoin wallets back up grandma-friendly will be a major development for wide adaptation of the bitcoin network.

The problem with making this work with crypto in general is that in fiat, the process is automated but there is a STOP button to halt the monthly payments in case something happens. For example: Employee quits, or salary has to be delayed or advanced by a week, or the invoicing software isn't working and is spitting wrong amounts, or the payment increases or decreases, or the schedule changes.

Smart contracts do not have a STOP button (well in Ethereum they do, it's called selfdestruct() and destroys the entire contract - but not in Bitcoin), so if you need to halt the schedule for any reason, you can't do that currently using any of the available Bitcoin infrastructure.
legendary
Activity: 3472
Merit: 10611
September 18, 2023, 10:50:25 PM
#13
When the specific amount gets locked. Will that gets added to the circulation or it gets to the list of addresses that hold good sum of bitcoin that are idle for long term. Something similar to that of the lost wallets where we don't have control.
They may feel similar from a price perspective but with a very weak link. Lost coins will never move whereas idle coins can move at any time and locked coins will move after their locktime expires.
hero member
Activity: 2310
Merit: 532
Enterapp Pre-Sale Live - bit.ly/3UrMCWI
September 18, 2023, 06:13:24 PM
#12
When the specific amount gets locked. Will that gets added to the circulation or it gets to the list of addresses that hold good sum of bitcoin that are idle for long term. Something similar to that of the lost wallets where we don't have control.

We have good number of wallets and most of them were much user friendly. Beyond that, it is the proper education and having a demonstration tab that helps with anyone use the features easy.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
September 17, 2023, 02:00:42 PM
#11
People strive to work smarter these days, yet what we truly lack is not "wallet flexibility." Bitcoin software is just awesome, kudos to the developers. Look at some software like Sparrow. It's the best in terms of user-friendliness and features. It lets you import wallets from various sources, gives proper warnings, includes coinjoin option without additional add-on installation, easy mempool access, transactions showed as if you're in a block explorer. It's extremely difficult to make a mistake with Sparrow, if you're keen on using Bitcoin (and have a brain).

And that's just one example. There's Electrum which is even more simple than that. What we need isn't smart software. What we need is informed, educated people. No matter how smart the program is, an uneducated, uninformed user will just mess things up.
sr. member
Activity: 1680
Merit: 379
Top Crypto Casino
September 17, 2023, 01:29:01 PM
#10
Not everything needs to be dumbed down and be grandma friendly. Certain advanced features should require some technical knowledge to minimize user error that can lead to loss of funds. There are already some wallets that have encrypted cloud backups. This is intended to be user friendly but this can result in carelessness by giving users the impression that the cloud is a safe place for storing your seed phrase.
full member
Activity: 206
Merit: 447
September 17, 2023, 01:16:01 PM
#9
... So for three years now with approximately 366 days then the block need for 3 years will be 52704 blocks. 808139+52704=860843.

Your math is off, 52704 blocks appear in one year (or so). You could check it yourself 808139-52704=755435, which happened on 24th September last year.

If we set 210000 blocks per four years, then three years would be 157500 blocks. Indeed block 808139-157500=650639 was mined on 2020-09-30.
hero member
Activity: 868
Merit: 952
September 17, 2023, 09:01:46 AM
#8
I have one question (as newbie) why we will trust those new smart apps and why we even trust this coinb.in website as what metrices make them our first priority. To be honest I little afraid to lock my BTC for like 5 or 10 years. And I hope only inheritance related cases needed these types of functions. And I also doubt if anyone really have used these feature provided by any of the platform for inheritance purposes.  

First of all this feature isn’t a must to use if you don’t want to lose control of that particular funds. It is only recommended when you wish to inherit or gift a certain amount of bitcoin to someone but don’t want it spent till your specified time or probably you yourself don’t want to spend it till that time, other than that there is no need to use the feature.

Talking about a reputable wallet to use aside the coinb.in then bitcoin core and electrum will be better, since both of the wallets have proven to be the most reliable and trustworthy ones out there.

First thing is to create an address that would recieve the transaction and keep its keys or seeds save and then initiate the transaction.

On using electrum you need to specify the block height. You look at the current block and calculate it to the date you want like maybe 3 years from now. With like 808139 block already mined you need to add to the number of blocks to be confirmed in that 3 years. It is reported that 144 blocks is mined a day with an average Time of 10 minutes (although this can vary due to the time of mining blocks which differs). So for three years now with approximately 366 days then the block need for 3 years will be 52704 by 3=158112 blocks. 808139+158112=966251

Set the time lock to 966251 for lock time of 3 years from now.

legendary
Activity: 3234
Merit: 5637
Blackjack.fun-Free Raffle-Join&Win $50🎲
September 17, 2023, 08:07:24 AM
#7
~snip~
Also, using and securing manmonic phrases or privet keys seems inconvenient for many of us, so using NFT's or some other possible ways to make your bitcoin wallets back up grandma-friendly will be a major development for wide adaptation of the bitcoin network.

I don't know if it's just a typo or if you use the wrong names for some things, but before you publish a post, I would recommend you to use the "preview" button and check the content of the post Wink

As for the whole idea of wallets becoming friendly even for grandmothers, I think we have to be realistic with the fact that Bitcoin will be used mostly by people who have a solid level of education and are interested in new technologies. All these stories about mass adaptation are for me just one big fantasy that has little to do with reality, although some persistently push it as something that must happen at any cost.

In addition, the whole idea of the already famous Ledger recovery project was allegedly born from the fact that some geniuses within the company thought that this would bring "crypto" closer to their mothers and grandmothers.

All these needs to be user friendly that non tech dude can set up this rules only by clicking few steps.

If by some chance we manage to simplify Bitcoin to the point where it's as easy as using a bank card at an ATM, I'll just ask question - would that mean the average Joe would start using Bitcoin because of it? I am of the opinion that the reason why so few people use Bitcoin is not that it is too complicated, but that the general attitude promoted by the media is still negative, and people still believe in what they fill their brains with all the time.
hero member
Activity: 1414
Merit: 513
Payment Gateway Allows Recurring Payments
September 17, 2023, 07:21:08 AM
#6
This has been simplified by transaction time lock you can read how to set up using this method by TryNinja
.................
You have mentioned some good topics, but after doing some research, I found out that this should not be practiced or our first priority to lock funds for like 5o r 10 years. specifically with this coinb.in website. You should read the following theads:
1:
There's someone who tested it recently, had a few issue but in the end, it worked.
Some of the issues includes:
...............
2:
if you really feel the need for the timelock transaction types then the best solution is that you go to .............


You have shared some best topics to read about time-lock and thanks for them as I was unaware of these topics. Plus I think, what Op is asking here is to use some application that can do this work (of course a wallet app). And of course that should be open-source and etc. etc.

I have one question (as newbie) why we will trust those new smart apps and why we even trust this coinb.in website as what metrices make them our first priority. To be honest I little afraid to lock my BTC for like 5 or 10 years. And I hope only inheritance related cases needed these types of functions. And I also doubt if anyone really have used these feature provided by any of the platform for inheritance purposes.

If not, then I think currently the market for such apps will be less as their are less people (young people) who are not married and not looking for solutions like these ( of locking transactions for 10 years). But if some smart wallet comes now and by time that wallet will get some decent trust by the Legendries.
sr. member
Activity: 322
Merit: 318
The Alliance Of Bitcointalk Translators - ENG>BAN
September 17, 2023, 05:51:19 AM
#5
What if someone wants to lock his bitcoin for his future generation and wants to set up a lock for 10 years so that his children will not be able to transfer these funds for the next 10 years, or a business owner wants to pay his workers monthly salary in bitcoin

I think they already have this kind of features in bitcoin. It's called signed transaction. Basically It's a kind of transaction which have a lock period. This kind of transaction is only valid after a certain amount of time. You can check the post below from LoyceV about this.

TL;DR
As a bad-case-scenario backup, you can create a signed transaction that's only valid several years in the future, and sends your funds to an unencrypted wallet under your control.
If you ever need it, all you have to do is wait until you can broadcast the transaction.

Long version
I'll start by quoting myself:
~why would you give your family access to your Bitcoins? If it's meant for the "hit by a bus scenario", there might be another option. I've been thinking about this for a while now, but haven't actually used it:
1. Print a normal paper wallet.
2. Sign a transaction to send funds from your cold storage to the normal paper wallet, but add a Locktime so it's only valid from a block far far in the future. Say 1 million block count or even more (but not so far none of your family members will still be alive). Or while you're at it: create a few versions (1 million blocks, 1.5 million, 2 million) and print them on different sheets of paper.
3. Print the transaction and store it with the paper wallet.
4. If you're still alive a couple of months before the first transaction becomes valid: burn it, the next one becomes your new fail safe.
If your family ever needs it, all they have to do is wait a few years, broadcast the transaction, and the paper wallet becomes valuable.
I brought this up in another topic, and received more support than I expected. Hence the dedicated thread Smiley


Risks
You should only do this if you know what you're doing! It's meant for long-term HODL funds, and you should know the pre-signed transaction becomes invalid the moment you move any of the input funds. You should also know any newly added funds won't automatically be added to your Locktime Recovery Sheet. You have to keep track of this by yourself.
We can't predict transaction fees in the future, so you'll have to take a guess there. There's no need to make it very high, because the receiver can always use CPFP if needed. It shouldn't be under the minimum though.
Don't accidentally set a Locktime many centuries ahead!
You may miss out on possible Forkcoins that use proper replay protection.

legendary
Activity: 3472
Merit: 10611
September 17, 2023, 05:13:14 AM
#4
The Bitcoin network has shown decent development since its launch decades ago.
A decade is 10 years, bitcoin has been around for 14 #nitpicking

Quote
Wallet flexibility
I agree with the general idea in your post.
Some of your cases could be summarized as a wallet that has a user friendly way of working with Bitcoin scripts. Maybe have at least a dozen different pre-defined scripts that the user can just fill in the blanks to set up. Like the case with locking coins where all it needs is a timespan, the rest like the key to send the coins to is set by the wallet behind the scene.

Quote
or a business owner wants to pay his workers monthly salary in bitcoin and he doesn't want to log in every time he needs to do that?
Technically they should "log in" as companies do this normally, maybe someone was fired or new employee came along. There is also changes in price that changes the payment in BTC and things like overtime, etc.

Quote
Another possible use case is to prevent any unwanted transactions from coming through. Like only whitelisted addresses can send funds to a specific address, transactions from any unknown address will not be mined in this way, and the receiver address can pay for the transaction fees.
Whether a transaction is mined or not is not up to the wallet/receiver. What the wallet can do is to filter out unwanted transactions like dust spams.

Quote
Also, using and securing manmonic phrases or privet keys seems inconvenient for many of us, so using NFT's or some other possible ways to make your bitcoin wallets back up grandma-friendly will be a major development for wide adaptation of the bitcoin network.
I'd say if writing down a set of words on paper is hard for someone then maybe bitcoin is not suitable for them.
legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
September 17, 2023, 05:09:56 AM
#3
This has been simplified by time lock you can read how to set up using this method by TryNinja
Coinb.in support time lock. There are also other wallets that supports it. On desktop Electrum, you can use time lock with the normal time we use or the Unix time, you can also use block height. I think I saw time lock on Sparrow as well. If need be, I will check it anytime I am with my laptop.

@DVlog
For you other questions.
If you need a wallet that can pay workers salary the way you have just posted about it, you can get a developer to create you a bot that can do that. That is not the work of bitcoin developers if they decided not to something like that.

Your second question, about seed phrase backup. It is the simplest thing to do. I expect no one to complain about it.
hero member
Activity: 868
Merit: 952
September 17, 2023, 05:02:35 AM
#2

What if someone wants to lock his bitcoin for his future generation and wants to set up a lock for 10 years so that his children will not be able to transfer these funds for the next 10 years,

This has been simplified by transaction time lock you can read how to set up using this method by TryNinja


You can use Coinbin to do that. I had one a few months ago and it's quite easy to create/spend your coins after the chosen period.

To create the Time Locked Address:
1. Go to Coinb.in;
2. New -> Time Locked Address.
3. Enter your address public key (the one you require to sign the transaction and be able to spend the coins);
4. Enter the date-time or blockheight you want to release the coins.
5. Submit and save the Redeem Script (don't lose that or you won't be able to spend your coins in the future);
6. Send the coins you want to keep locked to the Address generated.

After the chosen period, you will be able to spend your coins.
1. Go to Coinb.in;
2. New -> Transaction;
3. Paste your Redeem Script and click Load (it's going to show every input available to be spent);
4. Paste the address you want to send the coins to at the "Address" field and the amount in the "Amount" field. The remaining funds will be used as fee. E.g: If your address has 0.015BTC, you can put 0.014BTC in the
"Amount" field and the fee will be 0.001BTC (0.015 - 0.014);
5. Submit and copy the raw transaction;
6. Go to the "Sign" tab (at Coinb.in);
7. Paste the private key from the address you choose when creating the Time Locked Address.
8. Paste the raw transaction you just created.
9. Submit, copy the signed transaction and push it to the network (you can do it in the Broadcast tab).
10. Transaction sent!


LoyceV has dedicated thread for using time lock for inheritance purposes you can read through the thread here  https://bitcointalksearch.org/topic/using-locktime-for-inheritance-planning-backups-or-gifts-5180850 on how to back it up properly and also to redeem it
full member
Activity: 504
Merit: 212
September 17, 2023, 04:53:12 AM
#1
The Bitcoin network has shown decent development since its launch decades ago. There is one sector that I think still lagged behind in terms of development: Wallet flexibility. Your wallet is your bank. So your wallet's flexibility is also as important as your wallet's security. This is where the idea of a smart wallet can play a significant role for the bitcoin network.

The core idea is to create a highly customizable wallet where its owner can set up or pre-define any rules they desire without losing control of their funds.

Why do I think this is important?

What if someone wants to lock his bitcoin for his future generation and wants to set up a lock for 10 years so that his children will not be able to transfer these funds for the next 10 years, or a business owner wants to pay his workers monthly salary in bitcoin and he doesn't want to log in every time he needs to do that? He just simply set up a contract that will send monthly salary to some predefined address every month. Another possible use case is to prevent any unwanted transactions from coming through. Like only whitelisted addresses can send funds to a specific address, transactions from any unknown address will not be mined in this way, and the receiver address can pay for the transaction fees. There are countless more possibilities for the use of a smart wallet, and I think this will be a much-needed development in the future. Also, using and securing manmonic phrases or privet keys seems inconvenient for many of us, so using NFT's or some other possible ways to make your bitcoin wallets back up grandma-friendly will be a major development for wide adaptation of the bitcoin network.

All these needs to be user friendly that non tech dude can set up this rules only by clicking few steps.
Jump to: