skip to content
Video cover art for Dash Platform Walkthroughs Part 9 - Claire Froelich
Video

Dash Platform Walkthroughs Part 9 - Claire Froelich

Claire Froelich returns to Web3 as a beginner exploring Dash Platform by building a Hello World app with wallets, identities, names, and contracts.

Open .md

Episode Description

Claire Froelich returns to Web3 development as a beginner exploring Dash Platform, building a Hello World app that creates wallets, identities, names, and data contracts.

Episode Summary

In the ninth installment of the Dash Platform walkthrough series, Anthony Campolo and Rion Gull guide Claire Froelich through building a beginner-friendly Hello World application using the soon-to-launch Dash Platform. Claire, returning to the Web3 space after a two-year absence with prior Ethereum but no Bitcoin-derivative experience, works through the JavaScript SDK to set up a Node project, initialize the Dash client, and generate a testnet wallet with a mnemonic seed phrase. The walkthrough progresses through funding the wallet via a testnet faucet, registering a blockchain identity, topping up credits, and claiming a human-readable name (claire-fro.dash) tied to that identity. Rion explains foundational concepts along the way, including how Dash differs from Bitcoin through its incentivized masternode network, instant transaction locking, and DAO-based governance that funds projects like the incubator itself. The session culminates in creating a data contract that functions as a JSON schema, submitting and updating documents against it, and querying them back, demonstrating Dash Platform as a permissionless decentralized document database backed by GroveDB's cryptographic proofs. The team wraps up with a brief Express server example showing how to expose this functionality as an API endpoint, leaving the front-end integration for a potential follow-up session.

Speakers

  • Anthony Campolo
  • Claire Froelich
  • Rion Gull

Chapters

00:00:00 - Introductions and Project Setup

Anthony welcomes Claire to the ninth Dash Platform walkthrough, where she introduces herself as a curious developer with Node installed who has been away from Web3 for about two years. She mentions her prior involvement with Algorand and a more general interest in blockchain development, expressing curiosity about whether the developer experience has improved. Rion frames the session by noting that Dash Platform launches on mainnet July 29th and offers provable data storage among other capabilities.

The team clarifies that the walkthrough will build a Hello World application demonstrating Dash Platform's higher-level functionality rather than core cryptocurrency features. Claire jumps into the tutorial by verifying her Node version (v21, which Anthony notes is unconventional for production), creating a project folder called dash-examples, running npm init, and installing the Dash v4 package. She sets up the directory structure with scripts and api folders, creates a client.js file, and adds a .env file with the network variable set to testnet.

00:07:30 - Initializing the Dash Client and Wallet Concepts

Claire imports Dash and configures the client constructor with network and wallet settings, encountering the term "mnemonic" which Rion clarifies is synonymous with seed phrase. They discuss that the wallet is set up with mnemonic null to generate a new one, and offlineMode true to avoid syncing chain headers during development. Anthony notes this works because each wallet generation produces a unique random output.

Claire pauses to ask the foundational question: what makes Dash different? Rion delivers a comprehensive explanation comparing Dash to Bitcoin and Litecoin as forks made over a decade ago, highlighting Dash's focus on speed, low cost, and better user experience. He details the masternode network where operators stake 1000 Dash and receive part of the block reward, enabling instant-send transaction locking through quorum consensus within one to two seconds rather than minutes. He also explains Dash's pioneering DAO governance model, where masternode operators vote on funding proposals, which is how the Dash Incubator funds the very project they're working on.

00:16:30 - Creating a Wallet and Funding via Testnet Faucet

Claire creates a script file using three functions: createWallet, getWalletAccount, and getUnusedAddress, all built into the Dash library. After saving the file (which she initially forgot), she successfully generates a wallet address starting with Y (Rion explains testnet addresses begin with Y while mainnet uses X) along with a seed phrase, both of which she copies into her .env file.

She moves to the testnet faucet, navigates the Japanese-language browser to find the address field above the captcha, and successfully receives 2.86 testnet Dash. Rion explains the transaction structure on the block explorer, where inputs on the left fund outputs on the right, and clarifies that the change address is sent back to the faucet itself. He recounts the historical context of Bitcoin faucets that originally distributed real mainnet funds, noting that early users who saved those tiny drips would now be wealthy.

00:24:00 - Registering an Identity on the Platform

After updating the client configuration to remove offline mode and add the mnemonic, Claire creates a new createIdentity.js script that calls platform.identities.register. Rion explains identities as essentially public-private key pairs analogous to SSH keys, and elaborates on the philosophical inversion blockchain enables: rather than banks creating accounts for users, users create their own authoritative identities on the network.

Claire navigates to the platform explorer built by Mikhail Shum, which crawls the blockchain via an indexer and exposes both a REST API and front-end interface. She finds her newly created identity (32A4N) with a balance of credits. Anthony clarifies that the register function has a default fundingAmount of 10,000, automatically converting some Dash from the wallet into platform credits, which is why testnet funds are required to create an identity in the first place.

00:37:00 - Topping Up Credits and Registering a Name

Claire creates a retrieveIdentities script which fails with the recurring "Empty SPV chain" error, an SDK-related issue that Anthony notes happens unpredictably. They move past it to the topUp script, which loops through identity IDs and adds more credits. After waiting through some processing, the top-up succeeds, with Claire observing that her balance shows slightly less than expected due to transaction fees.

Moving to name registration, Claire adds a label property "claire-fro" to her .env and creates the registerName script. Anthony explains the convention of lowercase since names function like domains with .dash suffix. The registration succeeds, and Claire views the result on the platform explorer, noticing the system also creates a normalized label to help prevent typo-squatting. Rion mentions that the API would allow client applications to warn users before sending funds to suspicious lookalike addresses.

00:48:00 - Data Contracts and the Scalability Trilemma

Claire creates a retrieveName script that returns a document object, prompting Anthony to introduce data contracts as JSON schemas that define document structures, similar to MongoDB collections. Before writing the registerContract script, a chat question prompts Rion to address blockchain scalability. He references Vitalik Buterin's trilemma of security, decentralization, and scale, but offers his own preferred framing of security, scalability, and usability, arguing that decentralization is actually a component of security.

Rion's key insight is that Dash's incentivized masternode model resolves the traditional tradeoff between scale and decentralization. In networks that don't pay node operators, increased scale makes nodes harder to run and reduces participation. But when operators are paid, scaling actually increases their revenue, aligning incentives so that growth strengthens rather than weakens the network. He positions Dash as oriented primarily toward usability, since the platform exists specifically to give developers easy database-like primitives for building applications.

00:55:00 - Creating and Reading Documents

Claire runs the registerContract script which creates a contract with a note schema, owned by her identity. Rion explains contracts are deterministically generated from owner ID, entropy, and content media type. After getting a contract-not-found error from missing the contract ID in .env, she successfully retrieves the contract via the SDK and views the schema definition.

Moving to the updateContract script, Claire adds an "author" property to demonstrate schema migration. She then updates client.js to register the contract under a friendly name "tutorialContract" enabling shorthand syntax like tutorialContract.note. The submitNoteDocument script broadcasts a "Hello from Claire" document to the network. Rion frames this as the network validating the document against the contract, noting that any front-end could submit documents to the same contract permissionlessly.

01:05:00 - Updating Documents and GroveDB

Claire successfully retrieves the document with getDocuments, completing the actual Hello World moment of reading data off a decentralized network. She moves to updating the note to "Hello again" but encounters an error about expecting bytes, which Anthony recognizes from Rishi's earlier session. The issue turns out to be a missing document ID in .env, which Claire fixes from her console output, after which the update succeeds.

Anthony introduces GroveDB as the underlying database technology specific to Dash, and they navigate to grovedb.org. Rion explains GroveDB's core value proposition: cryptographic proofs that data is provably present or absent on the chain, validated by a quorum of node operators. This eliminates trust in any single node, since rogue operators cannot serve false data when proofs are required, an issue that doesn't surface in centralized web development where users explicitly trust service providers.

01:15:00 - Express Server, Closing Discussion, and Wrap-Up (ends at 01:23:16)

Claire deletes her note and sets up an Express server with a /name/:name endpoint that queries platform information dynamically. Anthony clarifies this is just a demonstration of how someone might integrate the SDK into a full-stack application rather than running one-off scripts, and notes the SDK works in single-page applications too. They run out of time before the front-end UI step, agreeing to potentially continue in a follow-up session.

Anthony mentions Dashmate as a future topic, allowing local Docker-based testnet replacement instead of using the shared testnet. The conversation wraps with Claire describing her side projects including a Stack Overflow Simulator using AI to recreate the snarky old-school Stack Overflow experience as a "museum" for post-AI developers, and her Chat CBT bot using cognitive behavioral therapy techniques. Rion learns Claire speaks Japanese from her time as an interpreter living in Japan, keeping her browser localized to maintain fluency. Anthony confirms he's a music major and Claire was a liberal arts major, reinforcing that Dash Platform is meant to be accessible to any developer regardless of background, before signing off and mentioning the next stream with Niles.

Transcript

00:00:02 - Anthony Campolo

All right, we're back with part nine, one more to 10 of the Dash platform walkthroughs.

00:00:10 - Anthony Campolo

And we got Claire.

00:00:12 - Anthony Campolo

What is up, Claire?

00:00:13 - Claire Froelich

Hey, thanks for having me.

00:00:15 - Anthony Campolo

Thanks for being here.

00:00:16 - Anthony Campolo

You want to tell the audience a little bit about yourself?

00:00:20 - Claire Froelich

I am a curious person with Node installed on my computer, and I have been actually away from the Web3 space for about two years.

00:00:31 - Claire Froelich

So Anthony said this is going to be beginner friendly, and I'm going to come back to this with beginners fresh eyes, meaning if I can do this, anyone watching this can probably do it better.

00:00:41 - Claire Froelich

And I'm really excited to see what this is all about.

00:00:45 - Anthony Campolo

If I remember correctly, you were into Algorand.

00:00:47 - Anthony Campolo

Is that right?

00:00:50 - Claire Froelich

I was roped into it, but I was more into the development side of blockchain.

00:00:55 - Claire Froelich

I was really curious about that.

00:00:58 - Claire Froelich

And I'm really curious if it's gotten any more...

00:01:02 - Claire Froelich

Any less painful of a developer experience.

00:01:04 - Claire Froelich

So let's see how it is.

00:01:07 - Rion Gull

That's perfect.

00:01:08 - Rion Gull

Yeah.

00:01:08 - Rion Gull

So we're definitely more geared towards and oriented towards the developer side of things in the incubator, Dash incubator and Dash in general right now with our Dash platform that's coming out.

00:01:23 - Rion Gull

July 29th.

00:01:25 - Rion Gull

So this on mainnet, this will be on, well, it's not going to be on.

00:01:30 - Rion Gull

On May 9th, July 29th, but it will launch on July 29th.

00:01:33 - Rion Gull

It's coming up this month, the end of the month.

00:01:35 - Rion Gull

And it basically gives you a platform to store data that's provably present or absent, all sorts of things there that we can talk about through the stream.

00:01:47 - Rion Gull

But I think we should just go ahead and jump right into the screen share and we'll walk through it.

00:01:56 - Rion Gull

And you were saying on the screen that you were just, you were working in another developer oriented position.

00:02:06 - Rion Gull

So, you know, you called yourself a beginner, but I don't think, yeah.

00:02:12 - Claire Froelich

A blockchain beginner is definitely appropriate title for me.

00:02:16 - Rion Gull

Got it.

00:02:17 - Rion Gull

Got it.

00:02:18 - Anthony Campolo

Yeah, you were a, Claire was someone who kind of switched, like, mid-career from someone who was doing something to kind of getting more into coding, because

00:02:29 - Anthony Campolo

I first met you, because actually we should mention Monarch was the first person who did this walkthrough with us, and we originally met because she worked for Monarch's company, Mint Bean.

00:02:40 - Rion Gull

Cool.

00:02:41 - Anthony Campolo

Yeah.

00:02:42 - Claire Froelich

Yep.

00:02:44 - Claire Froelich

So what are we going to do today, by the way?

00:02:47 - Claire Froelich

I'm totally coming into this blind.

00:02:49 - Anthony Campolo

We're going to build kind of like a Hello World application with Dash platform.

00:02:54 - Anthony Campolo

And I was going to say the most important thing to know before we get started is that there's Dash, the cryptocurrency.

00:03:00 - Anthony Campolo

Which has been around for a while, about a decade.

00:03:03 - Anthony Campolo

And then there's the Dash platform, which has been in development for many years.

00:03:08 - Anthony Campolo

And as Ryan just said, it's about to be released in about a month or so.

00:03:13 - Anthony Campolo

And that is what is going to add things like identity and storage and the more app-like.

00:03:20 - Anthony Campolo

Layers of the platform.

00:03:23 - Anthony Campolo

So this is going to be mostly going through that.

00:03:26 - Anthony Campolo

So it's going to be less like interacting with Dash cryptocurrency as it has existed in the last 10 years and more so using these higher level functionality pieces.

00:03:37 - Claire Froelich

Awesome.

00:03:38 - Claire Froelich

But with code, it sounds like.

00:03:39 - Anthony Campolo

With code, exactly.

00:03:40 - Anthony Campolo

Yeah, it's all JavaScript, baby.

00:03:42 - Claire Froelich

That's where I want to be.

00:03:44 - Anthony Campolo

That's good.

00:03:47 - Rion Gull

So part of this is we're testing the tutorial to some degree.

00:03:50 - Rion Gull

We've done eight of these so far, so we're honing in on what is needed to make this something that somebody can work through unassisted.

00:04:01 - Rion Gull

And we think it's there already, but if there's anything that's not clear, then just...

00:04:06 - Rion Gull

Mention it or something like that.

00:04:08 - Rion Gull

But I think we should just jump in and we'll see as we get in.

00:04:12 - Claire Froelich

Cool.

00:04:13 - Anthony Campolo

Yeah, you can jump to the setup and configure node project section.

00:04:17 - Anthony Campolo

There's some text at the beginning that's not as important.

00:04:21 - Claire Froelich

Okay.

00:04:23 - Claire Froelich

So am I just going to walk through this out loud?

00:04:27 - Anthony Campolo

Yeah, go for it.

00:04:27 - Claire Froelich

All right.

00:04:29 - Claire Froelich

Cool.

00:04:30 - Claire Froelich

First prove that I have the right node version because I haven't checked in a while.

00:04:33 - Claire Froelich

I'll make this big enough for you to see.

00:04:37 - Anthony Campolo

That's good now, yeah.

00:04:39 - Claire Froelich

All right, so I'm up above v20.

00:04:39 - Claire Froelich

All right, so I'm up above v20.

00:04:42 - Claire Froelich

We're good there.

00:04:43 - Anthony Campolo

Also on an odd version.

00:04:46 - Claire Froelich

Is that very experimental of me?

00:04:50 - Anthony Campolo

Well, yeah, and so no one ever, you're specifically only supposed to use 21 for like testing new features, but if you're ever going to deploy, you're always supposed to be on the even ones.

00:05:02 - Anthony Campolo

So I always think it's interesting when people have an odd one on their computer, so I'm like, well.

00:05:07 - Anthony Campolo

No one's really ever deployed.

00:05:09 - Claire Froelich

I would push to prod on V21.

00:05:11 - Claire Froelich

I'm not daring.

00:05:14 - Claire Froelich

All right.

00:05:15 - Claire Froelich

So I'm making a project folder called dash examples and heading in there.

00:05:20 - Claire Froelich

We're going to start a new NPM project.

00:05:24 - Anthony Campolo

NPM, you missed the init.

00:05:26 - Claire Froelich

Oh, yeah, NPM, init.

00:05:30 - Claire Froelich

Sorry, I'm on like preschool mode in my terminal here.

00:05:33 - Claire Froelich

Okay, so we've got a new project open.

00:05:37 - Claire Froelich

Actually, I'm just going to open it from in here.

00:05:41 - Claire Froelich

All right.

00:05:42 - Claire Froelich

And we're going to set it to type module.

00:05:49 - Claire Froelich

I won't ask questions.

00:05:50 - Claire Froelich

I'll just paste what I'm told.

00:05:53 - Claire Froelich

That's just for the ESM.

00:05:55 - Claire Froelich

Okay.

00:05:57 - Claire Froelich

And we're installing the package dash version 4.

00:06:01 - Claire Froelich

Adding a git ignore.

00:06:08 - Claire Froelich

Is this a big package?

00:06:10 - Rion Gull

You tell me.

00:06:13 - Anthony Campolo

It's not that crazy, I don't think.

00:06:17 - Rion Gull

I think it is.

00:06:18 - Claire Froelich

It takes a bit longer to chew on than the average.

00:06:22 - Rion Gull

I think it's too big.

00:06:25 - Claire Froelich

All right, so I'm going to make this a bit bigger too, but we've got our git ignore, ignoring the essentials now.

00:06:31 - Claire Froelich

Okay, we'll create a script file individually throughout the tutorial for the sake of simplicity.

00:06:37 - Claire Froelich

Add all the node scripts that will be implemented by the end of the tutorial.

00:06:42 - Claire Froelich

All right, so I'm just gonna copy this.

00:06:44 - Claire Froelich

These are, that's so nice.

00:06:46 - Claire Froelich

You guys have given all of the cheat scripts.

00:06:49 - Claire Froelich

Yep.

00:06:50 - Claire Froelich

So I'm gonna go ahead and paste.

00:06:53 - Claire Froelich

We don't need the test one.

00:06:56 - Claire Froelich

Well.

00:06:56 - Claire Froelich

No.

00:06:58 - Claire Froelich

Nope.

00:06:59 - Claire Froelich

I like, see, we're living on the edge.

00:07:00 - Claire Froelich

V21 node, no tests.

00:07:04 - Claire Froelich

All right, so these scripts are basically going to be shortcuts for running script files that we make later, it sounds like, and running a server.

00:07:13 - Claire Froelich

Yep.

00:07:15 - Claire Froelich

Okay, initialize the dash client, create a scripts directory, and an API directory.

00:07:22 - Claire Froelich

Is that two separate directories?

00:07:24 - Claire Froelich

I guess so.

00:07:25 - Claire Froelich

And a file called client.

00:07:27 - Claire Froelich

So his clients is in the API.

00:07:31 - Claire Froelich

I'm just going to follow your code here.

00:07:33 - Claire Froelich

So make their API scripts.

00:07:37 - Claire Froelich

Okay, two folders.

00:07:41 - Claire Froelich

And we're going to create client.js file.

00:07:45 - Claire Froelich

And in our env file, we're going to add an environment variable called network set to testnet.

00:07:52 - Claire Froelich

So it should be here.

00:07:54 - Claire Froelich

Yep.

00:07:55 - Claire Froelich

And we have our empty client.js file.

00:08:03 - Claire Froelich

All right.

00:08:05 - Claire Froelich

While we're at it, should I git init here?

00:08:10 - Claire Froelich

Because those node modules not being grayed out are freaking me out.

00:08:15 - Rion Gull

Yeah, that's fine because that way if we don't finish, then we can pick up where we stopped.

00:08:20 - Claire Froelich

All right.

00:08:22 - Claire Froelich

So import dash from dash.

00:08:24 - Claire Froelich

Pass the project's network and wallet configuration through dash's client constructor.

00:08:28 - Claire Froelich

So that sounds like something I'm going to have to set up maybe in your UI or something.

00:08:33 - Claire Froelich

Well, let me just copy all this.

00:08:39 - Claire Froelich

So we got a little echo.

00:08:46 - Claire Froelich

Okay, so we're importing dash, getting our network environment variable, and setting it to the network property when we initialize.

00:08:57 - Claire Froelich

What's the mnemonic in all of this?

00:08:59 - Claire Froelich

I don't remember this term.

00:09:03 - Claire Froelich

Have you ever...

00:09:05 - Claire Froelich

Password that's super long?

00:09:08 - Rion Gull

Have you ever dealt with 12-word phrases?

00:09:12 - Claire Froelich

Do you repeat that?

00:09:14 - Rion Gull

Have you ever dealt with 12-word seed phrases when you were doing Algorand stuff or any other Web3 or crypto stuff?

00:09:23 - Claire Froelich

Is that like the secret password you don't share with anyone?

00:09:25 - Rion Gull

Yes.

00:09:26 - Claire Froelich

Yeah.

00:09:26 - Claire Froelich

Okay.

00:09:27 - Claire Froelich

So that's called the mnemonic?

00:09:29 - Rion Gull

Yeah, in some circles.

00:09:30 - Rion Gull

I'd like to...

00:09:31 - Rion Gull

I'd rather call it a seed phrase because that's what it is.

00:09:35 - Rion Gull

But yeah, that's what the API is called at this point.

00:09:39 - Claire Froelich

Okay.

00:09:40 - Claire Froelich

Sweet.

00:09:42 - Claire Froelich

So if the client is set up, and feel free to shout out, by the way, if I'm missing anything or any footnotes you want to add.

00:09:50 - Rion Gull

You're doing good so far.

00:09:53 - Claire Froelich

All right, so we haven't created a wallet yet.

00:09:55 - Claire Froelich

Nemonica is set to null to indicate we want a new one to be generated.

00:09:59 - Claire Froelich

To get a new address for an existing wallet, you can replace null.

00:10:03 - Claire Froelich

Offline mode is set to true, indicating we don't want to sync the chain.

00:10:08 - Claire Froelich

Interesting, so you can do this offline.

00:10:10 - Claire Froelich

It's just local to my computer.

00:10:13 - Claire Froelich

Is that for like development?

00:10:14 - Claire Froelich

Yeah.

00:10:15 - Claire Froelich

Probably.

00:10:18 - Rion Gull

So the syncing the chain thing, it is actually a client sync.

00:10:24 - Rion Gull

We're not going to be downloading a blockchain for one.

00:10:28 - Rion Gull

But it's even lighter weight.

00:10:33 - Rion Gull

Like this way we don't have to have the client sync the headers and things like that either.

00:10:37 - Anthony Campolo

So is the reason why you could do this because the way you generate a wallet, it always generates a unique one every time?

00:10:46 - Rion Gull

That is, yeah, that's part of it.

00:10:49 - Rion Gull

So, yeah, generating the wallet.

00:10:53 - Rion Gull

I'm not sure if I answered the question, actually.

00:10:56 - Claire Froelich

Well, actually, back up.

00:10:59 - Claire Froelich

What is Dash?

00:11:01 - Claire Froelich

What is unique about Dash?

00:11:02 - Claire Froelich

Because actually, I haven't done any research.

00:11:04 - Claire Froelich

I know there's a cryptocurrency called Dash, but the platform...

00:11:09 - Claire Froelich

What's different about the Dash platform?

00:11:11 - Rion Gull

So Dash, high level, yeah.

00:11:15 - Rion Gull

So there's Bitcoin.

00:11:16 - Rion Gull

You've heard of Bitcoin.

00:11:17 - Rion Gull

There's other forks like Litecoin.

00:11:20 - Rion Gull

Have you heard of Litecoin?

00:11:21 - Claire Froelich

Yep.

00:11:22 - Rion Gull

Okay, so Dash is very similar in the sense of they're both forks.

00:11:28 - Rion Gull

It's similar to Litecoin in the sense that they're both forks of Bitcoin.

00:11:33 - Rion Gull

But it's very different in the technology choices that we've made since that original fork, which was over 10 years ago.

00:11:43 - Rion Gull

And so Litecoin has made certain...

00:11:46 - Rion Gull

Different improvements over Bitcoin, or I'll just say changes.

00:11:51 - Rion Gull

And then Dash has made other changes that I personally consider big improvements, but it's of course subjective.

00:12:02 - Rion Gull

And so Dash is just, it's a cryptocurrency that focuses mostly on

00:12:07 - Rion Gull

High speed, low cost, high security, decentralization, all those kind of things.

00:12:14 - Rion Gull

Subjectively or objectively, just a better user experience, better developer experience than you'd get with Bitcoin.

00:12:22 - Rion Gull

Some people say at the expense of security or whatever.

00:12:27 - Rion Gull

But yeah, those are different.

00:12:29 - Rion Gull

Different people will give you different answers on that.

00:12:32 - Rion Gull

But the main difference, I think, is that Dash has a network of what are called master nodes, which are

00:12:42 - Rion Gull

In Bitcoin, anybody can spin up a Bitcoin node and participate in the network as a node operator.

00:12:51 - Rion Gull

That you're not doing anything special as a node operator in Bitcoin by design.

00:12:59 - Rion Gull

But in Dash, we have the masternode concept, which is in addition to running a node, you're also proving that you own a large stake in the network.

00:13:10 - Rion Gull

So it's 1000 Dash.

00:13:15 - Claire Froelich

So there's incentive to run a node.

00:13:18 - Rion Gull

There's not only an incentive, but I'm glad you picked up on that, because the node operators do actually get paid.

00:13:24 - Rion Gull

The master node operators get paid part of the block reward, and that incentivizes them to keep a good service running, because otherwise they don't get paid.

00:13:34 - Rion Gull

But it also creates certain efficiencies, because you have that

00:13:42 - Rion Gull

Staked node and so you have better

00:13:44 - Rion Gull

Performance and then you can add on services that these node operators are running.

00:13:50 - Rion Gull

One of those services, one of the major services that they're doing is instant send or instant locking of transactions, which means when a transaction is seen on the network, then

00:14:03 - Rion Gull

A quorum of these master node operators will see that, see those transactions and they'll say, hey, I've seen this.

00:14:11 - Rion Gull

And as long as a certain quorum of those certain subset of those node operators see the same thing, then they lock that transaction.

00:14:19 - Rion Gull

So instead of waiting for

00:14:21 - Rion Gull

10 minutes or 20 minutes or however long you want to wait for your Bitcoin transaction to confirm on the network

00:14:28 - Rion Gull

Based on certain block intervals of on average 10 minutes instead of all that confirmation time business you can just rely on the fact that if as if the if a quorum of masternode operators have

00:14:43 - Rion Gull

Lock to transaction, you can consider it secure and you can take it to the bank within one to two seconds instead of minutes.

00:14:52 - Rion Gull

So that's kind of the speed aspect.

00:14:57 - Rion Gull

And then there are other things as well, such as

00:15:01 - Rion Gull

Dash is one of the, Dash was the first decentralized autonomous organization, or DAO, if you've heard of those, where we have, because the masternode network, because there's a masternode network, then

00:15:16 - Rion Gull

We give each of those node operators one vote.

00:15:19 - Rion Gull

And so that we vote on stuff like governance decisions, like should we increase the block size or those kind of technical decisions

00:15:28 - Rion Gull

Or even funding decisions where we direct a part of our block reward to developers or marketers or anybody who thinks that they can contribute to the Dash network.

00:15:40 - Rion Gull

Anybody can submit a proposal to get funding and work in Dash.

00:15:45 - Rion Gull

And then those node operators that are incentivized because they have a large stake in the network, they're incentivized to vote well.

00:15:51 - Rion Gull

So they vote for funding.

00:15:53 - Rion Gull

And that's actually how the Dash incubator, which is funding this project and this organization and this live stream, that's how we are funding this.

00:16:04 - Claire Froelich

Got it.

00:16:05 - Claire Froelich

Okay.

00:16:05 - Claire Froelich

Well, I'm glad I asked.

00:16:06 - Claire Froelich

I know I should have asked probably the very beginning, but now I have a bit more context.

00:16:12 - Claire Froelich

I'll also add I've never developed on any blockchain derivative networks.

00:16:16 - Claire Froelich

I've only developed on Ethereum.

00:16:18 - Claire Froelich

So this will be really interesting.

00:16:21 - Claire Froelich

I don't have anything to compare it to yet.

00:16:24 - Claire Froelich

So...

00:16:25 - Anthony Campolo

Yeah, it was the same way when I first got into Dash.

00:16:27 - Anthony Campolo

I had done a lot of Ethereum and some Solana, but not really any Bitcoin stuff.

00:16:33 - Anthony Campolo

So I learned a bunch.

00:16:35 - Anthony Campolo

And the Dash platform is totally different from Bitcoin also.

00:16:39 - Anthony Campolo

So it's not even really necessarily the best comparison.

00:16:44 - Claire Froelich

All right.

00:16:45 - Claire Froelich

So I just created a new script file for create wallet.

00:16:51 - Claire Froelich

We'll use three functions to create a wallet, get wallet account, export wallet, and get unused address.

00:16:57 - Claire Froelich

All right.

00:16:57 - Claire Froelich

And it's all coded for me, and it's going to copy it and paste it into our script file.

00:17:03 - Claire Froelich

Here's the create wallet function, and we're calling it immediately.

00:17:09 - Claire Froelich

We have to define these other functions though, right?

00:17:13 - Claire Froelich

Or no, it's from our client that we imported.

00:17:16 - Claire Froelich

Okay.

00:17:17 - Anthony Campolo

Yeah, so those are all part of the dash.

00:17:19 - Anthony Campolo

That's those like the built-in methods in the dash library.

00:17:24 - Claire Froelich

Is this good form to log your secret seed phrase into the console?

00:17:30 - Claire Froelich

Nobody steal my seed phrase, please.

00:17:31 - Claire Froelich

I told you I wouldn't put my social security number on, but we're going to reveal my seed phrase.

00:17:37 - Claire Froelich

All right.

00:17:37 - Claire Froelich

So, oh, go ahead.

00:17:38 - Rion Gull

No, yeah, just it definitely is not good form to do if you're not working on testnet.

00:17:44 - Rion Gull

But for testnet, it's fine.

00:17:45 - Anthony Campolo

Yeah, you got to get it somehow.

00:17:47 - Anthony Campolo

It has to appear on your screen at some point in time.

00:17:51 - Claire Froelich

I'll add, I've done absolutely no user sign up or anything.

00:17:53 - Claire Froelich

So it sounds like for the testnet, it just gives you a default address in mnemonic.

00:17:59 - Claire Froelich

Or let's see what happens.

00:18:01 - Rion Gull

Yeah, we'll see what happens.

00:18:01 - Rion Gull

It's not default, it's random.

00:18:04 - Claire Froelich

Okay.

00:18:07 - Claire Froelich

Random by default.

00:18:08 - Claire Froelich

So we ran it.

00:18:08 - Claire Froelich

I don't know what happened.

00:18:11 - Claire Froelich

Did anything happen?

00:18:11 - Claire Froelich

I don't see any files.

00:18:13 - Anthony Campolo

You didn't save the file before running it.

00:18:15 - Claire Froelich

Thanks, Anthony.

00:18:17 - Rion Gull

The white dot gave it away.

00:18:20 - Claire Froelich

Okay.

00:18:21 - Rion Gull

There you go.

00:18:22 - Claire Froelich

Cool.

00:18:22 - Claire Froelich

We got it.

00:18:23 - Rion Gull

I have some warnings, but that's just, that's typical stuff.

00:18:26 - Rion Gull

So.

00:18:27 - Claire Froelich

Okay.

00:18:29 - Claire Froelich

To be ignored.

00:18:30 - Claire Froelich

All right.

00:18:30 - Claire Froelich

So this is the wallet address where people can't rob me because it's fake, right?

00:18:35 - Rion Gull

Yep.

00:18:36 - Claire Froelich

And my seed code, seed phrase.

00:18:40 - Claire Froelich

Yeah, you're going to want to paste both of those and put them in your .env.

00:18:40 - Anthony Campolo

Yeah, you're going to want to paste both of those and put them in your .env.

00:18:44 - Claire Froelich

Okay.

00:18:45 - Rion Gull

Yep.

00:18:46 - Rion Gull

Seed phrase is synonymous with mnemonic.

00:18:48 - Rion Gull

Just, you got it, I think.

00:18:50 - Claire Froelich

Like this, yeah.

00:18:52 - Claire Froelich

Okay, so I'm going to pop these in here before we lose them.

00:18:57 - Claire Froelich

All right.

00:19:00 - Claire Froelich

And it says, copy these just like we did.

00:19:03 - Claire Froelich

Okay, next is to add funds to the wallet with testnet faucet.

00:19:06 - Claire Froelich

Oh, I remember faucets.

00:19:07 - Claire Froelich

These were like such a pain for the developer experience because like you'd have to wait for them to drip.

00:19:14 - Anthony Campolo

If only that was his biggest problem.

00:19:17 - Claire Froelich

You get more than a drop this time?

00:19:20 - Claire Froelich

Send test funds to unused address from the council output.

00:19:25 - Claire Froelich

Testnet faucet.

00:19:26 - Claire Froelich

We're opening that in the tab.

00:19:28 - Claire Froelich

Wait for them to be confirmed.

00:19:29 - Claire Froelich

It might take a few minutes.

00:19:30 - Claire Froelich

I'll get this kicked off.

00:19:33 - Claire Froelich

Block Explorer.

00:19:34 - Claire Froelich

All right.

00:19:34 - Claire Froelich

So here's the test faucet.

00:19:36 - Claire Froelich

And sorry, my browser's in Japanese, but that's a captcha.

00:19:43 - Claire Froelich

Should I use this promo code?

00:19:45 - Rion Gull

So you'll want to enter your address above the captcha.

00:19:49 - Rion Gull

It's kind of hidden up there.

00:19:50 - Claire Froelich

Oh, I see.

00:19:51 - Claire Froelich

Okay, right here.

00:19:53 - Claire Froelich

My address here.

00:19:54 - Rion Gull

Yeah, yeah.

00:19:55 - Rion Gull

There you go.

00:19:56 - Claire Froelich

That would be this.

00:19:58 - Rion Gull

That's right.

00:20:01 - Claire Froelich

Do all addresses start with Y or is this just a coincidence?

00:20:05 - Rion Gull

Say again?

00:20:06 - Claire Froelich

Do all wallet addresses start with Y or is this a coincidence?

00:20:10 - Rion Gull

The test net always starts with Y.

00:20:13 - Rion Gull

mainnet addresses start with X.

00:20:15 - Claire Froelich

Oh, cool.

00:20:17 - Claire Froelich

Okay, so if I click this button, I should get some money?

00:20:19 - Rion Gull

Yep.

00:20:20 - Claire Froelich

I like the sound of that.

00:20:23 - Rion Gull

Yeah, and while we're waiting for that, yeah, don't click get coins again.

00:20:29 - Rion Gull

This is a finicky site.

00:20:31 - Rion Gull

You see the browser is loading by, you know, you see the type of there.

00:20:37 - Rion Gull

It's doing stuff.

00:20:38 - Rion Gull

Sometimes it crashes, sometimes it doesn't.

00:20:41 - Rion Gull

I don't know what that said.

00:20:42 - Claire Froelich

It said that the confirmation time timed out.

00:20:45 - Claire Froelich

But I think we already kicked it off, right?

00:20:46 - Claire Froelich

So it's working on it.

00:20:48 - Rion Gull

So let's open the Insight tab now and see what's...

00:20:51 - Claire Froelich

Yeah.

00:20:52 - Claire Froelich

Is there any, like, transaction ID?

00:20:54 - Claire Froelich

Oh, wait.

00:20:55 - Claire Froelich

Look at that.

00:20:56 - Claire Froelich

It went through.

00:20:56 - Claire Froelich

It worked.

00:20:57 - Claire Froelich

2.8 dash.

00:20:58 - Claire Froelich

Hey, tell me, how much is that in U.S.

00:21:00 - Claire Froelich

Dollars?

00:21:02 - Rion Gull

If it were mainnet, then it would be like 70 bucks or something, 70 US dollars.

00:21:07 - Claire Froelich

Okay.

00:21:08 - Rion Gull

Something like that.

00:21:10 - Claire Froelich

So I'm guessing this is the one that we launched a minute ago, maybe?

00:21:16 - Rion Gull

We might see the transaction down there.

00:21:18 - Rion Gull

That might be our transaction.

00:21:20 - Claire Froelich

2.8, is that what we had?

00:21:22 - Claire Froelich

2.86.

00:21:24 - Claire Froelich

I don't know.

00:21:25 - Claire Froelich

Similar.

00:21:26 - Rion Gull

Something like that.

00:21:27 - Rion Gull

So let's go ahead and just pop the address into the search for block transaction.

00:21:33 - Rion Gull

Yeah.

00:21:34 - Claire Froelich

Wallet address, right?

00:21:35 - Claire Froelich

Okay, so you want to take that.

00:21:38 - Claire Froelich

Okie dokie.

00:21:39 - Claire Froelich

So this is the history of our transactions.

00:21:42 - Claire Froelich

I guess maybe some initial transactions happen behind the scenes.

00:21:46 - Claire Froelich

Because I see a lot of them.

00:21:48 - Rion Gull

So on the left, you see the inputs to the transaction and on the right, you see the outputs.

00:21:52 - Rion Gull

So your address is on the right, meaning it's received funds from the other inputs on the left.

00:21:59 - Rion Gull

That's just kind of how blockchain transactions work.

00:22:03 - Rion Gull

But so far, so good.

00:22:04 - Rion Gull

We're rolling.

00:22:06 - Claire Froelich

Cool.

00:22:06 - Claire Froelich

All right.

00:22:07 - Claire Froelich

So I got money, fake money.

00:22:13 - Claire Froelich

All right, so search wallet, we just did that.

00:22:16 - Claire Froelich

By the way, what was this address right here, the first?

00:22:23 - Rion Gull

Good question.

00:22:24 - Rion Gull

That is sending the change back to either the wallet or something that the faucet controls.

00:22:35 - Claire Froelich

Okay, so it's like an administrative step in the faucet process?

00:22:41 - Rion Gull

Yeah, I mean, I don't know how much to go into the transaction theory here, but yeah, basically when you're making a transaction,

00:22:51 - Rion Gull

You can think of it like a bunch of coins that you dump out onto a counter when you're at the gas station or whatever.

00:22:57 - Rion Gull

And you send those coins to the person.

00:23:03 - Rion Gull

And then in order to, like the sum of the inputs on the left side has to equal the sum of the input outputs on the right hand side.

00:23:12 - Rion Gull

So you have to send change back to a certain address because.

00:23:17 - Claire Froelich

So it's a leaky faucet.

00:23:19 - Rion Gull

Yeah, well, not all the inputs always add up to exactly what you want to send to.

00:23:25 - Rion Gull

And so the remaining balance has to go back to an address, some kind of address.

00:23:31 - Rion Gull

So if you want to control the change and get the change back as the sender of the transaction, then you want to provide...

00:23:39 - Rion Gull

Your outputs and address that you control.

00:23:41 - Rion Gull

And so I would assume that the faucet is just sending it back to itself.

00:23:46 - Rion Gull

Got it.

00:23:46 - Claire Froelich

So it's like that little penny bar at the gas station for the extra penny change that you don't want to put in your wallet.

00:23:52 - Rion Gull

Yeah.

00:23:52 - Rion Gull

So YTCF9, if you go back to the dash faucet,

00:24:00 - Claire Froelich

This one?

00:24:01 - Rion Gull

Yep.

00:24:02 - Rion Gull

YT.

00:24:02 - Rion Gull

Okay.

00:24:03 - Rion Gull

So that's, I was wondering if it might be that address, but we'll have multiple addresses.

00:24:10 - Rion Gull

Maybe it's not the one that's shown here, but it's probably one that the wallet, that the faucet owns.

00:24:16 - Claire Froelich

Are people donating real money to fund the faucet for the testnet?

00:24:21 - Rion Gull

No, it's just that if the faucet ran dry for whatever reason, like somebody tried to get all the money, which is why you have to do a captcha.

00:24:30 - Rion Gull

Sometimes, like, because this is an open network, anybody can interact with it.

00:24:34 - Rion Gull

So if somebody ran it dry and you wanted to interact with it, you could send it some money, some testnet funds, and then have it be working again.

00:24:44 - Claire Froelich

Got it.

00:24:44 - Claire Froelich

Okay, if we have any leftover change at the end of the stream, I'll donate it back just to keep things liquid.

00:24:49 - Rion Gull

But just since we're there, these faucets, they used to be on Bitcoin and like all of these faucet apps, web apps,

00:24:59 - Rion Gull

They're derived from really old school faucet that used to be like mainnet Bitcoin.

00:25:05 - Rion Gull

And so that's one of the reasons why they have these donation addresses as well is because it used to be mainnet.

00:25:11 - Rion Gull

Mainnet funds that if somebody was feeling generous, like they were early miner and they mined 50 bitcoins back in the day and they wanted to like spread the message, the good message of Bitcoin or in our example, Dash,

00:25:24 - Rion Gull

If it were mainnet, then you could actually send to that and then people could then go to the faucet and say, hey, I want to try this out and I'll

00:25:33 - Rion Gull

I'll take like, I'd like to have 50 cents worth or something like that.

00:25:37 - Rion Gull

And so, yeah, back in the day, it was very small amounts of money that you would be able to get from these faucets, but it was real money.

00:25:46 - Rion Gull

And if you had hung on to it since the early times, then you would have done pretty well.

00:25:51 - Claire Froelich

To be a dev back in the day, I would have, if I had...

00:25:54 - Claire Froelich

The foresight.

00:25:55 - Claire Froelich

I would have just been dripping from the faucet once a day.

00:25:58 - Rion Gull

Yep.

00:25:59 - Claire Froelich

Rich right now.

00:26:00 - Rion Gull

Exactly.

00:26:03 - Rion Gull

Yeah, let's go ahead and move forward then.

00:26:05 - Claire Froelich

Yeah.

00:26:06 - Claire Froelich

Am I like behind on time?

00:26:08 - Claire Froelich

Do I need to rush?

00:26:09 - Claire Froelich

How are we doing?

00:26:10 - Rion Gull

Fine.

00:26:11 - Rion Gull

We're good.

00:26:11 - Rion Gull

We're good.

00:26:12 - Rion Gull

Because we always, we'll just go into part two if you're interested.

00:26:18 - Anthony Campolo

Yeah, I got one buddy who's going to be on part three soon.

00:26:21 - Rion Gull

I guess we'll say part C and B because, yeah.

00:26:25 - Claire Froelich

All right.

00:26:27 - Claire Froelich

The transaction link.

00:26:27 - Claire Froelich

Is this what we just looked at together?

00:26:29 - Claire Froelich

Okay.

00:26:30 - Claire Froelich

Yeah.

00:26:30 - Claire Froelich

You skipped the screenshots.

00:26:32 - Rion Gull

Yeah.

00:26:33 - Claire Froelich

And you can also expand it for more info.

00:26:37 - Claire Froelich

We didn't do that.

00:26:37 - Claire Froelich

I'm kind of curious what else we can see in there.

00:26:42 - Claire Froelich

Hold on a second.

00:26:42 - Claire Froelich

I think I need to refresh.

00:26:44 - Rion Gull

Click forward.

00:26:45 - Rion Gull

Click your phone.

00:26:45 - Rion Gull

Oh, yeah.

00:26:46 - Claire Froelich

We have the history.

00:26:47 - Rion Gull

Yeah.

00:26:48 - Claire Froelich

All right.

00:26:49 - Rion Gull

I think it's the arrow that you, or no, there's a plus right by the big long string right below transactions.

00:26:56 - Claire Froelich

Oh, here.

00:26:57 - Rion Gull

Yeah.

00:26:59 - Rion Gull

So that's if you really want to get into the nerdy details of the transactions.

00:27:03 - Rion Gull

That's what I was wondering.

00:27:05 - Rion Gull

How far do I go into this?

00:27:07 - Claire Froelich

Well, it's suggested to try it here.

00:27:09 - Claire Froelich

So everyone's going to go through it.

00:27:11 - Claire Froelich

But I think that's good to know because I never would have found that without being nudged.

00:27:15 - Claire Froelich

Okay.

00:27:17 - Claire Froelich

Register and retrieve identity.

00:27:19 - Claire Froelich

Modify the client again, include your mnemonic seed phrase in .env.

00:27:23 - Claire Froelich

Okay, so we're gonna pluck that out and, oh, okay, because we didn't have a mnemonic before, now we do.

00:27:31 - Claire Froelich

I think before in here, we had offline modes at the true, but we're not using that anymore.

00:27:39 - Claire Froelich

It's going to open the file.

00:27:43 - Claire Froelich

All right.

00:27:44 - Claire Froelich

Unsafe options.

00:27:45 - Claire Froelich

Skip synchronization before height.

00:27:47 - Claire Froelich

What is height?

00:27:48 - Claire Froelich

I saw this in the...

00:27:51 - Claire Froelich

Over here somewhere too.

00:27:52 - Anthony Campolo

So basically each block starting with the first one is like height one, the second block is height two.

00:27:58 - Anthony Campolo

Oh, okay.

00:27:59 - Claire Froelich

So it's like the position in the pancake stack.

00:28:02 - Claire Froelich

Okay.

00:28:03 - Anthony Campolo

Yeah, exactly.

00:28:05 - Claire Froelich

Right, so we are setting up our client with new configuration.

00:28:09 - Claire Froelich

I don't know what this does, but I'm just gonna

00:28:12 - Anthony Campolo

It's so you don't have to sync the whole chain, the whole chain history.

00:28:15 - Anthony Campolo

It just like looks at the last, you know, month of blocks or whatever.

00:28:21 - Claire Froelich

Got it.

00:28:21 - Claire Froelich

So if you actually wanted to implement this, you would probably go and look at the insights and find out what would be an appropriate height to put in there.

00:28:29 - Anthony Campolo

Yeah, that's just kind of like the default right now.

00:28:32 - Claire Froelich

Okay.

00:28:34 - Claire Froelich

Next script, create identity.js.

00:28:36 - Claire Froelich

We will run identities.register function.

00:28:42 - Claire Froelich

What is an identity?

00:28:43 - Claire Froelich

Is it like a profile within a wallet?

00:28:48 - Claire Froelich

I don't know.

00:28:52 - Claire Froelich

So.

00:28:53 - Rion Gull

Yeah, the way that I describe it is it's just, it's a public private key pair, essentially.

00:28:58 - Claire Froelich

Oh, okay.

00:29:00 - Claire Froelich

This is what people will see in the, well, the public one they'll see on the transactions.

00:29:05 - Rion Gull

So you're familiar with the concepts of SSHing and doing SSH key pairs and generations and things like that.

00:29:14 - Rion Gull

And you can kind of think of that as like an identity for your SSH server.

00:29:20 - Rion Gull

Same idea, but it uses a little different cryptographic primitives.

00:29:28 - Claire Froelich

Cool.

00:29:28 - Claire Froelich

All right.

00:29:29 - Claire Froelich

So we've got the script there.

00:29:34 - Claire Froelich

It's going to create a new identity and console log it and ask us to go to some website.

00:29:40 - Claire Froelich

So let's check it out.

00:29:42 - Claire Froelich

Create identity.

00:29:44 - Claire Froelich

All right.

00:29:45 - Claire Froelich

Ignore warnings, right?

00:29:47 - Rion Gull

Yeah.

00:29:50 - Rion Gull

And as I'm waiting, I'll explain a little bit more about the identity stuff.

00:29:55 - Rion Gull

One of the beauties of blockchains and decentralized cryptocurrencies in general is that as opposed to something like the bank, the traditional banking system where.

00:30:06 - Rion Gull

Your identity in their system is something they give you, right?

00:30:11 - Rion Gull

You go open an account at a bank.

00:30:14 - Rion Gull

They're going to give you an identifier.

00:30:17 - Rion Gull

Like they're going to create an account for you and it lives on their system.

00:30:21 - Rion Gull

In blockchains, the role is completely flipped where

00:30:25 - Rion Gull

The users.

00:30:26 - Claire Froelich

Tell us who you want to be.

00:30:27 - Rion Gull

Yeah, the users actually create their identities, and then that's what's the authoritative identity system.

00:30:34 - Claire Froelich

And that's what we just did, right, with the create identity script.

00:30:38 - Claire Froelich

When we ran register, we created our identity.

00:30:41 - Claire Froelich

Now I'm going to go where it told me to go.

00:30:45 - Claire Froelich

So this is the bash platform that we're on right now, right?

00:30:49 - Rion Gull

Yeah, this is an explorer, platform explorer.

00:30:54 - Rion Gull

There are different ways to view things that are happening on a blockchain.

00:31:00 - Rion Gull

The best...

00:31:02 - Rion Gull

Most like closest to the metal way to do that is to run an actual node on the network.

00:31:09 - Rion Gull

But that's resource intensive and takes time.

00:31:13 - Rion Gull

And, you know, a lot of people don't have the technical chops to do that.

00:31:17 - Rion Gull

So other people who can do that, like our good friend and colleague, Mikhail Shenmik,

00:31:24 - Rion Gull

He has built this website that does that crawling of the blockchain itself.

00:31:30 - Rion Gull

He's running a node.

00:31:32 - Rion Gull

He's running an indexer on top of that node, which looks through all the transactions, organizes them in certain ways, provides a REST API that this front end that he's also created.

00:31:45 - Rion Gull

But then contact and get information that's information that originates from the blockchain, but is presented in an easier to consume way.

00:31:56 - Rion Gull

So that's what the blockchain, this platform explorer is, is it's just a way to look at what's happening on the Dash platform blockchain.

00:32:05 - Claire Froelich

Very cool.

00:32:06 - Claire Froelich

I'm a freeloader, so I'll use the monitor version.

00:32:09 - Claire Froelich

And that's cool that you have an API.

00:32:11 - Claire Froelich

I'm guessing all of these are like get operations just for monitoring stuff that happens on the network.

00:32:16 - Rion Gull

Yep.

00:32:17 - Rion Gull

Yeah, I actually, I don't even know if anybody has looked at this API site.

00:32:24 - Rion Gull

Yeah, I checked that once.

00:32:26 - Claire Froelich

Yeah.

00:32:27 - Claire Froelich

I used to work at Postman, so I saw this word API.

00:32:29 - Claire Froelich

I'm like, got to check this out.

00:32:31 - Rion Gull

Yeah.

00:32:32 - Rion Gull

Yeah, that's what I'm saying.

00:32:32 - Claire Froelich

Do you have a Postman collection?

00:32:34 - Claire Froelich

Because it would be really cool if people could just fork this and they could run all these examples in one click.

00:32:40 - Claire Froelich

It would be pretty cool.

00:32:41 - Rion Gull

You know, I wasn't going to say the name Postman, but you said it off screen, so I didn't know if you wanted to share that.

00:32:47 - Rion Gull

But that is very cool that you used to work for Postman, which is, for anybody who doesn't know, it's watching a very popular API client.

00:32:56 - Rion Gull

Or you could explain it better than me.

00:32:57 - Rion Gull

But yeah, I don't know if we have that yet.

00:33:00 - Rion Gull

I don't think we do.

00:33:02 - Claire Froelich

Well, if I play with this more, I'll make a fan public postman collection and play with it that way.

00:33:08 - Rion Gull

Yeah.

00:33:09 - Claire Froelich

But cool.

00:33:09 - Claire Froelich

So even if you aren't using the API, you can just use this UI to see what's going on.

00:33:14 - Claire Froelich

Now I see right here there was an identity create that happened today.

00:33:18 - Claire Froelich

I'm guessing that's me.

00:33:20 - Rion Gull

Yeah, that's the one that just happened.

00:33:23 - Claire Froelich

Is this like the event ID and this is our identifier?

00:33:27 - Claire Froelich

What are we looking for?

00:33:29 - Rion Gull

So click the thing, click the create identity or identity create.

00:33:33 - Claire Froelich

This guy.

00:33:34 - Claire Froelich

Yes.

00:33:34 - Rion Gull

So there's a specific transaction for.

00:33:37 - Rion Gull

So, okay, this is.

00:33:39 - Rion Gull

State transition, as this is.

00:33:41 - Rion Gull

So there's this thing they call state transition.

00:33:43 - Rion Gull

It's basically that's like writing to the blockchain.

00:33:46 - Claire Froelich

Right.

00:33:47 - Claire Froelich

And here's the hash of the block.

00:33:49 - Rion Gull

Yeah.

00:33:49 - Rion Gull

So there's the identity ID itself.

00:33:51 - Rion Gull

And then there's the, like, this is the hash for the state transition, I believe, is what's happening.

00:33:58 - Claire Froelich

So this is my new identity.

00:34:00 - Rion Gull

Yep.

00:34:00 - Claire Froelich

32A4N, that's how you should refer to me.

00:34:02 - Claire Froelich

From now on.

00:34:04 - Rion Gull

Okay.

00:34:06 - Claire Froelich

If I click on this, what do I learn about myself?

00:34:10 - Claire Froelich

Oh, it takes a second.

00:34:11 - Anthony Campolo

Balance.

00:34:12 - Claire Froelich

Learns when I was born.

00:34:15 - Rion Gull

Yep.

00:34:16 - Claire Froelich

I'm not in the system.

00:34:18 - Rion Gull

Well, you're not a system.

00:34:20 - Rion Gull

Yeah, you're not the system.

00:34:21 - Claire Froelich

But I'm rich.

00:34:24 - Rion Gull

Yeah, and that 1,000, whatever that number is, that's because we defined that in our request to make the transaction.

00:34:32 - Rion Gull

That's what we said, one something.

00:34:35 - Rion Gull

If you look back to your code, that's what you'd see.

00:34:38 - Claire Froelich

Oh, I see.

00:34:39 - Claire Froelich

I can tell.

00:34:41 - Claire Froelich

Did we say 1,000 anywhere?

00:34:42 - Anthony Campolo

No, you're thinking of the top-up credit function, Ryan.

00:34:45 - Claire Froelich

Okay.

00:34:47 - Rion Gull

How do you have a balance then?

00:34:49 - Anthony Campolo

So there's an instant balance when you create the identity.

00:34:54 - Anthony Campolo

There's some amount.

00:34:55 - Anthony Campolo

And this is why you need the testnet funds to create the identity.

00:34:57 - Anthony Campolo

You can't create an identity if your balance is zero.

00:35:02 - Claire Froelich

I see.

00:35:03 - Claire Froelich

So we used our testnet funds to create the wallet or the identity.

00:35:07 - Anthony Campolo

To create the identity.

00:35:08 - Anthony Campolo

Yeah, because there's basically why they're called credits is because you have Dash in your wallet.

00:35:13 - Anthony Campolo

And then when you go to the platform, you have this thing called credits.

00:35:16 - Anthony Campolo

And so there'll be a part where you do something called top up credits, where you'll add more credits from your original Dash that you got from the faucet.

00:35:25 - Claire Froelich

This is really fascinating and I'm so glad that I can do this without adding my credit card to anything, knowing that I'm not sinking.

00:35:34 - Anthony Campolo

Yeah, you're speaking Ryan's language.

00:35:36 - Rion Gull

Yeah, I love it.

00:35:37 - Rion Gull

I love it.

00:35:39 - Rion Gull

I hope that the world moves this direction where people own their own money independent of banks and all that stuff.

00:35:47 - Rion Gull

This should be in our full control.

00:35:49 - Rion Gull

So yeah, I'm glad that you- Yeah, that's what Michael's saying.

00:35:51 - Anthony Campolo

So this is what I was saying, the create identity doesn't top up kind of under the hood.

00:35:56 - Anthony Campolo

Yeah, and that's what I thought, but we can figure that.

00:35:59 - Rion Gull

We define the number that it creates to do the top-up in the identity creation, do we not?

00:36:07 - Anthony Campolo

We did not.

00:36:08 - Anthony Campolo

No, we did nothing.

00:36:08 - Anthony Campolo

Maybe we can figure that.

00:36:10 - Claire Froelich

I think it really has a default.

00:36:13 - Rion Gull

Okay.

00:36:14 - Rion Gull

I'll have to look into that.

00:36:17 - Claire Froelich

Cool, so I've saved my new identity.

00:36:20 - Claire Froelich

You know, call me 32A4N.

00:36:24 - Rion Gull

But only for a short time, Claire, because you're gonna actually get a real name soon.

00:36:29 - Claire Froelich

Well, everything is ephemeral.

00:36:32 - Rion Gull

Yeah.

00:36:32 - Claire Froelich

So earlier we saw, oh yeah, go ahead, Anthony.

00:36:35 - Anthony Campolo

Yeah, so the register,

00:36:38 - Anthony Campolo

Function has a parameter called funding amount, which is default to 10,000.

00:36:43 - Anthony Campolo

Oh, okay.

00:36:44 - Anthony Campolo

You can change it if you want.

00:36:45 - Claire Froelich

So if I wanted to change that, I would like, you know, say in here default amount and set it to like 10 billion to be richer.

00:36:54 - Rion Gull

Something like that might exist, but I don't know the specific API.

00:36:57 - Claire Froelich

Okay.

00:36:59 - Claire Froelich

Cool.

00:36:59 - Claire Froelich

Well, we got money anyway.

00:37:01 - Claire Froelich

Or credits, right?

00:37:03 - Claire Froelich

And next step, earlier we saw how to view our transactions.

00:37:07 - Claire Froelich

We did this before in the identities tab.

00:37:09 - Claire Froelich

We clicked in here.

00:37:13 - Claire Froelich

And outputs to terminal.

00:37:14 - Claire Froelich

Yeah, so we clicked the terminal link from the terminal, inspected the identity creation.

00:37:20 - Claire Froelich

All right, so next we're gonna make a retrieve identity script.

00:37:27 - Claire Froelich

And get IDs.

00:37:31 - Claire Froelich

Get identity IDs on our wallet identities.

00:37:35 - Claire Froelich

Okay.

00:37:36 - Claire Froelich

Copy the script and paste it into retrieve identities.

00:37:43 - Claire Froelich

And we're just going to, that's it.

00:37:44 - Claire Froelich

We just call this SDK to, I'm guessing it's using that API under the hood maybe, or a different API.

00:37:50 - Claire Froelich

Different API.

00:37:51 - Claire Froelich

I'm curious.

00:37:52 - Claire Froelich

Okay.

00:37:53 - Claire Froelich

All right.

00:37:54 - Claire Froelich

We're going to run this script.

00:37:58 - Claire Froelich

NPM run retrieve identities.

00:38:00 - Claire Froelich

That is very nice that you

00:38:03 - Claire Froelich

Added all the scripts and packed JSON for us.

00:38:05 - Claire Froelich

All right, what did I break?

00:38:08 - Claire Froelich

Did I forget to save something?

00:38:10 - Claire Froelich

Empty SPV chain.

00:38:12 - Anthony Campolo

Yeah, this function, for some reason, it always has something weird happening with it.

00:38:19 - Anthony Campolo

But we can skip this one because it's not really a huge deal.

00:38:23 - Anthony Campolo

We've been talking about possibly...

00:38:26 - Anthony Campolo

Doing usually like a local version of testnet, but we made it through the important commands that are actually blockers.

00:38:33 - Anthony Campolo

So we're probably, we should probably keep going with testnet for now, but all Retrieve does is it just gives you back the idea that you just created.

00:38:40 - Anthony Campolo

So it's not really the most- Cool, and this is like identities associated with your wallet.

00:38:45 - Anthony Campolo

So yeah, so your wallet can have multiple identities.

00:38:48 - Claire Froelich

Okay, cool.

00:38:50 - Claire Froelich

Okay, so good thing we have good short-term memory.

00:38:53 - Claire Froelich

We already know our identity, so we don't need to retrieve it.

00:38:56 - Claire Froelich

And we know our balance.

00:38:58 - Claire Froelich

All right, so when identity is created,

00:39:00 - Claire Froelich

Where should I skip to, Anthony?

00:39:03 - Anthony Campolo

Just you go.

00:39:03 - Anthony Campolo

So top up, we need to do top up because actually if you skip this one, then we'll just keep going from here.

00:39:09 - Claire Froelich

Top up?

00:39:10 - Anthony Campolo

Yeah.

00:39:11 - Claire Froelich

Cool.

00:39:12 - Claire Froelich

Top up identities.

00:39:13 - Claire Froelich

We're going to add a little credits here.

00:39:17 - Claire Froelich

Oh, we're going to use get identities again.

00:39:18 - Claire Froelich

Are we going to get blocked?

00:39:22 - Anthony Campolo

I don't think so.

00:39:23 - Anthony Campolo

We'll see.

00:39:25 - Claire Froelich

If not, we know our identity, so.

00:39:29 - Claire Froelich

We could hard code it.

00:39:32 - Claire Froelich

Okay, so we're going to loop through.

00:39:33 - Claire Froelich

I hope it works.

00:39:34 - Claire Froelich

We're going to loop through the IDs and top them up just the top up function.

00:39:39 - Rion Gull

Yeah.

00:39:40 - Rion Gull

This is what I was thinking of.

00:39:41 - Rion Gull

I thought we were at this step for some reason that my mind was.

00:39:44 - Rion Gull

Yeah.

00:39:45 - Rion Gull

Anyway, that's thinking.

00:39:46 - Rion Gull

Yep.

00:39:47 - Claire Froelich

I see.

00:39:47 - Claire Froelich

Okay.

00:39:48 - Rion Gull

We're going to add that much more credit.

00:39:50 - Rion Gull

To our account.

00:39:51 - Claire Froelich

Yeah, I hope this works because we couldn't get this function to work in the last step.

00:39:54 - Claire Froelich

Let's see if it's...

00:39:55 - Anthony Campolo

Yeah, you would think that that would be the case, but we'll see.

00:39:59 - Claire Froelich

Well, I can always be surprised by code.

00:40:04 - Claire Froelich

Hey, hey, just warnings, just warnings.

00:40:09 - Claire Froelich

Okay, something's happening.

00:40:10 - Claire Froelich

That's good.

00:40:13 - Claire Froelich

There's some crunching happening on the network.

00:40:15 - Rion Gull

Yeah, and while it's doing that, I'll say a few things about the network that we're working with right now is TestNet.

00:40:21 - Rion Gull

It's basically a network that Dash Core Group, a different entity that is funded by the Dash network itself, they maintain this network.

00:40:31 - Rion Gull

And the network's generally...

00:40:33 - Rion Gull

Healthy, but the SDK that we're using is a little bit out of date.

00:40:39 - Rion Gull

They're focusing mostly on the

00:40:40 - Rion Gull

Rust SDK right now, the JavaScript SDK is a little bit, well, rusty, I guess you could say.

00:40:49 - Rion Gull

But yeah, so sometimes we'll see errors that are associated with the SDK and sometimes we'll see errors that are associated with the network.

00:40:59 - Rion Gull

Let's see.

00:41:00 - Claire Froelich

This one looks SDK related from before.

00:41:03 - Rion Gull

Is the MPSVV chain error again?

00:41:05 - Claire Froelich

No, no, that was from before.

00:41:06 - Claire Froelich

Sorry.

00:41:07 - Anthony Campolo

Yeah, yeah.

00:41:08 - Anthony Campolo

But yeah, so that's the type of error where it says MPSVV chain.

00:41:11 - Anthony Campolo

That's one where it usually just means that it's tried to sync to a node that was...

00:41:18 - Anthony Campolo

Wonky for whatever reason and it's not really able to retry or does it is able to retry but it doesn't do enough to actually figure it out so yeah see told you

00:41:28 - Claire Froelich

So it looks like we got it this time yeah we have we've topped up i know we told it to put like 10 000 in each one but we have slightly less than that is there like

00:41:38 - Claire Froelich

A transaction fee?

00:41:40 - Rion Gull

Yeah, every interaction that modifies data, does actual state transition on the network, costs money.

00:41:49 - Claire Froelich

Okay.

00:41:50 - Claire Froelich

So we had a tax of about 13%.

00:41:54 - Rion Gull

Yeah, I'd have to look at the actual numbers again, but I think you're right.

00:42:01 - Claire Froelich

Yeah, I'm used to crypto world where you just expect your money to like disappear at various steps of the process.

00:42:08 - Claire Froelich

Yeah.

00:42:12 - Claire Froelich

Okay, next.

00:42:13 - Claire Froelich

Register and retrieve name.

00:42:15 - Claire Froelich

Okay, name.

00:42:15 - Claire Froelich

We had an identity.

00:42:16 - Claire Froelich

Now we're going to get a name, which is probably something that's easier to remember than 342AN.

00:42:24 - Claire Froelich

Create a label property and then environment variables, replace your name here with our name.

00:42:29 - Claire Froelich

So we have power to decide whatever we want.

00:42:32 - Rion Gull

Yep.

00:42:34 - Claire Froelich

Who should I be?

00:42:35 - Claire Froelich

I don't want to put my real name here.

00:42:39 - Claire Froelich

Or will I?

00:42:40 - Claire Froelich

I will.

00:42:42 - Claire Froelich

I'll be Claire Fro.

00:42:43 - Claire Froelich

Is it like a conventional to do a screaming case?

00:42:47 - Claire Froelich

I see a lot of caps.

00:42:49 - Rion Gull

If it's conventional for you, then great.

00:42:53 - Rion Gull

No, just the other side.

00:42:55 - Anthony Campolo

Probably lowercase.

00:42:57 - Anthony Campolo

It's kind of like a domain.

00:42:59 - Anthony Campolo

Because it's going to have dots.

00:43:00 - Anthony Campolo

It's going to be Claire Pro dot dash.

00:43:03 - Claire Froelich

I shouldn't dare to be different.

00:43:06 - Claire Froelich

All right.

00:43:07 - Claire Froelich

We're going to add the script to register name.

00:43:13 - Claire Froelich

Register name.js.

00:43:15 - Claire Froelich

Whoa, didn't copy the script.

00:43:18 - Claire Froelich

Now I have.

00:43:23 - Claire Froelich

I was using a non-Mac earlier today, and I can't copy-paste.

00:43:28 - Claire Froelich

My muscle memory is all messed up.

00:43:30 - Claire Froelich

Okay.

00:43:35 - Claire Froelich

Oops.

00:43:37 - Claire Froelich

So register name, we're going to pull our identity ID and label from .env and get our identity by ID.

00:43:45 - Claire Froelich

And get the idea of the identity interesting.

00:43:50 - Claire Froelich

Is it a different, is it a unique identity ID?

00:43:55 - Claire Froelich

I thought IDs were unique.

00:43:58 - Rion Gull

Yeah, the identity is actually an object or something, I guess.

00:44:02 - Claire Froelich

Oh, okay.

00:44:03 - Rion Gull

Get the ID from it.

00:44:06 - Claire Froelich

I got it, okay.

00:44:08 - Claire Froelich

And we're gonna create a new name registration on the client platform names like register.

00:44:14 - Claire Froelich

Here's what you were talking about, Anthony.

00:44:16 - Claire Froelich

Right?

00:44:17 - Rion Gull

Yeah, exactly.

00:44:18 - Claire Froelich

And so here I could actually change this technically to be my own suffix.

00:44:25 - Rion Gull

Yeah, I don't actually know how this works, but I don't think it would work if you change it to anything other than dash.

00:44:30 - Rion Gull

No, it has to be dot dash, yeah.

00:44:32 - Claire Froelich

It's interesting that you have the option to not put dash there.

00:44:36 - Rion Gull

Well, you don't.

00:44:37 - Rion Gull

I mean, well, you do, but the code break.

00:44:39 - Rion Gull

So, like, that's why it's written this way.

00:44:40 - Claire Froelich

Well, I mean, like, the SDK, it'd be cool if, like, it took the label as a property and, like, did this for you.

00:44:45 - Claire Froelich

Otherwise, someone would be fat fingered.

00:44:48 - Rion Gull

It makes it look like you.

00:44:49 - Rion Gull

You have a choice, but you don't really.

00:44:53 - Claire Froelich

Oh, the wild west of crypto.

00:44:54 - Claire Froelich

There's always some way to mess stuff up.

00:44:57 - Claire Froelich

Okay.

00:44:58 - Claire Froelich

So we're going to pass it some property, the unique ID and the identity was an object, right?

00:45:03 - Claire Froelich

And we're going to put something out.

00:45:06 - Claire Froelich

We're going to get this label we made and then view it.

00:45:11 - Claire Froelich

All right, let's check it out.

00:45:12 - Claire Froelich

So we're going to run.

00:45:18 - Claire Froelich

Registered name.

00:45:21 - Claire Froelich

And this operation, does it take dash to perform or is this on credits?

00:45:29 - Anthony Campolo

I think everything should be credits.

00:45:31 - Anthony Campolo

Everything will be credits.

00:45:31 - Anthony Campolo

That's done on platform.

00:45:32 - Anthony Campolo

Yeah.

00:45:33 - Claire Froelich

Okay.

00:45:33 - Claire Froelich

So the only thing we've used Dash for so far was making an identity.

00:45:37 - Rion Gull

Yeah.

00:45:38 - Rion Gull

I mean, in some sense, everything that is a credit is Dash as well.

00:45:42 - Rion Gull

Dash, a credit is just a certain denomination of Dash.

00:45:45 - Rion Gull

Oh.

00:45:47 - Rion Gull

It was in the...

00:45:48 - Rion Gull

Like dollars and cents.

00:45:50 - Rion Gull

Yes, exactly.

00:45:51 - Claire Froelich

Okay.

00:45:53 - Claire Froelich

All right.

00:45:54 - Claire Froelich

We have Claire Froh.

00:45:55 - Claire Froelich

Let's check it out on the Block Explorer.

00:46:01 - Claire Froelich

All right, so.

00:46:05 - Claire Froelich

Here is my name, my unique identity, my old identity, 32A4N.

00:46:14 - Claire Froelich

Here, solve subdomain rules, allow subdomains, follow, minimize label.

00:46:17 - Claire Froelich

Oh, you gave me like a leap label too, that's cool.

00:46:25 - Claire Froelich

Okay, so what are we looking at here?

00:46:30 - Claire Froelich

View on the platform.

00:46:32 - Claire Froelich

Okay, is there anything we should note here?

00:46:38 - Rion Gull

Not really.

00:46:38 - Rion Gull

You already noticed the one thing that is might be surprising that the name that you actually request gets modified under the hood.

00:46:50 - Rion Gull

So that and that's basically so that it helps prevent.

00:46:57 - Rion Gull

What are they called?

00:46:58 - Claire Froelich

People trying to typo squat your label?

00:47:01 - Claire Froelich

Okay.

00:47:01 - Rion Gull

Yeah.

00:47:02 - Claire Froelich

Well, there's more than one way to typo squat.

00:47:05 - Claire Froelich

I could still think of some ways I could typo squat my own ID here.

00:47:09 - Rion Gull

Right.

00:47:10 - Rion Gull

They become at least more recognizable.

00:47:13 - Rion Gull

Yeah.

00:47:15 - Claire Froelich

So if someone like tried to send money to this address, you might like pop up a warning that says like, are you sure you want to talk or send money to this address?

00:47:23 - Claire Froelich

Yeah.

00:47:24 - Claire Froelich

Oh, that's cool.

00:47:24 - Claire Froelich

That's an interesting feature.

00:47:29 - Claire Froelich

Awesome.

00:47:29 - Claire Froelich

Okay, so create a file called retrieve name.

00:47:34 - Claire Froelich

Let's do it.

00:47:36 - Claire Froelich

And here's the script.

00:47:38 - Claire Froelich

Extended doc.

00:47:42 - Claire Froelich

Okay, so we're going to get, we're going to look for our name.

00:47:47 - Claire Froelich

And we have to stringify and JSON parse this doc.

00:47:53 - Claire Froelich

What's a doc?

00:47:57 - Claire Froelich

In this context.

00:47:58 - Anthony Campolo

Yeah, so that'll make more sense as we go, but basically that's going to be what you're going to be able, now that you have an identity, you'll be able to create documents, which is like, kind of think of it like a document database.

00:48:12 - Anthony Campolo

You'll have just objects with data and there'll be some sort of schema that you can write to those with what are called notes.

00:48:21 - Claire Froelich

Okay.

00:48:21 - Claire Froelich

And these are like filtered to be for my label?

00:48:26 - Claire Froelich

Or related to that?

00:48:27 - Anthony Campolo

Yep.

00:48:28 - Claire Froelich

Yes.

00:48:31 - Claire Froelich

So let's run that, see what comes back.

00:48:34 - Claire Froelich

I'm very curious.

00:48:37 - Claire Froelich

Okay.

00:48:39 - Anthony Campolo

Yeah, so this is like a document, basically.

00:48:43 - Claire Froelich

All right.

00:48:49 - Claire Froelich

Oh, and I can look at it here.

00:48:57 - Claire Froelich

This looks familiar.

00:48:59 - Claire Froelich

Okay.

00:49:02 - Claire Froelich

And...

00:49:08 - Claire Froelich

Oh, it looks like Anthony did this yourself.

00:49:11 - Claire Froelich

Him that did the code snippets.

00:49:16 - Anthony Campolo

Who wants to do them?

00:49:19 - Claire Froelich

Is there anything you want to call out about this?

00:49:22 - Claire Froelich

The name object?

00:49:26 - Anthony Campolo

No, I don't think so.

00:49:26 - Anthony Campolo

I think we, well, like, so it says data contract in there.

00:49:30 - Anthony Campolo

So that's what we're going to create next is data contract.

00:49:35 - Anthony Campolo

So the data contract is what allows you to create the documents.

00:49:38 - Anthony Campolo

Like data contract is the schema or it's, it's kind of hard to, the terminology is all a little bit confusing, but once you, once you go through the examples, it becomes pretty clear.

00:49:49 - Claire Froelich

All right.

00:49:51 - Claire Froelich

Trust the process, it sounds like.

00:49:53 - Anthony Campolo

Yeah.

00:49:54 - Claire Froelich

Data contract.

00:49:56 - Claire Froelich

So it serves as a blueprint for the structure of data that an application intends to store on the network.

00:50:00 - Claire Froelich

It defines a schema of documents with JSON schema.

00:50:04 - Claire Froelich

Contracts enable the platform to validate data against these schemas.

00:50:09 - Claire Froelich

Okay, cool.

00:50:10 - Claire Froelich

They're crucial for dApps and provide a structured, predictable way to interact with the blockchain.

00:50:17 - Anthony Campolo

Real quick, we got a question in the chat, Ryan, asking how Dash platform would solve potential scalability problems.

00:50:27 - Rion Gull

Well, the potential scalability problem, I mean, this is one of the three things that blockchains are trying to solve simultaneously in general is, well, Vitalik Buterin famously

00:50:42 - Rion Gull

Submitted his

00:50:44 - Rion Gull

Scaling, trilena, where you have, where you're trying to do three things,

00:50:51 - Rion Gull

A blockchain is trying to do scale, let's see, security, decentralization, and scale.

00:51:03 - Rion Gull

That is, historically, it's been difficult to get all those three things at the same time.

00:51:14 - Rion Gull

Yeah.

00:51:15 - Rion Gull

And I actually liked, I personally,

00:51:21 - Rion Gull

Scalability, security, decentralization.

00:51:25 - Rion Gull

I don't like his three choice personally.

00:51:29 - Rion Gull

I think it's more about security, scalability, and usability, meaning like features.

00:51:38 - Rion Gull

So decentralization,

00:51:40 - Rion Gull

Isn't is part of security in my mind is what I'm trying to say.

00:51:44 - Rion Gull

So it shouldn't be one of the independent things.

00:51:47 - Rion Gull

But it's been it's it's it's difficult to do all these three things at the same time.

00:51:52 - Rion Gull

And so I think to answer the question, the secret behind scalability.

00:51:58 - Rion Gull

For Dash, or not the secret, but just the approach, the strategy, is that we use incentivized nodes.

00:52:06 - Rion Gull

Our node operators are paid to scale.

00:52:10 - Rion Gull

So the argument goes that you can't have scale without sacrificing

00:52:19 - Rion Gull

Decentralization because if you think about it the argument goes if you the bigger your you scale the dip more difficult it becomes to run a node on the network because there's a scale

00:52:34 - Rion Gull

And so the more difficult it becomes to run a node on the network the fewer people will do that because it's more difficult

00:52:42 - Rion Gull

And that is true in a network that does not pay the node operators.

00:52:49 - Rion Gull

But once you start

00:52:50 - Rion Gull

Paying the node operators, then scale is actually a good thing.

00:52:56 - Rion Gull

The more it scales, the more the node operators make, the more money the node operators make for operating that network.

00:53:03 - Rion Gull

And therefore, there's no real trade-off between security and scalability.

00:53:14 - Rion Gull

But it's a deep topic, so I won't pretend that I've just solved the world's problems there.

00:53:22 - Claire Froelich

I know that you mentally model the trilemma differently.

00:53:25 - Claire Froelich

You said instead of decentralization down there, you would put usability and that you feel decentralization is part of security.

00:53:32 - Claire Froelich

But if you were to look at Vitalik's model,

00:53:35 - Claire Froelich

Where would you put Dash?

00:53:36 - Claire Froelich

Which leg of the triangle would it be on?

00:53:40 - Rion Gull

Well, I wouldn't put Dash in any part of the triangle.

00:53:44 - Rion Gull

Every cryptocurrency and every network, it really is trying to do all of them.

00:53:51 - Rion Gull

So I would put Dash in the middle, meaning you have to balance and have security.

00:53:57 - Anthony Campolo

I think what she means, though, is...

00:53:58 - Claire Froelich

That's where you want to be, of course, but where is it in reality?

00:54:01 - Claire Froelich

Where is the strength?

00:54:02 - Anthony Campolo

Yeah, some are more decentralized than others.

00:54:05 - Anthony Campolo

Some are more scalable than others, you know?

00:54:07 - Rion Gull

Yeah.

00:54:08 - Rion Gull

So again, I wouldn't put decentralization on there.

00:54:12 - Rion Gull

And I would say that it's...

00:54:14 - Rion Gull

It's probably aimed more at the usability part of the,

00:54:20 - Rion Gull

Of the spectrum or whatever we're calling this, because that is like, that's why we created platform in the first place is to give

00:54:32 - Rion Gull

Developers like yourself the ability to easily create applications that use this platform.

00:54:40 - Rion Gull

And so giving developers the ability to create all sorts of applications easily, as easily as they can create a database schema, for example.

00:54:53 - Claire Froelich

Got it.

00:54:56 - Claire Froelich

Cool.

00:54:56 - Claire Froelich

Well, thanks for the segue.

00:54:58 - Claire Froelich

How are we doing on time, by the way?

00:55:00 - Claire Froelich

We have 25 minutes.

00:55:01 - Claire Froelich

We're good.

00:55:02 - Claire Froelich

We're good?

00:55:02 - Claire Froelich

Yeah.

00:55:03 - Rion Gull

So, yeah, we usually go for a little over an hour.

00:55:06 - Rion Gull

So we'll get as far as we want to get.

00:55:08 - Rion Gull

But what were you going to say, Anthony?

00:55:09 - Rion Gull

Sorry.

00:55:11 - Anthony Campolo

No, just that we're...

00:55:14 - Anthony Campolo

We might be a little bit short on time, but that's probably okay if we want to do another one.

00:55:21 - Anthony Campolo

We'll just keep going.

00:55:23 - Anthony Campolo

Then we'll see as far as we can.

00:55:25 - Claire Froelich

I've been very vocal about my questions along the way, and I could tone that down a little too.

00:55:29 - Rion Gull

No, I think that's even more important that you ask your questions because if you're interested, the more you're interested,

00:55:35 - Rion Gull

Hopefully you are interested in doing some of this stuff.

00:55:38 - Rion Gull

And we're trying like the dash incubator, the whole purpose of the dash incubator is to help folks like yourself

00:55:46 - Rion Gull

Get your questions answered that if you're interested in it, that you could actually even submit a proposal for yourself to get funding or work through the incubator.

00:55:56 - Rion Gull

Or just try to develop an application that you try to gain users, like normal entrepreneurial activity, that kind of stuff.

00:56:04 - Rion Gull

So we're here for you is the bottom line.

00:56:08 - Anthony Campolo

Also, I'm paid by the stream, so take your sweet time.

00:56:15 - Claire Froelich

In that case, I'm going to talk real slow.

00:56:19 - Claire Froelich

Next script is register contract.

00:56:20 - Claire Froelich

Oh, so we're going to make a contract.

00:56:22 - Claire Froelich

Awesome.

00:56:22 - Claire Froelich

This is the best part of being a blockchain developer.

00:56:24 - Claire Froelich

It's the whole reason that they exist.

00:56:30 - Claire Froelich

All right, I'm going to paste this into our new.

00:56:34 - Claire Froelich

Script file.

00:56:37 - Claire Froelich

Getting that identity, we're making some of those documents, a not document object, that, thank goodness I could copy paste the code, don't know what it does.

00:56:47 - Claire Froelich

So we're gonna create a contract with the configuration above for the identity we give it.

00:56:55 - Claire Froelich

And it's going to spit out the contract and we can look at it.

00:56:58 - Claire Froelich

Cool.

00:57:00 - Claire Froelich

Let's do it.

00:57:10 - Claire Froelich

Oh, that was fast.

00:57:13 - Anthony Campolo

So it's not done yet.

00:57:14 - Rion Gull

It's not quite done, actually.

00:57:16 - Claire Froelich

Does it make the contract ID locally, or is this some ping back from the network?

00:57:24 - Rion Gull

I'm pretty sure we haven't actually dug into that, but I think it's client side.

00:57:28 - Rion Gull

That part of it, anyway.

00:57:30 - Claire Froelich

Interesting.

00:57:32 - Claire Froelich

How does it avoid having a clash with another contract ID?

00:57:37 - Claire Froelich

If it's client generated.

00:57:39 - Rion Gull

Yeah, my guess is it's a combination of like, it's a deterministic process that uses both the data that you're trying to create and your identity.

00:57:51 - Rion Gull

So if you tried to do the exact same thing again, you'd probably get the same thing.

00:57:57 - Anthony Campolo

So contract ID is generated from the owner ID and entropy 32 bytes content media type.

00:58:05 - Claire Froelich

Maybe the current timestamp or something.

00:58:09 - Claire Froelich

So this is the contract we just made.

00:58:13 - Claire Froelich

Owned by me.

00:58:15 - Claire Froelich

Remember my old wallet identity.

00:58:22 - Claire Froelich

Cool.

00:58:22 - Claire Froelich

I don't know a lot about the contract that we created, but it exists.

00:58:29 - Rion Gull

Yeah, so have you ever worked with a document database like MongoDB?

00:58:38 - Rion Gull

The idea is very similar, and it was kind of designed on that basis that you first, in a document database, you create a schema.

00:58:49 - Rion Gull

Where you're the documents that would adhere to that schema.

00:58:56 - Rion Gull

And then the documents themselves are like instances that adhere to that scheme.

00:59:00 - Rion Gull

So it's the same kind of concept of a document database.

00:59:04 - Claire Froelich

Yeah, that's document.

00:59:06 - Claire Froelich

But I mean, the contract itself, I don't really know.

00:59:08 - Claire Froelich

What we made, but let's get it because I just got the retrieve contract.

00:59:12 - Claire Froelich

I'm guessing it's going to give us similar data to what we just saw in the dashboard, but let's see.

00:59:19 - Claire Froelich

Retrieve contact.

00:59:21 - Claire Froelich

Contract.

00:59:23 - Rion Gull

Yeah, the contract is very much like a schema.

00:59:27 - Rion Gull

It says...

00:59:28 - Rion Gull

It says that this contract says that documents that are created against it have to have certain properties.

00:59:41 - Claire Froelich

We got an error here.

00:59:43 - Rion Gull

So let's see.

00:59:45 - Claire Froelich

It's expecting a buffer.

00:59:47 - Claire Froelich

But I don't think it's something we passed into it.

00:59:50 - Claire Froelich

We've only passed in contract ID.

00:59:53 - Rion Gull

Did we update the environment file?

00:59:58 - Claire Froelich

Oh, contract ID.

00:59:59 - Claire Froelich

I don't think I put it in there.

01:00:01 - Claire Froelich

That's correct.

01:00:05 - Claire Froelich

Let me get out of here.

01:00:14 - Claire Froelich

I definitely saw it.

01:00:14 - Claire Froelich

Oh, it's not in our command history.

01:00:16 - Claire Froelich

It was in the output.

01:00:17 - Claire Froelich

But here it is.

01:00:19 - Rion Gull

There it is.

01:00:23 - Claire Froelich

Let's try that again.

01:00:26 - Claire Froelich

Air-driven learning.

01:00:28 - Rion Gull

Yep.

01:00:30 - Claire Froelich

All right.

01:00:31 - Claire Froelich

So actually, I think this is what it output before when we created it, if I'm not mistaken.

01:00:36 - Claire Froelich

And this is the same URL.

01:00:39 - Claire Froelich

But now we're just getting it contract by ID this time.

01:00:41 - Rion Gull

Is that like a hobby of yours to memorize random strings of characters?

01:00:48 - Claire Froelich

It's the first time we had a capital F identifier and I saw it right here.

01:00:53 - Claire Froelich

So, oh, that was the contract ID.

01:00:55 - Claire Froelich

Yeah.

01:00:56 - Claire Froelich

Okay.

01:00:56 - Claire Froelich

So, cool.

01:00:57 - Claire Froelich

We can get it with the SDK.

01:01:00 - Claire Froelich

And it has the schema that we defined.

01:01:04 - Claire Froelich

And took a look.

01:01:05 - Claire Froelich

Okay, update contract.

01:01:07 - Claire Froelich

What are we going to do now?

01:01:08 - Claire Froelich

Let's see.

01:01:11 - Claire Froelich

Get the existing contract and its schema and change the author or add a property called author because I don't think we have one yet.

01:01:23 - Claire Froelich

And this is JSON schema, right?

01:01:25 - Claire Froelich

Yeah, that's right.

01:01:27 - Claire Froelich

Okay.

01:01:29 - Claire Froelich

So we're then going to update it to add author.

01:01:36 - Claire Froelich

Okay, let's try it.

01:01:39 - Claire Froelich

Here's the update contract.

01:01:44 - Claire Froelich

And here we have an update contract.

01:01:49 - Claire Froelich

No, I'm just going to copy.

01:02:10 - Claire Froelich

So are these properties like metadata about the contract or what are these properties for?

01:02:18 - Rion Gull

Yeah, so if you looked at the, if you looked at the, go back to the code, your code editor, update contract, yeah, this code right here.

01:02:29 - Rion Gull

Basically it's, what are we doing here?

01:02:31 - Rion Gull

Update data contract, set document schema note.

01:02:38 - Rion Gull

What update is it actually making here, Anthony?

01:02:42 - Claire Froelich

Adding new author.

01:02:43 - Rion Gull

Oh, it's adding, right.

01:02:45 - Claire Froelich

That's right, yeah.

01:02:46 - Rion Gull

Yeah, so it's adding a new property.

01:02:50 - Claire Froelich

Yeah.

01:02:51 - Claire Froelich

Yeah, I'm just wondering what these properties are for.

01:02:54 - Rion Gull

It'd be like if you had a database and you decided in your application, uh-oh, we need another property in this.

01:03:03 - Rion Gull

In the schema and then you'd have to do a database migration to make all of your data adhere to that new property.

01:03:14 - Rion Gull

That's kind of like what it's doing.

01:03:16 - Claire Froelich

Okay.

01:03:18 - Claire Froelich

So it's for dApps?

01:03:20 - Rion Gull

Yes.

01:03:21 - Claire Froelich

That's right.

01:03:23 - Rion Gull

And that would probably make sense more.

01:03:25 - Rion Gull

It makes more sense after you've done the document creation.

01:03:30 - Rion Gull

Because then it's like, oh, like, okay, now I know I can't create a document that has a required field of author that's not there.

01:03:38 - Claire Froelich

Cool.

01:03:39 - Claire Froelich

And now we're actually going to do that, right?

01:03:41 - Claire Froelich

Because we're going to go back to our client.js and overwrite everything.

01:03:45 - Rion Gull

Yep.

01:03:45 - Claire Froelich

So that we give a name to the contract now, it sounds like.

01:03:51 - Claire Froelich

Or this is freeform, I'm guessing, on line 14.

01:03:57 - Rion Gull

This allows you to create kind of like a shorthand syntax for calling the note from the contract in particular.

01:04:07 - Claire Froelich

So it's like a name for our app, essentially, a nickname, and we give it a contract.

01:04:12 - Rion Gull

Okay.

01:04:13 - Claire Froelich

Am I doing that right?

01:04:14 - Claire Froelich

Okay.

01:04:15 - Rion Gull

Yep.

01:04:16 - Claire Froelich

All right.

01:04:19 - Claire Froelich

We don't run anything yet.

01:04:21 - Claire Froelich

Oh, submit note document.

01:04:26 - Claire Froelich

Which is going to be

01:04:30 - Claire Froelich

Get our identity, create a new note document.

01:04:34 - Anthony Campolo

So that's where it says tutorial contract dot note.

01:04:38 - Anthony Campolo

That's what you're able to do because you set that in your client.

01:04:42 - Claire Froelich

Got it.

01:04:43 - Claire Froelich

And this is a property we named earlier, right?

01:04:45 - Claire Froelich

Inside of our data schema.

01:04:49 - Claire Froelich

So hello from blah, blah, blah.

01:04:53 - Claire Froelich

Broadcast.

01:04:53 - Claire Froelich

Okay, so this is when it gets broadcast to the network.

01:04:56 - Claire Froelich

Create the note.

01:05:01 - Claire Froelich

Awesome.

01:05:02 - Rion Gull

So now we have the contract is already live on the network.

01:05:06 - Rion Gull

Now what we're doing is we're submitting a document that adheres to that contract.

01:05:15 - Rion Gull

And then the network will do the job of validating whether or not our document is in compliance with the contract.

01:05:25 - Rion Gull

So in theory, this would allow you to set up an application where both your front end application

01:05:34 - Rion Gull

But also anyone else's front-end application could submit documents to the same contract.

01:05:40 - Claire Froelich

Very cool.

01:05:40 - Claire Froelich

It sounds like almost there needs to be like an interface management system for these dApps, right?

01:05:46 - Claire Froelich

It's like an API almost to make sure.

01:05:48 - Claire Froelich

Exactly what it is, yeah.

01:05:50 - Claire Froelich

Yeah.

01:05:53 - Claire Froelich

Awesome.

01:05:54 - Claire Froelich

I want to run this one.

01:05:55 - Claire Froelich

This is going to be.

01:06:01 - Claire Froelich

So if you made like an application, you'd be sending these documents as kind of records, I guess, in that application?

01:06:15 - Rion Gull

So that's why that's part of Dash.

01:06:18 - Rion Gull

Dash platform consists of a lot of different components.

01:06:21 - Rion Gull

Two of the main components are the Dash drive and then the Dash API.

01:06:27 - Rion Gull

These are the decentralized API.

01:06:29 - Rion Gull

You might see it somewhere in documentation.

01:06:33 - Rion Gull

You'll see Dash Drive and DAPI, D-A-P-I.

01:06:37 - Rion Gull

That's exactly what you were talking about.

01:06:40 - Rion Gull

It's like an API because it is an API.

01:06:42 - Rion Gull

And it's a decentralized API that anybody can access as long as they pay the money to submit their documents to store on the decentralized drive.

01:06:54 - Rion Gull

And you do that through the decentralized API.

01:06:58 - Claire Froelich

Cool.

01:06:59 - Claire Froelich

And for now, we just have to remember the schema in our head and hope that we don't type it wrong.

01:07:07 - Claire Froelich

Where did we just do that operation?

01:07:09 - Claire Froelich

Let's see.

01:07:13 - Claire Froelich

Here.

01:07:15 - Claire Froelich

Yep.

01:07:16 - Claire Froelich

Yeah.

01:07:17 - Claire Froelich

Okay.

01:07:18 - Claire Froelich

All right.

01:07:18 - Claire Froelich

So we created the document.

01:07:20 - Claire Froelich

It looks like it's been broadcast.

01:07:22 - Claire Froelich

And I wonder.

01:07:25 - Claire Froelich

Next step is to get the documents.

01:07:27 - Claire Froelich

I kind of want to see, you can do that in the Explorer too.

01:07:30 - Claire Froelich

Yep.

01:07:34 - Claire Froelich

Okay, I just did, I think I just added this in there actually while we were talking.

01:07:39 - Claire Froelich

Get documents.

01:07:40 - Claire Froelich

Yeah.

01:07:42 - Claire Froelich

And let's run it.

01:07:45 - Claire Froelich

I'm guessing it's what we just saw on this appear on the create.

01:07:50 - Claire Froelich

We're not.

01:07:51 - Claire Froelich

Oh, we actually read the document.

01:07:53 - Claire Froelich

Okay.

01:07:55 - Claire Froelich

Because in the code here, we're getting that property note.

01:08:01 - Rion Gull

That's right, yeah.

01:08:02 - Claire Froelich

That's cool.

01:08:03 - Claire Froelich

Awesome.

01:08:04 - Claire Froelich

So we just read this document off of a decentralized network is what just happened.

01:08:10 - Rion Gull

Yep.

01:08:12 - Claire Froelich

Sweet.

01:08:12 - Claire Froelich

That's our hello world right there.

01:08:14 - Rion Gull

That's the hello world right there.

01:08:15 - Rion Gull

That's right, it is.

01:08:19 - Rion Gull

Here's where you can say goodbye, world.

01:08:25 - Claire Froelich

Time to say goodbye.

01:08:27 - Claire Froelich

Update.

01:08:28 - Anthony Campolo

Can't take the bear market anymore.

01:08:31 - Claire Froelich

This is about as far into crypto as I'll go.

01:08:37 - Claire Froelich

I just logged into Coinbase for the first time in like two years and I realized I have $10 I didn't know I had.

01:08:44 - Anthony Campolo

You missed your chance.

01:08:45 - Anthony Campolo

That would have been $100 a month ago.

01:08:48 - Claire Froelich

It's all about the timing.

01:08:49 - Anthony Campolo

Depending on what you were holding.

01:08:51 - Claire Froelich

We're going to update this note.

01:08:53 - Claire Froelich

So this is kind of like the REST analogy of making like a patch request or a put request.

01:09:00 - Claire Froelich

In HTTP.

01:09:02 - Claire Froelich

And we're going to change to a new hello again with a new date string.

01:09:10 - Claire Froelich

See if that works.

01:09:16 - Claire Froelich

It's pretty fast.

01:09:17 - Claire Froelich

Oh, what we missed?

01:09:19 - Claire Froelich

Did I mess up something?

01:09:21 - Anthony Campolo

Yeah, so this happened with Rishi also.

01:09:24 - Anthony Campolo

I'm not sure what's causing this issue.

01:09:27 - Claire Froelich

I'm curious if I get it again, if anything changed.

01:09:33 - Claire Froelich

As in that transaction failed.

01:09:35 - Claire Froelich

Yeah, because there's no again here.

01:09:36 - Claire Froelich

So we didn't quite succeed in updating.

01:09:38 - Claire Froelich

Should I try update again?

01:09:41 - Rion Gull

Sure.

01:09:44 - Rion Gull

I haven't watched through the end of that last one that you did with Rishi.

01:09:48 - Rion Gull

What are we seeing here?

01:09:51 - Anthony Campolo

It's just an error.

01:09:52 - Anthony Campolo

So go back.

01:09:53 - Anthony Campolo

So stay right.

01:09:55 - Anthony Campolo

Actually, sorry.

01:09:56 - Anthony Campolo

Stay right there.

01:09:56 - Anthony Campolo

Yeah.

01:09:57 - Anthony Campolo

So it's query storage protocol value error structure error value are not bytes, a string or an array of values representing bytes.

01:10:09 - Rion Gull

Max Reitman.

01:10:12 - Claire Froelich

Is there anything I needed to replace in here?

01:10:15 - Claire Froelich

Document ID.

01:10:16 - Claire Froelich

I don't think I ever put document ID in the file.

01:10:18 - Claire Froelich

Maybe I missed that step.

01:10:19 - Claire Froelich

Yeah.

01:10:20 - Claire Froelich

All right.

01:10:20 - Rion Gull

Oh, yeah, there you go.

01:10:22 - Rion Gull

I've been Rishi's error, too.

01:10:25 - Claire Froelich

Did I get that?

01:10:27 - Claire Froelich

Or document ID that something, I already see up here.

01:10:33 - Claire Froelich

Here.

01:10:34 - Claire Froelich

Okay.

01:10:37 - Claire Froelich

This is what happens when you blindly copy paste and don't really think.

01:10:40 - Claire Froelich

That's my bad.

01:10:42 - Rion Gull

Because we're rushing you through it, I guess, right?

01:10:45 - Claire Froelich

I want to see how far I can get in nine minutes.

01:10:47 - Claire Froelich

Do we have to do any closing, by the way?

01:10:50 - Rion Gull

No, we'll just stop when we feel like we're ready to stop.

01:10:57 - Anthony Campolo

Yeah, you're probably going to make it to the end.

01:10:59 - Anthony Campolo

After this, you just got to set up a server and your front end, which are both just like two big blobs of code.

01:11:07 - Claire Froelich

Cool.

01:11:10 - Claire Froelich

We're going to check our right now, by the way, as a reminder, we're updating the document note property.

01:11:18 - Claire Froelich

To say again instead of just hello.

01:11:24 - Claire Froelich

Okay, so it's done.

01:11:26 - Claire Froelich

Let's get it.

01:11:30 - Claire Froelich

We're getting the last five documents in our query, right?

01:11:32 - Claire Froelich

So hello again, it worked.

01:11:34 - Claire Froelich

Awesome.

01:11:35 - Anthony Campolo

There you go.

01:11:36 - Claire Froelich

That's pretty cool.

01:11:37 - Claire Froelich

Okay, so this is really interesting.

01:11:39 - Claire Froelich

It's a database, a decentralized database.

01:11:43 - Anthony Campolo

Yeah, exactly.

01:11:44 - Anthony Campolo

Yeah.

01:11:45 - Rion Gull

Yeah, permissionless, open, all those.

01:11:49 - Anthony Campolo

It literally has a database called GroveDB.

01:11:53 - Claire Froelich

What DB?

01:11:54 - Anthony Campolo

GroveDB.

01:11:55 - Anthony Campolo

It's specific to Dash, so you wouldn't have heard of it.

01:12:00 - Claire Froelich

Grove.

01:12:01 - Claire Froelich

Is that something?

01:12:02 - Claire Froelich

Grove.

01:12:03 - Anthony Campolo

G-R-O-V-E.

01:12:05 - Claire Froelich

Grove.

01:12:07 - Anthony Campolo

Grove.

01:12:08 - Anthony Campolo

You're right.

01:12:09 - Anthony Campolo

Put it on 340.

01:12:13 - Rion Gull

Let's go to the website real quick.

01:12:16 - Rion Gull

GroveDB.org, I think.

01:12:19 - Claire Froelich

I hope I spelled it right.

01:12:21 - Claire Froelich

No, I did not.

01:12:22 - Claire Froelich

Is it going to correct me if I...

01:12:25 - Claire Froelich

How do I spell it?

01:12:28 - Anthony Campolo

G-R-O-V-E.

01:12:34 - Anthony Campolo

V-E, as in very vegetable.

01:12:38 - Claire Froelich

Grove.

01:12:39 - Rion Gull

Yeah, there you go.

01:12:42 - Anthony Campolo

And then add the DB.

01:12:46 - Anthony Campolo

And then add Dashkin.

01:12:49 - Anthony Campolo

There you go.

01:12:50 - Claire Froelich

That's not the charm.

01:12:52 - Claire Froelich

There we go.

01:12:53 - Claire Froelich

So is this something independent of Dash that you could use?

01:12:57 - Rion Gull

You can use it independent of Dash, yes.

01:12:59 - Rion Gull

It is an independent standalone database.

01:13:02 - Anthony Campolo

Yeah, just like you can use the Redwood router without Redwood, but like obviously no one does.

01:13:11 - Rion Gull

So the main high level idea behind GroveDB is that it gives you cryptographic proofs of

01:13:19 - Rion Gull

Saying this data is provably there on the chain validated by a quorum of node operators.

01:13:28 - Rion Gull

Or it's provably not there, these kind of things.

01:13:32 - Rion Gull

The website talks more about it, but yeah, that's the whole idea is that you don't have to trust that the specific node that you're interacting with on the network to do these interactions,

01:13:44 - Rion Gull

You don't have to trust that that specific node is being honest, because if you have the proof of the data that comes back, then you know that the whole network has said, yes, this data exists on our network.

01:13:58 - Claire Froelich

I see.

01:13:58 - Rion Gull

Otherwise, you could have a row.

01:14:00 - Rion Gull

In theory, you could have a rogue node operator that's serving you false data without that.

01:14:06 - Claire Froelich

Oh, right, right.

01:14:09 - Rion Gull

These issues don't even come up in the traditional world of web development.

01:14:14 - Rion Gull

These kind of issues don't really even come up as an issue because you're already explicitly trusting a service as a centralized service provider.

01:14:24 - Claire Froelich

You can have a rogue employee inside the company.

01:14:27 - Rion Gull

Yeah.

01:14:29 - Claire Froelich

Wrong data.

01:14:32 - Claire Froelich

Okay, I did something wrong again.

01:14:34 - Claire Froelich

Surprise.

01:14:35 - Claire Froelich

It says contact ID is not found, which is interesting.

01:14:39 - Claire Froelich

Maybe I already deleted it.

01:14:47 - Rion Gull

So we're running get documents.

01:14:49 - Claire Froelich

Oh, well, it's deleted.

01:14:51 - Claire Froelich

Now we're not getting any documents.

01:14:52 - Claire Froelich

So maybe I tried running it twice subconsciously because our note is gone.

01:14:58 - Rion Gull

Yeah, maybe.

01:15:00 - Rion Gull

I wasn't paying too much attention there.

01:15:04 - Rion Gull

But now we've said goodbye world then?

01:15:07 - Claire Froelich

Yes, we said goodbye world.

01:15:09 - Claire Froelich

There's no more message.

01:15:11 - Rion Gull

Okay.

01:15:13 - Claire Froelich

And the server step, what do we always set up the server for?

01:15:17 - Anthony Campolo

So this is going to turn, because right now everything you would do are just one-off scripts that you're running.

01:15:22 - Anthony Campolo

So we want to be able to have a persistent server with an endpoint that you could then query to get back information.

01:15:31 - Claire Froelich

I see.

01:15:33 - Anthony Campolo

So this is going to do is this is going to make an endpoint that's going to resolve to the identity information with when given the name as the endpoint, essentially, or as the.

01:15:48 - Anthony Campolo

So it'd be like for slash name for slash clear fro is what it would be.

01:15:54 - Claire Froelich

And it's our documentation for like this.

01:15:56 - Claire Froelich

It's like a dynamic API kind of.

01:16:01 - Anthony Campolo

This is just for the sake of the tutorial, just to learn how to do this.

01:16:04 - Anthony Campolo

This is not really documented anywhere.

01:16:06 - Anthony Campolo

This is not even something that's in the dash docs.

01:16:09 - Anthony Campolo

It's just something I did when I was building this.

01:16:11 - Rion Gull

That's just an express feature, right?

01:16:15 - Anthony Campolo

Yes.

01:16:17 - Claire Froelich

Oh, well, I'm sorry.

01:16:18 - Claire Froelich

I meant...

01:16:20 - Claire Froelich

I know that you're defining the route using Express, but the server that we're actually launching is going to have some schema, right?

01:16:30 - Claire Froelich

Or is it just...

01:16:33 - Claire Froelich

Like, how would I call this API?

01:16:37 - Anthony Campolo

It's just once you run it, it's just going to be like localhost forward slash name.

01:16:42 - Claire Froelich

No, no, I get it now.

01:16:43 - Claire Froelich

We define the routes ourselves, but this is like a convention or we can do whatever we want.

01:16:48 - Anthony Campolo

No, this is just a way to show if you wanted to start using this library in like a full stack way.

01:16:58 - Anthony Campolo

How would you actually integrate it into a front-end, back-end type situation instead of just literally just running one-off node scripts?

01:17:06 - Anthony Campolo

So there's no real conventions.

01:17:11 - Claire Froelich

Got it.

01:17:13 - Claire Froelich

Because we just said this is just a suggestion.

01:17:21 - Claire Froelich

Okay.

01:17:22 - Claire Froelich

So now we're getting that information.

01:17:24 - Claire Froelich

Instead of calling scripts, we're calling our API at name slash Claire from.

01:17:33 - Claire Froelich

And we're returning.

01:17:39 - Claire Froelich

The platform name.

01:17:42 - Anthony Campolo

Yeah, so the idea being that you could now create all the endpoints you wanted that would correspond to all the functionality that we've done throughout the course of this tutorial.

01:17:52 - Anthony Campolo

The ideal world would be someone like me just actually does that and then someone would have the whole server.

01:17:59 - Anthony Campolo

But this is kind of where we got to in the, when we first did the tutorial.

01:18:04 - Claire Froelich

To open source developers to build it.

01:18:07 - Anthony Campolo

Yeah, exactly.

01:18:08 - Anthony Campolo

Yeah.

01:18:09 - Claire Froelich

And I guess the practical use case would be like if you made an application that would need to like show all of the documents for a given user or something, you could make an endpoint for that.

01:18:21 - Anthony Campolo

Yeah, exactly.

01:18:22 - Anthony Campolo

Yeah, you got it.

01:18:23 - Claire Froelich

That's cool.

01:18:25 - Rion Gull

Yeah, and you don't need to do a full stack application for this.

01:18:28 - Rion Gull

You saw that the SDK that we were using, you can use that SDK on a server running something like Express, but you could also just use it with a single page application.

01:18:43 - Claire Froelich

Right, which is what this next step was, right?

01:18:47 - Anthony Campolo

Kind of.

01:18:47 - Anthony Campolo

What this is doing is this is going to just give you a friend that's going to call your Express app.

01:18:52 - Claire Froelich

Yeah.

01:18:53 - Anthony Campolo

Yeah.

01:18:54 - Claire Froelich

Cool.

01:18:56 - Claire Froelich

I guess we're out of time, right?

01:18:58 - Claire Froelich

So I'll skip this step.

01:19:00 - Claire Froelich

But I assume it makes it just a UI for interacting with...

01:19:05 - Anthony Campolo

Yeah.

01:19:06 - Rion Gull

Yeah, we can call it there.

01:19:08 - Rion Gull

And then we can either pick it up in another series or another part B of this series.

01:19:15 - Rion Gull

And then keep going and maybe even add some flair to it.

01:19:19 - Anthony Campolo

We could have you also do the Dashmate stuff next time.

01:19:22 - Anthony Campolo

I'm almost done with my Dashmate tutorial, so it would be good to have.

01:19:26 - Anthony Campolo

That's a way to...

01:19:27 - Anthony Campolo

So it basically just runs, instead of using testnet, it runs your own version of it locally with Docker.

01:19:35 - Claire Froelich

Okay.

01:19:36 - Claire Froelich

Cool.

01:19:37 - Claire Froelich

That's unlimited dash.

01:19:40 - Anthony Campolo

You can even make your own.

01:19:42 - Claire Froelich

That's cool.

01:19:44 - Claire Froelich

Awesome.

01:19:45 - Claire Froelich

Thank you both for walking me through this.

01:19:49 - Claire Froelich

This is really fascinating for me because I've been out of the Web3 space so much so that I think I saw Anthony, you did a video with Rizal and you were joking about Web5 or something and I thought it was a real thing.

01:20:04 - Claire Froelich

I was like, that's totally plausible.

01:20:06 - Anthony Campolo

It is a real thing.

01:20:07 - Anthony Campolo

It's Web 2 plus Web 3.

01:20:10 - Claire Froelich

I thought it had already gone through two evolutions since the last time I touched it.

01:20:14 - Claire Froelich

But that's cool that you're...

01:20:17 - Claire Froelich

Making Bitcoin for development.

01:20:21 - Rion Gull

Yeah, there's a lot more that we could say about it in terms of how it compares to smart contracts and things like that.

01:20:29 - Rion Gull

But maybe we'll go into some of those ideas next time.

01:20:34 - Rion Gull

Yeah, we've kept you pretty long already on this one.

01:20:38 - Rion Gull

Thanks for joining us.

01:20:39 - Rion Gull

I just had one question.

01:20:41 - Rion Gull

Anthony mentioned that you do some streams yourself.

01:20:44 - Rion Gull

What do you do with that?

01:20:47 - Claire Froelich

Oh, I just fool around.

01:20:48 - Claire Froelich

I like to do little side projects.

01:20:50 - Claire Froelich

Right now I'm building Stack Overflow Simulator, which uses AI to simulate Stack Overflow answer threads.

01:21:00 - Claire Froelich

As if you were using the old school Stack Overflow.

01:21:02 - Claire Froelich

But it's ironic.

01:21:03 - Claire Froelich

Yeah.

01:21:04 - Claire Froelich

So it's just a fun.

01:21:06 - Anthony Campolo

It includes all the snark in the answers, right?

01:21:08 - Claire Froelich

Yeah, like read the manual.

01:21:10 - Rion Gull

Yeah.

01:21:11 - Claire Froelich

That's been answered.

01:21:13 - Claire Froelich

So, but it actually works.

01:21:15 - Claire Froelich

It's kind of cool.

01:21:15 - Claire Froelich

You get like six different answers to your question and you can use it as a,

01:21:19 - Claire Froelich

I'm going to use it as a museum on the internet for people that start learning to develop after AI has already taken over.

01:21:27 - Anthony Campolo

Yeah, Claire's a lot like me.

01:21:28 - Anthony Campolo

She was always interested in jumping into all sorts of new tech stuff.

01:21:33 - Anthony Campolo

You also created your CBT, Chat CBT, which is a bot that uses cognitive behavioral therapy techniques.

01:21:42 - Claire Froelich

Yep.

01:21:43 - Claire Froelich

Yep.

01:21:44 - Claire Froelich

So I'm playing around with AI lately.

01:21:47 - Rion Gull

Cool.

01:21:48 - Rion Gull

That's very interesting.

01:21:53 - Rion Gull

We'll have to have you try out our dashpay.io site at some point as well and see.

01:22:01 - Claire Froelich

Yeah.

01:22:03 - Rion Gull

That does a little bit of AI.

01:22:04 - Rion Gull

We looked into it this morning, Anthony and I.

01:22:07 - Rion Gull

But yeah, you've got your Twitter, your X profile here.

01:22:13 - Claire Froelich

Yeah, I'm just sharing if you want to follow Claire Fro with an E.

01:22:16 - Rion Gull

Definitely will do.

01:22:17 - Rion Gull

And do you speak Japanese?

01:22:20 - Claire Froelich

Yes, I used to be an interpreter and I lived in Japan and I keep some of my browser stuff in Japanese so I don't forget it.

01:22:27 - Rion Gull

That's awesome.

01:22:28 - Anthony Campolo

That's really smart.

01:22:29 - Rion Gull

Wow.

01:22:30 - Claire Froelich

Take too much energy to learn it.

01:22:31 - Claire Froelich

You don't want to forget it.

01:22:33 - Claire Froelich

All right.

01:22:35 - Rion Gull

On dash, it says as a parting thing, thanks for your work, folks.

01:22:39 - Rion Gull

I wish I'd learned some of this stuff, but above my pay grade.

01:22:43 - Rion Gull

Maybe, maybe not.

01:22:45 - Rion Gull

We're hoping for this to be accessible to any developers, any traditional Web2 developers.

01:22:50 - Anthony Campolo

I can learn it.

01:22:51 - Anthony Campolo

I'm a music major.

01:22:53 - Anthony Campolo

You can do it too.

01:22:55 - Claire Froelich

And I was a liberal arts major, so it's everyone's invitation.

01:23:00 - Rion Gull

All right.

01:23:00 - Rion Gull

Thanks, Claire.

01:23:00 - Rion Gull

And we'll see everybody next time.

01:23:03 - Rion Gull

I'm not sure when the next stream is, but stay tuned, subscribe, and you'll figure it out.

01:23:07 - Rion Gull

You'll find out.

01:23:08 - Anthony Campolo

We have a stream tomorrow with Niles.

01:23:11 - Anthony Campolo

Catch us then.

01:23:13 - Anthony Campolo

Sounds good.

01:23:13 - Anthony Campolo

Bye, everyone.

01:23:14 - Claire Froelich

See you.

On this pageJump to section