
Getting Started with Dashmate
A walkthrough of using Dashmate to set up a local Dash Platform development environment, covering setup, wallet creation, minting, and document submission
Episode Description
A walkthrough of using Dashmate to set up a local Dash Platform development environment, covering setup, wallet creation, minting, and document submission.
Episode Summary
Anthony Campolo walks through his streamlined tutorial for setting up a local Dash Platform development environment using Dashmate, a tool that orchestrates Docker containers to run a local Dash network. The tutorial begins with prerequisites like Docker and Node.js, then moves through the core Dashmate commands: setup local, group start, and group status. Anthony explains the various options for stopping, restarting, and resetting the network, including tips for recovering from a completely broken setup by manually deleting the .dashmate configuration folder. The heart of the tutorial covers creating a wallet, minting local Dash (which requires temporarily stopping the network), registering an identity, creating a data contract, submitting documents, and reading them back—all achievable in roughly five minutes. Along the way, Rion Gull asks questions about the local seed node configuration and tries to locate the Insight block explorer and Grafana metrics services running inside Docker, though they're unable to access those UIs during the stream. The pair also discusses Dash Platform's query syntax, which resembles MongoDB-style filtering through GroveDB, and Anthony notes his preference for simply fetching all documents rather than wrestling with the where clause. The tutorial represents a condensed version of Anthony's earlier, more comprehensive guide, distilling the process down to the essential write operations needed to go from zero to a working local setup.
Chapters
00:00:00 - Introduction and Local Network Overview
The stream opens with brief housekeeping before Rion introduces the purpose of the session: walking through Anthony's tutorial on using Dashmate to create a local Dash Platform development environment. Rion explains why a local network is valuable for developers—most application work is client-side, and having a local backend eliminates dependence on a remote testnet for routine development tasks.
Anthony then demonstrates the core Dashmate workflow, starting with the dashmate setup local command that spins up Docker containers, followed by dashmate group start to launch the network. He shows the Docker environment with its running containers, images, and volumes, emphasizing that developers ideally won't need to interact with Docker directly. The dashmate group status command confirms the network is running with three local nodes and a local seed node.
00:04:55 - Managing the Network and Configuration
Anthony explains the different options for managing the local network lifecycle, including stop with force, restart, and reset commands. He distinguishes between a standard reset and the more aggressive reset --force --hard option, which performs a complete wipe. For truly broken setups, he recommends also manually deleting the .dashmate configuration folder, which contains a large JSON config file that the hard reset doesn't always fully clear.
Rion and Anthony then review the prerequisites listed in the tutorial—Docker, Node.js, and a global Dashmate installation—and briefly examine the extensive configuration file that Dashmate generates. They explore the config's structure, which includes settings for mainnet, testnet, and local environments across each node, touching on networking details, contract references, and the local seed node's role in the network topology.
00:12:46 - Project Setup, Wallet Creation, and Minting
Anthony shifts to the application code, demonstrating a handy npm command for setting up ECMAScript module scripts in package.json. He contrasts this streamlined tutorial with his previous, more comprehensive one—this version focuses only on essential write operations: creating a wallet, registering an identity, deploying a contract, and submitting documents. The goal is to go from zero to a working setup in about five minutes.
The wallet creation script uses the Dash SDK client with a null mnemonic and offline mode to generate a new wallet each time. Anthony then walks through the minting process, which requires stopping the network first, running the mint command with the wallet address and local seed config, then restarting the network. He highlights this as a major advantage over testnet development—no more dealing with unreliable faucets, just instant local Dash whenever needed.
00:19:17 - Exploring the Block Explorer and Docker Services
Rion goes off-script to investigate whether the local Dashmate setup includes accessible UI services like the Insight block explorer. He wants to verify the minted Dash through a browser-based explorer. They search the Dashmate configuration file and GitHub repository for Insight-related settings, finding references in Docker compose files but unable to determine the correct port to access the service.
After trying various localhost ports without success, they conclude that Docker may not be exposing these services externally by default. They also briefly look for Grafana and metrics endpoints referenced in the configuration but encounter the same issue. Rion notes this as something to investigate offline, possibly with help from Mikhail, who had demonstrated more Docker-level debugging in a previous stream.
00:24:10 - Identity Registration, Contract Creation, and Document Submission
Anthony returns to the tutorial, running the identity registration script which calls the platform's register method—a step that previously caused frequent failures on testnet but works reliably on the local network. The identity ID is saved to an environment file for use by subsequent scripts. He then creates a data contract with a simple "note" schema containing a message string field, carefully placing the console log after the submission completes to avoid misleading output.
After a brief troubleshooting moment where Anthony realizes he forgot to save the contract ID to his environment file, he successfully submits a document with the message "Hello from Dash Local Network." The submit script includes an automatic top-up command to ensure the identity always has sufficient credits. Finally, a get documents script retrieves and displays all submitted messages, completing the full end-to-end workflow.
00:31:03 - Query Syntax Discussion and Wrap-Up
Anthony explores the Dash Platform query syntax, which draws from MongoDB-style conventions used by GroveDB. He finds the where clause filtering rules—such as limitations on range operators and indexed property requirements—challenging compared to his relational database background. His tutorial script simply fetches all documents without filtering, which Rion notes is fine for development even if it transfers more data over the network.
The stream wraps up with Anthony reflecting on the tutorial's purpose as a progressively simplified version of his earlier comprehensive guide. He mentions plans to create an even more condensed cheat sheet as a GitHub gist for developers who want to get running in thirty seconds. Both hosts express satisfaction with the current state of the tutorial and Anthony's growing comfort with the Dash Platform development workflow, signing off with plans to investigate the block explorer and metrics access offline.
Related Links
- A First Look at Dashmate - The comprehensive written version of this tutorial covering the same Dashmate workflow — wallet creation, minting, identity registration, data contracts, and document submission — with more detail than could fit in a stream
- A First Look at Dash - Foundational overview of what Dash Platform is: the Dash cryptocurrency, DAPI, Dash Drive, identities, and the data contract model that this tutorial puts into practice
- End to End Tutorial Debut | Incubator WEEKLY - The Dash Incubator weekly where Anthony first presented this end-to-end developer tutorial, with discussion on why the ecosystem needs better onboarding for web developers
- AutoShow Dash Integration - Anthony presents AutoShow as a real-world application built with Dash funding, showing the kind of project the local development workflow in this tutorial is designed to support
- A First Look at Docker - Introduction to Docker containers and images — the underlying infrastructure that Dashmate orchestrates, useful background for anyone new to the containerized local network setup
Transcript
[00:00:02.22] - Anthony Campolo Alrighty, we are live. We should probably figure out whether we want to get a premium Twitch account so we can go back to streaming on Twitter.
[00:00:15.13] - Rion Gull Yeah, we'll look into it.
[00:00:18.26] - Anthony Campolo How you been? Good.
[00:00:20.26] - Rion Gull Welcome, everyone. Today we are going through a second tutorial that Anthony wrote on how to use Dashmate to set up a local development environment for Dash Platform. Anthony, do you want to bring up that blog post, give it an introduction, and then we'll dive right in?
[00:00:47.13] - Anthony Campolo Yes. Whoops. Give me one second.
[00:01:02.29] - Rion Gull Anthony has abandoned me here all alone with you folks. One of the reasons that we're doing this is it makes it easier to develop applications if you have a local network, because 90% of what you're doing when you're building a Dash app is client-side stuff. You don't really need a test network to test most of the functionality that you're going to be building with your application, but you do need some kind of backend service, and a local network will help with that.
[00:01:45.06] - Anthony Campolo Okay, here we go. With Dashmate, I found that the thing that was most confusing for me is the process of starting, stopping, resetting, and restarting. There's this whole set of different things you can do, but you can ignore all of that if you just set it up and forget it. Over here I already ran these commands because, as you see here, the setup local command is the first one you run. It takes about two minutes to run, at least it did the last time I ran it. It kicks open Docker and starts a whole bunch of Docker containers. If we look in Docker real quick, we see that we have like four running containers. We have a whole bunch of images and a crap ton of volumes. Ideally, you won't need to mess with any of this stuff. If you do, something has probably gone pretty wrong. Once you run setup local, that sets you up for the local group, and then you do everything through this group command. So dashmate group start takes about a minute to run, does all of that, and that's pretty much all you need to do to get it going.
[00:03:28.12] - Anthony Campolo Now we will stop and restart to do the minting. But the way I set up the tutorial is I first have you start it so that you can create your wallet. You also have this group status command, which will give you the status of your local network. So you see here we've got our local network and it is up, and then we have local one, local two, local three, and this local seed thing. I know the local seed is what you use when you're minting. I also have some little explanations here for the different ways of stopping, starting, and restarting. The dashmate group:stop --force command will be the one you'll use to stop and restart if you don't want to reset anything. If you don't want to basically have to run the setup local command again, then you can restart it, which is basically just like stopping it and starting it again. Resetting is when you kind of wipe the whole thing and start again. But there's reset with --force, or reset with --force --hard, which does a complete reset.
[00:05:10.28] - Anthony Campolo So this is kind of like the Hail Mary if your thing is totally borked. What I also do if it's really borked is go into the .dashmate folder and blow that away as well. Ideally you shouldn't have to, because the reset --force --hard should blow away your configuration. But I found that sometimes, if I want to do a full, full reset, you can delete that .dashmate folder as well, because this is what's holding your config here, which is this huge giant file with all this config in it.
[00:05:51.17] - Rion Gull The dashmate group reset --hard --force does not blow that folder away, is what you're saying.
[00:06:01.17] - Anthony Campolo Exactly. Yeah.
[00:06:03.22] - Rion Gull Further, you can just manually do that.
[00:06:06.28] - Anthony Campolo Yeah, it should reset your config JSON file, I believe, which is what it's supposed to do. For the most part, like I said, you're not going to run into a lot of these issues unless you're having to stop and start and restart a lot, or if you leave a project for a week and then come back and your Docker containers may or may not still be running. That's where some of this maintenance stuff comes in. But if you're just going through the happy path, then you're usually going to be in pretty good shape. So let's...
[00:06:50.14] - Rion Gull Okay, you have installed all the prerequisites, which would include Docker and Node. You went through the system requirements checks to make sure that you meet all of those system requirements.
[00:07:06.21] - Anthony Campolo And I installed Dashmate globally. Yeah.
[00:07:10.09] - Rion Gull Scroll all the way up to the top. I'm not sure that we actually showed the very top, just so people can get an idea. We're at your website, First Look at Dashmate. We have an outline, an overview, and prerequisites. Like I just said, Node, Docker, Dashmate. You've installed all of those and then globally installed Dashmate as well.
[00:07:40.09] - Anthony Campolo Yep. Yes, that was all we did to get started. You'll know you've got it working when you can run this dashmate help command. So there's your Dashmate command. The surface area of Dashmate is actually pretty small if you're not needing to get into the guts of it, if you don't need to deal with SSL or things like that. Really it's mostly just setup, start, and then all the group commands that you need to deal with.
[00:08:16.20] - Rion Gull Yep. Okay. So you've already also run the group commands.
[00:08:25.05] - Anthony Campolo Yeah.
[00:08:25.17] - Rion Gull Maybe just go a little bit slower on the tutorial side so people can see which commands you run. We don't have to read the paragraphs, but...
[00:08:36.13] - Anthony Campolo We had dashmate setup local, so that ran this thing right here. Then dashmate group start, this command here. You'll know it works if you get all checks, basically. Then dashmate group status gives you the status of your network.
[00:09:03.06] - Rion Gull Now, I don't expect you to know this, but just in case you do, I actually don't know this in terms of how the local setup works. But I believe, based on what I know from using the SDK and whatnot on testnet, that you need this seed node. The seed node essentially does the work of giving you a URL to contact and get a list of masternodes. In this case it would be one of those three nodes that you've set up. That's all you have to choose from because it's a local network. Then you do your further communication with one of those nodes. Do you know if that's how it works on this local setup as well as how it's done with testnet?
[00:09:50.23] - Anthony Campolo So if by URL, are you talking about this?
[00:09:57.14] - Rion Gull Potentially. We would have to look at what the seed node port is when we set it up, but we don't have to go through that today, in case you happen to know what it was.
[00:10:13.02] - Anthony Campolo Config. I think we might see what you're talking about. Let's see.
[00:10:25.02] - Rion Gull Whoa, this is thousands of lines long. Okay.
[00:10:29.07] - Anthony Campolo So yeah, the config is gnarly. I tried to go in here and understand what was happening. If you kind of go to the top level, you can get some sense of what's happening here. We won't go too far into this, but just in case people do need to mess around here, you have a whole bunch of configs. Basically, when you're running those first couple commands, these will tell you whether you're setting up for mainnet, testnet, or local. The ones we need to worry about are basically local, local 1, 2, 3, and local seed. So I'm not sure what you mean when you say URL, what URL you're referring to.
[00:11:14.18] - Rion Gull Open up that local seed. Yeah.
[00:11:16.20] - Anthony Campolo Yeah.
[00:11:18.22] - Rion Gull Okay, so Docker, network, subnet, inside, P2P, RPC, miner, devnet, log, platform. Okay. It's even got the metrics. Yeah, I'm pretty sure it was the DAPI thing.
[00:11:54.17] - Anthony Campolo Yeah. Can you see that? That's showing up a lot in here. Yep. Okay.
[00:12:00.25] - Rion Gull Yeah, I think that's the case. So we can... Let's see. You don't have too much further to scroll, so you might as well just scroll to the end.
[00:12:07.04] - Anthony Campolo Yeah. Setting up DPNS.
[00:12:10.22] - Rion Gull These are the Dash contracts.
[00:12:15.11] - Anthony Campolo Yeah, this has got contracts, a whole bunch of stuff in here.
[00:12:20.02] - Rion Gull And then Dashmate itself.
[00:12:24.12] - Anthony Campolo Then you've got this. I don't know what this is.
[00:12:29.18] - Rion Gull Yeah, I don't either. So we have 3,300 lines of config file. Okay.
[00:12:36.23] - Anthony Campolo Fun stuff.
[00:12:38.08] - Rion Gull Yeah. Let's go back to the tutorial then and just kind of work our way through it.
[00:12:46.03] - Anthony Campolo I've got a project here. I also learned this handy-dandy new command here. We were using this before to set our type to modules for ECMAScript modules, and I learned that you can do the same thing for your scripts. There's one point in the other tutorial where people would go in and copy and paste a whole bunch of scripts. But now, if you just run this command, hey, oh, look at that. Brand-new scripts.
[00:13:16.11] - Rion Gull And...
[00:13:19.29] - Anthony Campolo So what I did is I used Mikhail's tutorial a little bit and then kind of molded it with some of my own, basically how I set up some of these files and commands from the last one, and created a super-duper streamlined getting started. The last one we did runs through all the commands, gets you a whole CRUD setup. You have 15 script files by the end. Whereas this is just going to get you a wallet, get you an identity, get you a contract, and submit documents to that contract. That's all we're doing here. So this can get you from zero to 50 in, hopefully, like five minutes or so. We're taking our time in this video, but you could run through this whole tutorial in like five minutes, probably.
[00:14:11.22] - Rion Gull Yeah. So the scripts that you've set up, in contrast to the other one where we did a lot of reading scripts just to read the blockchain, this is mostly writing, where we're creating, registering, creating, submitting, and then only the last one is actually just getting a document. So that's probably, I think, a good call. Let's open up... Do you have a reference to Mikhail's blog post in your blog post?
[00:14:42.05] - Anthony Campolo So when I was writing this, he just had that gist. I couldn't find his Medium, so I'm not sure what Medium he's referring to that he's publishing on.
[00:14:51.28] - Rion Gull He may not have published it yet, so I'll check with him. But either way we can keep going.
[00:14:56.14] - Anthony Campolo Yeah, I will definitely, if there is a link for that, reference it right up at the top.
[00:15:02.05] - Rion Gull Cool. All right, let's get going then.
[00:15:05.18] - Anthony Campolo Yeah. So for this, I set this up so you could run this create wallet command as many times as you want, and it'll always create you a new wallet because it has the client in here with mnemonic set to null and offline mode set to true. But you do need your local network to be running for this to work. If your local network is not running, then this command will fail. You should be able to run this and have it work. This is the only part of the tutorial where you might get a little bit of weirdness happening, because there is going to be a second where we have to stop and start this thing. Basically, for some reason, the mint command doesn't work when the network is running. I'm not really sure why that is. It's kind of obnoxious, but I'm assuming there's a good reason for it, you know?
[00:16:02.09] - Rion Gull Yeah, we'll look into it. Mikhail was saying the same thing. He didn't know either.
[00:16:10.21] - Anthony Campolo Okay, then we're going to set up our client, and this is now going to have our mnemonic set from what we just created. Also, wait, I need this too. This is really important. This is what we were just looking at in the config. This is what the local Docker network is exposing the local network to you through this HTTP 127.0.0.1:32001 port. Yep. Now we're going to do these guys. So dashmate group stop --force. This will stop your network. And then this mint command. This is the best part of the whole tutorial. No more testnet faucet. So happy about it.
[00:17:10.10] - Rion Gull Yeah, yeah, that's great. Very predictable.
[00:17:12.29] - Anthony Campolo Yeah. Once I finally got this whole thing set up, I'm like, oh man, I'm never going back. Now, if I'm just messing around and want to create contracts and stuff, I can just go from zero to 50 super fast. So what I did is I grabbed that address from here, and the command has an address flag that you could feed an address. Then you need to set config to local seed. Now, when you run this, it's going to generate your Dash.
[00:17:50.01] - Rion Gull Now this is while the network is stopped. That was that thing that you noted before. You did the stop, now you're doing the mint, and then after this presumably you'll start the network back up.
[00:18:00.05] - Anthony Campolo Exactly. I got that very clear here in the tutorial. The mint command is surrounded by stop and start commands. Hopefully that will not throw people off. Yep. Okay. And now we're back up. Pretty smooth process if you do the commands in the right order and you know what commands to do when.
[00:18:25.19] - Rion Gull So now I know that you have this plan here. You've got your tutorial. I do want to go off script a little bit, since this is kind of how we're doing it. We're not going to try to make a very streamlined 15-minute video here. I think right now we could potentially do that with some editing and whatnot. But I am curious if you can open up an Insight server, if it should be running right now based on what I saw in the configs. We just need to find out what port and URL it's running at, because I'd just like to see on an Insight server those 50 Dash that you minted, if it's picked up on the Insight server.
[00:19:17.23] - Anthony Campolo I don't know what you mean by Insight server.
[00:19:20.04] - Rion Gull So Insight is the block explorer.
[00:19:23.02] - Anthony Campolo Ah.
[00:19:23.19] - Rion Gull You know how we usually open up a block explorer?
[00:19:26.25] - Anthony Campolo Yeah.
[00:19:27.28] - Rion Gull There should be some service running the block explorer on this.
[00:19:35.21] - Anthony Campolo Yeah, because there's the docker ps command, which will show you everything. I don't know what to do with this. I know when you did like an 80-minute long stream with Mikhail, he was doing this a lot, and he was going into certain ones and running Docker logs with one of these. I had no idea what was happening.
[00:20:00.13] - Rion Gull The only way that I would know how to find it is to go to the config file again.
[00:20:06.03] - Anthony Campolo Okay.
[00:20:06.27] - Rion Gull And then do a page find for Insight and see if we can find a URL that it's running at, that that service is running on.
[00:20:18.24] - Anthony Campolo Alrighty.
[00:20:22.05] - Rion Gull And if we don't find it there, then I'm kind of out of my league on a live stream here.
[00:20:29.23] - Anthony Campolo Yeah, we could just real quick check the Dashmate docs. There's this nice dashmate.org website, nice little landing page. I like this. I've never seen this diagram before, but this is pretty cool. This is actually useful for understanding Dash Platform at all.
[00:20:52.26] - Rion Gull Absolutely. Yeah. So this takes us back to docs.dash.org.
[00:21:04.01] - Anthony Campolo Yeah, I want the repo though, because this page is a whole bunch of screenshots and stuff. It's not super great. This will hopefully take us to the actual thing. Okay. This is actually the first time I tried to use Dashmate. I went here. The commands are just not in an order that kind of makes sense. It's one of the things that I wanted my tutorial to do. But if we check here, there's this Docker Compose Insight API file. We're not running Docker Compose right now, so I'm not sure if this is actually relevant.
[00:21:51.20] - Rion Gull Actually, I think Dashmate might run it for you though. So if we could just check 127.0.0.1 and then figure out what that port number is. I don't know why there are two colons though: CORE_INSIGHT_PORT and then CORE_INSIGHT_PORT again. Yeah, I don't know Docker Compose enough to figure out why there's two port numbers tacked onto that. But that's the port number we'd have to find in the JSON config file again, and I think it was there. I was looking for a URL last time we looked there, but it's just at .001. So we know that. So if you open up a web browser...
[00:23:06.10] - Anthony Campolo And do what?
[00:23:07.28] - Rion Gull Either go to localhost or 127.0.0.1 and then colon something. Just drop the colon for now. Can't be reached. Okay, so maybe this is barking up the wrong tree here. We can keep going. I just wanted to check and see if that was easy.
[00:23:37.02] - Anthony Campolo Yeah, you should ask Mikhail. He'll probably have a better idea of that. I would be curious if you could get into some sort of locally running explorer. That would be pretty sweet.
[00:23:52.17] - Rion Gull Yeah.
[00:23:55.16] - Anthony Campolo Okay, so we are about to register our identity. Now these are commands from my last tutorial. This is a really simple one. You're just running .register on identities and then console logging out your identity. This is the command where testnet would usually fail on us, if testnet were to fail. So now that we got everything local, this is no longer a scary command to run. So that's cool.
[00:24:34.24] - Rion Gull Yeah, we got our identity putting it in the environment file so that now subsequent scripts will refer to that identity file.
[00:24:49.27] - Anthony Campolo And now we've got our create contract. This is basically the same contract from the tutorial, which is from the Dash docs themselves. It has you create a note, which is type object, and it's just a little JSON object with a message. That message has a string type which will contain whatever message you want to write. I also used to have this console.log here, and that would throw people off, because it would give you the contract ID before it finishes running. I figured out how to fix that. You just put the console.log below the last step.
[00:25:31.15] - Rion Gull Yeah, people would be thinking that it's done because it returned something, but it hadn't actually finished.
[00:25:37.17] - Anthony Campolo Exactly. So now we got here, we have our contract ID and our contract.
[00:25:45.29] - Rion Gull Can you go back to the script again real quick?
[00:25:48.11] - Anthony Campolo Yeah,
[00:25:52.08] - Rion Gull Contract ID, contract.toJSON. So before, did you also change this? Because I think before you were just referencing the name from the environment file instead of from the variable. But maybe I was wrong on that, so I was just double-checking to see.
[00:26:11.09] - Anthony Campolo We can find out.
[00:26:21.19] - Rion Gull It may not have been the contract one either. It was just one of them. There was one where it was grabbing the data from the environment file instead of from the network, and it was like a false positive kind of thing.
[00:26:34.15] - Anthony Campolo Interesting.
[00:26:35.14] - Rion Gull We can look into that later.
[00:26:37.02] - Anthony Campolo Yeah, it looks like here it's doing the same thing. Okay. Yeah.
[00:26:45.11] - Rion Gull All right, moving on.
[00:26:50.17] - Anthony Campolo Our contract is created. Now you need to update your client. Very, very important. This is what lets you use this nice little query syntax with helloWorld.note, and then this will be our submitDocuments command. What this is doing is... Oh, and here I put the top-up command right in there so that every time you submit a document, it tops you up a little bit. This is obviously not going to be a good practice once you're dealing with real funds. But just here on testnet, since Dash is free anyway, this just ensures that you're never going to run this command and not have the appropriate credits or duffs in your wallet, or in your identity, I should say. Then it's going to give you a little message: Hello from Dash Local Network. Wait, I probably didn't save my identity. Oh no, I did. Let's see. Interesting. helloWorld. Identity expects buffer. Let's try hard coding it. Okay, I must have messed something up somewhere.
[00:28:58.04] - Rion Gull I wonder if it may be an API change as well, because we're now running... Let's go to the package.json file.
[00:29:11.08] - Anthony Campolo We're running the most recent 1.16, but when I wrote this tutorial I was using this version, I'm pretty sure. So it shouldn't be an issue. Actually, oh wait, I did it wrong. I didn't set the contract ID. Okay. This happened a couple times in the...
[00:29:55.18] - Rion Gull When people are just not following your own instructions.
[00:30:00.03] - Anthony Campolo Yeah, exactly. Okay, great. So now we see here. We'll make sure to save this one this time. Document ID. Ba-boom, ba-boom. Now we see here, this is our document and there is our message. Just so we can get the full experience, I did have one read command in here just to make sure your full end-to-end thing is working. Now we have our get documents command. This is going to run get on helloWorld.note, and it will give you all the messages. If you put this to, like, five and you have 10 messages, it will only show you the first five. But here we'll see: we've got our nice little message there. Hello from Dash Local Network. There you go. That's the whole end-to-end tutorial. Cool.
[00:30:59.01] - Rion Gull Can you go back to the get documents script again just one more time?
[00:31:03.07] - Anthony Campolo Mm-hmm. So I'm not using the where command here. We have this Dash query syntax, which I found a little bit confusing, and a lot of weird stuff kept happening. Let's see. I want to go to Platform Docs. Here we go, query syntax. I never was a Mongo person. I always did Postgres relational databases, and so I think this is kind of like a Mongo thing, because I know GroveDB is a bit like MongoDB. So this where syntax is kind of ways to grab specific fields. You see here you have field name, operator, and value. There's really specific things you have to do. See here, only one range operator is allowed to query. The in operator is only allowed for the last two indexed properties. All these weird, super-specific, esoteric rules. So I found this extremely hard to work with and deal with. Maybe that's just because my background didn't prepare me for it, but this is one of the ways you can query. So my script is not doing that. It is just grabbing everything and then spitting it all out for you.
[00:32:46.23] - Rion Gull Yeah, so in theory you could have better performance by including the where and the different query limitations and filters on your query itself, because then you'd be returning less data from the network. But in practice it's not going to make that much difference. If it's easier for you to do filtering in your JavaScript syntax instead, then that's fine. You're just putting more data over the network, though.
[00:33:20.03] - Anthony Campolo And...
[00:33:22.04] - Rion Gull We don't really have a way to prevent people from doing that because the queries are free.
[00:33:28.09] - Anthony Campolo Yeah, yeah, yeah. Reads are always cheap with blockchain. Yep.
[00:33:33.13] - Rion Gull All right, cool. We got through that relatively quick. I wonder if we want to play around with anything else. What I would like to see as a user is the different UI services as well and be able to have those at my disposal. So not only the Insight UI, the block explorer, but also Grafana and other metrics. I saw some things about that in the configuration file, so I'm assuming that it spins up those services. It's just how to access those from the browser. That's the only question. I don't know if we looked thoroughly on the GitHub documentation, but let's do a find for Insight.
[00:34:43.17] - Anthony Campolo Yeah, so we've done that. That's what got us to that Docker Compose file.
[00:34:48.13] - Rion Gull But it's not in the actual documentation, is what I was looking for.
[00:34:55.05] - Anthony Campolo Yeah, it doesn't seem like it, no.
[00:34:58.18] - Rion Gull Okay, well, we'll, we'll look at that off stream, I suppose.
[00:35:15.17] - Anthony Campolo Yeah. I see things like metrics in here. Let's see. Yep, 9090. Let's try that one. Yeah. I don't think any of these...
[00:35:39.00] - Rion Gull It's an issue with Docker. I don't know if Docker is actually exposing them to the outside world.
[00:35:44.00] - Anthony Campolo That's what I'm saying. You can't just kind of go to these port numbers and run them in your... like you would if you were just running your...
[00:35:53.21] - Rion Gull Try localhost. I don't think it's going to work, but just try localhost port 9090.
[00:36:01.19] - Anthony Campolo Same thing.
[00:36:02.08] - Rion Gull Yeah, same issue. Okay, we'll look into that later. Anything else you want to go through over the stream? Let's look again at your tutorial. Did we make it down to the bottom?
[00:36:15.10] - Anthony Campolo Yeah, I just wanted to write a little conclusion and call to action or whatever, but that's pretty much it in terms of the tutorial. I'll probably have a link at the end back to the first one so that, if people want to go deeper... But yeah, I like this setup because whenever I did want to do anything with the Dash network, I would run through my other tutorial, and now this is an even more streamlined way of doing that. I might even make a little cheat sheet that is just the commands and throw that in a gist. So if anyone wants to get up and running in like 30 seconds, they could do that. It's kind of like this slow whittling process of me understanding how to work the network and then how to get it down to its base functionality in really simple, reusable ways. So yeah, I'm feeling pretty good about my current knowledge of Dash Platform and how to work with it.
[00:37:19.19] - Anthony Campolo That's good.
[00:37:20.08] - Rion Gull Yeah, it's a great tutorial as well. So thank you for putting that together. And for everybody else, thanks for joining in, and we will see you later.
[00:37:30.20] - Anthony Campolo Yep. Bye, everyone.