EB69 – Thomas Voegtlin - Electrum, SPV Wallets And Bitcoin Aliases
10 Mar 2015 · 58:35
Electrum developer Thomas Voegtlin joins Epicenter Bitcoin to discuss the open-source SPV wallet he started in 2011, estimated at the time to power 5 to 10 percent of all Bitcoin transactions. He covers Electrum 2.0's multi-sig and hardware wallet support, the security tradeoffs of SPV wallets versus running a full node, and how Bitcoin aliases could eventually replace Bitcoin addresses.
Speakers
Topics
Transcript
This episode of Epicenter Bitcoin is brought to you by shapeshift.io. With no account or sign up required, it's the easiest way to buy and sell Litecoin, Dogecoin, Darkcoin, and other leading cryptocurrencies. Go to shapeshift.io to instantly convert altcoins and to discover the future of cryptocurrency exchanges. Hello, welcome to Epcenter Bitcoin, the show which talks about the technologies, projects, and startups driving decentralization and the global cryptocurrency revolution. My name is Sebastian and my name is Pavin Crane.
So, we're here today with Thomas Fuckling. He has actually been working uh in the same office as I have for for a few months now. And uh many of you will will know him or will know his wallet, the the thing he's been working on which is Electrum. So, um, one of the most popular Bitcoin wallets. So, thanks so much for joining us today, Thomas. Thank you for having me. It's a pleasure. Yeah. What's interesting is you guys are actually just separated by a wall. Yeah. Yes. We're actually like 5 m apart. I I am in the modern room with the white wall where whereas uh Thomas is sitting with a old-fashioned wallpaper which also represents the the kind of traditional
values that the Electrum has. No. Well, um you you may put it like that. Actually, it's the Ethereum office. Yeah. So, the the Ethereum office where I was actually staying this weekend. Uh I actually just got back to Liil about 3 hours ago. Um I had it about I woke up about 3:30 this morning to uh come back to from Berlin. had been there all week and Brian and I attended the uh inside Bitcoin's Berlin conference and worked and did all kinds of cool stuff while we were there. Uh so Brian, what did you think of the conference? Yeah, I mean I enjoyed it. You know, as inside Bitcoin's guys always do a good job organizing it. You know, they're
definitely very professional at it. Um that being said, one definitely noticed that, you know, this is not like Bitcoin at $1,000 or something. So in terms of attendance uh you know it was pretty dramatic I think how much it's gone down from last year to this year. I mean I mean let's let's let's remember last year when we came back from the Berlin conference we were filled with such energy and like you know things were happening. We were on the cusp of something huge and this year there's about half as many people. there's definitely a different atmosphere. I guess you could say sort of like the dieh hard people that like stand behind the blockchain technology were there. Um so there was sort of
filtering out of people that perhaps were not so serious about it. Um back back a year ago. Uh but yeah, it was nice to see everybody. And by the way, you gave a great talk uh which uh we recorded. We may be putting it out sometime. Yeah. Well, thanks. Uh yeah, I mean uh I guess to uh most listeners they will be familiar with the topic cuz it's it's basically the same thing that we did our last episode on. Um but yeah know I mean I think one thing this really illustrates is just how much it price is driving uh attention you know people getting involved in the community. I mean, I've been also been noticing it with the meetup, uh, we we get less people, you know, it's less
attendance and it's just somehow less energy with everything. And then hopefully that's going to change, you know, I mean, uh, I hope hopefully this year it's going to, you know, pick up again and of course we many people sort of say that the price doesn't matter and, you know, it's obviously not true. [Laughter] No, it was great to be there anyway. It was it was really cool to be in the Ethereum office uh for some uh late night uh coding sessions. I I mean this weekend when I was saying that I get back around midnight and um I had my I had my laptop set up with a big screen and it's just there's something about being in that office that just makes you want to write code.
Well, so let's uh get right into it then. Um so you so Electrum's been around for for a couple of years and uh in fact you just released a version 2.0 which we can talk about uh a bit later. Uh so can you just broadly explain what is Electrum? So Electrum is a lightweight Bitcoin client and it's also a server. It's a client server architecture. Um I started to write this software in 2011.
Uh and at that time uh there was not so many clients around. Uh basically you had the choice between running a full node and uh uh hosted wallet. Uh and well multi-bit was already around I guess but it was also in the beginning. Um and uh so uh in the summer of 2011, there was this mybitcoin.com fiasco which uh was a big uh theft. Uh so it was it was a hosted wallet uh that lost a lot of bitcoins from their users.
So this um this happened uh with a hosted wallet that was run by a person who was completely anonymous uh which of course feels weird. Um and uh so I thought okay there will always be a demand for a wallet that gives you access to your coins instantly because people don't want to wait uh to synchronize with our network. uh and we have to address this demand in a way that protects the users. So um so this is how I decided to to to write this uh this client uh by uh creating a client where u uh the private keys never leave
your computer and uh but that can uh connect to the server with the speed of a web wallet. And another aspect that was very important is uh that it was deterministic. So instead of having to do backups of your of your private keys every 10 days or so, uh you had a unique uh seed phrase that you could write on paper and uh this would save your wallet once and for all. So was the idea of of of this kind of wallet of a of a light wallet that uh provided security and you'd control your own private keys? But that was that a new idea at the time or isn't isn't it mentioned in the white
paper even? No. Uh of course it's mentioned in the white paper. This uh SPV uh proof checking is mentioned in the Satoshi Nakamoto white paper and at that time electron was not the only one. There was also already another client that is deterministic which is the ancestor of myelium. At that time it was called Bitcoin Spinner. So um uh we were already uh having this uh this client for smartphones uh called Bitcoin spinner and multi-bit was also in its early stages. So Bitcoin J was
already being developed. And when we talk about the seed and the HD part, I know I think isn't it BIP 32? I think the the the sort of standard way of doing that, but then I know some people also do it a different way. I think Armory know has another system. Is how does Electum do it? Is it does it use PIP 32? Yes, it does use BIP 32. Uh but it's not using BIP 39 which is another standard. Uh, BIP 32 is about how you derive addresses in a hierarchy and BIP 39 is about how do you convert uh uh seed phrase made of words nemonic
uh into uh the the private key or the root of your of your hierarchy. So um I have decided not to follow BIP 39. So when we talk about HD wallets then a lot of times we we me you know we'll mention BIP 32. Uh so there's actually another component to that which is BIP 39. So the BIP 32 is how you derive the addresses. So it's like the the chains um etc. And the BIP 39 is actually like implementing the seed from which you derive those addresses.
Uh the seed phrase. Yes. How do you take words from nature and language and you convert them into address a set of addresses? And why did you choose not to use the BIP 39 implementation? because I had the feeling that it was um reproducing the same mistake as I did with electron uh when I started electron. Um when you give uh this seat phrase to your users, you have an obligation to support it in the future forever. You cannot tell them, oh look, this is a new version, so we're not going to to support the old seeds. Okay, you have to support the seeds that you
give to your users in the future. There's no way you're going to tell them, "Look, we have decided to change and we do not support the old seed phrases. You have to switch because lots of users would lose their money if you did that." So, um, when I started Electrum, I did not include a version number in the seed, which means that the seeds that have been distributed uh, we have to um still support them but uh some collisions are possible with with BIP 39 seed already. Uh so in the first place it was not possible to fully support BIP 39 and um in addition uh BIP 39 is uh not including any version number either.
It's just doing the same uh as I did before. So there's no way of tracking the evolution of BIP 3. So what you're saying is since it doesn't have a version number, if there's a new version of BIP 39 that comes out later, wallets wouldn't have a way to differentiate one version from another. I guess they might use uh the check sum that they have currently in BIP 39 as a version number, but it's not in the BIP currently. Um, another thing that um I don't like about this BIP 39 ID is that um uh when you when you define a new standard uh you have to have a clear idea about
what the goal is and uh you have to see how to achieve this goal with a standard that is as minimal as possible. uh BIP 39 includes the word list in the BIP. That means that uh in the future if you want to support BIP 39 seeds because you have given them to your users, you will have to include this word list forever. Um and I will have to do the same with the old electron seeds because the word list was uh included in the standard. So that's another mistake that I will not do twice. Can you can you explain why?
So it's a problem because because it's very big. I mean uh it's a dictionary and if you want to have it in many languages, you have to to write this dictionaries in many language and put it in the beep. And it's also a problem once you start to have collisions between those languages because they have words in common. So the first arrived can use a word and then another language that arrives later has to check what are the words that are already used by the previous ones. Now does this does this mean that the seeds that you use in your wallet would not be compatible with another wallet? No, they are not. But if a wallet if another wallet wants to
support the seeds used in Electrum, uh it's very easy because they do not need a word list. It's just 10 lines of code and they will they they can support it much easier. Um the the seeds that we use uh do not require a word list and we can actually change the word list in the future. The old seeds will remain compatible because we only use a hash of the seed phrase. Um, BIP 39 also I mean B39 the first version was not doing that and then they decided to do this. So they also use a hash of the seat phrase which in principle would allow them to do that.
But the problem is that they did not do it for the checksum which is not consistent. I just don't understand why they did it for the for the seed for the seed derivation and not for the checksum. I mean, if you decide to to go for a hash of the phrase, then you should do it for both, not just for once. It doesn't make sense to me. So, coming back to uh to Electro in a broader sense. So, you just came out with version 2.0. Uh can you talk about some of the new features uh in this latest release? Oh, which there there are a lot of new features. I know. I mean, you could look at the change log uh on the Yeah. What do you want me to start? Well, which which ones are the most important? Which ones are the most important to you? I guess I think uh
BEP70 is very important in my uh in my view. So that's payment requests. The payment protocol. Yes. Um and it's something that we are going to develop further. For the moment the the the management of these invoices is not very well advanced, but we are going to to develop this further. uh I think it's very important for u uh in terms of um customer protection because without this uh payment request sorry uh without payment request um you have to
uh a merchant will give you an address uh but um then you can feel uncomfortable sending bitcoins to this address because you're not sure it really belongs to them. And with a payment request, they actually give you a proof that they asked you to send money to this address. So because the because there is a signature in this payment request and the signature is linked to a domain name. So in terms of uh of consumer protection, I think it's much better. So how would this feel like when so so will the election wallet I mean I guess most most of us know uh the payment requests from for example when
they pay something with uh with bit pay right and bit pay yes uh sends an invoice and you see the address you know that it's basically like uh like a certificate authority with a a website can authenticate that well this is from them uh in the same way right bit pay basically certifies that yes this address comes from them. Um how will this uh feel for a user? So if if then you go to a website you try to buy something with bitay and you click uh pay with that will will you uh display for example that invoice in the electum wallet? Yes. Will you save those invoices for future reference? Um okay.
Yeah. Yeah. This is what we do. Um, I did not post a screenshots on on the website, but basically it's a little bit like in a Bitcoin core client. Um, it displays the uh the domain name that you're paying to. It uh puts a green color if the uh signature verification has passed and uh it will not let you pay if this verification has failed or if the payment request has expired. I I know there there are a lot of uh other exciting features that you have. I mean, I know one of the the key ones is is multisig. Uh, and I think Electrum is the the after armory, I guess, was the
first wallet that had, you know, multi-IG. Uh, not in a web way, right? Because there there are a lot of web wallets that have some sort of multi features like BitGo for example. Uh but with with Armory, you could actually, you know, each has their own local wallet running a full node and you could do uh multisc. I think that was the first one if I'm correct with their lock boxes thing. uh and now uh I don't know is is this the the second uh like implementation of multisc for uh in this way or or can you explain a little bit maybe how this compares to to other ways of doing multisyc that are more uh web- based. I think the very
first one was just the bitcoin core client even though it was not in the user interface but it was with the command line. Yeah, Armory was the first and maybe the only one to um to have um uh multisig without pay to script hash if uh correct me if I'm wrong but I think that their lock service is using multisig even from before this pay to script hash uh system. Yeah, I believe that's true. And this allows them to to put an arbitrary number of of cosigners.
Electro use uses pay to script hash. And so out of the box with this new version, we can do uh two to two of two multisig and two of three multisig. Yeah, we're going to add more in the future, I guess. Okay. Um, now can you just talk about how that works? So, for instance, say I have a wallet uh here in France and and Brian has a wallet uh in Berlin on his computer and we want to do multi-ig. How do we set that up and how do we uh let the other person know that there's a transaction so that he can sign? You guys have to change master public keys and uh unfortunately for that part uh we we do not have a a way
to do it within Electum. But uh you can you can transfer a a master public key um either with a file or with a QR code. So So then can you run us uh through a transaction? Let's say we want to we we have uh funds in a multisc uh something and you know I have one signature. Let's say it's a two out of two. I have one signature and Sebastian has one signature. Yeah. Um, how would that then go? Would I, for example, initialize the payment and it shows up in his address and he has to cosign it or is there some way I have to send him
the the incomplete or partially signed transaction? That's right. Um, so you have multiple ways to do this. Uh, you can send him the partially signed transaction. Uh we also have a new plug-in in this new release that uses a centralized server and uh this server is a channel of communication for multisc wallets. So uh it's called cosigner pool. Uh it's like a memory pool but for transactions that are not signed yet.
And um so uh you sign your part I mean you sign the transaction with your signature and then uh this transaction is going to be encrypted uh with the public key of your cosigner and it's going to go on the server with this uh encryption and uh the cosigner is going to put it uh in a table indexed by not the public key of the cosigner but but a hash of this public key so that the server does not even have access to the public key of the cosigner. And when you start when the cosigner starts their wallet, uh they just get a pop-up that tells them, "Oh, you have received a partially signed transaction uh from the cosigner pool. Please type
your your password to decrypt it." Uh assuming they have encryption of their seed. And once they do that, they see this transaction that is decrypted and they can decide to cosign it and then to broadcast it. So at no point does cuz you just said something that we probably lost about half the people that were watching. You said centralized server. Yeah. Now so the the what's important to realize though is that the transaction is uh is encrypted and the server never has access to the contents of that transaction. Yeah. Uh we can also mention that there is a currently going effort to do the same thing in a in a decentralized way. Um I think the author
of Bitcoin authenticator Chris Pacia is uh is working on on that uh on that project but for the moment it's not uh it's not ready. Okay. So this is a plugin that that is developed on top of of of Electrum. Uh now there's another interesting plugin that I So for instance if we were using the same um we're using a multi-IG uh wallet and from the same seed. So let's say for instance well in our case we're a business we we have one wallet and we want to have access to the same wallet on two computers and be able to sign transactions with multisig. Uh one thing
that might be important to share is labels of addresses. So we could send invoices and receive payments and we want to uh make sure that those labels are synced across both wallets. So you also have a plugin. Yes. And enables that. You you asked me last week about that and in the meantime it has been fixed. I saw that. So you saw that. Okay. That's fine. I'm looking at the I'm looking at the chains release right now. So yeah, I just realized that. So if you if you have two cosigner that have this labels plugin, their labels will synchronize. That's great. So so this I guess in in that case then um that solves the the issue of well what what a lot of web wallets uh solve as a
problem which is synchronizing of labels. Uh but we can so Electrum can do that on the desktop. Yeah. So we'll uh come back to Electrum in just a minute. Uh we want to talk about SPV as well as uh the Bitcoin aliases uh initiative that Toma is standing behind and um also just sort of talk about the wallet space in general. But before we do that, we'd like to talk about our good friends over at Shape Shift. ShapeShift is the fast and easy way to uh buy and sell altcoins. I just checked their website and they now support 25 altcoins including unoptanium. Um, so if you thought that you couldn't get your hands
on some unoptanium, you can even get unoptanium with shape shift. Um, so shape shift is basically a currency converter of I mean I I consider it to be sort of Google translate for cryptocurrencies. On one side you have the current currency the currency you want to convert. On the other side, you have the currency you want to convert to. And uh you just send the uh so for instance, you send Bitcoin and you want Dogecoin. You put your Dogecoin address on the uh in their conversion tool and it'll send Dogecoin to your to your wallet. Zero transactions. Takes about 30 seconds to do and they don't even need uh an account. So you can do it completely transparently uh protecting
your privacy without having to create an account. So, uh, one thing that we've been doing recently is, uh, tipping, um, interesting, uh, things that are in related to the show. Uh, and, uh, well, perhaps we could use Shape Shift to tip Electrum. Tom, is there a tipping address? Uh, no, there is no tipping address for Electum itself. Um, that's too bad. I think we could probably tip one of the servers, though. Yeah, you this is what I answer to people when they ask me if if they can donate to Electrum. Uh they can donate to the people who are operating Electrum servers. Okay. So in that case then let's let's do that. Um so where do we
find the server address? Well, I found one. So I I went on my Electrum uh wallet and I looked at one of the tips here. So there's a server over in California and we'll use Shape Shift to tip in Dogecoin. So if I go to shapeshift.io. So here I've got my currency conversion tool and one side I've got BTC and on the other side I've got Litecoin. So I'm going to send Dogecoin and I send that to Bitcoin. Put the address in. I hit start and using my Dogecoin wallet, I will simply send some Dogecoin over to that address. So, we'll say $1. There you go. So, I've just sent $1 to that address, and in just a few
seconds, they'll get uh Bitcoin um in their tipping pool. So, shape shift.io, give it a try. Tell us what you think, and we Which which server was that? Uh I think it's the uh electrum.hmiths.com in California. Okay. So, yeah, go to shapeshift.io, IO give it a try. Tell us what you think. And we'd like to thank them for their support of Epicenter Bitcoin. Absolutely. So, uh, let's let's dive into the SPV topic a bit cuz it's a it's an interesting topic. It's also kind of a complicated topic and and and maybe also gives us a chance to come back a bit about the the thing Sebastia just raised before the issue of uh Electrum using a server and what kind of
the the trade-offs are there of using a server and not. So we we mentioned a little bit um before you mentioned that the sort of idea right that people don't want to sync the whole blockchain. It's a pain. I mean I personally I have I've used Armory and uh it's it's just it's really kind of a nightmare I find it because uh having the Bitcoin blockchain updated h you know it's it's a pain when when you have to wait hours each time you use it.
So uh perhaps to get started with with the SPV thing, can you tell us what are the the kind of compromises and security trade-offs one makes when one one chooses to use an SPV wallet versus using a running a full node uh client like Army or or maybe the Bitcoin QT. So, um, with an SPV client, um, your client can check that the transactions it receives from the network are actually in the Bitcoin blockchain. Um, but it is not a proof that uh you received all the information. It's a
it's a proof of uh of correctness, but not a proof of completeness. Um so um so this is one of the of the tradeoffs that you are making. So so what's what's the worst thing that could happen because uh you don't have a you don't have that proof of completeness. Nothing really bad actually. But still um uh you could think that uh if you are in um in a nonsecure environment and someone is u is controlling your your connection uh they can make you believe that you are talking to the Bitcoin
network but you are not and they can hide some transactions that actually landed in your wallet. So the worst thing that would happen would be that uh your wallet gives you incorrect uh balances or yes um but um they cannot make you believe that you have received some bitcoins uh which is the because SPV protects you against that. they could make you believe that you failed to send some bitcoins. And actually uh being a deterministic client also protects you against that because if you want to if the network tells you that transaction did not go through uh
and you try to send it again, you're going to send exactly the same transactions with the same coins. So yeah, so it wouldn't be that somebody uh tries to get you to pay an invoice. uh and you use an SPV wallet and then they I guess control your network uh and somehow they make you believe you didn't pay and then uh you pay twice with some other inputs but that that couldn't happen there. Well, you would pay twice with the same inputs so you would pay only once. Yeah. Okay. So that's interesting though because we we often have this idea. I mean there there is this idea that SPV wallets are somehow insecure or at least somewhat insecure.
Uh but that's I mean those seem like fairly minor things. Plus they I mean it also seems that an attacker would need a lot of skill and control your network. I mean these are pretty an attack an attacker can also make you believe that you have not been paid. Yeah. They cannot make you believe that you have been paid and that's important if you're a merchant because you are going to send some goods but they can make you believe that you have not been paid. Yeah. So, but still I mean I'm trying to think of some scenario where this would be like some some terrible situation and and maybe someone can canop can come up with one but it's it's um SPV is a very good protection
actually but if we can do better we have to do better and um one of the things that I want to do for for electron is uh to add also this other proof this proof of completeness to the electron protocol. Um so there is this idea that was uh mentioned uh some time ago in the bitcoin forums of u it is called um blockchain commitments and it it requires the miners to uh put in every block the root hash of a tree um a tree of all the unspent. So, uh, this is probably never going to happen because, uh, it it would
be a hard fork and it would be complicated. Um, and the miners Yeah. Well, um, uh, so there there would be another way to do this without requiring the miners collaboration. It's um, it's been described in a papers that was published last year. It's called uh, Versum. V E R S U M. It's an MIT piper. And uh so this is a protocol that allows you to uh connect to a bunch of servers and um actually you need only one of them to be honest and you can't find which one is honest just because the server is going
to send you a proof. And um so you you request a proof of your of your balance for each block and um you can go for from one block to the next one and check the the transition between blocks. So you can do I mean if you if you need to know uh if you have this proof for a block in the past and you want to have it for a block in the future, you can do a dichotomy very quickly and find out if two servers disagree which one is the liar. So this uh this is something that we that we want to to add to electum in the future. Cool. So uh one of the things we also mentioned was that Electum uses a server, right?
So where whereas normal SPV wallets, they they just talk to the Bitcoin network. Uh Electrum uh wallets talk to Electrum servers and you operate one of them and there are other people operating one of them. Why did you choose to go that way? and not not just talk to the Bitcoin network because it allows to have a synchronization that is almost instant. Okay. And the the tradeoff I guess is that you do lose some privacy or or is that is that true? It depends. Um you do expose your wallet addresses to the server that you are talking to. In that sense you lose some privacy. Uh now if
you look at um the other technique that is around which which is the bloom filter uh the bloom filter uh also uh leaks some information actually you have to to uh decide if you want speed or privacy but you can't have both. Um and uh so you can make your bloom filter more or less specific. And if it's very specific, it's very fast, but then it's also going to to to leak some some information about your addresses. Um, but in this case, uh, you're leaking this information to the entire world, not just to a single server because the communication is not
encrypted. So, what is a a bloom filter? Can you explain that briefly? A bloom filter is a reduced uh vector that uh does not reveal your addresses uh but it tells uh the node that you are talking to uh what is the set of addresses that you might be interested in. So uh there might be some false positives um uh in the in the answer that you get because uh the node actually does not know your addresses. They just run this bloom filter against each block and they uh they can filter the the block and a
few transactions will be remaining. These are the transactions that you might be interested in. So if you synchronize with the blockchain using a bloom filter, you do not download the full blocks but very very reduced version of the blocks. And so when you when you query the network about these transactions, the the node will return back more transactions. Is that is that understand right? like the node will return more transactions than you need and so therefore it doesn't know exactly what your addresses are or am I completely getting that wrong that's the idea um then um it depends how the bloom filter
is set it can be very very specific or not specific at all if it's not specific at all basically you're downloading the full block right and if it's very specific then you are much less private okay and so so how does that relate relate to how differently your implementation of SPV is from say a Bitcoin J based wallet. It makes no difference for SPV. SPV is uh is about the verification of the of the information that you get. Um Electum and Bitcoin J have a different way of querying your history, but then SPV is the same.
SPV doesn't care if you if you use a server or not. Okay. So that's clear. But uh I guess one one question comes up here especially if one is very concerned about about privacy and and if we if you sort of take you know put on the NSA hat like assuming the NSA is trying to get some for example some sort of surveillance of what's going on with the blockchain. uh where would one be more secure here is I mean I guess the one thing they could do is would be operate directly on electrum server. The other thing they could do would be uh maybe operate some bitcoin nodes or try to get some visibility into the transactions that are going on and maybe which IP
addresses are doing certain transactions that way. um where would you be more comfortable here and and how do you how do you see those uh the risks there? Um well, if you really want to be anonymous, you I think it's better to roll a full node. Um if you want to use Electrum, you can also use your own private server and then you have a full node and you're anonymous. Um or you have to trust the server that you are using that they are not going to leak information about you. Uh now um my target is not really people who are
already using full nodes and who wants to be very anonymous. Uh I am more interested into users that currently use uh web wallets like blockchain.info info and uh this kind of wallet does not do SPV and they use JavaScript. So this is the the kind of um people that I am targeting. Uh but if uh you are highly concerned about your privacy, uh there are two ways you can use Electrum. uh you can run your own server and talk only to that server or you can uh decide that you trust one of them and uh stick to this one. But yeah, that's
all. Uh yeah, like I said, if you if you're really uh concerned about privacy, uh it's better to use a full node because uh neither electron nor the bit the the bloom filter will uh will really make you very private. Yeah. Okay. No, so that makes uh that makes sense, right? Because of course when you when you receive the transactions uh but but then still the question is when you run a full node uh I mean I it makes sense to me that you know the receiving the transactions would work uh you know if you get all the transactions in obviously nobody would know anything about you based on you looking for
specific transactions to specific addresses. But then when you send a transactions, wouldn't you still leak information when you run a full node? You can use electrom and you don't leak your IP. So what the information that you are leaking is only your addresses and uh you are disclosing it only to one person which is the server, the person who is operating this server. you're not uh leaking it to the entire world because the connection between you and the server is authenticated and is encrypted. Uh this authentication is also a good protection in case of man in the middle attack by the way. Yeah. I I mean in this case I
meant to if you're running a full node actually that then if you send a transaction u well I mean you must send it to some node right? So that node will will know uh you sending a transaction, right? So you will leak information about your addresses uh in that way. No, if you're running a full node, you just uh No, you don't really leak information about your addresses. Uh only if uh people around you can tell that you're the very first one to relay that transaction. Yeah. Yeah. But this is difficult. Yeah. Okay. Yeah. Because uh it could always be that that
transaction that same transaction you're sending on to some other node. The other node doesn't know whether it originated from you or whether they came from somewhere else. Right. They can they can try to measure this but uh I I don't know how reliable that is. If if you look at blockchain.info info. They actually have a a map where you can see where a trans transaction originates from and it's not uh it's not reliable at all. So Thomas, recently you gave a talk at the meetup in Berlin about an idea that has been on the mind of many people for many years. I think it's it's sort of an obvious idea which is uh to make sending bitcoins really easily and
to allow people to send bitcoins to email addresses or to some sort of human readable format. Of course, some people have done that, right? Like Circle and Coinbase and stuff, but you know, it's in a very uh lousy centralized way where essentially you sending, you know, I can send bitcoins to some email address and they get a notification essentially to create a Coinbase account for example. And of course, that's not really what we want because it centralization. It doesn't really work in in the way Bitcoin is supposed to work, but your proposal is trying to accomplish that.
So can you uh talk a bit about how this is supposed to happen? Yes. Um well uh in the current uh Electron 2.0 we have an open alias plugin that uh lets user send bitcoins to an alias that reads like an email address. Uh now what I want to do is something a little bit different. I would like to have a user experience where you do not see a bitcoin address at all and uh for that I think that the payment protocol has to be expand extended. Currently the the payment protocol is very nice but um if
you want to sign a payment request you need the SSL certificate. So the the the payment request is signed by domain name. What I would like to have is a payment request that can be signed by a user at domain name. So um uh this signature would not be a signature that is coming from the private key of SSL certificate uh but a bitcoin ACDSA signature. So um I think uh in order to do that uh we need to extend this payment protocol just to have a final step where the the
person who has the certificate for a domain would issue uh let's call it new certificates but for for for Bitcoin users uh so that uh each user can sign a payment request with uh with uh the wallet address dedicated key in the wallet would would do that. So we were talking about that the payment requests are there would this also allow me to for example send bitcoins uh let's say to seasia if I you know I don't know any bitcoin address from him and I know maybe he uses bitcoin uh could I just send one uh send some
bitcoins to his email address? No, you could he could send the payment request to your email address and then you you would pay but the the the requesttor has to initiate the process. Okay. So, I was curious if there's any other projects uh or anybody else trying to attempting to do this. So, there's like one name.org and keybase that sort of trying to remove the Bitcoin address. Um yeah. Yeah, there is a lot of projects around there. Um but I do like uh the idea of this payment protocol um because uh it feels more safer to send uh uh to send bitcoins only when someone
requests them from you. Now is there are there way so this is this is a way for someone to initiate a payment request and then someone to send the money. So it is it is receiver controlled which is ideal in some cases. In other cases it may be ideal for um the payment to be sender controlled. So like Brian was uh was mentioning I want to send money to this person. I I know they use Bitcoin. Um maybe they've set up something that allows me to send them money uh using the domain domain name. Well, uh this would be uh working with the current open alias plugin. Uh we can uh uh we we already have that in electron. So in
that case it's a different process because the verification of uh of the alias is not using SSL certificates at all. It's using DNS and DNS sec. But in terms of user experience, it's uh it's what you are describing. Uh you you do not request payment, but you want to send bitcoins to someone and you suspect that they have an address somewhere. Now, so I I've been reading about open alias and I actually I set it up on our uh on our domain name. It's pretty easy. I just had to set up a text uh um DNS record. Do you know if that could also work with Xpub so that
anytime I put so for example I want to send money to this domain name um they would generate it would find sort of the the last address that where a payment has not been sent. No I don't know. I'm sorry. No, but so yeah, I also think this is sort of needed um because we really need to get rid of these addresses that um but there seems to be a lot of challenges with this because I mean like would this still work if you changed if you had like a new wallet um or if you changed wallet providers or perhaps started a new seed like you'd have to
set that up again even what you're describing. Yes, you would have to revoke a certificate or or buy a new one. Today's magic word is seed. S E E D. Head over to let's talk bitcoin.com to sign in, enter the magic word, and claim your part of the listener reward. Um so moving on just before we wrap up uh we'd like to end on sort of uh exploring the the wallet space. Uh what are your thoughts on the current sort of offering of of Bitcoin wallets out there
right now? So in the last year there been like a proliferation of wallets uh coming out. It seems like a lot of people are focusing on this. Why do you think that is? I started this uh because I found it was interesting and uh I think uh lots of people when they they discover Bitcoin they want to play with it. So it's very natural to to tinker with uh with addresses and uh to why not then to start to write a wallet. It's um yeah it's uh there might be more and more in the future. So, do you also think I know this ties into Sebastian's question u
that the wallet will be um will be key to building the sort of Bitcoin I don't know businesses of the future. Uh I know there's there certainly the viewpoint that I guess because you know in a sense it's like it's a central point right where where people control their funds and maybe where you'd use other services from and if you look at the big fundraising runs uh in the last year right there was Coinbase Zappos uh blockchain uh BitGo many of these companies uh all focusing on wallets.
So is is that also uh your point of view that that the wallet because of that central position will be you know sort of essential to building significant businesses in the space. I do not know. Um I believe that there is some monetization possibilities uh but um it's also a very competitive uh domain. Uh now um I guess there will be uh two kind of uh wallets. I mean wallets that also provide financial services uh that let you exchange actually buy buy bitcoins with uh with euros and uh and uh there will also
but I don't know if these two uh different worlds are going to to mix and if we are going to see some hybrid products. So in in your case what are some of the opport monetization opportunities that uh you perhaps see in the future of electron? Um in the present uh we have started to uh provide this two two- factor authentication service uh which is a collaboration between electrome and a company called trustedcoin.com.
Um and it's a unique uh uh way to do uh two-actor authentication because it's fully deterministic. So that means that uh you can recover your funds from your seed even if uh even in the event where this company trusted coin disappears. Um because uh it's a two of three wallet. You have two keys. They have the third key. But the so so so that already gives you the the control over your coins. But uh it's important to understand that the third key the public key is also deterministic and you can regenerate it on your side without them. So if you
have a whole bunch of addresses in this wallet uh it can be restored like a normal electron wallet without uh this company without their servers. So you you are perfectly safe if you use trusted coin. So, and then is is there a model that with each transaction you pay for example a small fee to a trusted coin or or is it a Yeah. Okay. Um you can choose either you pay on each transaction or you can buy some prepaid transaction and then it's 50% less. Yeah. I I think that's an interesting thing. I remember uh that's a long long long time ago when we had uh Johan Barbie of 37 coins on and and they had
sort of a similar model uh where you know they they would essentially provide a second factor and they would sign transactions and and in this way um in this way it pro it provides like um advantages of both worlds right on the one hand you don't hold people's funds So they still control them. You only have one key. You can't steal them. But at the same time, you're like essential in every transaction. So it can offer a good business model possible, you know, because uh you can sort of by default include a fee to yourself. Um and yeah, I think that that sounds like a very reasonable way.
But if we think, you know, long term, where do you see Electrum in uh in 3 years or in 5 years? uh in five years. Oh my god. I I know this is a this is a crazy question in Bitcoin Bitcoin terms, but you know if if we maybe as far as you can see let's say 3 years. Okay. Uh I think that uh this idea of uh uh using uh email like aliases uh to to send payment request um will be implemented in the coming year. Um the other thing that uh will uh be important for us is to be more uh
present on the Android platform. For the moment we do have an Android version of Electron, but it's not very user friendly because it's using a a duplicated u um API from Google. Um we have uh uh currently under development a new Android application that is using KV which is a Android development framework which is uh much better. So so yeah uh I don't know how much time it's going to take but maybe one year for those two things.
uh and then um then there is this uh this uh proof of completeness which requires a change in the protocol. This is probably going to take a bit more time. It depends how I set my priorities. Uh for the moment my pri my priority will will be this aliases. And and what about Electrum as a company? Do you anticipate hiring people and and building this into a larger project or do you hope to just monetize uh the open source software in a way that you can support yourself and and keep working on providing sort of you know great open source free uh Bitcoin software? Yes. Um for the moment it's an experiment. Uh
I'm going to uh see um how much uh revenue I can generate. Uh and of course uh if I can pay more than one person then I will hire someone. Um it's uh um we we need uh we need actually uh someone to to be full-time on this Android development. Okay, cool. uh now now in terms of business model um uh we do have uh this product that is out now uh I think it's time to uh look for other kind of services that we can provide and there is a there is a lot of things that we can do inside the wallet
um one thing that I did not mention is um this idea of auditing Bitcoin exchanges uh in order to check that uh they actually have uh your funds in their reserves. This is something that could be done uh by software and uh this is a service for which uh um we are looking to to find some collaboration with uh with Bitcoin exchanges. Cool. Excellent. Well um thanks so much for coming on uh today Thomas. Yeah, thank you for thank you for having me. Yeah.
So if people want to learn more about Electum uh the domain is electrum.org or of course we will have the link in the show notes. Um also I guess uh we can link to the GitHub page so if people you know I don't know want to look at the code or maybe get involved even in contributing to the project so you know they'll be able to do that as well. Is there something else or some other place you want to point people to? Yeah they can also contribute to the documentation actually now that we have released 2.0 Oh, in the next month um uh our main effort will be to write documentation because we have a lot of new features and um uh they are not properly documented and uh I can write some
documentation but it's much better if it's written by someone else who does not have the view of a developer. uh so I can write like a first version of this documentation and then I hope some people will rephrase what I write in a in a better way. Okay. Well uh fantastic. So yeah thanks so much for coming on Tomas and you know to a listener thanks very much for listening. Uh we will so you can do a few things uh to support us. You can follow us on Twitter at epsenterbtc uh and you can also donate to us. You know we do appreciate that and you can do that epsenter bitcoin.com/tips.
Um, so thanks so much for listening and we look forward to being back next week. [Music]