# Dash Platform Walkthroughs Part 1a with Monarch Wadia

> Monarch Wadia takes a hands-on tour of Dash Platform with Anthony Campolo and Rion Gull, covering wallet setup, identities, and testnet quirks.

- **Collection:** Video
- **Published:** 2024-06-04
- **Author:** Anthony Campolo
- **Canonical URL:** https://ajcwebdev.com/videos/2024-06-04-dash-platform-walkthroughs-part-1a-with-monarch-wadia/
- **Markdown URL:** https://ajcwebdev.com/videos/2024-06-04-dash-platform-walkthroughs-part-1a-with-monarch-wadia/index.md
- **JSON URL:** https://ajcwebdev.com/videos/2024-06-04-dash-platform-walkthroughs-part-1a-with-monarch-wadia/index.json
- **Channel:** [Dash Incubator](https://www.youtube.com/channel/UCZVi0jeaBJ-bYcXQabnE9jA)
- **Original URL:** https://www.youtube.com/watch?v=dNIU0g7-28o
- **Original Label:** Watch original

---

## Episode Description

Software developer Monarch Wadia takes his first hands-on tour of Dash Platform with Anthony Campolo and Rion Gull, working through wallet setup, identities, and testnet quirks live.

## Episode Summary

This kickoff episode of the Dash Platform Walkthroughs series brings Anthony Campolo and Rion Gull together with full-stack developer Monarch Wadia, who has 12 years of web experience but no prior crypto background. After Monarch shares his journey from React frontend work to running the MintBean hackathon platform and his current LLM library RAGged, the group dives into a live tutorial walkthrough designed to surface real friction points for newcomers. Monarch installs the Dash SDK, configures a project, and explores block-querying methods while Rion provides deep context on how 12-word mnemonic seed phrases, hierarchical deterministic key generation, and the underlying Hive libraries actually work. The session hits significant turbulence around the testnet faucet, gRPC "unimplemented" errors, and SDK version mismatches between the dev10, dev15, and PR-tagged packages, ultimately resolving once they pin to dev15. Throughout, Monarch offers candid feedback suggesting the disparate one-off scripts could be unified into a CLI, that glitchy steps deserve transparency labels, and that the more detailed tutorial outshines the official docs. The hosts agree to schedule a follow-up session, and Monarch expresses interest in contributing code to Dash going forward.

## Speakers

- Anthony Campolo
- Monarch Wadia
- Rion Gull

## Chapters

### 00:00:00 - Introductions and Monarch's Developer Background

Anthony Campolo opens the inaugural episode of Dash Platform Walkthroughs and introduces Monarch Wadia as the first guest, a self-described full-stack web developer with twelve years of experience who has never touched crypto as a developer before. Rion Gull frames the series as a way to get on-screen the kind of QA work developers normally do off-screen, observing how new users actually experience the Dash Platform tutorial.

Monarch traces his career from early frontend work before React's rise, through implementing a custom Flux architecture from scratch, into Ruby on Rails and an architect role at Ericsson. He then describes founding MintBean, a hackathon platform that peaked at 800 weekly developer registrations and 10,000 community members, and explains why he stepped back from the CEO role to return to deeper technical work, including his current open-source LLM library called RAGged.

### 00:05:09 - Project Setup and Installing the Dash SDK

The trio moves into the tutorial proper, with Monarch initializing a new Node project, setting the package type to module via a CLI flag, and installing the Dash 1.0 dependency. Anthony notes that pnpm should be avoided in favor of npm for this walkthrough, and they confirm Node 20 is required, prompting a suggestion to add that explicitly to the documentation.

Monarch sets up a scripts and api directory structure, configures an .env file with the testnet network value, and discovers that TypeScript types are bundled with the JavaScript package even without a TypeScript dependency. Throughout, he and Anthony discuss tradeoffs between scattering functionality across one-off scripts versus consolidating into a single file, with Anthony explaining that the granular structure is intentional to make each step explicit for learning purposes.

### 00:13:17 - Deep Dive on Mnemonics and Hierarchical Deterministic Keys

When Monarch reaches the wallet creation step and asks whether a mnemonic is an ID or an authentication method, Rion takes a substantial detour into the cryptographic foundations. He explains that the 12-word seed phrase is drawn from a dictionary of thousands of words, derived from input entropy through algorithms that produce a human-friendly backup format easier to write down than hexadecimal strings.

Rion walks through the Dash Hive libraries on GitHub, including Dash Phrase, and credits AJ O'Neill's documentation work. He details how the seed phrase feeds into hierarchical deterministic key generation, allowing one mnemonic to derive Bitcoin, Ethereum, Dash, and other blockchain addresses, plus potentially serving as the basis for a unified password management system. Monarch grasps the implication that deterministic password derivation tied to domains could become the future of credential management.

### 00:26:02 - Exploring Block Methods and the Blockchain Tip

Monarch continues into the get block methods script, encountering jargon-heavy explanations about block hashes, chain tips, and block heights. He pushes back on the documentation order, suggesting that explanatory text should follow the code rather than precede it, since developers naturally read the code first to orient themselves before processing the prose.

Anthony acknowledges this section introduces too much terminology too fast and considers either hiding it behind a collapsible details element or replacing it with a link to deeper documentation. Monarch notes that a diagram would help him understand whether the blockchain is a 2D structure, 3D structure, or simple linked list, and Anthony confirms it is a linked list. The discussion crystallizes a recurring theme: the tutorial describes the what but not always the why.

### 00:33:17 - Wallet Creation and the Testnet Faucet Struggle

The conversation shifts to creating an actual wallet and acquiring testnet Dash from the faucet. Anthony demonstrates the copy-paste-friendly output format he designed to minimize user error, and Monarch suggests this work would be better wrapped in a CLI rather than scattered across one-off scripts. Anthony defends the granular structure as serving learning rather than speed.

When Monarch attempts to use the faucet, the experience proves frustrating: the HTTPS link fails and requires manually switching to HTTP, and the funds do not appear on the block explorer. Rion confirms the faucet has been unreliable, pinning grants to addresses rather than IPs in unexpected ways, and acknowledges this entire experience needs significant improvement before it reaches a broader developer audience.

### 00:42:00 - Block Explorers and First Identity Creation Attempts

Anthony and Monarch hunt for a working block explorer, discovering that the URL embedded in the tutorial returns no results while a different testnet insight explorer that Rion shares does show the expected balance. Anthony reflects that Platform Explorer should ideally absorb this functionality rather than relying on multiple loosely maintained mirrors.

With funds confirmed, Monarch attempts to create an identity, but the script fails with a gRPC "unimplemented" error. Anthony swaps in his own pre-funded credentials to rule out the wallet as the problem, but the same error reappears. The trio works through hypotheses ranging from pnpm-versus-npm differences to network instability, eventually deciding to keep moving forward and use Anthony's existing identity ID rather than blocking on this step.

### 00:55:00 - SDK Version Mystery and the Caret Resolution Bug

Investigating further, Rion asks which SDK version they are running, and Monarch discovers npm has installed a strange PR-tagged version (182511) rather than the expected dev release. After clearing node_modules and explicitly pinning to dev10, then upgrading to dev15, Monarch finally gets a successful identity retrieval response.

The group works out that the caret-based semantic version range, combined with the alphabetical comparison treating the letter "p" as higher than "d," was causing npm to resolve to a pull request build instead of the intended dev branch. Rion flags this as a future concern even after they move from dev to alpha branches, and Anthony commits to handling it in the tutorial setup. Monarch's diagnosis of the alphabetical fallback gets traced as the likely culprit.

### 01:11:45 - Wrap-Up, Contribution Paths, and Closing Reflections

With the session running long, the group plans a follow-up episode (1B) to continue the walkthrough, establishing a precedent of using numbers for different testers and letters for continuation episodes. Monarch asks how someone could get involved contributing code to Dash, and Rion offers concrete examples like building a more reliable faucet, encouraging him to chat offline about ongoing needs.

Rion provides a useful high-level summary of what Dash Platform actually offers: testnet servers run by Dash Core Group, paid data storage that functions like cloud storage without account registration, and roughly thirty cents per stored payload on mainnet. Monarch closes by praising the tutorial's balance of hands-on practice and theoretical grounding, while suggesting that glitchy steps should carry transparency warnings so users do not blame themselves when testnet misbehaves. The episode ends at 01:22:20.

## Transcript

[00:00:02] - Anthony Campolo
Alright, welcome to the first episode of our new series, Dash Platform Walkthroughs.

[00:00:08] - Monarch Wadia
Oh yes.

[00:00:09] - Anthony Campolo
We got Monarch Wadia as our first guest. What's up, Monarch? You want to give a little intro? Who you are, what you do?

[00:00:16] - Monarch Wadia
Hey Anthony, thanks for having me here. I am a software dev. I've been working in full-stack web for 12-ish years or so. I've never touched crypto. So this is the first time that I'm actually touching crypto as a developer, which is exciting. Most of my work is like React, TypeScript, Node, but done a bunch of Java, that sort of thing.

[00:00:37] - Anthony Campolo
Sweet. And then Ryan, do you want to talk about this new series we're launching?

[00:00:42] - Rion Gull
Yeah, we've talked about it a little bit before already, so we don't have to say much about the series. I mostly just wanted to get to know Monarch a little bit more in detail before we jump right into what we're doing. But what we are doing, what we will be doing eventually, I would say maybe in about 5 minutes or so, as we'll jump into a tutorial where we're just gonna— Monarch's gonna lead the way. He's going to basically perform the live QA. Yeah, yeah, like the action that, that a developer might do off-screen. We want to get it on-screen so that we can see how the experience goes with developers using our Dash platform product and tutorial. But yeah, before we jump into that, Monarch, I don't know you at all. The only way I know you is through Anthony and getting this live stream going. But I'd like to know a little bit more about just your technical background. You said you have 12 years of experience, and what specifically are you usually working on?

[00:01:54] - Monarch Wadia
Yeah, I've been— I started off with a lot of front-end stuff back before React was really a thing. And when React became popular, my boss at the job I was working at the time said, hey, We don't really trust this new thing called— I think it wasn't even Redux. It was the thing that came before Redux back then. We don't really trust it. Why don't you just implement your own state management from scratch? So I got into React and I built my own Flux architecture from scratch. That was kind of fun. So after that, I sort of moved more towards the backend, did a bunch of Ruby on Rails, was an architect at Ericsson. For a while, leading all the frontend projects. Then I forked off and started my own business, did my own business for the last 6 or 7 years. I ran 2 software development firms, I ran my own startup called MintBean. And that's—

[00:02:51] - Rion Gull
Sorry, what was the startup called again?

[00:02:53] - Monarch Wadia
It was called MintBean. So it was a hackathon platform. We'd get, at the peak of it, we'd get about 800 developers registering for our hackathons a week, which was—

[00:03:04] - Anthony Campolo
And this was how me and Monarch knew each other is Redwood did a hackathon and then that's how we met. And then eventually my first company, StepZen, did a hackathon also with MintBean. It was awesome. It was like such a cool experience. And so we've kind of been buddies ever since.

[00:03:20] - Monarch Wadia
Yeah. Yeah. Good times. It was a lot of fun. Yeah. So, uh, we built the whole platform in GraphQL and TypeScript and Node and deployed it on AWS. Had the community working on the platform, hired from the community as well, had about 10,000 people overall in the community at peak. All of them software engineers, all of them, most of them from boot camps, that sort of thing. So that was, that was a lot of fun. Made me realize that I'm really technical and I don't necessarily want to do the CEO job forever and ever and ever. So Yeah, that's why I'm doing more geeky stuff these days. Anthony and I have been collabing on some LLM stuff, which has been really awesome and fun. So that's sort of what I'm up to these days is largely—

[00:04:07] - Anthony Campolo
Yeah, you got an open source library, RAGged.

[00:04:11] - Monarch Wadia
Oh yes, I just did a whole overhaul over the weekend. So I just deleted everything and just started from scratch. It's so much better now. Yeah, yeah, yeah.

[00:04:20] - Rion Gull
Wow, that's quite the list of accomplishments. So you're You're both on the technical side. You ventured into the entrepreneurial side. You don't like the management as much as the technical, but it looks like— are you still doing anything with that hackathon software, or has that just been retired?

[00:04:40] - Monarch Wadia
Oh, that retired a couple of years ago, but thanks for asking. It was a lot of fun. Never going to do that again. It was a lot of fun, but yeah, it was the energy over there.

[00:04:51] - Anthony Campolo
I can only imagine.

[00:04:53] - Monarch Wadia
Yeah, yeah, yeah.

[00:04:54] - Rion Gull
All right, well, I guess, um, maybe now's a good time to jump into the tutorial then and kind of see— I have a better frame of mind of who I'm talking to and what kind of experience you have. So this will be— it should be good.

[00:05:09] - Monarch Wadia
Sweet.

[00:05:10] - Anthony Campolo
Yeah, so, um, if you scroll down just a little bit, we don't need to read the whole intro because we'll be kind of talking you through everything. So you're gonna want to just run each of those commands unless you already have a directory set up.

[00:05:23] - Monarch Wadia
No, I have nothing set up right now.

[00:05:25] - Anthony Campolo
So actually, sorry, perfect. So just run through them. So this is doing— this will set up your projects, initialize your package.json, and install the one and only Dash Platform dependency.

[00:05:41] - Monarch Wadia
So I'm going to be working inside VS Code for most of it, or it's not all of it.

[00:05:46] - Anthony Campolo
Yeah, pretty much all of it. Yeah, there's some times where you'll have to reach out to a browser once or twice to seed your wallet.

[00:05:54] - Monarch Wadia
Gotcha.

[00:05:55] - Anthony Campolo
Also, you shouldn't use pnpm. You should just run the commands as written.

[00:06:05] - Monarch Wadia
Ah, okay.

[00:06:06] - Anthony Campolo
Yeah.

[00:06:07] - Monarch Wadia
So, let's see. npm init.

[00:06:10] - Anthony Campolo
This is a trick I learned from you. How to set your type to module with a command.

[00:06:15] - Monarch Wadia
Oh, that's neat. Does that actually persist to your package.json? Yeah. Okay, sweet. Let me—

[00:06:26] - Anthony Campolo
So check your package.json.

[00:06:28] - Monarch Wadia
Yeah.

[00:06:29] - Monarch Wadia
Oh, look at that. Hey, thanks for that tip, Anthony.

[00:06:31] - Monarch Wadia
That's awesome.

[00:06:33] - Monarch Wadia
I'm gonna have to put that in my back pocket. So, I'm installing Dash 1.0.

[00:06:41] - Anthony Campolo
Yep, exactly. Uh-huh.

[00:06:43] - Monarch Wadia
Uh, I'm gonna take a look at Dash. Is this us?

[00:06:51] - Anthony Campolo
Yep, that's it.

[00:06:52] - Monarch Wadia
Yeah, nice. You guys landed the best package name ever. That's awesome.

[00:06:58] - Anthony Campolo
Yep.

[00:07:00] - Rion Gull
Yeah, we got—

[00:07:01] - Anthony Campolo
Dash is old.

[00:07:02] - Rion Gull
We've been around for a while, actually. Dash has been around for— over 10 years.

[00:07:07] - Monarch Wadia
Ah, gotcha.

[00:07:09] - Rion Gull
So it was one of the earliest projects.

[00:07:13] - Monarch Wadia
Gotcha. Uh, quick question, um, do you want me to follow the tutorial the way I normally would, or do you— is the goal over here to, well, take a look at the tutorial and run through the tutorial?

[00:07:25] - Anthony Campolo
We can go wherever direction you want in terms of like you want go to different links and look at different stuff. Um, we should follow the steps as closely as possible up until we get to a point where you can start deviating from it, which we can do at certain points along the way. But the most important stuff is going to be like the setup commands and things like that. And you won't find this stuff in the Dash docs. It's kind of like the point of this tutorial. So the idea is to see if this is gonna just like work as you go. So, uh, if you skip steps, do it at your own peril.

[00:07:57] - Monarch Wadia
Gotcha. Okay, and, and that way we won't really be queuing the document either. So, okay, I'll try and, uh, satisfy my intellectual curiosity quickly and on the side, but I'll follow the tutorial as it presents itself. Uh, so then we could get ignored.

[00:08:15] - Anthony Campolo
I mean, it would be interesting. I imagine that, um, that's probably an issue because of Windows.

[00:08:22] - Monarch Wadia
Yeah, uh, wonder if, uh, wonder if Just putting that in like a separate thing, like a separate Markdown block might help. Yeah. Anyway, I'll just fix this on my end. Cool.

[00:08:42] - Anthony Campolo
Yeah, this is mostly just to do your basic kind of gitignore setup and keeps you from accidentally committing your keys, which at this point is not a huge deal because platform is all— there's no real real money that you're using, but at a certain point it will be, and that will be quite good.

[00:09:04] - Monarch Wadia
So we'll create each script file individually.

[00:09:10] - Anthony Campolo
Yeah, so actually I'll just let you read and go and see if this makes sense.

[00:09:17] - Monarch Wadia
Sounds good. I recommend adding all the Node scripts that we implemented by the end of the tutorial. Okay. So, this is— this looks like the package.json. It doesn't say that it's package.json, but it's pretty clear that it is. Okay. So, here—

[00:09:44] - Anthony Campolo
I'll add a little open package.json right above it.

[00:09:51] - Monarch Wadia
That's good. I'm gonna see description, keywords, author, license, type, dependencies is important, and scripts is important. So, I'll take those. And get block methods. Huh. Node and file is.n. And then there's scripts slash. Ah, okay. So, we'll be adding these scripts.

[00:10:17] - Anthony Campolo
Oh, can you check your Node version real quick? Node-v.

[00:10:24] - Monarch Wadia
Okay, great.

[00:10:26] - Anthony Campolo
Cool. I should add that Node 20 is required.

[00:10:31] - Monarch Wadia
Yeah.

[00:10:32] - Anthony Campolo
Says that explicitly anywhere?

[00:10:39] - Monarch Wadia
So initialize Dash client and create blocks. I'll create a scripts directory for Scripts, so scripts and API, and network will be set to testnet via network environment in.env. Okay, so, uh, gotcha. So let's see what we did. So API and scripts, and this should be empty. Yep, and.env should have network equals testnet. Yep, so import Dash from Dash and pass the project's network in. Okay, I see, and wallet configurations through Dash's client constructor. Okay, so I'm gonna, I wanna see how it feels under my fingertips.

[00:11:39] - Anthony Campolo
So, yeah, if you want to like console.log stuff out or things like that to kind of explore the code, you feel free to do that as you go.

[00:11:48] - Monarch Wadia
Yeah, yeah, I'll probably do that.

[00:11:57] - Monarch Wadia
So, and then no.

[00:12:13] - Anthony Campolo
Yeah, it's not in TypeScript. Sorry.

[00:12:15] - Monarch Wadia
Gotcha.

[00:12:16] - Monarch Wadia
No problem.

[00:12:17] - Rion Gull
You know, it should be, though.

[00:12:19] - Anthony Campolo
There should be a way to get the types anyway.

[00:12:23] - Monarch Wadia
Yeah. No.

[00:12:26] - Rion Gull
It is— the intention is to have it give the TypeScript types. So, if it's not, then we need to fix something.

[00:12:36] - Monarch Wadia
I might just not have done the npm install. So—

[00:12:39] - Anthony Campolo
no, it's the project is really not configured for TypeScript. So, if they haven't made it so you get the types anyway through JavaScript, then I would— oh, look at that.

[00:12:52] - Monarch Wadia
Yeah. It will have some default stuff. But I agree.

[00:12:55] - Anthony Campolo
So, you do have things in there.

[00:12:56] - Monarch Wadia
Cool. Yeah. Okay. Capital C. And yep. We're actually pretty good.

[00:13:07] - Anthony Campolo
So, I didn't need to include a TypeScript dependency.

[00:13:11] - Monarch Wadia
That's so nice. Well, name is null.

[00:13:18] - Monarch Wadia
And a phone number is true.

[00:13:29] - Monarch Wadia
Yep, sweet.

[00:13:32] - Monarch Wadia
So we have the Dash client set up. We haven't created a wallet, so mnemonic is set to null to indicate we want a new wallet to be generated. To get a new address for an existing wallet, we'll replace null with an existing wallet mnemonic. Okay. Is a wallet mnemonic an ID or is it more of an authentication method?

[00:13:54] - Anthony Campolo
It's an authentication method. You're going to get a mnemonic and also an ID when you create your wallet.

[00:14:01] - Monarch Wadia
Gotcha. So mnemonic is like my password.

[00:14:04] - Anthony Campolo
Yeah, it's 12 random words. This is kind of a crypto convention. If you were to use MetaMask, which is Ethereum-based, when you start, that's the first thing they do, give you 12 words. Some of them make you write them back to you. Or say like what was the first, what was the last, to make sure you actually saved it. Everything we're going to do here, all the keys will be exposed. So that's— you don't really want to like use this wallet for anything. Like we said, there's no actual— this is all testnet still, so it's not really a big deal.

[00:14:31] - Rion Gull
But yeah, so I'll say a little bit more about that. Um, the mnemonic is 12 words. Um, it's not exactly random. It's a— it's 12 words from a dictionary of I believe maybe 4,096 or one of those powers of 2, and I don't remember exactly how many, but it's in the thousands of words that are possible. And it's essentially a seed that you use. It's a random seed that— but instead of zeros and ones, you start with 12 words because It's a way for you to— a lot of stuff is derived from the 12 words with different algorithms. But because this will be one of the things that's deriving is private key, public key pairs, many of them potentially. And because there's value in there, you know, when you, when you have private and public keys, it can be used for lots of different things. One of those things that it's used for is to store— like, that's how you actually transact value on the blockchain. So stop me if you don't, uh, if you want some more, um, detail on, on any of this. Like, the public-private key pairs, I'm sure you're familiar with, uh, from a development standpoint. But in, um, yeah, in cryptocurrencies, they're used primarily to derive private key and public key pairs. And so because that will eventually or potentially have value on it, you— it's put in the, the 12-word format so that it's easy to like copy down and back up. As, uh, you know, write it like physically writing it down on a piece of paper and then importing 12 words into a wallet, for example, from a written down piece of paper is easier than zeros and ones or Is and Ls and things like that. So that's, that's the whole purpose behind the specification. There's, there are a lot of technical specifications that go around these 12 words, but, but yeah, it's, it's pretty involved, but that's kind of the basis of this.

[00:16:53] - Monarch Wadia
Gotcha. Yeah, I was doing the, I was trying to do the math in my head, so that's what, uh, some number followed by, uh 3 times 12 zeros, so something followed by 36 zeros is the kind of entropy we're talking about. So that's interesting.

[00:17:10] - Rion Gull
Yeah, and if you just want to open up a new tab just so that you have this in your browser history, if you want to look at more, go ahead and look, go to github.com/hive and, um, yeah, with that Yep. And so if you know AJ O'Neill, one of the hosts of JavaScript Jabber podcast, he's done a lot of the low-level work in building libraries that— and documentation that discuss in detail what a lot of this is all about, specific to the Dash cryptocurrency. But the 12-word concept is not specific to Dash. It's just there are certain bits and whatnot that Dash uses that other cryptocurrency doesn't. Like, there are certain ones that each cryptocurrency will have their own bits for certain things. But you can look at a lot of this stuff if you're ever interested. Like Dash Phrase is the one that we're talking about right now. That's a library that generates this 12-word phrase. And you can kind of see, yeah, documentation about that. If you're interested. And then the other Dash Hive libraries build on that concept, derivation of the keys and whatnot.

[00:18:33] - Monarch Wadia
Gotcha. That's neat. Very cool. Thanks for the walkthrough. That's actually super useful. A lot of people think it's just theory, but really that's how you orient yourself. So this is kind of giving me my bearings. Thanks, Ryan.

[00:18:51] - Rion Gull
Yeah, you bet.

[00:18:53] - Monarch Wadia
Yeah, I see what you mean. So this will get turned into some sort of, uh, and if you could bump up your font, um, just for anybody that might be watching.

[00:19:04] - Rion Gull
We do have at least 5 people watching, so who knows.

[00:19:07] - Monarch Wadia
Yeah, 100%. Who knows how many in the future.

[00:19:12] - Rion Gull
Uh, so the, the Zoomonic thing is just, yeah, like that's a play on words for the mnemonic and using a test case for the words. Zoo is one of those permitted words in the dictionary. You'll notice at the very end it says wrong. The reason for that is that there's actually a checksum involved. That zoo, zoo, zoo mnemonic is derived from some other random number. It's the FFF, the input entropy right there. If, if that's your— if that's obviously not random, but if you did use that as your input, uh, entropy, then the recovery phrase that you get from that is that zoo, which you can imagine that that's because F is near the end of a list and Z is near the end of an alphabetical list. Um, but the wrong at the end is just how the checksum works. So I won't— we won't go into all that detail, nor do I really know all the detail But it's there for you if you want. So that's a mnemonic that's primarily used for test cases.

[00:20:24] - Monarch Wadia
Gotcha. And what's the seed?

[00:20:28] - Rion Gull
So the seed is— so the 12-word thing, and it's fine that we're spending some time on this because it's an important key concept. The seed— so the 12 words is called a seed phrase. And the seed phrase ultimately gets translated into a seed, which I think is— I don't know what that looks just like hexadecimal to me. But yeah, that's derived from the seed, and that's what's actually used to seed the key pairs. So it's kind of like if you take— if you think about it as a pipeline, you have input entropy that comes into the pipe and then through an algorithm that, that spits out a recovery phrase so that users can have a user-friendly 12 words to work with instead of writing down any kind of hexadecimal or other alphabet for their backup. And then this secret salt is, is one of the things that goes into the algorithm as well. And then further down the pipe, then it, it pumps out a seed. So I believe that this This library, this particular library, is focused on just that small part of getting whatever device you're using would create some input, a random input entropy, and then it would go through the algorithm. It might use some certain defaults like the secret salt of Trezor. Trezor is a company that created this specification, among other things, hardware wallets, things like that. And then the seed is what you get out, and then you would take that seed and then you'd put it into a different library that would use the seed as an input to create the private-public key pairs, for example. So this is sometimes done all in one library, but the way that AJ made it, he just wanted to so that it's more understandable and more of a Unix philosophy, doing one thing with one library. That's what you would then get out of this library is the seed, but that would be the input to another part of the process.

[00:22:43] - Monarch Wadia
Makes sense. This almost feels like the future of passwords, to be honest. Yeah. Coming from someone who's more of a traditional web dev, this is the like a neat solution for a lot of problems. But yeah.

[00:22:58] - Rion Gull
Yeah, AJ is one of the, one of the biggest cryptocurrency skeptics around. And he, he, he says that this is one of the best things that the cryptocurrency industry has actually developed is these standards around 12-word key seed phrases and the, the subsequent creation of what's called hierarchical deterministic key generation. So from these 12 words, you can couple that with a, uh, what's called an HD path, a hierarchical deterministic path. And that's a different library. If you, if you looked into that, I think that's called Dash— it's either called— it's the, the next library built on top of this would probably be Dash Keys, and then on top of that is, is called Dash HD. And that Dash HD is the thing that then takes those key pairs and makes deterministic key pairs based on a path that's cryptocurrency agnostic. So you could have these 12 words, and then those 12 words could create Bitcoin addresses, Ethereum addresses, Dash addresses. Any cryptocurrency addresses, or even just things that you might not use cryptocurrency for, cryptocurrencies you could, you could put as part of the HD key path. And so that way you would have, you could have a whole password management system based on this concept of HD keys and deterministic keys built on those, on that 12-word phrase. And so that you could, you You could literally have like all of your life's passwords derived from a single 12-word key phrase, including cryptocurrencies of every flavor. So we went a little bit deep in that, but there you go.

[00:24:59] - Monarch Wadia
No, that's fascinating. It's fascinating. So you could actually build a password manager where the input is a deterministic input. And there's deterministic output. So you could maybe hash together your input pair, your input 12 set and the domain that you're trying to log into. And then you get a deterministic password for that domain. Like I sort of, I think I see where that's going. That's really neat.

[00:25:28] - Monarch Wadia
Yep.

[00:25:29] - Rion Gull
And I think there are some people that have done this. And so it's, you know, with 10 years of this specification, there's been a lot of work, but it hasn't really crept into the, the Web2 space as much as it might in the future. But yeah, maybe, maybe we can head back to the tutorial then. Now I just wanted to give you some more context behind that 12-word stuff.

[00:25:54] - Monarch Wadia
Gotcha. Thank you. That was— you are enriching my life, so thank you.

[00:25:59] - Monarch Wadia
Yep. Cool.

[00:26:02] - Monarch Wadia
I guess we were setting mnemonic to null and Now that I know what that mnemonic is, it makes sense. Offline mode is true because we don't want to sync the chain. Only use when it's null. Okay. So we're basically in dev mode right now with mnemonic and offline mode. Is that right?

[00:26:24] - Rion Gull
The way that this library works, which is not something that we've developed, this is something that a different organization within Dash has developed. I think that their use of the those, um, those, uh, option— that option, uh, object is that if you have null for the mnemonic, the library is going to create a 12-word phrase for you. But if you already had a mnemonic, you could put that in there and then it would, it would use that.

[00:26:53] - Monarch Wadia
Gotcha.

[00:26:54] - Rion Gull
Okay, so I'm not exactly sure what the offline mode does.

[00:27:03] - Monarch Wadia
Get best block hash returns block hash of the chain tip. I guess this is describing— this is a bit of a non sequitur over here. All of a sudden I'm reading things that I haven't seen before. So this get best block hash returns block hash of the chain tip. That's—

[00:27:29] - Anthony Campolo
this is explaining the code that's coming up, so I should put it after the code is what you're saying?

[00:27:35] - Monarch Wadia
Yeah, I think so.

[00:27:37] - Anthony Campolo
Okay, so yeah, you just realize the code first and then reorient yourself.

[00:27:42] - Monarch Wadia
Yeah, so, so inside here. Oh, okay, gotcha.

[00:27:51] - Monarch Wadia
Um, Gotcha.

[00:27:56] - Monarch Wadia
So if I drop this into get block methods and at this point it's DAPI client methods. Okay. Getting DAPI client.core. Getting block hashes and block weights, or block by height.

[00:28:30] - Monarch Wadia
Okay, and all right, I see.

[00:28:37] - Monarch Wadia
So get best block hash returns the block hash of the chain tip. Block hash returns the block hash of a given height, we're not passing in a height right now, position of block and chain, first block, whatever, mine is a height of 0, okay I see, subsequent block is added, increases height by 1, okay, so it's getting best block height would be I guess the absolute, like the current height, I guess, yeah, this is—

[00:29:17] - Anthony Campolo
I went back and forth whether we would leave this in the tutorial or not. It's kind of a way to just query it, so it's like a good kind of first step, but it introduces a whole bunch of terms and jargon that kind of takes a while to understand. So, um, it might make more sense to just kind of have a link there to the docs and say, if you want to learn more, click here, then kind of have this in here.

[00:29:38] - Rion Gull
It could be something that we could hide behind a, you know, a details triangle.

[00:29:44] - Monarch Wadia
Yeah, I think a diagram would be helpful because what I'm like, I'm not sure if this is a 2D space or a 3D space or if it's just like, you know, chain of blocks.

[00:29:54] - Anthony Campolo
It's a linked list.

[00:29:56] - Monarch Wadia
Okay, so it is like a spinal column. Cool. And since it's a linked list, I can get the thing at the tip. Okay, so it's the tip of the linked list. Get the block hashes. I don't know what these things are doing, so I guess you can move on because the code is there. So fetch the specific block by its height, print bufferized block instead of corresponding block hash. Yeah, this is also— not sure why this needs to be done, not sure why any of this needs to be done. So yeah, expandable column would be amazing. And then I do get block methods.

[00:30:41] - Monarch Wadia
Okay.

[00:30:49] - Monarch Wadia
So no idea what that did, but okay.

[00:30:53] - Anthony Campolo
Yeah, let's keep going. The wallet one will hopefully make a lot more sense. Let's just skip past this part.

[00:31:00] - Monarch Wadia
Sounds good. So, get block hash. We're trying to say buffer object. Okay. So, buffer. That's bytes. Okay. Get block hash. And it returns the— so that's the block that I got, and then the hash of the block, it's a hex string, that's the hash. Okay, and get_best_block_hash returns the hash of the latest block, just the current state. Okay. Gotcha. Okay, gotcha. And this is at height 1, but that's like ancient history, right?

[00:32:00] - Anthony Campolo
So if you read the last sentence in that block, it says this— it's the first block after the genesis block. So every blockchain, when it starts, it has its first block that records, you know, the, the block, the thing the chain has started. And then people make transactions and those get recorded on new blocks that then stack on top of each other over time. So this kind of is written to assume that you know what a blockchain is. I should also probably put a little link to be like, here's what a blockchain is. You know, and none of this stuff is really like necessary for the tutorial. It's more so to if you want to get some insight into what's actually happening on this blockchain before you create a wallet and start throwing money on it and interacting with it. Here's some stuff you can kind of do to inquire into it, but it really makes more sense to kind of bump around and a platform explorer, which we're going to do later. So yeah.

[00:32:52] - Monarch Wadia
Gotcha. So all of this is describing the what, but the Dash blockchain— no, sorry, no, no, but what I'm trying to say is that this is describing the what but not the why. Correct. Yeah, I know what it's doing, but I don't know why we're doing it yet. So I'm assuming that'll sort of reveal itself as we go, but just, just Just feedback and notes, that's all.

[00:33:15] - Monarch Wadia
Yep, yep.

[00:33:17] - Monarch Wadia
Create wallet. And do we need, quick question, do we need all 3 functions over here and then all 3 functions over here? Do we need all?

[00:33:32] - Anthony Campolo
So this only, this is just gonna do a single thing and create wallet. So these will all be kind of more single use than the get block methods. So this one is, which is gonna do, it's gonna create something for you, then it's gonna console.log two things. So, it's only running a single function to do that.

[00:33:51] - Monarch Wadia
Gotcha.

[00:33:53] - Anthony Campolo
So, go back to your terminal output.

[00:33:57] - Anthony Campolo
Yeah.

[00:33:57] - Monarch Wadia
Yeah.

[00:33:57] - Monarch Wadia
There you go.

[00:33:58] - Anthony Campolo
So, you're gonna wanna copy paste that and put it in your.env, which may or may not be written. I'll make sure it is if it's not.

[00:34:08] - Monarch Wadia
Yep, it's there. You got that one.

[00:34:10] - Monarch Wadia
Great.

[00:34:11] - Anthony Campolo
That's going to be a recurring pattern as we go. You're going to be running these commands and get this info back. It's written in a way where you should be able to just copy paste what you get out because it's giving it to you in this format. It's trying to make it as error-proof as possible for people who are running through this. Every time you run a command, you have to be like, here's what you need to find in the output and then copy paste it into.env. It adds more steps which can help with learning but also makes it much harder to ensure that things aren't going to go awry along the way.

[00:34:45] - Monarch Wadia
Makes sense. I wonder if this could be wrapped into a CLI of some sort. But I digress. This is— this makes sense so far. I'm not a— I'm not a super huge fan of different one-off scripts for different sections. I don't know if we're going to go back and use create wallet anytime in the future or use get block methods anytime in the future, but if these are one-offs, then might be better to just do all the one-off stuff in one script and just get that out of the way. Maybe just a thought.

[00:35:23] - Anthony Campolo
Well, then, yeah, so yeah, I think we should, we should revisit that once we're further in and you kind of see what's, what's happening in terms of each of these and what they're doing. I think it'll make more make more sense still as, as we go. And then you can kind of let me know how you would actually want it to be structured, because if you— if we did that, everything would be in a single file.

[00:35:42] - Monarch Wadia
If we did that, everything would be in a single file. Yes. Yeah, exactly. And that might just be— I mean, it depends on what your goal is. If your goal is to— if you're assuming that the person going through this has a large amount of time and patience and for whatever reason, then maybe they're working on it, or maybe, you know, they're getting paid to go and QA the tutorial like I am. But if, if I was just somebody coming here and trying to set up something on the platform, then I may or may not have the patience to go and actually find out what all these things are doing. So it's not the, it's not the most gentle learning curve.

[00:36:23] - Anthony Campolo
That there's Well, well, it's a gentle learning curve since that's slow.

[00:36:27] - Monarch Wadia
We—

[00:36:28] - Anthony Campolo
you can— so that at the very beginning of the post, there's a link to the repo. So if you want to just clone the repo and play with it in its finished state, that's an option as well. So the point of this tutorial is kind of to make every step explicit so that you can learn it as you go, not necessarily get me to the end as quick as possible. Makes sense.

[00:36:54] - Monarch Wadia
It does.

[00:36:54] - Anthony Campolo
So, and, but it, I do agree that there should be a way just like kind of do like clone this thing, get, run this command to spin it up, and then you could just do a couple steps and kind of get to the end product. There'd be like a, a kind of cheat sheet maybe at the beginning that would just give you a really, really condensed version. Probably be good.

[00:37:14] - Rion Gull
Yeah, it's hard writing these because you don't, you know, the different people have different goals and both on both the producer side and the consumer side.

[00:37:25] - Anthony Campolo
We actually— what I'd like to look at, we go to dash.org and just compare this, like, the official docs. It's, it's similar but has a couple slight differences. So zoom in a couple, and then we're gonna go to Developers in the top, I think, and then Documentation. Yeah, Platform, the middle one.

[00:37:42] - Monarch Wadia
Yeah, cool.

[00:37:45] - Anthony Campolo
So go to Tutorial Introduction. Yeah, and then bump your font up. Yeah, so what this does is it breaks each step up into— so if you go to connect to a network, this will give you the first script, I think.

[00:38:06] - Rion Gull
So basically Anthony's tutorial is this, this tutorial, um, somewhat modified.

[00:38:15] - Anthony Campolo
Yeah, so you see here that they sort of set it up also as one-off scripts, but they also put the client in each script in general. So I've already abstracted some things into my version that makes it more— make more sense as a unified project, because otherwise if you were to copy paste the code straight from here, things get— you get very confused very fast because you have all these different client objects around. So, um, there would be ways to consolidate the script functionality, but every script is kind of important. Not necessarily— some scripts could be skipped, and there's even more in this docs that I didn't include, but it's kind of like more of an API reference that also goes in a sequence that you could follow, like a tutorial.

[00:39:05] - Monarch Wadia
Hmm, understood. Yeah, I think, I think your documentation is way more detailed than what I'm seeing over here because over here it's just saying do this stuff, but these are just magic words. Meanwhile, what I'm reading over here is actually way more— where'd it go? Like, this is way more detailed and this is way better in my opinion.

[00:39:25] - Anthony Campolo
Well, I'm glad to hear that. Thank you.

[00:39:27] - Monarch Wadia
Yeah, like, I'm looking at this going, what?

[00:39:32] - Anthony Campolo
So yeah, yeah, it took me a little while to figure it out and I had like 2 years of Web3 blockchain experience already. So can you imagine?

[00:39:41] - Rion Gull
Yeah, this is the, this is the big challenge here is we're trying to, we're trying to get a tutorial that introduces Dash Platform to developers. And those developers are going to have different, different purposes, different desires, different styles that they like. So it's impossible to please everyone, but what we'll do is, you You know, you're the first, Monarch. You're our guinea pig. Um, but, um, we'll probably do at least 5 before we make any serious— well, not at least, but we'll want to get a good broad lay of the land about like what people's experiences. Um, and then we'll make some changes based on at least a few.

[00:40:23] - Anthony Campolo
Um, a couple changes I'm already pushing, like a couple changes we can make, things that need to be pointed out. But if there's any like broad structural changes we want to make and people suggest or desire or something, then that could definitely be possible. Or just create another one that is also what some people want, because some people might like this one, or some people might want to be slightly different.

[00:40:42] - Rion Gull
So, okay, see, so let's, uh, keep plugging along and then we'll, you know, we'll, we'll see how far we can get. And it might make more sense why things were done a certain way at the end.

[00:40:55] - Anthony Campolo
Yeah, so this part's pretty important. You gotta go to the testnet. So scroll up a little bit.

[00:41:01] - Monarch Wadia
Yeah. All right.

[00:41:04] - Anthony Campolo
Yeah.

[00:41:07] - Monarch Wadia
Sorry, I'm just going to go and do this. This thing. Okay.

[00:41:11] - Anthony Campolo
Yeah, ideally it would be easy to just Google the testnet and find it, but that should open a link for you if you click it.

[00:41:19] - Monarch Wadia
Yeah, there you go.

[00:41:20] - Anthony Campolo
And it might take a second to load or possibly crash.

[00:41:23] - Monarch Wadia
So sounds good.

[00:41:27] - Anthony Campolo
Yeah. So this also happened to me. Oh, really? So copy paste the URL, but take off the HTTPS. Like just do the thing and then try rerunning that.

[00:41:42] - Monarch Wadia
Yeah.

[00:41:42] - Anthony Campolo
Because they're freaking HTTP, HTTPS is all messed up. It's been like that for a year and a half.

[00:41:48] - Monarch Wadia
Yeah.

[00:41:49] - Rion Gull
At some point we need to have a better faucet experience for sure. We'll deal with it for now.

[00:41:55] - Anthony Campolo
So now you got to put your— okay, so go back to your wallet and copy paste the address. Yeah, so your wallet address right there, and then that's what you got to put in at the very top.

[00:42:07] - Monarch Wadia
Yep.

[00:42:08] - Anthony Campolo
And that gets you the coins. This is like the step where the most error could be added in, and I wish there was a way I could just— there probably is, but I want to see how they're doing the API call and literally just build that also into a JavaScript command.

[00:42:23] - Rion Gull
Yeah, we'll work on this.

[00:42:26] - Anthony Campolo
Because what's going to happen now, this is actually the last time I used this, this was able to complete. What it used to do is it used to then crash when it completed and you got the money. So you'd get no feedback and it would crash. You would think it'd be broken, but you would get the— let's see what happened.

[00:42:43] - Monarch Wadia
I think exactly what you said.

[00:42:44] - Anthony Campolo
Yeah. So when I did, it actually refreshed and worked and told me how much it gave me. But that seems to be a rare occurrence. But I think you do. You did get it. So let's go back to the post and then go to the Dash. Click the other link.

[00:43:02] - Monarch Wadia
Yeah.

[00:43:02] - Anthony Campolo
And then put your— add the same address that's in your clipboard.

[00:43:06] - Monarch Wadia
Yeah.

[00:43:07] - Anthony Campolo
Search for that.

[00:43:08] - Monarch Wadia
Uh-huh.

[00:43:09] - Monarch Wadia
Nothing yet.

[00:43:11] - Anthony Campolo
So, if you refresh—

[00:43:15] - Monarch Wadia
let's see.

[00:43:16] - Anthony Campolo
Just make sure. Double check that that's the address that you had in your.env.

[00:43:27] - Monarch Wadia
Okay.

[00:43:27] - Monarch Wadia
Yeah, it definitely is.

[00:43:36] - Anthony Campolo
Okay, well, let's keep going.

[00:43:38] - Rion Gull
And if it's the faucet, it didn't work. It would have been there by now. So we got to do that again or something.

[00:43:47] - Monarch Wadia
Sounds good.

[00:43:47] - Anthony Campolo
Yeah, it's not going to work though if we do this. Let's see what happens though.

[00:43:54] - Rion Gull
Oh man, this is brutal.

[00:43:57] - Monarch Wadia
No, no, it's not horrible. I mean, no more Dash for you. I'm back in an hour.

[00:44:01] - Anthony Campolo
Yeah, so that's what makes you think it might be in there, but it's not showing up for some reason on the block explorer. Let's try to keep running through the commands. If things don't work, it'll tell us that you don't have funds.

[00:44:12] - Monarch Wadia
Gotcha. Sounds good. Is there a way to do this via the client in JavaScript?

[00:44:20] - Anthony Campolo
Not that I'm aware of. It's not in the documentation. If there is a way, that's why I was saying I needed to figure out how they're connecting to the faucet at all from the web UI and then try to— Let me look at that right now, actually.

[00:44:34] - Monarch Wadia
Gotcha, gotcha.

[00:44:35] - Anthony Campolo
Yeah, now this is— I've been saying I wish this part was nicer for a very, very long time. I've done my best with it.

[00:44:41] - Monarch Wadia
Here we are. You've done a hell of a job here because it's like reading this stuff is— if I'm going slow and I'm reading this, then there's a wealth of information over here. And I'm honored to be the guinea pig. And as a guinea pig, it's not that horrible. It's like, I can actually make sense of what's going on.

[00:45:02] - Anthony Campolo
Yeah, and ideally, yeah, if something doesn't actually go quite as planned, you can kind of compare to the screenshots and see what should be happening.

[00:45:10] - Monarch Wadia
Makes sense. Okay, so are we dead in the water until we finish this?

[00:45:16] - Anthony Campolo
Not necessarily. Let's keep going and then we'll know immediately if we need to send you stuff and we could, one of us could wire you some Dash. We could loan you some. Gotcha.

[00:45:30] - Rion Gull
Anthony, why don't you— while he's doing that, why don't you— can you try to, um, get some Dash to that address?

[00:45:39] - Anthony Campolo
Yeah, can you copy? So we need— we just need him to copy paste it into, um, the chat for us.

[00:45:46] - Rion Gull
I'll, I'll go ahead and go to the— I'll see if there's a different faucet that I can get working.

[00:45:52] - Anthony Campolo
I should have one that's Pretty much good to go.

[00:45:55] - Monarch Wadia
I just gotta—

[00:45:58] - Monarch Wadia
I'll also drop that in chat. Register my mnemonic and mnemonic seed. Okay, and then mnemonic in there. Skip synchronization. All right, okay, create file.

[00:46:53] - Rion Gull
It sounds— it looks like the faucet is using the address, the Dash testnet address, to determine whether people get Dash or not, rather than like an IP address. I don't know why I would do that. These faucets are old and made by other people than us as well.

[00:47:19] - Anthony Campolo
Were you—

[00:47:20] - Rion Gull
did you have any luck doing that, Anthony?

[00:47:24] - Anthony Campolo
So I'm— I think I'm gonna be able to send funds. Just give me one second. I'm gonna try and send him one Dash right now.

[00:47:29] - Rion Gull
Okay, so you maybe got some testnet Dash?

[00:47:33] - Anthony Campolo
I got some earlier today. I've got my whole wallet set up right here, so I'm just gonna see.

[00:47:37] - Rion Gull
I'm Just a second.

[00:47:39] - Monarch Wadia
The next step is a little messed up, too.

[00:47:57] - Rion Gull
All right, Monarch, so I'm now looking back at your screen. So what did you— what command did you run that didn't work? Wasn't happy.

[00:48:06] - Monarch Wadia
Create identity.

[00:48:08] - Rion Gull
Yeah, create identity is not going to work without Dash in the wallet.

[00:48:12] - Anthony Campolo
That's what we're trying to do right now.

[00:48:15] - Rion Gull
So that's— we are kind of dead in the water until we can get that worked out. But is the error at least clear?

[00:48:21] - Monarch Wadia
Let's see. Uh, ish. It says unimplemented, which I don't know what to make of.

[00:48:29] - Rion Gull
That doesn't sound like it's A payment issue then.

[00:48:36] - Anthony Campolo
Um, are you able to send him money, Ryan? You've done that for me before.

[00:48:42] - Rion Gull
Um, I don't have any testnet funds on me, or even an address, so I could give you—

[00:48:47] - Anthony Campolo
I mean, I can give you a.env as well. So how do you send funds when you do that?

[00:48:53] - Rion Gull
Um, I know our web wallet doesn't support testnet yet, but there are wallets that do.

[00:49:06] - Anthony Campolo
I just sent you everything in Discord with the wallet address and mnemonic and stuff. This has got like 4 Dash on it, I think.

[00:49:18] - Rion Gull
That's part of the SDK, Anthony, to answer your question. There's a way in the SDK to send funds, but I I'm trying.

[00:49:27] - Anthony Campolo
Yeah, I'm trying it right now. It's— I'm getting a weird error. It says permission denied. I'm not sure why.

[00:49:35] - Monarch Wadia
Okay.

[00:49:36] - Anthony Campolo
This is one thing that I did not put in the tutorial, which I'm realizing now probably should be.

[00:49:42] - Rion Gull
Because the faucets aren't reliable, that might be a good thing. But obviously the thing we really need to fix is the faucet itself. But we could go back and start the tutorial over getting a new mnemonic and address, and then the faucet might be—

[00:50:03] - Anthony Campolo
it might work. I mean, that's pretty easy. We just gotta run the create wallet command again. But, um, first we gotta go back to client and API and change, um, mnemonic to null real quick. Yeah, yeah.

[00:50:20] - Monarch Wadia
So, did that. Should I clobber?

[00:50:24] - Anthony Campolo
Yeah, might as well. Yeah.

[00:50:25] - Monarch Wadia
Yeah.

[00:50:26] - Anthony Campolo
Everything but network. Yep.

[00:50:29] - Monarch Wadia
I think everything else should be same, so. Yeah.

[00:50:34] - Anthony Campolo
So, you just gotta run the npm run create wallet.

[00:50:57] - Monarch Wadia
Then I take that, go to the faucet.

[00:51:22] - Monarch Wadia
You have to do the same thing you did last time.

[00:51:29] - Anthony Campolo
Yeah. All right, everyone cross your fingers.

[00:51:44] - Rion Gull
And then while you're waiting for that, you could just go ahead and go to the Explorer, which is—

[00:52:00] - Anthony Campolo
if this all— and if this doesn't work and we can't send him funds, what we can do is I can give him my wallet that I created and that I just sent to you, and he can run— go forward in the tutorial with that.

[00:52:12] - Monarch Wadia
Oh, I got it.

[00:52:13] - Anthony Campolo
It worked that time. Look at that. Sweet.

[00:52:16] - Rion Gull
Faucet gods.

[00:52:18] - Anthony Campolo
This is a, this is a common thing with Dash and blockchain stuff. Make sure you're copy-pasting the right, the right address.

[00:52:25] - Monarch Wadia
Um, I think I am.

[00:52:31] - Anthony Campolo
Let's try going to the actual Platform Explorer. So go to platform-explorer.com.

[00:52:50] - Rion Gull
I don't think— I don't know if this Platform Explorer—

[00:52:54] - Anthony Campolo
the link is, the link is in the is a little bit further in the tutorial. Hold on, give me one second.

[00:53:00] - Rion Gull
I don't know if it shows wallet addresses though, balances. I don't know if that's—

[00:53:05] - Anthony Campolo
oh, it is. Here's platform-explorer.com. Yeah, actually, you're right. You cannot.

[00:53:24] - Rion Gull
So I'm wondering, let's see, what's the explorer that you're using?

[00:53:29] - Monarch Wadia
The—

[00:53:30] - Rion Gull
not the platform explorer, but the core explorer. What's the URL on that?

[00:53:39] - Monarch Wadia
This one? Are you talking to me?

[00:53:41] - Anthony Campolo
Yeah, yeah, go for the first explorer you're looking at.

[00:53:46] - Rion Gull
Here, testnet.insight-eco.org. That's okay. I'm going to look at a different one. And then can you, Anthony, or Monarch, could you post the new testnet address in—

[00:54:14] - Anthony Campolo
I think I might know what the issue is. I think We should be using a different URL. Hold on. Yeah, go to explorer.dash.org/insight. Try that. Actually, just explorer.dash.org.

[00:54:31] - Monarch Wadia
Or explorer.dash.org.

[00:54:36] - Anthony Campolo
Yeah, see if this is different, if this works.

[00:54:41] - Monarch Wadia
No matching records.

[00:54:43] - Rion Gull
Oh, no, um, you go to this one. I'm going to post the link. Try it in that one.

[00:55:00] - Anthony Campolo
Let's see.

[00:55:04] - Monarch Wadia
Yep, there you go.

[00:55:06] - Anthony Campolo
Whoa, so what is this?

[00:55:09] - Rion Gull
This is, this is the, the best, um, testnet inside Explorer that I know of. So I'm not sure where the one was that you have in your documentation.

[00:55:19] - Anthony Campolo
I mean, so now I see all these things, all these go to the same site, they all have different URLs, apparently get back different information. The one that comes up first in Google was the second one, platform.

[00:55:31] - Rion Gull
Yeah, you're not going to want to use anything on Google because Google is going to be wanting— it's going to be trained to find the mainnet explorers, and we're dealing with testnets right now.

[00:55:45] - Anthony Campolo
So it used to work though with that link in the past. It's just not anymore, but it did in the past. I'm not really sure why that changed. Yeah, we'll need to have this link you gave me again. This is HTTP, so people are going to go to this link and they're immediately going to be told by their browser this is an insecure site.

[00:56:04] - Rion Gull
Yeah, take it up with Dash Core Group.

[00:56:10] - Anthony Campolo
I mean, in theory we should be able to host our own, and if, if we really want to be, you know, how hard would it be just to build in these couple things into Platform Explorer so you can actually see the addresses? Like, that's the thing to do. Platform Explorer is like That seems to be the thing. There's not gonna be a whole bunch of extra ones that work in different ways. It's gonna be like a single maintained thing.

[00:56:36] - Rion Gull
Well, in theory, this one's supposed to be maintained also.

[00:56:38] - Anthony Campolo
Anyway, we have the money, so let's, let's create the, let's create the identity.

[00:56:43] - Monarch Wadia
Cool. Yeah. Go here and I modify my client path to where it was, and then I— Seems better than the last time.

[00:57:21] - Anthony Campolo
Yeah, this one takes a while, so if it's hanging, that probably means it's gonna work.

[00:57:26] - Monarch Wadia
That's good news.

[00:57:27] - Monarch Wadia
Okay.

[00:57:40] - Anthony Campolo
So, Ryan, that link you had, where did you originally get that?

[00:57:44] - Monarch Wadia
No, I got errors again.

[00:57:45] - Anthony Campolo
Okay, let's see. Let's read it.

[00:57:48] - Monarch Wadia
Max retry is unimplemented.

[00:57:51] - Anthony Campolo
Hmm. Okay. This hopefully is just one of those errors that will go away if we try it again. This is the step that involves— sometimes things will just break for reasons that don't entirely make sense. And it's just because testnet is not very reliable. Put it that way.

[00:58:13] - Rion Gull
It is true. It is true. This looks like it's going to probably get the max retries again as well. So we'll keep trying for a little bit. Let's—

[00:58:29] - Anthony Campolo
looks like— yeah, I got you, Sanyam. Can we try this? Let's have you use my keys and see what happens. So I'm going to put these— actually, what would be the best way for me to send you a message, Monarch?

[00:58:50] - Monarch Wadia
Yeah.

[00:58:51] - Anthony Campolo
Well, do you want me to just— actually, let me just put this right in the chat. I think you should be able to just copy paste it.

[00:58:59] - Monarch Wadia
Should I hide these off the screen?

[00:59:01] - Anthony Campolo
You don't need to hide any of this stuff. This is all stuff that's totally fine to expose. So just go to the StreamYard. You can do all this on camera. It's fine.

[00:59:09] - Monarch Wadia
Okay. So, I'll drop— so, just confirming, I'll drop your credentials in my.env.

[00:59:15] - Anthony Campolo
Correct. Yes. The credentials are in the private chat right now. And then, yeah, I was afraid that was gonna happen. So, just do that real quick.

[00:59:29] - Monarch Wadia
Cool.

[00:59:32] - Anthony Campolo
And then for now, let's— comment out everything below ID. Yeah, exactly. Then comment out yours on the top as well. Yeah.

[00:59:45] - Monarch Wadia
Okay.

[00:59:45] - Anthony Campolo
Well, let's give this a try, see what happens. So now just rerun the create identity again.

[00:59:55] - Monarch Wadia
Cool. What is identity?

[00:59:57] - Rion Gull
You're going to want to know, you're going to want to put the 12 words from your mnemonic right in there. Have you done that?

[01:00:03] - Monarch Wadia
Yes.

[01:00:04] - Anthony Campolo
So, the mnemonic are there with the address.

[01:00:07] - Monarch Wadia
Yeah.

[01:00:08] - Anthony Campolo
And those are both in the API client through the environment variables.

[01:00:12] - Monarch Wadia
Okay.

[01:00:13] - Rion Gull
Oh, yeah.

[01:00:13] - Monarch Wadia
I got it.

[01:00:14] - Anthony Campolo
Yep.

[01:00:19] - Monarch Wadia
No.

[01:00:19] - Anthony Campolo
Same issue. Hold on.

[01:00:23] - Rion Gull
While you're doing that, I'm gonna—

[01:00:25] - Anthony Campolo
So, you're using pnpm. So, I'm not sure if that's— an issue or not. It shouldn't be, but, um, let me, uh, what were you gonna say, Ryan? You said you're gonna—

[01:00:43] - Rion Gull
I was just gonna say I'm, I'm gonna message the Discord testnet channel to see if there's any known issues on testnet right now. Anthony, if you or Monarch, can we print the— can you post the error so I can post that in Discord, see if there's any issue? We're not going to solve them, I guess.

[01:01:07] - Anthony Campolo
Yeah, and then I would say next thing you should do is uncomment out my identity ID and just skip this step and keep going.

[01:01:14] - Monarch Wadia
Let me put this in a paste bin.

[01:01:16] - Monarch Wadia
Perfect.

[01:01:20] - Monarch Wadia
This should be safe to drop in a paste bin, right?

[01:01:23] - Monarch Wadia
Yeah.

[01:01:28] - Anthony Campolo
As long as you're cool with like your file structure for your code thing being in there, that's the only thing that would be considered even slightly sensitive.

[01:01:37] - Monarch Wadia
Meh.

[01:01:39] - Anthony Campolo
I usually just, I usually just drop these in, you know.

[01:01:45] - Monarch Wadia
Okay, drop the link. I got it. Cool. My npm install is still going, so I'm going to wait for that, then try running that.

[01:01:54] - Anthony Campolo
Yeah, and this is why it's nice to use pnpm. It's way faster. But I found that every now and then some weird things happen. But that looks like the type of error you're getting makes me think it's testnet, not anything in your project.

[01:02:08] - Monarch Wadia
Now what's this? No matches found? Let me, let me try this again.

[01:02:36] - Anthony Campolo
Yeah, that was just because you didn't blow away your node_modules at the same time, which I didn't realize you didn't do it. I would have said to do so.

[01:02:47] - Monarch Wadia
Yeah.

[01:02:51] - Monarch Wadia
Huh. Okay.

[01:02:55] - Anthony Campolo
It was just confused because pnpm and npm handle node_modules differently.

[01:02:59] - Monarch Wadia
Yeah, yeah, yeah. I know pnpm likes— symlink, which didn't always work well. So we're gonna create identity now.

[01:03:08] - Anthony Campolo
I think you're probably gonna get the same error, but I just want to make doubly sure that this is not the issue.

[01:03:14] - Monarch Wadia
It might be. Yeah, it's a, it's a good point.

[01:03:17] - Anthony Campolo
So yeah, this is the The step that we were getting weird errors on, Ryan, originally when I came back to do stuff and it took us like, we kept getting different errors and trying to figure out what the issue was. And then the issue was just always kind of, ah, just try it again later. And that ended up just being what had to be done. It's weird though, 'cause—

[01:03:49] - Monarch Wadia
Still getting here.

[01:03:50] - Anthony Campolo
Yeah, it's probably just network is messed up. So let's try this. Go back to your.env and uncomment out the identity ID. Now let's see if we can just skip that step and keep going and see what happens. Let's go back to the tutorial and just go to the next step, which is going to be retrieving your identity.

[01:04:07] - Monarch Wadia
Yeah.

[01:04:09] - Monarch Wadia
We get the identity and guessing this probably works. Yeah, wrapping this stuff into CLI might be super handy.

[01:04:42] - Anthony Campolo
Yeah, I agree. Actually, that would be the the thing to do. I have to imagine there's already some sort of way to interact with Dash with a CLI, but maybe not with, um, platform.

[01:05:07] - Rion Gull
Say that again, Anthony.

[01:05:10] - Anthony Campolo
Well, he's just saying that. We should just have a CLI where you could just like run these commands, just have them embedded in the CLI.

[01:05:18] - Monarch Wadia
gRPC transport error unimplemented. This seems slightly different from the one before, I think.

[01:05:24] - Anthony Campolo
Well, it still said 12 unimplemented, didn't it? Make sure you tried.

[01:05:28] - Monarch Wadia
Yeah, it's the same thing. That one was also gRPC transport error.

[01:05:33] - Anthony Campolo
Yeah, I think it's giving us the same error each time, which makes me think it's something with testnet.

[01:05:37] - Rion Gull
What version of the test— what version of the SDK are we using?

[01:05:41] - Anthony Campolo
That's something I need to figure out. Just package.json, not lock.

[01:05:47] - Monarch Wadia
Yeah, this will give me the exact version.

[01:05:50] - Anthony Campolo
Well, so will the package.json.

[01:05:53] - Monarch Wadia
Sure.

[01:05:54] - Anthony Campolo
So, dev.1.0.

[01:05:56] - Rion Gull
Actually, that might be the problem.

[01:05:59] - Anthony Campolo
That's not the most current one, actually. Blow that away and run the install again. You should be on 15.

[01:06:11] - Rion Gull
Yeah, um, I know that the testnet is not at the very latest release of the SDK, so I'm not sure honestly which SDK is best to use. The latest 15—

[01:06:24] - Anthony Campolo
15 is working for me today, so we should try 15 and see what happens.

[01:06:29] - Monarch Wadia
Okay, so Uh, we're doing retrieve identities or—

[01:06:37] - Anthony Campolo
yeah, yeah, yeah, retrieve identity should be the one.

[01:06:40] - Monarch Wadia
Yeah.

[01:06:43] - Anthony Campolo
Did you reinstall your node modules or just— or actually this time? Okay, yeah, it should be.

[01:06:49] - Monarch Wadia
That should do it.

[01:07:05] - Anthony Campolo
Same issue.

[01:07:09] - Monarch Wadia
So I'm on this exact version. So PR 182511.

[01:07:17] - Rion Gull
We don't want to use a PR version. Why did it install a PR version?

[01:07:23] - Monarch Wadia
I did 15.

[01:07:25] - Anthony Campolo
That's Dash setup. That's a dependency of Dash, of the Dash thing.

[01:07:32] - Monarch Wadia
So, if I do npm list, why doesn't it show me? Everything.

[01:07:50] - Anthony Campolo
Yeah, I'm not sure. This is not something I usually do. Okay. See, that's weird. That shouldn't be like that.

[01:08:02] - Monarch Wadia
Spotify. And Dash setup is the name of our project. Just a heads up. So—

[01:08:12] - Anthony Campolo
Oh, it is? Okay. That's why it's saying dash. Okay, I was confused. I didn't realize that. Thank you.

[01:08:19] - Monarch Wadia
So if I do— so now we're on dev10. Maybe it'll actually run. So I had to take the hat off, Sember. So after I took that off, let me see if I'm actually able to retrieve. That went fast, but The server does not implement the method getStatus, which is different from before.

[01:08:51] - Rion Gull
What version of the SDK is it using now?

[01:08:54] - Anthony Campolo
Uh, -dev10.

[01:08:59] - Monarch Wadia
Let me try 15 like Anthony said.

[01:09:05] - Rion Gull
Yeah, can you get it to install the exact version that Anthony has? I was working with.

[01:09:12] - Monarch Wadia
Yeah, that is now 15, same as Anthony.

[01:09:18] - Anthony Campolo
Yeah, I'm pretty sure we've already tried this though. I think this is just an issue with testnet, honestly. I don't think we're going to be able to solve this.

[01:09:26] - Rion Gull
Let's try 12 before we totally bail on this. And then, because I think the testnet is running Dev 12 right now, even though the SDK is a little further up to date. They have—

[01:09:41] - Anthony Campolo
hey, there you go, it works. See, I'm telling you, the only reason why is just because we waited. This has nothing to do with anything we have changed at any point in time. All that was completely unrelated.

[01:09:49] - Rion Gull
So you're saying it's still using the Dev 15 SDK and it worked, but it didn't work before?

[01:09:56] - Monarch Wadia
Oh yeah, this is, uh, I updated Dev 15 just now. This was the first run with Dev 15. The previous run was Dev 10 and it didn't work.

[01:10:03] - Anthony Campolo
Yeah, I think— okay, so I thought we had done dev 15 earlier. Maybe we did, maybe we didn't, but we didn't.

[01:10:09] - Monarch Wadia
Either way, I set it up, but it was downloading some weird PR version instead of the dev version. Word.

[01:10:16] - Monarch Wadia
Yeah, yeah.

[01:10:17] - Rion Gull
Okay, okay, so we're moving, we are moving on.

[01:10:21] - Monarch Wadia
So Anthony, here's the exact, uh, thing.

[01:10:24] - Anthony Campolo
It doesn't have the caret in it, so yeah, the caret is added automatically because it's set up to install Dash at 1.0, so I don't have to specify the version, so it'll just be updated when someone runs it. But I'll have to figure out what to do about that. And, and we don't even know that was the issue. I've been in this space before, we changed something, thought it fixed it, and then said, hey, this thing was broken, we did this, and they're like, no, that has nothing to do with it. So I think let's just move on from this step.

[01:10:53] - Monarch Wadia
That's good.

[01:10:55] - Rion Gull
We'll have to, um, revisit that, Anthony, because I, I think Yeah, I don't know how the npm— I don't know in detail how the npm dev, or not, uh, not dev, but semantic versioning like the caret and the tilde and things work with dev branches.

[01:11:14] - Monarch Wadia
But I think I might have an inkling there. The caret gives you the latest version in that minor patch, and p is higher than d, so a -pr would be probably seen as higher than D.

[01:11:28] - Rion Gull
So it falls back to alphabetical in that case?

[01:11:31] - Monarch Wadia
I think so. That's my, that's my hunch.

[01:11:33] - Rion Gull
Once we get off of, um, dev branches— no, even when we get onto alpha branches, that'll still be an issue. So yeah, I don't know, I don't know. That, that's something we just need to, to be aware of, Anthony, when we do this in the future.

[01:11:45] - Anthony Campolo
Don't worry. Well aware.

[01:11:50] - Monarch Wadia
Okay.

[01:11:51] - Rion Gull
All right, so let's see if we can get through the next step and then maybe we'll call it quits then, uh, because I think we're coming up on our time.

[01:11:58] - Anthony Campolo
Cool, so I will quickly do top-up identities and, uh, okay, and Ryan, do you want to Schedule Monarch for a second go around where we try and keep going in another time.

[01:12:23] - Rion Gull
Yeah, that would be, that would be great if Monarch's up for it. We'll do, we could do a 1B, like, um, I know that you've already numbered your next one as 2, so I can, I can rewrite that.

[01:12:35] - Anthony Campolo
It's not a big deal.

[01:12:38] - Rion Gull
Yeah, I'd be down. Well, it might be, it might, it might be a good precedent to set anyway because The numbers we could have as people trying the thing and the B, the letters we could have as, you know.

[01:12:53] - Anthony Campolo
Yeah, makes sense. Yeah.

[01:12:55] - Monarch Wadia
Yeah.

[01:12:56] - Anthony Campolo
And ideally after the first couple, hopefully we'll be able to iron out these things for this one though. I don't know, man. It's probably just a luck of the draw to a certain extent. It'd be cool to have fallbacks for when things don't work. So that's why having the extra keys was good to have. So anyway.

[01:13:17] - Monarch Wadia
So question, and maybe this is how people start getting involved in Dash. With like all of this work that Anthony is doing, it's really great work. I am nowhere as good at writing documentation as Anthony, but if I wanted to get involved and write code, then that might be a fun side thing for me to do from time to time? Like, how would I get involved?

[01:13:43] - Anthony Campolo
Yep, that's an awesome question.

[01:13:45] - Rion Gull
You're at the right place. Um, that would be me. Um, so me and Anthony, we can get involved in, in other projects as well when, when needs come up. Like, for example, today we came across the problem where there was— there's a bad testnet, right? And this is an issue that's come up several times before, so Solving that might be as simple as creating a simple application that is more, a more reliable faucet. And so that's just a small example of something that we could put you on and then task you to work on if that's something you're interested in. So there are a lot of different things that we could have you work on.

[01:14:27] - Anthony Campolo
So that would really get you in the guts of the blockchain too, and you would come away a changed man.

[01:14:32] - Monarch Wadia
Hopefully.

[01:14:33] - Rion Gull
Yeah, we'll talk offline about that. There's lots to do for sure.

[01:14:40] - Monarch Wadia
Cool.

[01:14:41] - Anthony Campolo
Yeah, we should probably start wrapping up here because we're about at our time that we said we were going to finish. If we're going to do another one anyway, we don't need to worry about getting through as much of this as possible. It's probably a good natural stopping point.

[01:14:55] - Rion Gull
Yeah, let's just bring it back a little bit high level end. The high level of this is, again, we, we, we have a network that has nodes running, and those nodes that are running on this network right now, we're working with testnet. And testnet is a network that's essentially created by Dash Core Group, and they own and run all the servers, right? So they spin up a whole cluster of servers and nodes that are running the Dash blockchain and Dash platform. And one of the features of those, of that, of Dash platform specifically, is that you can store data on this network. So you can think of it as kind of like cloud storage where you don't have to actually set up an account to work with this. All you have to do is pay the money. And right now with testnet, it's not even money. It's like fake magic internet money that you get for free in theory from faucets. But when it's on mainnet, you would pay, let's say, like 30 cents to store a certain amount of data that your application needs for global state management, for example. And that would be— that's the whole purpose here. So we ran into some to several issues.

[01:16:20] - Anthony Campolo
You have a wallet with an address, and then you need to create an identity, which gives you another ID. The identity is then what you use to create the document. You then use the document to write a note. Not confusing at all.

[01:16:34] - Monarch Wadia
No, not at all. I got all of that.

[01:16:37] - Anthony Campolo
Yeah.

[01:16:37] - Rion Gull
And when you compare it though, there are some issues that we obviously need to work out in terms of developer experience. But at the end of the day, What's supposed to be the happy path is that you spin up, you put this SDK into your application, and then the SDK, it takes a little while to get to know the API and whatnot for the SDK. But after you do that, you basically have access to a a database, a cloud database that you don't even have to register for. So in theory, it's supposed to make the developer experience for, um, creating an application that needs global state management a lot easier because now you don't have to set up a server, you also don't have to set up a database, you just— and so DK—

[01:17:32] - Anthony Campolo
yeah, and so Mark, it's about like them being kind of each one-off kind of scripts as, as you go. Once you have the identity, then you, you create and edit and manipulate documents and notes and stuff. You end up implementing a CRUD interface to a certain extent. It's almost more like an ORM that you're building in one sense. Like I said, if you wanted, you can just clone down the Git repo and it is finished for me. You'll have all those commands already. That's why they're separate commands is because they could all be combined into one file, but you still will be running individual commands because they're doing specific composable functionality.

[01:18:13] - Monarch Wadia
Yeah. So it's like a command of commands is what you're describing. So just do a bunch of—

[01:18:18] - Anthony Campolo
really, it's, it's like building out a CLI is essentially what, what we're doing here. So what you're saying about this should just be a CLI with commands is like totally on the money.

[01:18:28] - Monarch Wadia
Gotcha. Yeah.

[01:18:30] - Rion Gull
Yeah. And if that's what we decide is, is the best, uh, way to introduce developers to this, then You know, that's something that we could build.

[01:18:36] - Anthony Campolo
And I know how to do that now. I know how to build a Node CLI because I did it already now, which I did not know how to do the first time I started doing all this Dash stuff.

[01:18:44] - Monarch Wadia
Heck yeah.

[01:18:46] - Rion Gull
Yeah. And those developer tools that we looked at when we were going down the sidetrack of the 12-word phrases, we actually do have CLIs for all of those tools. So we have both SDKs and CLIs.

[01:18:58] - Anthony Campolo
Yeah, I was going to say, there has to be already. There is Dash CLI. Let you interact directly with the RPC stuff. Yeah, there's a— I know Sideswipe's JavaScript, though.

[01:19:08] - Rion Gull
There's a lot of different CLIs and things. But yeah, we have to figure out what the best DX is for just the introduction to developers. So yeah, we'll talk about that. I think maybe the best next step would be another— schedule another stream to go through this again. And then just talk offline about what other things that we can get you working on. So thanks for your time, Monarch, and thanks for helping.

[01:19:40] - Anthony Campolo
Do you have any closing thoughts, Monarch, so far? It's kind of hard to tell.

[01:19:45] - Rion Gull
You haven't said anything critical yet, so let's have your hot takes so far.

[01:19:50] - Monarch Wadia
How much—

[01:19:51] - Rion Gull
on a scale of 1 to 10, how much do you hate cryptocurrency? Just kidding.

[01:19:57] - Monarch Wadia
I, uh, I, I really love the tutorial because there's a lot of potential. I think, I think what it's giving me is that hands-on, um, it's hands-on but it's also, also theoretical. So it's teaching me as I go and I'm really learning a lot as I'm—

[01:20:14] - Anthony Campolo
that's the goal. That's the difference between a tutorial and a how-to. So you have, this is a thing with, um, uh, diataxis. It's like this docs thing where they have these 4 things they have. There's tutorials, how-tos, um, explainers, I think. And then, oh, this is the third one. But anyway, it was like a how-to tells you how to just do something specifically. Like, I need to know how to do this. Whereas a tutorial is like actually teaching you concepts as you're doing it. So that's kind of the idea. So what you're saying is what what was the point?

[01:20:51] - Monarch Wadia
Yeah, yeah, I, I, uh, I'm the kind of person who knows when to gloss over a paragraph. So I'll just go read, and if something catches my eye and I want to learn more, then I'll read more. If I want to learn more afterwards, then I'll just do the tutorial, and then I'll get it working, and then I'll sleep on it and come back the next day and go back to the tutorial and read more. So this is really great. I think the part that I am not a big fan of, the glitches. I mean, it is what it is, but the glitches are painful. Maybe one way to get around it is like warning labels or, you know, inside the tutorial itself saying this step is glitchy and just be transparent about that. And that might be one way to sort of mitigate the frustration. Or it's really less frustration and more question marks going, hey, did I do something wrong? Or Is it my fault or is it Dash APIs or what's going on? So that might be something that could be useful. Other than that, I think this is definitely a fun experience and it's getting me curious about crypto, which I never thought I would be. So, yeah.

[01:22:02] - Anthony Campolo
Well, I think Ryan accomplished his goal then.

[01:22:06] - Rion Gull
Yeah, yeah, several goals for sure. Yep, let's, uh, let's chat offline and then we'll figure out what the next step is.

[01:22:15] - Anthony Campolo
Awesome, awesome, man. Thanks so much for doing this, Monarch, and, um, we'll catch all you guys next time.
