transcript.md
July 5, 2023 ยท View on GitHub
Okay. So welcome to our Blockchain Commons Gordian Developer Meeting. We meet every month,
at least once, the first Wednesday in order to discuss the priorities for our community.
For those of you who are not familiar with Blockchain Commons, we're a community interested
and self-sovereign control of digital assets.
Together, we bring stakeholders to collaboratively develop
interoperable infrastructure.
We design decentralized solutions where everyone wins.
And we are a neutral not-for-profit
to enable people to control their digital destiny.
So I'm Christopher Allen.
I'm the principal architect and executive director.
These meetings are focused on expanding and using
the Gordian specs to create a secure, compassionate
infrastructure that is open and interoperable for all.
Our big goals for 2023 are our DC-BOR libraries,
Gordian envelope, collaborative seed recovery,
and setting a foundation for something we call
collaborative key management
with much more sophisticated cryptographic functionality.
At our last meeting in beginning of June,
we talked about updates to Shamir,
some discussions about the ledger,
Shamir and verifiable secret sharing proposals
that they had.
We talked about moving from SSKR
to the collaborative seed recovery.
We had a brief demo discussion about seed hammers product.
We offered Gordian use cases for education and wellness,
in particular providing privacy for those.
and we announced the Gordian libraries for Rust.
Today, we wanna talk again about UR's in general
and in particular animated QR.
So that is only part of it.
We have ThunderBiscuit who is gonna be offering
some experience with implementing UR
and some discussion there.
Craig, in particular, you started using LiveHash.
We're trying to encourage more people to use that.
I'd love to hear his story there.
And in general, what are kind of the next steps for his work?
We are gonna be meeting at IETF
if you're in San Francisco for the IETF 117 meeting.
I wanted to talk a little bit about self sovereignty.
Wolf has a first sort of demo
of collaborative seed recovery with Gordian Seed Tool.
And then just in general, how are we gonna standardize that?
What's our roadmap and priorities?
We really need to hear from you.
We're not a wallet company.
We're here to support your wallets and tools.
So returning to URs and animated QRs,
we're working on, obviously,
a lot of exciting stuff like envelopes,
which use URs, but the existing URs continue
to be the foundation for our success.
So we have released a new developer document here,
uniform resources and introduction,
where we talk a bit more in detail about what you are,
and then leads you to other places.
We also have another docs specifically on PSBTs
and some examples of them,
hopefully we'll get some more wallets
to support that functionality.
And then we want to talk about animated QRs.
We did this little video,
what a month and a half ago or so on animated QRs.
And the basic idea here is
how does it actually work for a regular user?
Why is it important?
Why should they ask wallets to care?
So we basically have in here a video of a passport.
I think we also have some stuff from Sparrow,
but I'd really like to see this become something
that the community can use and share and point people
to say, "Hey, we support this interoperable functionality."
So my specific request there is that
that you either leverage the video we already have,
we can give you the images or whatever to use
for whatever your purposes are,
or send us a little video or clip of your tool,
either generating or receiving animated QRs
so that we can incorporate that
and spread the word about that functionality.
Does anybody have any questions on this?
Okay. Thunder Biscuit, it's your turn.
All right.
You're welcome to share your screen if you like, or I can, you can just walk through it.
- Yeah, no, I mean, if I, maybe if I have a few things
I'll share my screen, but I mean, it's not that I had much
to say, I just thought I'd share insights.
I showed up at the meeting last time and my feeling was
that you were overwhelmingly sort of looking for feedback
and interested in hearing, you know, experiences
of the developers looking into your stuff.
So I thought I can tell them a little bit about it
from my perspective.
First of all, I just want to say I'm a big fan of blockchain commons.
I a while back sort of like learned about it because I went through learning Bitcoin
from the command line, which had been recommended to me.
So this was a fantastic resource.
I'm the guy who opened the issue 555 on maybe porting all those markdown files into a sort
of web book format or something.
Still a cool.
I'm still going to go in.
And I maintain the language bindings
for the Bitcoin development kit.
So we produce bindings for Kotlin Android,
Kotlin JVM, Swift, and Python.
And I think Spotbit uses our language bindings,
Bdk Python.
So that's how also I sort of like was looking
at who was depending on our libraries.
And I found Spotbit and I was like,
oh man, this is about to come.
And so I hope you're having a good time
with the library.
Yeah, so that's also a big fan of Sparrow, so Craig.
-
Great. - Shut up.
-
So a couple of questions.
-
Yeah, sure, go ahead.
I'm an Android dev, so just wanted to say that too.
So my expertise is I'm an Android engineer.
I came into the Bitcoin development kit
because I was a user,
and then just ended up getting more and more involved.
- So given limited resources last fall,
we made a decision, basically, you know,
among the financial sponsors of Blockchain Commons,
everybody was really needing iOS
for both Mac and iPhone and Android support the most.
Back end stuff, things of that nature, you know,
people had a lot more flexibility,
but those were the highest priorities.
We had a really tough time deciding
do we do a Kotlin native implementation?
There was some discussion about some tools
that's convert Swift to Kotlin,
but ultimately we decided to bite the bullet
and dive into Rust.
But obviously we have a lot of little details
in so far as making sure that we're friendly with Kotlin.
And we really would love your advice on the,
you know, all of our Gordian libraries
to bind them, allow binding to Kotlin,
in particular on Android.
So any advice you have there?
- Sure, I'm happy to talk about that at length for sure.
One of the cool things is that Kotlin and Java,
of course, are interoperable.
So I've been able to use some of Craig's libraries.
So for example, my first contact with UR
was with Hummingbird, which is developed by Craig.
So that's how I ended up playing with my jade.
I had a jade and I was exploring other things
that I wanted on mobile that are not offered
by the Bitcoin Development Kit.
And long story short, our bindings,
one of the decisions we've made over the past few months
is to limit the scope to only what is offered
by the Rust Bitcoin Development Kit.
Because the Bitcoin Development Kit
is fundamentally a Rust library,
and it's sort of like dependencies.
So that's Rust Mini Script and Rust Bitcoin.
So the API that's offered to you,
if you're a Rust developer
and you're using the Bitcoin Development Kit,
that's what we expose,
but we're getting requests for so much more than that
for bindings, 'cause everybody,
if you're offering bindings for mobile,
there's requirements for, you know,
of course all the coin-join implementations,
the Bit21, there's Bit47, there's message signing, there's all sorts of stuff people want.
So one of the things we decided was to narrow our scope and stick with the Bitcoin development kit,
but part of my role this year is to expand our range of templates, documentation, and example
libraries to produce bindings from Rust into. So like sort of following our journey a little bit
and our approach to the tools that we're using.
And for me, that included looking into what else I wanted on mobile.
And the Bitcoin DevKit is just one part of that.
So that's how I ended up into UR.
But we have a whole workflow we're using, uni-ffi-rs.
If you're not familiar with that, it's a library
written in Rust developed by the Mozilla team.
They use it because a lot of the Firefox features
that they want to offer like password manager,
they have like bookmarks,
they want to write that once in Rust, of course,
and then have it available on iOS and Kotlin and Android.
So that's how they ended up developing UniFIFIRUS,
but it's a system that has,
they're developing with sort of like plugins.
So you can basically write your own plugins
for different languages.
So they have plugins for Python, Kotlin, Swift,
but there's also different teams working on a C#
and a Go implementation.
So using UniFFIRS, you can produce bindings for a lot of languages.
That's what we do.
And frankly, starting from one of our templates,
you can get something going in a few days kind of thing.
I'm writing a whole example website that I can share later on.
Thank you.
Now you say here that you're doing animated QRs.
I do encourage you to do a PR.
This is the developer community main page to add Cashew Wallet
and which you are formats you support in here.
But also, are you doing just PSBTs animated
or are you beginning to play around with it in other ways?
- No. Well, for me, it ended up being just sort of exploratory.
I was wondering how I would do it. If I was to do it,
I wanted to learn more about it.
And I don't have a wallet that does it to right now.
I was looking at whether it was the type of thing
I should have in Rust and then expose in bindings,
or if I should have in Kotlin directly for Android
is my question.
And then you go down the rabbit hole,
and that's where I ended up.
But for this, what brought me back to it,
because I had looked at it a few months ago,
and what brought me back to it was a few weeks back,
guys at Cashew were saying, oh, you know, we need to, some of the tokens are too big for a single QR
code. Does anybody know anything about this? What should I do? And then they picked some sort of like
JS library that I don't know what it does really, but it's like, not super, super sort of like,
foolproof. And so I just commented on the repo and said, well, I think by now the absolute standard
to this, the way if you want to skate where the puck is going is the Blockchain Commons
U.R. specification. But when I was trying to write this out, it's issue number 31 on the
nuts for Cashew. You'll find that I actually had to write a whole thing and then realize like
my links were all over the place and there's documentation, there's specification.
Some of the feedback I got on the chat, people were like saying, "No, no, this is their research.
where's the spec? I was like, no, no, the research is like, you know, it's, it's in a repo called
research, but it's actually the spec. And so that's what sort of got me thinking, hey, I should,
I should write this down on these ideas down. Great. I don't have a wallet. But yeah,
I know our intent is that as things get deployed, that we, you know, move them to another repo that
that is more spec-like, you know, or--
-
Or even start proposing RFCs.
-
Yeah, and BIPs and things of that nature.
Some of it has been a resource problem,
but some of it also is that we're really trying to focus
on, on implement, you know,
places where two or more companies are interoperable.
So it gets out of research when there are two companies
or shipping something, but we also have to be careful.
I mean, we ran into this problem where we did a demo
in research of a animated PSBT and blue wallet
immediately jumped on it, called it 1.0
and we weren't quite ready.
So where the improved version is the UR crypto PSBT.
So we were only trying to figure out
how do we transition to say,
hey, this is beyond just a demo
or we're seeking feedback, which is why we released this,
but actually to a conformance standard.
So for instance, I feel like crypto PSBT
is really ready now to maybe be a BIP,
especially now that I think both,
as of like this week, both Sparrow and Seed Tool support
the multi-path descriptor
versions of public keys and a few other things.
So I think we've got a good, solid demo for that.
But I really wanna see animated QRs
in a variety of other places,
especially with things like foundation devices
and other parties that are gonna be coming out
with air gap wallets that are independent,
that we wanna be able to support not just Bitcoin.
I'd like to be able to have my signal key, for instance,
on a air gap device rather than having it bound
to my telephone number.
So those are the kinds of things we'd like to be able to do.
We'll talk a little bit more about that in a minute,
But Craig, I noticed when I was with a recent update,
there was a little tiny life hash,
which I was very appreciative of.
And I wanted to ask you a little bit about
what, you know, how was the experience of doing that?
Have people noticed?
Is it making a difference, making it easier for people?
And then just in general, what's next with Sparrow?
what's on your roadmap that other developers here
in the Gordian community might be interested in.
And then who else is gonna be implementing LifeHash?
So Craig?
- Sure, let me just make a few comments
before I get into the LifeHash stuff.
So first of all, Funderbiskit,
thank you for your kind words, much appreciated.
Secondly, I just wanted to make a comment
around the naming of the research repo,
the finalizing of things into BIPs.
I don't wanna name any names,
but I don't think that the UR spec
is quite as, is considered,
should I say, quite as universal as you might imagine.
And I think that if you feel it is ready
to take to a more formal level of specification,
And I would encourage you to do that sooner rather than later.
Because what I hate as an application developer
is multiple specs that compromise the UX.
That's, for me, the worst thing to have happen.
And if we have multiple animated QR specs,
then that will undoubtedly be the case,
because ultimately, you can only show one QR spec at a time.
So I would just encourage the Blockchain Commons team
to go ahead with that work if you are thinking about it
and to do it sooner rather than later
so that we have a more formal standard to rely on
rather than just pointing people at a repo called Research.
I just wanted to make that point.
- Sure, so let me ask you a question
directly related to that.
I mean, one of the issues here is that,
instance, the crypto PSBT portion of that is really the only part that is Bitcoin specific.
So do we submit just that part as a bit? You know, of course, they're going to say,
but wait a second, that's encoded in CR in URs. Oh, wait a second. That's a CBOR encoding. Oh,
well, no, it's too complex, which is part of what I don't know. I mean, and then, you know,
when we talk about the larger animated thing, should we just, we do have a repo, Shannon,
what is the name of the repo that has the, is it WIPs? There it is. This is where,
this is the repo that we intend to put them into, I think. So,
Yeah, yeah, yeah, I don't have a particular view on the right place to sort of do it. I'm sure that
you'll you'll be better placed than me to determine that, you know, it probably is true that a BIP is
not the right place. But, you know, if there was a more kind of, you know, it would be ideal that
if it was some kind of a shared sort of repository spec, you know, one one where there was a general
kind of industry view that this was something that everyone went to. I don't know whether such a
thing exists much. You know, we have slips, not great. We have VIPs. I don't have any great ideas
there, but at any rate, I just think it would be good to kind of make it a little bit more
formal in the next few months. That's just kind of my thought on that.
Obviously, we've been developing a stack of technologies and some of them are like
crypto, PSBT in particular, which is basically CBOR wrapped PSBT is very specific to Bitcoin.
But things that it depends on like CBOR, which is already an RFC, which we adopted,
and then DCBOR, deterministic CBOR, which is a profile CBOR that we are working with IETF,
C-BOR working group to standardize is another layer. And then there's UAR, which is a packaging
method for C-BOR-based binary data, which could really be any binary data, but it is based on
C-BOR headers and so on, and a minimum. And in that layer, that also includes the ability to create
anime QR codes. So some of these things are very broadly applicable to a lot of things and some of
them are very specific to Bitcoin. And so there's a question of how do we best publish these things
so on a per spec, per implementation basis so that the widest audience of people can rely on them.
Yeah, sure. And I think... Go ahead.
If I was to choose which one of those things I need, that needs specification the most,
I would say it is the sort of you are part and in particular, the particular method of
creating the fountain codes. There's a particular approach, which to my knowledge hasn't really
been very well documented. There is a specific way in which it must be implemented. And
And ultimately, the only way that you can reimplement it
is to read the source code and kind of take it from there.
So that's kind of what I was thinking more of in terms
of what needs a better spec.
Yeah, obviously, the running code is the baseline.
And there's certain things that we say we depend on,
like the Zoshiro 256 star sit-around number generator.
And those things are easy to find out there.
But yeah, there are certain things
where we're doing certain things
for like pseudo random distributions and so on,
where we've adopted well understood algorithms,
but we've implemented it ourselves.
And we've converted this to several different languages now
or third parties have too, including Rust.
And it's all right in the same across all platforms.
So in a sense, the code is the spec and the,
but I understand that a formal specification,
that's a whole other layer of effort
that we have yet to undertake.
- Yeah, well, I definitely would like to,
part of the thing is we also have
pretty strong architectural desire
to keep a lot of these individual pieces
unentangled because they can be used in many different ways.
So that's also contributes to the problem.
So for instance, you might argue
that the Fountain Code Library
might be useful for something else.
So do we segregate that out, make that a separate spec
just for the Fountain Code stuff,
completely separate from URs.
URs uses byte words and other stuff.
So it's, we've got a little bit of a tangled thing.
I think the architecture is good, but you're right.
the documentation in particular as spec,
we need to move forward on.
- The way this has been emerging is,
over the past several years,
Christopher and I have been having conversations
about the kind of duplicated effort in the blockchain
and wallet community and beyond that too,
distributed identifiers,
verfable credentials, things like that.
And what are the problems they all share
and how can we start building this stack
to address these problems one by one?
And so, you know, that's how this has been kind of emerging,
but we've been basically making it,
so it is very stratified.
It's just also very, there's a number of layers now
that are meant to be separable, as Christopher mentioned,
and try to figure out how we,
how we make those available to the West audience.
That's the hardest part right now.
- But anyhow, it is definitely on the roadmap.
It's a pretty high priority.
That's why we've kind of come back.
That's why I was kind of back here saying,
hey, we really need, we did,
we've got a newer UR intro for people.
We have a newer PSBT doc, both of those we welcome PRs to.
That's basically, I believe, nope, where is it?
Yeah, here is the new intro updated a bit.
And then this is a brand new document
that Shannon worked on.
So, you know, we welcome issues, suggestions, et cetera,
you know, some of which Shannon and I can work on,
others will require Wolf to detail more.
So that is your requirement.
- I think something that might help
what Thunderbiscuit was saying in particular
is that we are working on an outline
for a new developer's website that's going to consolidate
all of the information so that it's not scattered.
And I don't know that that'll help
with the specifications right now,
but I've just written myself a note that we should
at least have all the specifications well-linked by then
so people will know the research is the right place.
And it looks like Thunderbiscuit had a question,
Chris, our point.
-
Yeah.
-
Go ahead.
-
Yeah, well, I think it's all going in very much
in the same direction,
I would-- part of the feedback I wanted to provide
was sort of in that vein.
I wanted to say that it felt like at this point,
there's a lot of things, a lot of directions,
blushing, comments been going into and doing specs and whatnot.
But this one is particularly sort of taking hold.
And I felt like one way it could be helped
was by having a life of its own in terms of website
documentation, that sort of thing, because it still feels
like the you are thing is very much entangled with the internals
of blockchain comments. So for example, just the name of the
file is something like VCR 2020 005. And that's, I assume
metadata about when it was created, then it must have been
the fifth in 2020. But you've see a lot of these projects have
their own sort of thing. And, and then from there, you jump
into maybe some of the documentation.
I saw you point at new docs there.
That's really interesting.
But similar to what you said, I guess
they're a little bit everywhere.
So you need to dig into Blockchain Commons to find them.
Whereas you could buy URstandard.org or whatever.
And then from there, it'd be everything
you need to know to implement this standard.
Are you looking to get animated QR codes?
This is where you start.
And that's that would have been the one link I would have given, for example, to the cashew guys.
Okay.
Started with myself. At this point, I'm familiar with the repos a little bit more. So I find my way
through them. But I think I remember a few months ago, I was just like,
where am I? And there was actually really interesting documentation, but in a few different
places. I think it's a great suggestion. I think we should have, you know, a single kind of
jumping off place for our major standards that we feel like are ready for real deployment out there
like you are simply to animate QR codes and not too far off, already on envelope.
Yes, Shannon, can you pull up the HackMD or send it that you had on the developer
site org? Because I will say we've been challenged that we're literally trying to design
new kind of unified subdomain, it would be like Gordian or developer.blockchaincommons.
Do you have that URL, Shannon? >> Yep.
Well done. >> So if you want to pull this up,
since you're screen sharing right now, I just put it over chat.
Okay, so yeah, so you know, a lot of as you as people have said, we have, you know, the crypto
commons, we have the Gordian repo, some people may not be familiar, but I've been writing at kind of
a higher level, you know, a series of musings on which are more of kind of my architectural
approach and how we're thinking about these types of things. We have a whole bunch of videos,
obviously, there's the research repo. What are we trying to do? We want to support developers and
people who show up. There's this smart custody problem that we've got because it gets entangled
when we're trying to increase resilience and people don't understand what we mean by
sort of a separation of, you know, of interests, things like single points of failure being
different from single points of failure and single points
of compromise are not exactly the same.
And they cause complications when you're designing things.
So we ended up with these three different approaches.
One was kind of an operational thing
that what is our architecture?
What are the roles?
What are the specific things within that?
And how do they support our principles?
And then our various cases.
Then there was a more topical oriented one,
which would be architecture, data formats,
communication formats, key management,
and then a more entry oriented.
You're a Bitcoin developer.
Well, you're going to be interested in animated QRs.
But if you're coming in from digital identity,
maybe you're interested in the SSI articles.
Or if you're doing layer zero stuff, you wouldn't do there.
And then there's the principles one.
So if any of you have advice of which
of these four organizations you would think would work best
and would have solved your problem when you're entering,
especially somebody like ThunderBiscuit
who has just been browsing all of this,
which one of these would have made your life easier
would help us?
- Yeah, Christopher and I were kicking that back and forth
just last week.
So that's something that we're really wanting
to get out there and to start helping people
get to these specifications easier and all the docs.
- Anyhow, back to Sparrow.
What's going on with Sparrow, Craig?
and why did you add life hash?
And we're really glad you did,
but you're the first one in the wild.
We thought it would be useful.
- Sure.
So let me describe the use case,
which is basically this.
As most Bitcoiners know, we have the concept of a seed
and the seed is based on the BIP39 spec
and the BIP39 spec allows you to,
in addition to your seed, your 12 or 24 words,
you can specify a passphrase as a sort of a 25th word,
if you will.
Now, the interesting thing about the passphrase
is that I consider it a relatively advanced feature
because the user has to remember it
and it's not like a password
in that there is no incorrect passphrase.
Every single passphrase will create a new seed
and thus will create a new wallet.
So a UX issue that I was having in Sparrow
was that users were creating new wallets
with BIP39 seeds and pass phrases,
and then making a typo at some point,
either when they created the wallet
or when they'd loaded the wallet up
and were forced to reenter their pass phrase,
because the BIP39 spec makes it quite clear
that the point of the pass phrase
is it is something that you have to remember,
it's not something that is stored within the wallet.
So that was creating a lot of questions,
a lot of people getting upset because they were losing access
to their funds, even if the answer was effectively stored
in their head, if they just couldn't remember the right
passphrase, they could get access. But it was nevertheless
an issue which needed to be addressed through some kind of
UX mechanism. And the approach that one of the approaches that
I took, one of many actually, is to use the life hash. So what I
I do here is I take the master fingerprint as it is defined as the first four bytes of
the master of the key of the seed and I use that in the life hash algorithm as an input
to create this unique little image that gets shown on the screen as you type your pass
phrase in. So as you enter in your pass phrase so this life hash image will change and gives
you the impression that your seed is actually changing with every key because, you know,
people don't understand that every single change you make to your pass phrase is in
fact creating a new seed. So it's a visual indication of that. And then of course, once
you reach your correct pass phrase, you can recognize that the life hash is the same one
that you used, hopefully when you created the wallet. And there's a prompt in Sparrow
to suggest that you take note of the colors and the shape
of the life hash so that when you re-enter your passphrase,
you can identify it.
And this kind of visual cue, I think,
is a lot more easy for people to use than, for example, just
showing the master fingerprint as a hex value.
I think that seeing that it's sort of a red mark with four
lines across it is just an easier thing to kind of deal with.
And I think it has helped.
It's not the only thing that I've done
on the passphrase front,
but I do think that it has helped people
be a bit more confident
when they use the passphrase feature.
- Okay.
Yeah, this is what we call the information block.
So obviously, so this is our reference 128 bit seed,
you know, test vector.
And when we basically have,
we know that it's a seed because it's a crypto seed.
We know we give the seed a value
because the seed is different than the master key.
So we, especially 'cause there can be other kinds of,
there are other ways to transform a seed
into some kind of master other than BIP32.
- Yeah, what you're seeing there is actually,
because whenever you produce a life hash,
it does a shot to be six of whatever data you give it.
That is the last seven digits of the shot to be six.
And that so that pairs with the life hash.
One changes, the other changes.
So it's meant to be kind of a second mode
by which you can verify this.
And the thing below it though,
is the fingerprint of the master key
that would be derived from that seat.
- So this should match what's in the descriptor
if the descriptor is referring to the master key.
Now, obviously, we'd love to work with people.
I mean, I actually have it as another agenda item
down the way, which is,
there's all the others, BIP38, there's BIP85,
which wasn't on here, but that's another one, et cetera,
that how do we be consistent to say,
oh, it's got us, it's a derived key
because it's got a password or it's a BIP85
and it's a different kind of derived key.
It's a seed that is now used for something else.
And then of course there's things now
like a bit 384.
So we'll be talking about that more in a minute,
but yeah, that was definitely,
I'd like to come up with some better approaches
so that we're consist,
everybody's kind of consistent in some fashion
as to what do we show here?
Like, I mean, I would love to, this is open source.
I would love to see more people maybe use
this diagram to say, yeah, this is a seed,
as opposed to, I mean, Wolf could probably do a demo
at some point of seed tool,
or maybe when he does his demo later, he can point out,
we have a couple of other different types of things
here to show, oh, this is a life hash of a public key.
This is a life cache of something else, so.
- Yeah, the object information blocker, OIB,
is what that whole top level header is called.
And we do have another BCR, another research document
explaining what we intend for each of these parts to be used
so that if people want to do something similar,
we're not kind of stepping behind each other
in terms of how we're kind of showing a life-hashing
combination with some other data
that we want people to be able to easily identify.
- And to be honest, I'm very uncomfortable with BIP38
because it's the number one law
among all the Bitcoin developers that I've spoken to
when I did interviews for Smart Custody,
that was the number one failure,
to the tunes of millions, if not hundreds of millions
of dollars worth of Bitcoin because of errors in BIP38.
Anything we can do to make that better.
And your suggestion in so far as at least eliminating
certain class of errors, but the fact that DIP38 doesn't have a checksum and some other
challenges with it make it a security risk, not so much in compromise, but in failure.
But we need to do it. We need to figure out something there because there are people who
use that, use it in sometimes very complicated ways, et cetera.
So I just wanted to be clear on why I use the master public
fingerprint.
Basically, Sparrow is built around output descriptors
and PSBTs.
And obviously, the output descriptor
contains that information.
You don't always have the seed.
In fact, you usually don't have the seed.
You might be working with a hardware wallet or just a watch-only wallet,
but you do have those four bytes, and that's why I use those four bytes.
So in fact, the life hash is shown for every wallet in Sparrow.
It's not only a passphrase thing.
It was developed with that in mind.
But in fact, if you load any wallet in Sparrow,
it will be you will see the life hash for those four bytes that are so integral
to the output descriptor format.
- Yeah, I think I basically have somewhere where I also talk
about how to take a public key
and derive a life hash image for it.
But I'm not sure if we're in sync on that,
but it may not matter, I'm not sure.
- Yeah, in the key export in our reference tool,
see the seed tool, you can actually see the,
a variety of different life hashes.
And we have some iconography for it
and we even have life hashes for,
and a little icon for it for like Bitcoin addresses and such.
So, but in the end,
as developers have unique needs
for your particular approach.
Obviously, a descriptor-centric wallet
is going to have descriptor-centric information
blocks.
A seed-focused thing like SeedTool
has seed-focused information blocks.
But I'd like to be just consistent whenever
you happen to drive, show a seed,
or we show a descriptor or anything else like that,
that we're all consistent across these various things.
- My hope would be that, for example, if you use C tool,
you'd say, derive a private key,
which is when you tell it to derive keys,
it drives the private key first,
and then you tell it to drive a public key
along a certain path, it shows you a life hash for that.
And we have documented the way that's done.
It's not just the code itself,
so there's also documentation.
And it'd be nice if somebody imported that public key
into something else that they would see
the same life hash, that's the intent or hope.
- Anything in that particular UX area
that you're planning on doing, it's on your roadmap
or what's the...
- No, I mean, look, I do take the point
that life hashes can be used in many different places.
I think if we use them in too many different places,
you're essentially putting the burden on the user
to try and remember which life hash goes away.
Was it the red one that applied to the wallet
and the green one that applied to the key
or was it the other way around?
- This is why life hashes don't stand alone.
That's why we developed the object information block
because life hashes is part of identifying the object.
The other elements here, which is a type, for example,
a type icon and the fingerprint,
the truncated fingerprint and then the title,
these are all intended to build a picture
in a person's mind of a rapidly recognizable digital object.
- And we're open for what this should,
we're like I would say for the Bitcoin community,
you are correct that it's really the derived
from the seed value, which we point to here,
that is the one that is important.
We might argue, you really ought to have store the seed,
But ultimately, it's up to the wallet developers
to make some decisions about those types of things.
And if it's different, we'd like to help standardize this
in whatever way possible for that.
Well, we've also documented how to display
live hashes from BIP32 keys.
So--
OK.
Yeah, sure.
No, look, I take all of those points.
I think you may be overestimating the conceptual framework
of many users coming into this space for the first time.
Do they understand really what a seed is?
Do they understand what a public key is?
Do they understand what a derivation path is?
- I think the idea is more that,
if you do something in one tool and it's the same object,
you should go recognize it in another tool, visually.
That's all, that's the main point.
- And also, to be honest here,
I just got, a month ago or a month and a half ago,
got into a long argument with some Bitcoin core developers,
former Bitcoin core developers, I should say,
because they didn't understand some aspects
of the master seed that Bitcoin uses.
And it was like, wow, you know,
I mean, most people don't realize that, you know,
BIP38, excuse me, BIP39 words is basically a weird hack
that actually uses the words to generate the hash
because it's the hexes of them or whatever.
It's a real mess.
And there are a lot of people including the, you know,
the treasure folk who really hate BIP38.
No, yeah, excuse me, BIP39.
And there are people like Peter Woolley who wrote the spec
who basically goes, I kind of regret it in some ways
'cause people are misusing it.
So, and that's developers, much less users.
And that's kind of why we sort of settled on the,
hey, let's try to use one.
We thought the seed was a better one for it
because one it's...
- And yet when we derive the master key from our seed,
which is just a pure random number,
not derived from words or anything like that,
we go through the BIP39 seed stage,
which is actually where we internally convert it
just the way it's the same way other people who use BIP39
convert it to a mnemonic and then back, essentially,
internally, but we suck that all under the rug.
So we're compatible with other websites and so on
that do BIP39 seed generation or key generation.
So we're compatible,
but it's like the redhead step shot,
we don't have to talk about it.
- Yeah, well, and the core people do not like,
I mean, they basically say,
"No, just create a Bitcoin master key."
Don't, you know, they call what we call the seed entropy,
whereas we're, I mean, I don't know, it's a mess.
And when you start talking about outside
the Bitcoin community,
their own community is relatively anti-BIP38.
And, you know, even and BIP39 as well, for that matter,
they only do one derivation, you know,
they don't even do, you know, more than a lot of things,
which causes lots of problems
because they end up having the same key doing, you know,
all the operations, authentication, transfer,
et cetera, et cetera.
So they even have it worse.
So, you know, I'd like to, you know,
have the wallet community think hard about this
and become better at it.
- And I think Craig offered us two great things
to think about.
First of all, that if we do use life hashes
for too many things that we could be confusing the users.
I think that's a very valid point, especially
that they're not going to know the difference.
And so they'll just be asking why are these life hashes different?
And the second is that a wallet might not have the seed and only the master key.
And so we might be standardizing on the wrong thing.
I do give that some fairly careful thought.
And this is a conversation that I think we should continue to have with the developer
community about how to, obviously life hash isn't the only strategy for doing a visual
hash.
I think it's fairly unique and has some unique uses.
But the idea is the problem we tackle was not just,
we won't ever use LifeHash,
but how can we have people readily identify digital objects,
objects that have no form other than their numbers.
So the research we did, which we published,
is basically our best answer to that at this time.
- But again, I think that if we,
even for people who don't use BIP39,
if we always in general for seeds recommended,
use the life hash of that to identify it.
That might be useful.
I don't know.
We'll figure it out, but it's an important discussion.
- Yeah, I just wanna say like my comments have,
even though we started off with BIP39 and the past phrase,
the actual application is completely BIP39 independent
because it obviously is just the master fingerprint,
which is defined by burp32.
It's got nothing to do with burp32.
-
You're right, correct.
-
Yep.
-
So I don't know if anybody here is gonna be
at the IETF meeting in San Francisco,
or there's also IETF 118 in Prague.
Anybody gonna be attending that one?
Well, we'll skip that for now, but basically, we are trying to standardize the DC-BOR.
We've had some acceptance.
We'll see.
We'll know more in the CBOR discussion.
So we have 15 minutes scheduled for that there.
And then we're going to have a side meeting to talk about Gordian Envelope.
And do we want to run that through ITF?
Or is it just another wallet improvement protocol type of spec that's coming up?
Obviously I've been credited for popularizing the term self-sovereign identity and self-sovereign
in general, and there have been a variety of different interpretations of that and such.
So I've tried to do some new articles on how, you know, where are my origins around this type of
thing, but in particular, you know, this is kind of the self-sovereign, you know, computing
thing kind of really fits in with a lot of the stuff that Blockchain Commons is talking about and
things that we've talked about in Silicon Salon, etc. And I basically have a new analogy metaphor
for this, which is, you know, you're on a digital journey on a vast and unpredictable digital sea,
you want to stop being a passenger, you want to be a captain. And that one of the things is together
as fleets, we can work together and have unity on the digital ICs. So if this is something that
might be interesting to help people explain self-sovereignty in a new way, I'd be interested
knowing if this was useful or not. So let me know if that's something that resonates for you or
or someone on your team.
Wolf, I think it's your turn.
- Hi, okay.
Yeah, so I'm gonna talk a bit about the progress
we're making on the C-tool.
We're getting closer and closer to our 1.6 release,
which is going to include a number of improvements,
particularly like the low-level architectural improvements,
like including Gordian envelope and things like that.
So we have videos up on Gordian envelope, what it is.
It's built on DCVOR, making the packaged as URs,
the other things you've been talking about here.
So you'll see me kind of go back and forth
between all these things in the demo about what to do.
And I want to, let's see, let me.
For some reason when I'm not the host,
I can't share a portion of my screen.
And so I might have to flip back and forth.
This is...
I made you a co-host in the hope that that solved that problem, but we'll find out.
- Yeah, actually, so I'm gonna, I'm gonna,
it's your multiple windows,
so I'm gonna try sharing three windows here and see how that goes.
You're gonna have to tell me how this looks.
You should be seeing-
-
I see three windows all at once.
-
Okay, good.
So you should be seeing, I don't know if there's,
arranged the way that in the, here in the middle,
you see my actual physical phone.
- Yes.
hand side you see the iPhone simulator and left hand side you see the terminal. I'm mostly
going to switch back and forth between these three things. So the Guardiancy tool on my
phone already has a number of tests. I'm going to click on my screen and tap on my phone.
Has a number of test seeds in it that I use for various things. Dark purple, aqua, love
is our human blue, kind of our main test vector.
I'm gonna start though over on the simulator.
I'm going to create a new seed.
I'm gonna use the quick create function
and create a new cryptographic seed.
And I'm also going to, before I save it,
I'm going to give it a note.
And then I'm going to, I think I dismissed it, damn it.
I'll have to figure out how to do it.
Dragging down a sheet dismisses it.
So, okay.
Doesn't matter really.
Click Save.
There we go.
All right, so I have a new seed here.
And again, this is the type, the fingerprint,
the master key fingerprint, the name, which is editable.
And of course, these things are all--
there's several pieces of metadata here.
There's the name, the creation date, and the note.
And these three things are optional,
because the seed itself is just, in this case,
16 bytes of random data.
And you can even see that here by authenticating
on the actual device that would ask you for your fingerprint
or face ID.
And then if you just say share, share text, well,
that's the actual seed right there, and it's hexadecimal.
But obviously, because you're going
to protect a lot of things with this, you want to back it up.
And you might want to drive keys from it and things like that.
Real quickly, I'll go into the drive keys
because this is something we've already
kind of talked about in this meeting.
So I just want to make sure we're all on the same page
about it.
There's a workflow here.
It goes from top to bottom.
So you start with your seed, and then you
enter some parameters, like whether you're
dealing with Bitcoin or Ethereum,
whether you're on the mainnet or testnet,
and what kind of key you're driving.
And so, for example, if I'm driving a co-center key here,
you have a derivation path.
And from that, you get the private HD key.
Notice this has a specific life hash here.
And also notice that this is more filled out.
It's red.
It's a private key.
It's marked as private key.
It's a Bitcoin private key.
It's a main net Bitcoin private key.
And so all these things are being added to this to kind of--
so at a glance, it's not just a life hash.
It's all these things.
And so the whole idea is to give you
a picture of what this digital object is.
From that, we derive the public HD key.
And so this particular derivation path
and turn public yields this.
This is now green, says pub, same things here.
And finally, the main address from this,
for this public HD key, which is right here.
So, and all of these are shareable.
Notice we're all using color cues here.
Like for example, the private HD key is a sensitive.
So if I say share this, all these are yellow,
indicating this is sensitive information.
By the way, the QR code is animating here
because this is using the fountain codes from our uniform
resource, UR library.
These QR codes never repeat their fountain code.
So they basically are based on the pseudo random sequence
and you can dip into this fountain at any time.
And the nice thing about it is you converge
to the solution a lot faster than if you actually have to
have a lossy camera where you're missing QR codes
and you're likely to take longer and longer to converge.
So anyway, but some of them, if it's small,
you don't need it, you don't need animation.
But if it's big, then you do.
But the reason why these are larger
is because they are actually a Gordian envelope
and they have all the metadata associated with them.
So for example, if I say share a Gordian envelope,
copied clipboard.
And then I'm going to go over here to--
let's see, get a paste board.
OK, so I'm going to go over here to the terminal.
And then I'm going to type envelope, which
is our command line tool, and I paste.
And notice that what I copied from the simulator over there
was this URL.
You are calling envelope.
So this is a URI, like a URL, which begins with like HTTP
or whatever.
You are always self-contained.
They don't point to things.
They are things.
And it's an envelope.
This is a gory envelope.
And this is the envelope tool.
So if I put this here, kind of you are in it,
it gives me a picture of what's inside that envelope.
And so the key itself has 33 bytes.
This is the subject of the envelope is the key.
All the other things are assertions about it.
And that's kind of the general format of envelopes.
There's type information.
This is a bit32 key.
This is also a private key.
So even if you don't know the care of it's a 32 key,
you can say, is this a private key?
and say, yes, it's a predicate key.
The asset that's associated with it is Bitcoin.
That asset has type information as well,
and it has a network.
This is a main net, and this object is a network.
And so I'm describing basically metadata.
The nice little envelopes is you can have assertions
and you can have assertions on assertions.
So this is, you know, subject, predicate object,
predicate object, predicate object.
This particular object has its own assertions,
predicate object, predicate object, and so on.
It has a chain code because it's a bit32 key.
It has a name.
This is the actual name that's exported from C-tool.
It has a parent.
Now this is a crypto key path,
which we've documented elsewhere.
This is a C-bore structure.
And this is C-bore tag it's saying here.
This is tagged as a crypto key path.
It's a C-bore map.
Now the envelope tool doesn't give you more information
than that, but when you parse this as C-bore,
you basically get the object of this assertion,
of this assertion.
and then you can basically parse this to keyboard.
So, okay, so, and then parent fingerprint,
which is just an integer.
So basically this is how we were kind of structuring keys.
Now, this is a parallel spec with a crypto HD key,
which is still fine and you can still use it.
This is actually kind of more transparent.
And the nice thing about envelopes
is you can add things to them
without disturbing what's in them to begin with.
- You can also make a version of this and say,
elides the private key,
but gives some public key information.
You can, you know, elide your transaction data,
if you're storing your transaction data in there,
or only, you know,
don't only keep the transaction data
and the transaction details to give to your CPA
and you don't give the rest of the stuff.
- Yeah, I mean, envelopes are basically smart lockers.
They let you do holder-based collision,
encryption, compression.
They're basically a Merkle tree,
so you can tell whether they've actually
been semantically altered or not.
And this is also probably why we want to determine
a succeed board because two people constructing envelopes
in separate times and places,
but with the same information,
should actually construct the same bit-for-bit envelope.
That's the goal.
So that's a big part of why we're pushing
for deterministic seaboard as well.
Okay, so I just want you, that's the bit I want to talk
about kind of keys, mostly we're gonna talk about seeds now.
So when you wanna actually back up your seed,
there's a couple of different ways of doing it.
You can say, for example, back it up as a Gordian envelope.
And so if I do that, then it just shows me a single cura,
'cause it's not very big, but what I'm gonna do here
is I'm going to go to my physical phone,
tell it to, I want the video here,
and it's going to be pointing at the QR code.
And then you'll notice it's just imported that,
and it's imported everything about it.
It's imported the name, the creation date, and the notes.
And so if I actually, again,
I'm going to do the same thing I did before.
I'm going to copy this as the envelope to clipboard.
Paste board over here.
Let's look what a seed looks like.
So this is a seed.
The subject is 16 bytes.
That's the actual seed.
It is a seed.
This is the creation date.
This is the name.
This is the note.
And so again, these are the assertions
that come with the seed kind of standard,
but you can add your own.
You can package this within other things.
And you'll see how we do that in a moment here when we actually
talk about SSKR.
So as you can see, and this is basically--
I displayed a Gordian envelope in one on one device
and imported it on the other.
So if we actually go to the other option here,
backup as SSKR multi-share,
SSKR stands for sharded secret key reconstruction.
And it allows you to basically distribute pieces
of your key to a group of people
without any of them being actually without,
assuming they can't collude sufficiently,
they can't actually reconstruct your key.
And we have a spec for that,
It's called crypto S-S-K-R, which is a UR,
just directly encoded as C-BOR, and that's still usable.
Gordian envelope is becoming our preferred way of doing this
because again, it has all these other options, things.
Of course, you can also embed any C-BOR in Gordian envelope.
Envelope itself is a C-BOR structure.
So you start by choosing what kind of split you want,
let's say three or five.
So I have five friends or say three friends,
three friends and two coworkers and a spouse
or something like that.
And I want them to hold these issues.
So any three of them can reconstruct my key.
So I've chosen a Gordian envelope.
So I'm gonna say next.
Now the split has been performed.
This split is basically ephemeral.
So if I leave this page right now,
the next time I come back with the same split,
it's gonna be split differently.
So I wanna make sure I get all my shares
of Gordian seed tool right now.
We do have it on a roadmap to create kind of persistent
So if you want to do the split once and then take your time to distribute to other people, you can.
But right now, it's important that when you're on this page, you get all your shares out of the app at the time.
Did you have a comment, Christopher?
No, I'm fine.
Okay. All right. So anyway, but we do warn people about that.
So for example, you can print your shares and you see there's a preview here.
You can decide whether you want a summary page on the front, which lists the key byte words from each share.
share. You can decide whether you want the notes on that front page. And then the other pages
essentially have the life hash, the option recognition block for the seed, and then the
QR code, the byte words, and then the actual printed UR that would be exported. So these are
the actual five shares, any three of which can reconstruct the seed and all its metadata.
And that's what's important here is because before I did the split here, I should have pointed this
out. If you use the legacy UR, you only split the raw bytes of the seed because SSKR has a limit
to 32 bytes, which is exactly how long a seed can be. And so you can split the seed, but you can't
recover the metadata with that. All you split is the seed. The low-hanging fruit advantage of using
guardian envelope is all the metadata, name, notes, etc., will be split as well. And you'll see how
how that works in a moment here.
So I'm going to go back here.
Now I'm going to say, and of course you can copy them
all to clipboard at once if you just want to do it
in once fell swoop.
So you can just say copy clipboard.
And if I do that, all the,
all the URs will be copied in one step.
But I'm going to go to export shares individually here.
And here you see the five shares.
There's four characteristic words for each share.
And you can export them as various things.
You can export them as pure byte words.
You can export them as a QR code.
You can write them to an NFC tag if your device supports that.
So if I just show an envelope here,
there's the UR of the envelope.
And again, if I copy and paste this over here,
you'd see something similar.
In fact, I'm going to do that because I want to show you
that what you're going to see in a share
is not the same thing you saw before when you saw a seed.
So we go to the Paste Board Envelope.
OK, so here's the envelope for this.
Now what do we see?
The subject of this is encrypted.
So what's encrypted is this envelope,
or something similar to one's act,
it is this envelope because it's the same seed,
has been wrapped and then encrypted with an ephemeral key
that has been split into SSKR shares.
And each of these envelopes has a different SSKR share.
So you're really distributing this smart document
that has been embedded and then encrypted with a split key.
and it takes a quorum of three keys
to reconstruct the actual symmetric key
that was used to encrypt the seed.
So what I'm going to do to demo this
is I'm going to instead of display these QR codes,
and I'm going to again take my physical phone over here,
try the camera,
and then I'm just going to scan the first QR code
and notice that it says, "Recover from SSKR."
it recognizes because it read the envelope
and looks at these one assertion on it and says,
oh, there's an SSKR share
and there's an encrypted payload, a pre-encrypted subject.
And so I need two more
because it was able to derive the information
from what is available in that thing.
So now I'm gonna hide this one.
I wanna say show number three.
And there we got another segment, the middle segment lit.
And let's go number, show number four.
So, and there it is.
So, you can see all the information is there.
The name, the creation date, the note,
it's all available there.
And if these QR codes were too dense,
they would start animating as well.
And, you know, the seed tool on the other end
can read them because that's what you are for.
You can put as much metadata as you want
and the QR codes will dance around
and transmit the information in a very efficient way.
And that is very, you know,
tolerant to a lossy channel like this.
- We also had a demo last month by Seed Hammer
where they were able to get fairly dense QRs onto steel
with their engraving device.
And we're also gonna work with them
on how to have multiple QRs that are printed
in some fashion, whether or not it's on steel
or on waterproof paper or whatever,
if you can't do animation.
So we wanna support offline keys.
Obviously these are UR's, which means they're URLs.
And since it's encrypted,
this is actually reasonably safe to transmit,
say over a secure channel like Signal to your share partner.
Or you can enter into a relationship with a service,
which would encrypt it one more time.
And you would then be able to recover,
use a third-party recovery service.
I don't know if you want to do.
- Yep. So I just copied, this is actually is a long,
it has a longer metadata on this one over here.
So I just copied this from my physical device,
paste it into the simulator
and you see how it's already recognizing this is here.
I just copy and paste it the actual text URL you are across
and then it's giving me the preview and then I say save.
And so now I have this seed over here
and just copy and paste it the whole URL
without splitting it.
If I then want to split this one
and say backup as multi share and say three, five,
next export shares individually,
export as QR codes, if I show them,
they're gonna be dense or they're gonna animate.
And this is something I have to still fine tune
before we do the next release
is this should probably be animated now
because it's pretty dense, but it's probably still readable.
Let me just see if that's true.
- But not with Sparrow probably
and that's what we need to test.
- Maybe not.
Yeah, well, that's the thing.
Yeah, that's true.
And of course, different cameras have different qualities.
Yeah, this is pretty small right now.
If I actually increase the size of the window probably,
it probably could get to the point where it's readable.
There we go.
But the threshold at which you start to animate is tunable.
And that is something that I'll be playing with
before we do the 1.6 release.
So, that's pretty much the demo.
I would just want to show you how we move back and forth
between QR codes and the scored envelope
and SSKR shares and all these kinds of things.
It's all a very unified system.
And I think there's a lot of benefit
for people who are considering adopting this.
And on a documentation for envelopes,
we have a lot of examples
and Shannon has put together some really good user stories
and use cases for it.
And we think it could be,
Gory envelope could be really useful,
both within and outside the blockchain community.
-
Thank you. - Any questions?
-
So sort of a quick, this is an AMP,
what we call in minimum viable architecture for CSR.
There's a lot of capabilities, features, et cetera,
that could be added to it,
but as we've kind of felt like this
demonstrated a variety of important architectural features,
but is unlikely to be exactly what you would choose to do.
We also have some inclusion of descriptor metadata
that is kind of minimal choices.
And of course we do the seed reconstruction,
but there's still a lot more to consider
and we need your advice on prioritizing there.
I know proxy and Bitmark both had this concept
of a progressive SSKR split.
We've identified some problems because SSKR
is different every time you do it.
So we have to have some persistent state
until you've given your shares
to whatever parties you wish to share to
and it's complete.
So there's some questions of UI there.
And then we've had a number of people
who would like to have unencrypted metadata
to assist recovery.
So these would be things outside the envelope
that might have some other details,
maybe the fingerprint.
- Not outside the envelope per se,
but outside the actual sharded part of the envelope.
-
Correct.
-
Yeah.
-
And again, that's one of the nice things about envelopes
is you can mix and match encrypted parts,
non-encrypted parts, charted parts, non-intrarted parts.
It's very flexible.
- Right.
The other things right now,
seed tool does not support BIP38.
And so we could define another UR type for a password
that would be the BIP38 marked as being a BIP38 password.
So you could, if you wanted to,
you could add that to the envelope.
Similarly, there's some weird scenarios where you could say,
"Hey, you can get the master key,
but in order to get the BIP38,
you need to get one more share."
So it would be like two different splits,
but not all the data is in both splits.
There's BIP85 support, which I know we've had some people interested in, but causes
its own complications because it's basically generating a new master key, but it's not
actually generating a seed, which drives some other blockchains and people crazy.
And then there's 384 is a new bit for transaction data.
So the name of the account that you've named it,
all the transactions that you have done on it,
who to, what level of privacy, et cetera.
- By the way, I just remembered there's the other thing
I did not demo, which is, which I could if you want,
is the request responses using envelopes as well.
So, and again, that's something using Guardian envelopes
as a way of conveying requests for say,
a seed based on a hash of a seed or a key based on
a derivation path and things like that.
So it's a way of basically facilitating communications
between devices where there's a series,
one or more requests and responses involved.
And again, the structures being passed are very flexible
because they're-
- So the advantage to say Sparrow would be right now,
Sparrow when it's working with seed tool says,
go to this option, go to this option,
go to this option, go to this option,
and you've got a,
we can now get an account from you or similarly.
But instead what it can do is just simply when it,
it can just simply show a little QR code,
which is pretty small,
that says this initiates the whole thing
and it will basically just ask you,
whatever doesn't have to be our tool, whatever tool,
please do this operation for me, sign a PSBT,
or give me a cosigner key,
'cause I wanna prepare to do a,
create a descriptor for a multi-sig
or something of that nature,
which should make it easier for everybody,
'cause hypothetically, there's no reason why
foundation devices with their air gap device
or Kobo with their Eric app device or our iOS reference app,
could all use that same QR code,
which will make life easier for everybody.
But we really need your feedback on what to prioritize.
So we're gonna basically get this MBA out
in the next few weeks, probably pause,
depending on what your roadmaps are,
when you're gonna start implementing
if any of these features.
I mean, if you tell us,
hey, I can't get into it until October or November,
we may not do more than just get this reference app out
and go back and do the rest of the Rust documentation,
the other things that people are requesting.
But we really need your feedback.
So that's where we get to kind of the end of this call,
which is I would like to kind of get a feeling from,
each of you, is there something coming up on your roadmap
where you're seeking interop
and are willing to do some effort there
and we will focus our efforts on those types of things.
So I'm actually gonna, Dario,
This is, I think, your first call.
Anything you want to introduce yourself
and say anything about where you're interested in
or if you're just investigating
or if there's something that's a priority
that we're not even thinking about?
- Thank you, Chris.
No, right now I don't have really too much to say,
but my own interest is I've been following you
and the work that you guys are doing for a while,
lurking as it were in the background,
I've helped put together a hardware wallet team in the past.
So, you know, I have some sense for where the ledgers
and treasures and bit boxes of the world are doing good
and doing less good.
So you guys are doing great work
and I'm trying to keep myself up to speed on the future.
That's it.
- Thank you.
Nicholas?
I know you are working with Kotlin.
Thunder Biscuit.
- Hey, well for me, right now I'm focusing on
a bit of Kotlin multi-platform thing.
I think I see a lot of adoption for KMP in the industry,
including some of our clients for the Bitcoin Development Kit.
Block is using it extensively in their new app,
and I want to help support that and dig more into that.
And so that's part of why I'm looking into a UR
and exploring how I can understand the standard more.
And that's kind of where I'm at.
I'm building my own sort of internal version
of the documentation so that I can dig into it.
- You can always shoot your questions on Signal as well.
I'm on Signal, I'm in several of the blockchain commons
you can slip me up there and send me questions
about these specs and I'd be happy to answer them.
-
Cool, yeah, I think I'll join the Signal group.
-
That'd be great. - Thank you.
-
Craig, you're busy.
(laughs)
Where are your priorities right now?
- Yeah, as usual, I've got a lot of things on the go.
I saw actually in the notes
from one of the previous meetings,
I think it may have been two or three previous,
that the legacy message signing request
that we put in at the start of the year,
there's actually some work on that.
I haven't unfortunately got time or had time
to dig into it yet, but I do intend to do so
and to see what came out.
I obviously missed that meeting,
but I'm intent to kind of dive into that
and see what work was done there.
Yeah, the only other thing to say
is just to reiterate what I was saying earlier around,
don't assume that UR is already the standard.
I think that it was still early days
And if we have a different standard that comes to light,
all of these things that are built on UR like SSKR,
have a lot less chance of succeeding.
So focusing and getting those specs out
and getting the whole approach well documented
is I think an important thing to focus on.
- To be clear, SSKR is not in any way built on UR.
URs is just one way of packaging SSKRs, period.
SSKRs are entirely independent of URs.
-
Okay, sure.
-
On the architectural later, yeah.
-
But Craig, one of the things I know, again,
you've got a lot of BIPs
and various kinds of requests on your plate.
I know for me, we've published some scenarios
for how to do better multi-sig,
which starts off with, you know, give me a co-signer,
give me a co-signer pubkey.
And, you know, from a variety of different kinds of devices,
we would really like to see crypto request demos soon.
And since we do not have a Bitcoin coordinator,
you know, ourselves, you know, we need someone like you
or Casa or Unchained or somebody else who's got a coordinator to implement that.
And then of course, we'd really like to see crypto,
be it PBST move toward crypto request as well, or at least having that as an option.
So that you can request other things besides signing
PSBTs such as legacy Bitcoin or other different types of things or either of these something that
is a Q3 thing, a Q4 thing beginning of next year. We're just trying to get a feel
and if you don't feel like you can commit to anything now that's not a commitment,
you're just trying to get a feel. Yeah, I mean, I try to focus on things that
the users of Sparrow will want. And obviously they are interacting in a world with all of these
hardware devices and that's sort of the focus really is what devices are they interacting with.
They're also obviously interacting with hot wallets. But here we're really talking about
the interoperability between devices and the coordinator.
So without some kind of demand-- and I understand your chicken
and egg problem here-- but without some kind of demand
from the device side, am I going to invest a lot of time
in building something which isn't supported on any device
which is out there?
It's also true to say that I'm--
and this is maybe a broader philosophical point--
is do I want users--
what is the UX like when users exchange these QR
codes between the device and the coordinator?
What kind of a feel is that?
I haven't really thought deeply about it.
it feels quite different to what Sparrow is today.
So it's not just a, you know,
am I gonna implement this feature kind of thing?
It's also a, how does this fit into the broader
overall UX architecture of what I'm trying to build here?
Those questions feel a little way off to me right now,
if I'm honest.
It doesn't feel like an immediate need
that people are asking for.
So that's just the most honest answer that I can give.
It's certainly helpful seeing Wolf's demo today
and getting a sense of what the sort of envelope
can be used for.
And that certainly might plant some more seeds
and we'll see where that goes.
But I have no immediate plans.
As I say, I think my next step is to look
into the legacy message signing,
which I think does involve the envelope
of I'm not mistake-stricken.
And that's perhaps the way in which I'll start
to become more familiar with it.
- Okay.
So clearly, I mean, so Foundation Devices
has a new app and tools associated with their product.
And they have said that they're committed
to moving in this direction.
So it sounds like maybe the three of us
should coordinate a little bit on that.
I know one of their particular interests
is being able to backup shares.
It'd be great if Sparrow could accept a share,
even if it doesn't,
or transfer a seed and made a data safely
to foundation devices and such.
So that would be,
I don't know where they are in their roadmap,
but that's of interest.
I know that Unchained has been, you know,
a Blockchain Commons sponsor for more than a year
because they really would just like to be able to throw up
a QR code on the screen and basically initiate
the whole process of doing things.
So that's Unchained.
CASA should be interested in that as well.
but I've never been able to get them to come
to one of these meetings.
But they are supporting PSBT.
I think they like it.
Another thing that people have asked us if we should do,
and everybody can answer this one, is a QR debugger.
There's something kind of like the QR storage app
that we had at one point as an experiment.
but it would basically allow somebody to, you know,
go, is this legit?
Is this cute?
You know, there's been some people go,
well, I don't know what's in that QR.
And we could offer something that, you know,
for the general public,
which is simply help identify what this is that's,
you know, somebody's trying to send you
and is it conformant in various ways.
So, and then for developers, you flick a switch
and it'll basically help you debug all of this.
Is any of that of interest to any of you right now
is our priority or do we save it till the fall?
- I think I would certainly be interested to support
any of the feature development that the various entities
that you mentioned are doing, you know, where the foundation is doing something or unchained,
that's certainly something I would look to try and support. So keen to hear more as and when that
happens. Great. Okay. Well, it's 1134. So we're a little bit past our hour and a half, but I wanted
to thank everybody for being here today. Obviously, you know, if you you can talk to me on Signal,
all of us on Signal or on Twitter through ChristopherA and we look forward to more details
in August. So in August we're going to do an Asia friendly time zone again and then in September
we'll do back to EU and so we're going to go back and forth for a little while.
see how it settles out. So we clearly have some European parties in this call. And of course,
all of this stuff, we will excerpt key portions to our YouTube channel. Well, thank you again,
very much. Thank you, Wolf. Thank you, Shannon. And we'll talk to you in a month.
Thank you, everybody.
Yeah, I'll come down.
Thank you.
Bye bye.
Goodbye.
2
you