Welcome to the Stephan Livera podcast.
TRANSMISSION SLP28
Cyphernode Bitcoin API,
with Francis Pouliot and Etienne Larrivee of Satoshi Portal
Francis Pouliot and Etienne Larrivee (CEO Satoshi Portal and Lead Developer Cyphernode), join me to talk about their newly released open source Bitcoin self-hosted API allowing you to more easily build Bitcoin services and applications. This enables businesses and users to reduce their reliance on commercial Bitcoin APIs, while still offering advanced features and utilities.
Welcome podcast listeners, this is Stephan Livera podcast episode twenty-eight, and my guests today are Francis Pouliot and Etienne Larrivee from Satoshi Portal and Cyphernode. So welcome, and thanks for coming on, Francis and Etienne.
Thank you, Stefan. Thanks a lot.
Yeah, that's, it's great to get you guys on. I've, I've seen, some of your social media work, Francis and Etienne. I've had a look through, the Cyphernode GitHub project, and, you know, I've heard a bit about this project, and I thought it would be a really good, thing to discuss on the podcast because it's very in line with the whole Bitcoin ethos, this whole idea of, you know, don't trust, verify, and, you know, d- you know, not your keys, not your coins, as we say in Bitcoin. so, you know, what maybe we'll, we'll start if you guys could just tell us a little bit about yourselves, a little bit about Satoshi Portal.
Yeah, it's in. Do you wanna start?
Okay, I can. So, I'm, Etienne Larrivee. I've been developing software for the last like 25 years, and, I used to, to work for, For major, companies like, banks or, you know, here in Quebec, there's a Hydro Quebec, or, that is responsible for, ex-electricity here in Quebec. and I've been in the, in the Bitcoin,
field like for four or five years. it's, it's a rabbit hole, like everybody says, and, I fell off in there, in there, and I'm still trying to get out of there, but I won't get out of there, I guess. So, that's it for me.
Alright, awesome. Yeah, so, so, my name is, Francis Pouliot. I'm the, I'm the founder and, CEO of, Satoshi Portal. And, and Etienne is our, is our Bitcoin, engineer at Satoshi Portal. so, so, so Etienne, Etienne works with me there, i-in our Montreal office. So, I founded Satoshi Portal, almost, four years ago. the, the kind of context of, of what we do. Our, our goal, i- and our mission is to, to build the financial and software infrastructure for the Bitcoin standard. And, I started out in Bitcoin, at the Bitcoin Embassy, which was like a physical hub. you can kind of think of it like as a mix of a coin center, where we did like lobbying and PR and, reaching out to journalists and, publishing research and stuff. and also like, an Apple store, because we had a physical office and people would come in and like we would do workshops and that, and, and those kind of things. And eventually, we also opened a, a currency exchange counter there, where people would like buy and sell Bitcoin, and we had ATMs and that kind of stuff. So we started to build like this, these, these software to automate our OTC brokerage, and then in twenty fifteen, I launched Satoshi Portal, which, owns and operates, Onramp and Onramp, on, sorry, Onramp and Offramp like apps, like, Our major, product and service is, Bills. So Bills allows Canadians to, pay their bills with Bitcoin, very simply, and, third-party, i-invoices, like your rent, your credit cards, your electricity, and that kind of stuff. so we're a payment processor, we're Canada's first and largest. Bills has existed since, twenty thirteen. I was founded by, one of the Bitcoin Embassy founders, and Satoshi Portal, bought it in twenty fifteen. and Operates a, an OTC, online OTC service called Bitcoin Outlets, where people they, buy bitcoins online, they link their bank account, they send fiat, and, we send bitcoins to their, to their wallet, to their own wallets. So we, we're, we're OTC brokers, but we also build, these, these software stacks and suites, everything that we own, and use, in our services, we build ourselves. so we have a, a, a development team of, of, Of, of what I did. So I started out kind of like as a educator and a public, public person, to, to get the regulators on board, to get the financial institutions, on board. and then, we kind of realized that, there were still these, these frictions, like the Bitcoin standard couldn't happen if it wasn't easy for people to really get in and out. And since we had so much proximity to the end user, we were like, "Well, let's, you know, let's, let's So the, w-we were dissatisfied with kind of the, the standards, the level of standards in the industry, and we said, "Uh, well, let's just build. You know, we have higher standards, we have different, methodologies, different approaches. you know, you don't wanna-- you can't complain about Coinbase. I mean, this isn't a democracy, you know, you can't vote for which exchange or which, which, approach to Bitcoin is the one that the users adopt. You know, you People to come. So that's, that's kind of what we're trying to do.
Yeah, I like the idea that you guys are really trying to build and take accountability rather than just sort of sit there throwing stones, you're actually going out there to try to make a project that helps people be more self-reliant and use Bitcoin in the way it was intended to be used. Now, one of that, one of those examples is the Cyphernode, project, which, you know, I wanted to get you guys to talk about. So maybe you guys wanna just give The listeners an overview on what the Cyphernode is.
Okay, sure, sure. I'll start and then, Etienne is the lead developer of Cyphernode, so Etienne can, take over, and when we talk about more specifically like what it actually is from a technical and real point of view. But the, the concept of Cyphernode, Cyphernode is an open source project, first of all. it's, it's, financed and, built and maintained us at Satoshi Portal, but we have, outside contributors, now that we're gonna talk, b-b-about that a bit later, but that are contributing. So, it's a, it's a Bitcoin full node API that's open source. So it's a micro services API server, And it's a utilities toolkit to build applications, to build Bitcoin applications. and the kind of features and approach that we have is to build, you know, modular, scalable, secure, Bitcoin backends without any trusted third party. So in order to kind of understand like what it is and what it's useful for, let's kind of-- we can kind of look at quickly what's the alternative and what are people using and why we're proposing this. to the market. So, you know, when we, when we started out and built, built the first time, we didn't even have a, a, a Bitcoin engineer. We had, we had nothing. We just, we just had this, PHP site, and we literally would, would enter in the admin panel like hundreds of Bitcoin addresses that it would just like cycle through. And believe it or not, in the first year and a half, two years of builds, we would check them manually in a, in a, in a block explorer like daily We would just check those, those Bitcoin addresses to see if we had received something. and then obviously we, like all the, the, the other Bitcoin startups, like when you scale and you, you hire development teams, what you'll do is you'll use, any service that uses Bitcoin, like an online wallet, a payment processor at checkout, any app that's interacting with Bitcoin, needs to, to have some connection to the Bitcoin network to know when it's received money, for instance. Or to broadcast transactions. So people use third-party APIs, like Blockchain dot info, Blockchair dot io, Coinbase, BitPay, BlockCypher, and BitGo. These are, these are basically software as a service companies, and you connect your app to these things via, an application programming interface, and you basically use it to generate Bitcoin addresses, to send, to receive notifications of payment, and to- To control, some online wallets to, for example, process withdrawals to users. So these, these third-party software as a service companies are Bitcoin nodes as a service, their, their, their, their peer network peers as a service, and when you're developing like a web application, this is really useful and it's really easy, if you're, if you're a software developer and, you, have a man- date to, do like a checkout for Bitcoin or something or, integrate the blockchain, timestamping, whatever, whatever it is that you wanna use Bitcoin for, you're gonna look for these, these APIs because that's, that's what's easy. And the, the difficulty of using Bitcoin Core directly is very big. usually if you're building a Bitcoin app, you'll have to use multiple Software libraries and other apps, like, you know, you have Bitcoin, you have Lightning, for example, people are lo- using Lightning Charge, then you have like BTC Pay Server, and people are using, Bitcoin JavaScript to, to create like, invoices, and, and some stuff on the, on the, in the browsers. Then they use, hardware wallet. You're using a, a, a lot of different components, and it's, it's just much easier for people that don't really know the ethos of Bitcoin to- To do that. so Cyphernode is a, is an alternative to that, to these, to these third-party APIs. And what i-it is, is basically we open-sourced Their business model, their, their backends. So when you are a, a third party, when you're an app and you wanna integrate Bitcoin, you don't know-- you don't control what's in the back end of the API. You just, like, your app is just Asking them to do stuff, but you don't know what's going on in the backend. so what we did is, is we know how-- we knew how these things work. We integrated, in Satoshi Portal, af- after all those years, I mean, probably like ten of these, we have, we have a pretty good experience of, of what this is, and we built APIs ourselves, so we said, let's just open source it and, and do it. So, so it's-- that's what it is essentially. It you're running on your own machine that you deploy yourself, and that, y-your app or whatever, can outsource all sorts of complex Bitcoin functions. So, y-yeah, and, and it's in, Stephan, you have any questions on, on me before Itzen kind of moves on to the, to like what it is technically?
actually, one other thing might be good to ask was just around, do you see, so you mentioned how- It's common to use APIs with sites like Blockchain Dot Info. Do you see any security risks or centralization risks around this? Common process?
Yes, absolutely. So, that's the motivation behind, us doing that and us, you know, taking a lot of our time and, and a lot of, you know, financial and human resources is that we really believe that there is a, a, a big problem in Bitcoin. It's just kind of like an elephant in the room, and that is, I, I believe is, is a huge risk, attack vector. It's, it's probably the biggest, in my opinion. And to Bitcoin. And it is, so when I was in Riga, I, I did a speech and I, I had this, this, this, this schema, this chart, this illustration, which shows that What makes Bitcoin, the features of Bitcoin that are desirable and scarce are the result of this decentralization, because all the nodes are verifying the integrity of the blockchain of the rules themselves. So the kind of, you know, integrity of, of Bitcoin is, is at the edges, is at the peer level, and that what, that's what makes Bitcoin immutable, for instance. You know, immutability in Bitcoin isn't a, isn't a- A feature in the code that's, that's, it's not software, it's because everybody's validating himself the rules in the chain. and same thing for the immutability of the rules. And, you know For instance, why is there a twenty-one million Bitcoin limit? It's because nodes are enforcing this rule, and that's, that's, that's what makes Bitcoin scarce. That's, that's the features of Bitcoin. They're not in the code, it's the nodes enforcing the rules which make the network and the more nodes and the more decentralized, and, you know, it became apparent most of all when it came to SegWit activation and protocol changes. So that, that was the genesis of us launching Cyphernode. I don't wanna talk too long 'cause I've, I've been talking for a while, but I can tell you a little bit, about, how it launched, like how it, how we got the idea through UASF. and that's when we realized that it's at that point that we realized that all the other startups were using third-party APIs, is because when we wanted to, to do UASF, we, we actually committed to it, like we, we, we were gonna do it, we were gonna go on that chain, and we realized that none of the third-party APIs, were, were offering UASF nodes, so we had to, to build our replacements ourselves, and when we did our advocacy, and when we started to do a lot of research And, and, you know, I took basically like five months off, like just for UASF and SegWit during that time, like I was just flying to conferences, trying to, you know, trying to get SegWit happen, and we really realized like it was about, in my opinion, ten or twelve companies that were, you know, validating ninety percent, I think probably, of all transactions. Either they were, explorers like Blockchain.info or wallets Or toolkits, or exchanges, or white label solutions. so I don't, I don't think they fully realize this themselves, but in terms of enforcing the rules and activating new rules, for example, like these twelve, ten or twelve companies, like Coinbase, BitPay, et cetera, they do have a lot more power than they should because The theory of, of the game, the game theory of Bitcoin and the shelling points relies on the idea that everybody's enforcing the rules and you can change and switch, and, if the, if the users want it more than others, they can, you know, the equilibrium would go in the market, right? So if, if there's different rule sets, ultimately the one that will have demand will dominate, and the other ones will, will follow there. But it relies on the idea that, that people are moving from one change to another freely, while- In reality, since they're all relying on these third parties, it's, it's the third parties themselves, like those APIs, those, those services, those Bitcoin nodes as a service businesses that are deciding, and it's not easy to switch the co- like to rebuild your app Around the new, your own Bitcoin core node is, is really difficult. so, so it's skewing, I think, the, the consensus equilibrium that, that these companies have, so much power. and The only thing we can do is to reduce the cost of running the node and to increase the convenience of running your own node software, so that there's really no excuse. And it's kind of the same philosophy also as, BTC Pay, which is to just kind of copy, like, the API model, like how do, how do, how do people integrate BitPay right now, from, or, and the merchants. in our case, it's more, we don't do a business logic, we, we just do the- The, the kind of Bitcoin and crypto functions, but still, we, we look at how the, the startups use these APIs and we replicate it. And, yeah, so that's the idea. So the, the, the, the, our mission is to Make it easier for people to run nodes, because we know that, even, you know, some people told me, Bitcoin, you know, really smart Bitcoin, you know, leaders, prominent people, that there's no such thing as externalities in Bitcoin, and that, o- other people's behavior is, is meaningless because it's antifragile and, and, for example, if, if people aren't running their own nodes, it's their own problem. we have, you know, we can And we'll be fine. Well, that may be true philosophically, like in the long term, like in a, in a, in a view of like a century or something like that, but, if, for example, there's, another fork, for example, or, or if, these companies decide that we don't want this new privacy feature, to get into Bitcoin, then we're gonna have a lot of disruption. It's, it's not a good thing. So this, this possibility must not even exist. And the, the, the Is that I saw in person that it's really hard for consensus to emerge organically, which is good, right? It's hard for the, the whole Bitcoin ecosystem migrates to a new set of rules. I think that would happen, for example, if there was a technical issue with Bitcoin, like an up, an update or, a crypto function being broken or something, or, for example, SegWit or, if it ever becomes necessary to change the format of the blocks one day. but it's, it should be really hard, to do, and that's really good. But what's not hard to do, because, a-and the reason why it's hard is because Bitcoin's anonymous, and although we coordinate on Twitter and everything, It's kind of hard for, for the whole network of nodes to just spontaneously agree on a new set of rules, whereas it isn't hard for fifteen to twenty companies to meet in a hotel room And to sign an agreement, that's not hard at all. That, that, that's been done in the past. I've been at those, at those meetings, and, you know, I, I didn't like what I saw, which was, you know, people kind of-
s-s, you know, not explicitly saying they're deciding for the Bitcoin network, but acting just as if, and making decisions. So, yeah, so, so that's, that's, that's what we're trying to avoid, and that's the, the whole idea of investing in this thing is to ultimately, you know, increase the value of our bitcoins, for one, because, you know, just as when SegWit was activated, the price of Bitcoin went from two grand Ten to twenty grand, you know, right after, you know, we understand that the value of, of our investment, of our holdings in Bitcoin, which is, you know, w-which is why we do this thing, is because we own and we huddle Bitcoin, we're Bitcoin maximalists, right? So, by making Bitcoin more decentralized, we're kind of hoping also to, to increase and maintain the value proposition of Bitcoin
Yeah, fantastic. Yeah, I think the way I would summarize most of that discussion, and obviously agreed on, you know, your points, Francis, I think one way to summarize it is actually what one of our friends, Pierre Rochard, would probably say, that SegWit 2x kind of movement or proposal was not respecting the decentralized governance process that Bitcoin, you know, uses, where people run their own node and then you have to sort of run your node and hope that- But everyone else shows up at the same shelling point that you do. And, and then in terms of summarizing, you know, what I think the Cyphernode helps people do is it helps people be on the chain that they want to be on, because if they didn't have the ability to run their own node with their own rule set of transaction validation rules, then there is a risk then that they would be forced, quote-unquote, forced onto a chain that they don't actually want to be on. so let's now- Talk through a couple example functions that you can do on the Cyphernode. So maybe Etienne, you can talk through a few examples. I, I was looking through the GitHub, there's watch addresses, get TX details, yeah, do you wanna go on?
Yeah, sure. Well, you know, at first we wanted to, to, to use, as a client, as, being built and Bitcoin Outlet, we, we wanted, to, to use, our pr-own product before even, you know, publici-pub-pub-publicize it. So, what we, developed first was, functions that we needed. So, in the perspective of- You know, a user that is, going to, to pay, his bill, with Bitcoin, the thing is, what we need as, a, as an application like Bills, is, you know, generate, a Bitcoin address so that the user can pay on that Bitcoin address. And, a-and we want to, to be, you know, notified when, when the, the payment, comes in. So, one of the thing we, we first implemented was the, the watch address, function. So, we want to watch an address and, we, we tell Cyphernode, "Hey, call me back when, there's a payment on that address with, some information about, about the transaction." So, we have a system of callbacks. in Cypher Note that, when a payment comes, on a watch address, Cypher Note says, "Okay, there's a payment there. what's that payment about?" "Okay, I'm going to call back, the client. in that case, it's, bills. And, bills can, you know, show on the screen display, about, the, the payment that, that's been received. So, The, that callback is, important for the, the, the zero conf and the one, one confirmation, transaction. So when the, the transaction is confirmed on the block, then, we can go ahead w-with, our process. Okay.
Sure. And then, how about, interaction with the Lightning Network? Is that also possible?
Yeah. And it's funny because at first, at the beginning, like last year when we talked about the project, we-- Well, the project wasn't a Cyphernode, it was, we just wanted to implement Lightning Network in, in builds and a Bitcoin outlet. So I, I presented to Francis, my idea of, of a product that would take care of- Of, Lightning Network, and actually, that, w-with time, with months, became Cyphernode. So, and- Well, we, we decided to, to postpone Lightning Network functionalities, a little bit later, but, right now it's, implemented. There's, some functions, basic functions for Lightning Network, like, create an invoice and, pay, and, we want to, to-- There's a lot to do, but, we want to make sure that when the-- There's a payment, a Lightning payment comes Coming, we want to be notified also.
maybe it would be a, a good idea to kind of, also explain like what it actually is, like the, the Docker architecture of Cyphernode. It's, it's a little bit technical, but I think it's kind of useful to understand like how we-- and this is also, the, the technology we're using, Docker, and maybe Etienne can also talk about, maybe later some of the more technical components. But, so w- when- When you're launching Cyphernode, like what you're actually doing is you're launching a network of virtual machines, and each virtual machine is running a software set, right? So imagine that, you're-- and each virtual machine is, is talking to each other and, sending, data and, commands to each other, through an encrypted, network, right? That you-- that, that you're launching, that you're spawning, for example. And then, one of the components is Bitcoin Core, is your Bitcoin Core node. One of the components, might be your Lightning node. one of the components might be the OpenTimestamp. Like, software. another one might be, we have, PiCoin, JavaScript libraries, and all those things. And the kind of core of the, of what CipherNode is, is we call it, e-the proxy. And that's a, a request handler and a request dispatcher, which, has a library of like preset functions and some, and some, database to keep, to keep stuff, right? To, to, to know stuff. and, What basically we do is we, allow people to send commands to the proxy, say for example, you know, create me an invoice or, or something, and then within the proxy that says, okay, so I need to go talk to this software and that software and this software, and there's a like, a scheduling batching server that I can use, I can talk to this one, if I want to sign the invoice with a PGP Piqui, for example, in, in bills, like the typical flow would be we have a, a hardware wallet, in which we use, we receive the, the coins, the coins are received directly in a hardware wallet. So we take the master public key of that and we, we give it to Cyphernode and we, we, you know, we choose the SegWit derivation path, we can choose, you know, BEC32 or whatever we want, and we tell it, alright, give me an address, you know Bitcoin, for example, right? That's a PiCoin, job. And then, alright, so then, we want to watch it. alright, so send it to the callback server. Alright, so we want to sign it with a PGP key. Alright, so send the data to, you know, the PGP virtual machine and sign it there and send it back. so that's, that's what it is. It's, it, it receives like commands, and we can program it, you know, we-- The idea is to get contributors but any, any kind of command, and then it's gonna outsource that job to your own, you know, your own private cloud of, of Bitcoin software that are just, you know, talking to each other. And if you wanna add something, well, you know, the way that Etienne coded it, as an architect, a lot of the thought, it was a really long thought process for a really simple architecture, but essentially you just add your, your, your, your, your Docker software, you just add whatever program you want. In there. And then, you, you add the, an, an endpoint. You, you add a function. Say, "Alright, so, either you, you just delegate a task to your software. For example, if we add, we, we added open timestamp, and you can timestamp, verify timestamp, for example, and get information on a timestamp. Just, you know, put that in a container, a Docker container, plug it in the network, and through the API, we just add three endpoints. You know, stamp this hash Verify this open timestamp certificate and, get info on, on a timestamp. And that's it. So anybody can, can add that. So when we, like, you know, when Etienne creates the, the watch address function or, or batch function or derive function, that's essentially what we're doing, is we're creating these, these new, d-different sets of actions that are calling, the software components.
Yeah, I, I really wanted it to be, you know, Very easy for con- contributors to add modules, add functionalities, and, that kind of architecture makes it quite easy to, to add the stuff because there's like, it's only like pl-pluggable modules that you add and you, change or edit or add functionalities to that, that proxy that dispatches the requests. So, we had in mind that, you know, we, we wanted to open source something and have- Have contributors to the, to the project, so that makes it easier.
Fantastic. Okay. Let's talk about the process then of setting one up. So I think Francis, you touched on that a little bit with the Docker container image. Maybe if you guys could tell us a little bit about how, how would you set one up and what kind of hardware requirements are there?
Yeah, the, the setting, the setup of a Cyphernode is pretty manual for now. You know, I documented all the steps, to, to, to, to make it, work, completely, but it's, It's a heavy process, I guess, a heavy procedure. But, there's, some, there's someone con-contributing, right now to Cyphernode. his name is, SKP. shout out to him. It's, he's, he's working, hard and, doing a great job on the installation process. He's, trying to make it, easy and, automatic to, to install Cyphernode, anywhere you want. So that will help a It's one of the friction right now for Cyphernode, the installation process.
And, and just to add on that, so SKP, like huge shout out to this contributor who's been like rocking so many contributions and, and lines of code for us. So basically, what, what he's doing, like the, the ultimate vision, and we're not far from there. I mean, we're, we're working on that, like Etienne's working on that full time, right? So, I mean, we're, we're, we're getting there. I mean, Matter of weeks, I think, before we have, the final, vision of the, the launch complete. But, the idea for me is that I'm not a programmer, although, although listeners might, you know, think I'm, I am technical, but I am not a programmer. I can't talk to the machine, and I've, I've always been really frustrated, when I'm, you know, doing research on open source projects, you know, for example, like Join Market or Electrum. I want to run my Electrum personal server, but I can't use the command line to save my life, you know? I, I can't, I try to, to, to do these things and I can't. And I know there's a lot of people like me out there. So the idea is that we're gonna have this web app, which is, which has been built by a, a company called Lunanode, which is a cloud, service provider from Canada, and, we hooked them up with a BTC Pay server, and they built that for a And, and we're gonna reuse it for ourselves, which is like a web app where all you need to do to run this like enterprise-grade stuff is you go on a, a cloud hosting provider. and, and what's funny is, you know, with the promotion that we have, like the referral, you get twenty bucks for free. and then you just take an API key that's in there, you just go in your dashboard and you just generate an API key, you copy-paste it, you go back to our web app And you just paste your API key, and then you start the process of launching the Cyphernode. And what we do in the backend is after we're done with our like automated install, we can just launch it for you on your own machine. and, you know, our, our vision for, for Cyphernode, the security model is hardware wallets. That's, that's how we're, we're basing, our security approach is, you know, keep in line with the modular vision of Bitcoin, which is that You know, there's diff- you, you have to control your keys, you have to, validate the blocks yourself and the transactions yourself and broadcast them yourself, but you don't have to do them on the same machine at all. So we use- Hardware wallets, we're-- we are going to use ho-- we don't have it now, for the security. One of the neat things you can do, for example, with Trezor, is when, when you're launching your Cipher Node through a, a web app, you can actually like hardcode, the Trezor into Cipher Node. So that, you can only, give commands to cipher nodes through your trezor, right? That, that's something that, that's possible to do, which prevents, us, for example, or lunanode basically from, from tampering with your, with your stuff. so all of that done through, like, a, like a, a web UI, right? and then when you, you know, we already have that in command line, when you're launching it, the, the configurations that you want Because, you know, programmers and product designers tend to forget that, you know, some users, they do want to manually edit the configs. And sure, I'll, I'll add an Electrum server to my, Cyphernode, or, oh yeah, sure, I'll, I'll, I'll add this timestamping functionality and, I wanted to do this and that, I want, the, the password to be this, I want, the batching schedule to be this. Like, this is the stuff that p-- a lot of people can't do Have that all, you know, in a graphical user interface, as we say. So that's, that's the kind of, a-and then the ultimate end goal is that, you know, you click a button And then it launches your Cypher node.
Yeah, like that.
Yeah, I, I was going to say to answer your question about, hardware requirement. we, I'm-- I always have in mind that I want to, to be able to run it on a Raspberry Pi. So I know it's like a little bit cliché, but, well, it makes sense. And, so, it's, really tiny, it's really, lightweight.
Right now, I'm running a full Cypher node, including, the Bitcoin node, on a server that has like two gigs of RAM and, twenty gigs of disk, and, you know, it costs like five bucks per month to be able to run the whole Cypher node.
Excellent. So it's very cheap to run. I presume that's then in, pruned mode, but obviously still fully validating. okay, so let's talk a little- A little bit about the security on this then. So I like, I like the point you were mentioning before, Francis, around using a hardware wallet, and it's, it's sort of reminiscent of offline signing with Armory.
Yeah, that's, that, that's, definitely part of the, of the, of the security. Well, the security approach is multiple angles. Like security isn't a binary thing. so there is, it's in, I'll, I'll let you talk about that for sure. Like there is the, Network swarm security aspect of it, which is very crucial and that we realized, and then maybe to take a step back, my approach to security and Etienne's approach to security is that if you're a junior web developer, or you're anyone who's an integrator, in software development, like, you know, you can build an app these days with just like you launch like some JavaScript framework, you plug a few- Few APIs, and then in like, you know, two days, you know, you have an app, right, that you can prototype or something. And, to take a step back even further Through, through the whole years of me advising startups and participating in hackathons, like I do all these things, I, I, you know, meetups and stuff and workshops, I realized that the, the junior devs, when they choose a tech, like an API or something They usually stick with it for a long time. Like, people don't tend to, to change their practices, if it ain't broke, don't fix it type of mentality, and they just kind of move on. So security for me is that a junior dev should be able to not, like, worry about the security and not be, and you should also be able to hire a, a foreign consultant, for example, remotely, and, and not have to trust him, right? So the- The security model is, a lot of it is based on the authentication between whoever's controlling the, the network and the network, and part of that is, Offline signing. So one of the really good things that just recently came out in Bitcoin Core is, partially signed Bitcoin transactions, Bip one seventy four. And what that finally allows us to do is to, ask the Bitcoin Core software, which is connected to the, the network and has the blockchain, and he has, what we call the unspent transaction output set. so that's a key component Of, you know, running your own full node is that when you're creating a transaction in Bitcoin, you, you know, you, you know that certain inputs have this amount of money and, and that they exist, because you have the blockchain, beca-because, because you have them. and then Bitcoin Core can like, you know, create this, this neat new file format, and send it, you know, securely somewhere else, that has software that can be- in our case, that's gonna be the cold card device, by, you know, Raul Fonovec and, and Peter Gray, from CoinKite. So that's a huge part of the, a huge part of the security is that, or, you know, or Trezor, for example, or, or a Trezor hardware, or a Ledger hardware, and again, we'll only need to add a, a Docker piece, and that's what we have. so that, that, that's a huge component.
and, you Also the security of the, of the network?
Yeah, sure. You know, of course, there's still, we, we still have the, the hot wallet. So,
we, we take, we put a lot of importance on, on the, the cold wallet stuff. But, For the convenience, we need a hot wallet. So, the thing is, well, you know, it's, it's more easy for a, a thief, a, a thief to, to get in the house if there's twenty doors. If there's only one door, it's maybe it's easier to, to secure it. So that's how we, we, We did it. Cyphernode, doesn't publish any part anywhere, outside of Docker, inside, outside of the swarm, which is, an encrypted overlay sw- swarm, network. So, the only, part that ex- that is published, or exposed is the API port, the HTTPS, TLS port. So, and- It should be actually, it shouldn't be, exposed to the, the public internet because how we see Cyphernode, it should be used, i-it should be used as a personal, you know, piece of software. So, it should be inside your LAN, and then, even if it's in, inside your LAN, it should be encrypted because there's people on your LAN. even if you are inside, of a company, there's employees that could sniff the packets or anything. So, and we actually also want to have, an API key, that will secure all the accesses of, of Cyphernode. So everything is secure and You know, at first, we wanted to distribute Cyphernode everywhere, like, when you're using, Docker Swarm, you, you can, you know, spawn the swarm, the swarm between a lot of servers around the world. So it can-- it is possible to do it, because the, the, the, the overlay network is, is encrypted, but, by default The installation is going to be on the same machine for convenience, for cost reduction, and also it's, easier to, to secure.
Etienne, maybe you wanna tell us a little bit about in the process of creating the Cyphernode software, what other projects were you able to leverage code from?
Yeah, one of the, one of the concept I wanted to, to, you know, to, to apply is, I, I, I want to make the less possible code myself. I want to, to use, you know, piece of code that is working and that has, you know,
experience In, in the world. So, yeah. So, why code when it exists? Why, Code an HTTP client inside a program instead of using like curl in, in Unix or Linux. or, you know, there's a, there's a cron tab that That works perfectly for all the schedule stuff. I'm not going to implement a new scheduler myself if it exists and, you know, it's been working for the last thirty years, so I guess it's a great, piece of, of software. So I'm going to use it. I'm going to use, built-in, functionality into the, i-in-the Linux shells. Like, I don't, I don't know. You know, there's the cut, TR, curl isn't, it's not built in, but it's, you know, piece of software, software that comes with, the OS and are well, documented and, have, you know, communities that take care of everything. So I wanted to use all those, tools into, i-in Cyphernode.
The other thing I thought that listeners would like to hear is just a discussion around what's coming down the pipeline in the future with Cyphernode in terms of new features. So for example, things like address identification validation, Paymem integration, Electrum personal server. Do you guys wanna just outline some thoughts there?
Yeah, yeah, sure. So like Cyphernode is really at the beginning, it's definitely, so what we're gonna do first is release what we call the zero point one version. So right now, Cyphernode, like, what's public right now is, is what we're using, like, it's working, like, it's been working for, I don't know, it's in like, Three months, maybe we wouldn't- Yeah, maybe more. Maybe more four months. Three and six months, yeah. Yeah, yeah, right, for sure. And then, yeah, yeah, it was working a while back, yeah, that's true. but like the current version now, it's, it's perfectly fine. However, what we were missing is like that automated installation and, public API, authentication system, which it's in, has recently merged in, and the installation is gonna merge in. So we're gonna like which is gonna be packaged on, Docker Hub. that means that it's like easy to install, and it's like officially signed. but the major feature, that's coming, is the user interface. So The, the, the vision is that Cyphernode is also a wallet, because it's a way to remote control Bitcoin Core and other stuff. But like, let's just using Bitcoin Core as an example, if you can't control, like, Bitcoin Core and send commands, you can say, "Send Bitcoins here or there." And my vision is that the Bitcoin wallets, as they exist now, Should not, like, I don't like the way that, that it's, that has been implemented, because the way that I see it, like, you generate your keys on secure hardware, like your Trezor or your, your Coldcard or whatever, that's one part of the wallet, and the other part of the wallet is, you know, broadcasting and looking at the blockchain. so we're gonna, like, build a UI, which is kind of like a web wallet, an explorer, and like an, all the functions that we Open timestamps component, and it's also gonna be the, the administrator dashboard for the API. And like, you know, we're gonna, we have a lot of like specs in mind that are cool, like, you know, mem, mempool stats and graphs. we found the SKP built a super neat, like lightning network viewer where you can like click on like nodes and stuff, connected to your own node, like so you get the data and stuff from your own node. And also, like, just a wallet Interface, right? Because you can click send or receive, and you can view your, your transactions by, by con-contacting remotely your, your Cyphernode with your UI. So this stuff, basically, what it's gonna be, it's gonna be packaged in. So when you launch Cyphernode, it launches this web app on the same server or, well, in the same Docker swarm. and then, the vision that I have, is like, like BTC Pay, for example, you can put your own domain name for it if you want, or you In your browser, and, you plug in your, your Trezor, and you, you connect to, to your dashboard, and, you know, you log in with your, with your Trezor authentication. There's like a little, little program that, you know, you, you just look at your Trezor, and it says like, "Do you wanna log into Cyphernode?" Then you just, like, press the button. It's really neat. and then, and then you're there, and then you can, you know, It's, it's a, it's your self-hosted, web wallet. So that's, that's a key component that's gonna make it useful for, for you and I, right? For, for everyday people. You, you have your Trezor, instead of going on trezor.io or instead of going on, you know, your, your, your- Your Samurai wallet or something, or you just go on your, your own self-hosted app.
Yeah. And I like the idea there that you can, you know, some of these apps are setting up, like, for example, Samurai wallet has a feature called trusted node, and I think other applications have a similar one where, you know, perhaps you can get to a future where you use your Cyphernode as your trusted node.
Ab- absolutely. So m-my idea is also to look at these open source wallets, and Samurai is a great example. Like, I think, Etienne and I like to think that, we're- There is some kind of like a cypherpunk, I think, renaissance, if you wanna call it that, in Bitcoin, and it's really cool. Like there's projects out there, the ones that we like a lot are Samurai, BTC Pay, Nicolas Dorey is, a true legend, a hero of Bitcoin for sure. there's, I like Wasabi Wallet also, and all sorts of projects. and- I, you know, there's a, a no wallet, for example, a, a, a secure brain wallet, app, and then we can plug these all to a Cyphernode backend, because a lot of these have, a hard time to do all the functions of Bitcoin. one of the ones that's usually not seen is to fetch the unspent transaction output set. for the wallet to be able to create transactions, and usually, they will like have a centralized API, like just for, for that part. and when you're, when you're like, broadcasting, you can check the blockchain, using your trusted node But to, to craft transactions, usually there's, also another API involved. so yeah, we wanna replace all that for sure and connect to, and connect to these, these existing projects.
Fantastic, and I think I really like this, project. It sounds like it's very, again, as we were saying, it's very in line with the Bitcoin ethos. But one area that I, you know, I do ask a question, or a question comes to mind, is, look, so because the code is open source, because you're not kind of clipping the ticket on things, how do you make it sustainable from a revenue point of view, or is it just seen more like, you know, Bitcoin companies should just try to support this sort of, you know, development on the
That, that's, that's a good question. well, you know, first things first is like, we do need to, to develop Bitcoin software as part of our apps, whether, and it's not really just at this, at the level where we're at, in bills, for example, we are processing a lot of like Bitcoin payments. this is an expense that people should do regardless. So a lot of the work that Etienne is doing, you know Certainly would have taken a lot less time if we didn't plan on open sourcing it, but we-- a lot of the work we would have had to do ourselves, because, in the, in, in the kind of business vision, it's not like optional to control your own Bitcoin node and your own Bitcoin keys. Like, that's, that's the, that's the fundamental first principle of Bitcoin, and if you forget that, and like, you can't, that, you can't just like- Do something and then forget it for years, like that's something you need to maintain. and then, I mean, the project is pretty much out of pocket, so there's no immediate plans to monetize it. and the decision to do that was just that, w- We're, we're very busy at Bills and Bitcoin Outlet to do our, our, like our, our startup, you know, our, our, our, payments and exchange. We, you know, we have a, an, you know, it's basically an automated, arbitrage operation that we run in Canada. so we don't really have time to like monetize Cyphernode, so we're just like, okay, let's, let's, let's just open source
it and, and, it's, like a, you And so, so have I, and we were like, "Alright, let's, let's do something, that, that people are gonna really like, and that's gonna last a long time."
Excellent. Okay. So, listeners, you can find the site at satoshiportal dot com, and you can follow the guys on Twitter. So, Etienne is kekxkey, K E X K E Y, and Francis is, you know, is his name, francis pouliot underscore. so, guys, maybe just as a closing comment, Maybe just tell the listeners, you know, where should they go if they wanna learn more and maybe if there's any tips for a user of Cyphernode.
Well, I guess the first, place to go is, would be the GitHub, repo of Cyphernode, where we, we have a lot of documentations and, what we, we, what's our vision and what we, the next features that we want, how to contribute, we know we aren't the best, for everything, so we need all the best people everywhere in the world, so just join the party and, you know, contribute to, to it, so there's also the, well, Francis is going to, to commit soon, the, the manifesto. that is, pretty, pretty interesting also, huh?
Right, yeah. and, and, so, yeah, Cyphernode, we have the, the like cyphernode.io, and there's a, I'm not sure if I put the Slack group, up there yet, but, we, we also started a, a Slack channel. and, yeah, that's go on there and, if you want some features in, if you want, if you want to chat, in terms of sustainability of the project, you know, w- Etienne and I, w-w, eventually when we're, when we have a, a little bit more time in the, in the few, coming weeks, w-w-weeks or months, we plan on trying to do, workshops. I'm, I'm a big fan of the approach of, Bi-Bitcoin UpTech, which is by, John Euberry from, Chaincode, which is the idea is to kind of have a, a consulting service, if you like, which helps Bitcoin companies, or, or rather, which helps like institutions or, or large, Bitcoin stakeholders, to run their own nodes using Cyphernode, and to kind of, audit and check their, their Bitcoin setup, and to suggest to them ways to, for example, have more scalable, practices like open timestamp, for example, a lot of companies, they just use, OP_RETURN, that means that they are- you know, ineffectively using the blockchain, in essence, not to take too much time to explain. so, there's also possibility if, if, if businesses or people in the industry that are listening, like the project and want to, to contribute, I think we're gonna kind of start to do a, an internship program, maybe, maybe looking for some funding to hire, a full-time contributor, or that kind of stuff. So, you know, my, my, we have a contact at satoshiportal dot com, email for, for anybody that, maybe wants to integrate it in their app and would like, you know, I think, we'd, we'd love to help people to, to install it and test it and, get their feedback. Like, we, we develop this stuff, with iterative feedback loop, so we need users, you know? And, if it's still too hard to install, we, we can help.
Oh, and actually, last question, when is it launching, just to remind the audience?
well, it's already, it's already launched. it's just maybe a little bit, difficult to, to grasp. So the, the kind of, out-of-the-box, version, which is much easier to run, Etienne, when do you think we're gonna launch it?
Well, I hope, by the end of the month, of the month, so, we have a lot of testing to do and, you know, make it, make some, make something complex be easy is, is a challenge. So. Yeah, so that's, so
maybe like a week or two or something like that.
Okay, excellent. I'll, we'll just say kind of late October, early November. Alright. Well, I think that's pretty much it for this episode. Episode, thank you very much Francis and Etienne for coming on the show. It's been a pleasure. Oh, thank you so much
Stefan.
I hope you found the discussion with Francis and Etienne interesting. That was definitely a more technical discussion, but I trust that you guys are smart cookies and you were able to follow along for most of it. Anyway, the ability to use a Cyphernode for conducting your own business without placing unnecessary reliance on external third-party services or APIs is very much in line with the Bitcoin ethos. At the very least, it provides another option. It's also cool how it's modular and could someday be paired up with other Bitcoin products and services, such as a Trezor for hardware wallet signing of transactions, or perhaps you might use a mobile Bitcoin wallet and point it towards your own Cypher node. I think of it as a cool piece of business infrastructure that will help Bitcoin businesses be more self-reliant and help individuals maintain their monetary sovereignty. If you have any feedback or suggestions for episodes, come find me on Twitter at stephan livera, my DMs are open. As usual, if you haven't already, please just take thirty seconds out to give my show an Apple iTunes review. Five star reviews really help me out. Thanks, guys. See you next time.