
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.
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.