# Dash Platform Walkthroughs Part 7 with Niles Salter

> Niles Salter joins Anthony Campolo and Rion Gull to demo autocomplete work, meet Dash Platform, and explore the JavaScript SDK.

- **Collection:** Video
- **Published:** 2024-06-26
- **Author:** Anthony Campolo
- **Canonical URL:** https://ajcwebdev.com/videos/2024-06-26-dash-platform-walkthroughs-part-7-with-niles-salter/
- **Markdown URL:** https://ajcwebdev.com/videos/2024-06-26-dash-platform-walkthroughs-part-7-with-niles-salter/index.md
- **JSON URL:** https://ajcwebdev.com/videos/2024-06-26-dash-platform-walkthroughs-part-7-with-niles-salter/index.json
- **Channel:** [Dash Incubator](https://www.youtube.com/channel/UCZVi0jeaBJ-bYcXQabnE9jA)
- **Original URL:** https://www.youtube.com/watch?v=mnCTUt7CBr4
- **Original Label:** Watch original

---

## Episode Description

Niles Salter joins Anthony Campolo and Rion Gull to demo his autocomplete data structure work, get an introduction to Dash platform, and explore the JavaScript SDK.

## Episode Summary

In this seventh installment of the Dash Platform Walkthroughs series, hosts Anthony Campolo and Rion Gull welcome Niles Salter, a Zig programming language enthusiast and compiler optimization specialist, to introduce him to the Dash ecosystem. Niles begins by demonstrating his novel autocomplete data structure, which improves upon traditional tries by using horizontal and vertical sorting to achieve near-optimal query times. The conversation then shifts to a conceptual overview of Dash, covering its origins as a Bitcoin fork, its features like InstantSend and PrivateSend, and the architecture of Dash Platform with components like GroveDB, the proof-of-stake layer, and Tenderdash consensus. The hosts explain blockchain fundamentals, public-private key cryptography, and the role of testnet faucets to Niles, who has limited cryptocurrency background. Despite testnet difficulties, they successfully walk through wallet creation using the JavaScript SDK and discuss potential paths forward for improving JavaScript support, including porting from the Rust SDK via WebAssembly or rehabilitating the existing codebase.

## Speakers

- Anthony Campolo
- Rion Gull
- Niles Salter

## Chapters

### 00:00:00 - Welcome and Niles's Background in Zig

Anthony and Rion open the show acknowledging technical difficulties before introducing their guest Niles Salter, who Rion met through a local Utah meetup and a Zig programming language presentation. Niles describes his recent work on the front end of the Zig compiler, focusing on applying SIMD and vector techniques to exploit data-level parallelism for compiler efficiency.

He references his YouTube talk on hyper-optimizing the Zig compiler and mentions previous experience working on a TypeScript-to-Lua transpiler. The introduction establishes Niles as a low-level systems programmer with deep technical expertise, setting expectations for what kind of contributions he might make to the Dash ecosystem.

### 00:02:32 - Demo of the Dynamic Trie Autocomplete Data Structure

Niles shares his screen to demonstrate a custom autocomplete data structure he created, hosted at validarch.github.io. He explains the autocomplete problem where each completion has a numeric relevance score, and walks through why basic tries perform poorly because searching prefixes requires scanning arbitrarily large subtrees.

He traces the evolution from tries to scored tries (research by Hsu and Ottaviano, 2013), then to horizontally sorted LCRS trees that resemble merge-sorted arrays. His own contribution decomposes the tree by folding vertical linked-list chains into root nodes and storing longest common prefixes, enabling vertical sorting that turns queries into max-heap top-K extraction with near-optimal complexity of k log k plus prefix length.

### 00:07:46 - Connecting Niles's Skills to Dash and GroveDB

Anthony admits much of the demo went over his head but recognizes that Niles's skills with low-level data structures could become highly relevant as Dash matures and enters optimization phases. He highlights GroveDB as a potential area of interest—a Rust-based database underlying Dash Platform that uses Merkle trees and proof systems.

The name GroveDB itself derives from its architecture of trees of trees, which Anthony notes Niles would understand far more deeply than he could. This sets up the broader pitch for Niles to potentially contribute to Dash, ranging from part-time involvement to deeper engagement on technical projects.

### 00:10:00 - Overview of Dash and the Platform Walkthrough Series

Anthony provides background on Dash, explaining its 2014 launch as Xcoin, rebrand from Darkcoin to Dash in 2015, and origins as a Bitcoin fork. Niles reads aloud the tutorial introduction covering Dash's distinguishing features: PrivateSend for transaction privacy, InstantSend for fast confirmations, masternodes powering unique functionality, and DAO governance.

The block reward allocation is highlighted at 45% to miners, 45% to masternodes, and 10% to a development fund. Anthony then transitions to describing Dash Platform as a second-layer blockchain focused on data storage, introducing components like Dash Drive, the decentralized API, the username naming service, and client libraries including the JavaScript SDK that needs cleanup before mainnet.

### 00:17:30 - Wallet Fundamentals and Cryptocurrency Basics

Rion guides Niles through the foundational concepts of cryptocurrency wallets, asking about his familiarity with public-private key pairs. Niles acknowledges general understanding of asymmetric cryptography without deep implementation experience, and Rion draws parallels to SSH key authentication.

Niles asks whether networks track everyone's balance, leading to confirmation that this is the primary function of any blockchain. The discussion establishes the conceptual framework needed to understand the upcoming tutorial steps, including how wallets are simply collections of public-private key pairs and how transactions transfer ownership of units recorded on a distributed ledger.

### 00:22:30 - Explaining Blockchains and Consensus Mechanisms

Anthony offers a concise definition of blockchain as a linked list of cryptographically verified transactions that gain value through social contract. Rion expands this by explaining blockchains as databases where networks of computers reach decentralized consensus on global state.

The conversation covers proof of work versus proof of stake, with Rion noting that Dash uniquely operates both consensus mechanisms across two different blockchains—the original proof of work chain over a decade old, and the newer Dash Platform proof of stake chain. Niles asks an insightful question about whether transactions require globally locking the chain, prompting deeper explanation of append-only structures, peer-to-peer transaction broadcasting, and Byzantine fault tolerant consensus.

### 00:28:00 - Tutorial Walkthrough: Creating a Wallet

The hosts begin walking through the actual tutorial code, starting with the Dash SDK client and wallet creation function. Anthony explains the mnemonic concept—a 12-word seed phrase that functions like a password—and how wallet addresses are derived alphanumeric strings.

Rion elaborates on how the BIP39 word list (around 2,048 words) provides high entropy when 12 words are combined, and how this single seed deterministically generates many public-private key pairs. The discussion touches on Base58 encoding and why cryptocurrency communities prefer it over Base64 to avoid visually similar characters like ones, lowercase L's, capital I's, and zeros versus capital O's.

### 00:32:09 - Testnet Faucets and Transaction Anatomy

The conversation shifts to how testnet faucets work, with Rion explaining that Dash Core Group operates the test network, runs the explorer showing chain state, and provides test funds with no market value. He breaks down a sample transaction shown in the tutorial, illustrating inputs and outputs.

Using a 6.68 DASH input split between two output addresses, Rion demonstrates how transaction fees are paid to miners as the difference between input and output totals. This concrete example helps Niles visualize the UTXO model fundamental to Bitcoin-derived blockchains, with the note that one of the outputs typically returns change to the sender's own address.

### 00:35:00 - Exploring the Dashpay GitHub Organization

The hosts redirect Niles to github.com/dashpay to survey the codebases he might contribute to. They identify the C++ core blockchain repo, the primarily Rust-based platform repo, the GroveDB database, Tenderdash (a fork of Tendermint written in Go using SBFT consensus), and the Android and iOS wallet applications.

Rion notes Dash Core Group as the primary development organization and emphasizes that Niles's question about transaction locking ties directly into how state machines and Byzantine fault tolerant consensus actually work in production blockchain systems. This survey gives Niles a roadmap of where his low-level systems expertise might be most valuable.

### 00:38:55 - Comparing Rust and Zig Languages

Niles offers his perspective on Rust versus Zig, characterizing Rust's main feature as its strict type system preventing multiple mutable references. He cites the common comparison that Rust is to C++ what Zig is to C—Zig being the lower-level, simpler language while Rust adds extensive features and safety guarantees.

He notes that Rust requires solving problems in a Rust-blessed way, providing strong guarantees but also potentially restricting flexibility unless using unsafe mode. Anthony admits he's never written a hello world in any low-level language, while Niles contrasts this with Zig's simplicity and how he felt he mostly knew the language after first learning it because the basic concepts mapped cleanly to standard low-level programming knowledge.

### 00:42:00 - Examining the JavaScript SDK Code Base

The discussion turns to the actual JavaScript SDK that has been causing problems. Rion observes the codebase looks dated and acknowledges uncertainty about whether to rehabilitate it or start fresh using primitives from Dash Hive that AJ has built.

They explore the package.json showing dependencies on libraries like the Dash Evo DAPI Client, identifying it as the touch point where requests are made to the Dash network. The conversation establishes the JavaScript SDK as a key area where Niles could potentially contribute meaningful improvements, though no clear strategic direction has been settled yet.

### 00:45:25 - Niles's Programming Background and Editor Preferences

While Rion experiences a brief connection drop, Niles discusses his love for Zig as his favorite language and reveals that Lua was his first programming language, used for game scripting in his teenage years. Anthony pushes back on the idea that learning programming young makes it easy, explaining how difficult it is to start as an adult with overwhelming tutorial options.

When Rion returns, the editor discussion reveals Niles uses VS Code despite wanting to switch to Zed (currently macOS only). Anthony mentions trying Zed but missing the VS Code plugin ecosystem, while Niles dismisses Cursor confusion by clarifying that Codium is the open-source build of VS Code rather than the AI-enabled IDE.

### 00:49:00 - Strategic Discussion on JavaScript SDK Direction

Niles asks whether the project has a mature SDK in another language that needs porting, leading to discussion of three possible paths. Rion explains the Rust SDK is the gold standard, and options include wrapping Rust as WebAssembly, rehabilitating the existing JavaScript SDK, or building fresh using AJ O'Neill's incubator libraries.

Anthony argues the existing JavaScript library isn't bad overall—the abstractions are solid, the docs are decent, but it breaks in critical ways like failing to retry against alternate nodes. Niles asks whether the target environment is browsers or Node.js, with Rion confirming the goal is supporting traditional web developers who want to npm install and use Dash in browser environments without learning low-level details.

### 00:54:30 - Hands-On Wallet Creation Demonstration

Despite testnet uncertainty, the hosts decide to walk through actual wallet creation since it's client-side and requires no network. Niles sets up the project directory, installs the dash 1.0-dev package, and creates the necessary configuration files.

He works through the package.json, scripts directory structure, and the .env file holding network configuration. Following the tutorial step by step, he runs the create wallet function and successfully generates a new wallet with mnemonic and address output. The exercise demonstrates that local cryptographic operations work fine independent of network availability.

### 01:01:48 - Faucet CAPTCHA Adventures and Block Explorer Verification

Niles attempts to fund his test wallet through the testnet faucet, navigating ambiguous reCAPTCHA images asking about bicycles, motorcycles, and trucks. After joking about whether motorcycles count as bicycles, he successfully completes the CAPTCHA and submits his address.

The faucet surprisingly returns funds despite the hosts' assumption that testnet was down, leading Anthony to speculate that the faucet might run on a separate node loaded with funds. They check the block explorer and confirm the transaction appears as unconfirmed, suggesting the network may actually be partially operational.

### 01:06:26 - Create Identity Failure and Wrap-Up Plans

Encouraged by faucet success, the team attempts the create identity function, which fails quickly with a socket hangup error. Anthony recognizes this differs from the typical bad-node errors he's encountered, suggesting Rion was correct about the network being down.

They decide to schedule a follow-up session—part seven B—to continue the tutorial when testnet is properly restored. Rion summarizes that the main focus should be the dashpay platform repository and surrounding SDKs and libraries, while Niles commits to digging into the data structure paper and codebases independently.

### 01:10:20 - Closing and Upcoming Schedule

Rion thanks the audience of around 20 viewers, acknowledging many were probably Twitter scrollers who happened by. Anthony mentions he's traveling to a wedding and won't be scheduling many sessions immediately, but plans to bring on his friends Jim and Claire during the first week of July.

The hosts confirm the regular incubator weekly meeting will likely happen Monday unless Anthony is unavailable, and they sign off with plans to see everyone then. The episode ends at 01:11:29, having successfully introduced Niles to the Dash ecosystem despite testnet limitations preventing the full tutorial walkthrough.

## Transcript

[00:00:02] - Anthony Campolo
All right. Welcome back to Dash Walkthroughs, Technical Issues Edition.

[00:00:10] - Rion Gull
Yep.

[00:00:10] - Anthony Campolo
No test set and some difficulties getting us going, but we are here now.

[00:00:16] - Rion Gull
Yep. Yeah. So welcome, everybody, for another walkthrough we've got today. Our guest is Niles.

[00:00:24] - Rion Gull
His last name isn't Phone as far as I know, but we have Niles Phone here.

[00:00:30] - Niles Salter
It'll be.

[00:00:32] - Rion Gull
Yeah. So Anthony, Niles and I met through our local meetup.

[00:00:41] - Rion Gull
AJ knows Niles pretty well and introduced me to him. And then I went to one of the Zig meetups here in Utah and saw a presentation from Niles and just talked with him for a little bit.

[00:00:57] - Rion Gull
And yeah,

[00:00:59] - Rion Gull
good to meet you, Niles. Let us know a little bit about you and what you do in terms of software and

[00:01:10] - Rion Gull
maybe a little bit about what you know about cryptocurrency as well.

[00:01:15] - Niles Salter
Sure. Well, what I've been working on a lot recently, as you know, is I've been working on some Zig stuff.

[00:01:22] - Niles Salter
So specifically, I've been working on the front end to the Zig compiler. I've been working on ways of applying SIMD and vector techniques, exploiting data-level parallelism to increase the efficiency of the front end of

[00:01:38] - Niles Salter
compilers. And yeah, I gave a talk that Ryan was present for. If you look up hyper-optimizing the Zig compiler on YouTube, you'll find it.

[00:01:48] - Niles Salter
And that talk specifically introduced

[00:01:53] - Niles Salter
basically a lot of different ways of how we can apply data-level parallelism techniques on various architectures and how we can

[00:02:06] - Niles Salter
get more than one byte at once in the front end of a compiler, which is not typically what you see when it comes to tokenizers and parsers and stuff.

[00:02:17] - Niles Salter
So I've been doing that kind of thing for a while. I actually have experience working on a TypeScript to Lua transpiler as well.

[00:02:25] - Niles Salter
I also made a data structure that maybe I'll show. That's kind of fun. And.

[00:02:32] - Anthony Campolo
You made a data structure. So do you have a CS degree or are you just a hyper nerd?

[00:02:39] - Niles Salter
The latter. The latter. Yeah. If you.

[00:02:41] - Anthony Campolo
Do you have a CS degree?

[00:02:43] - Niles Salter
No, I don't. If you pull up my screen share, though, I have a little demo that I could probably go through real quick.

[00:02:51] - Niles Salter
This is at validarch.github.io@dynastt. And I just opened up the wrong thing, so.

[00:03:02] - Niles Salter
So yeah, this solves the autocomplete problem. And the idea is that every single

[00:03:10] - Niles Salter
completion inside of your string corpus is assigned a numeric score saying the relative importance of it.

[00:03:18] - Niles Salter
And so the idea is we're going to have some structure, and we want to return the top 10 or so most relevant completions to a prefix string.

[00:03:28] - Niles Salter
So we don't want a random one. We want the highest-scored one. So I made this demo that shows how we can start from the idea of a basic try and kind of build on top of that.

[00:03:39] - Niles Salter
So I'll just step through real quickly here. Let me minimize this so it's just me talking.

[00:03:48] - Niles Salter
So the thing that I show with the try is that a try is actually not that great when it comes to scored autocomplete.

[00:03:56] - Niles Salter
And the reason is because you can imagine if we want to autocomplete Li, we have to go down the L branch and go down the I.

[00:04:04] - Niles Salter
And then basically, everything inside of this subtree we're going to have to search.

[00:04:08] - Niles Salter
And there could be an arbitrary this could be an arbitrarily large subtree. And so the first improvement on a try that we could make this is actually research that was done by Sue and Ottaviano in 2013.

[00:04:23] - Niles Salter
They added scores to each node. So the leaf nodes already have scores. That's telling us the relevance relative to everything else.

[00:04:34] - Niles Salter
But now the internal nodes have a score. And the internal node score is going to be equal to the maximum score of the subtree.

[00:04:43] - Niles Salter
And what this allows us to do is we can actually follow the maximum score down to a leaf at any given point and thereby prune large amounts of the try.

[00:04:53] - Niles Salter
So

[00:04:55] - Niles Salter
in this demo, I'm just going to show how you do autocomplete for the top five completions to the empty string.

[00:05:02] - Niles Salter
The reason for that is because it's the worst case. So let's just go through it really quickly.

[00:05:07] - Niles Salter
We start at the root node. We see the highest score. We can follow it down to the leaf.

[00:05:13] - Niles Salter
And it happens to be Wikipedia. I pulled this data set off Wikipedia. And then I show the next step, we're just going to grab we do all the steps at once is what I'm showing you.

[00:05:24] - Niles Salter
And we can do this until we get five. And you can see that we're not looking at the whole tree, so this is an improvement.

[00:05:34] - Niles Salter
We can do better, though. We can sort the tree horizontally.

[00:05:39] - Niles Salter
And when we do this and when we depict it as an LCRS tree, this actually looks more like a merge case sorted arrays problem.

[00:05:47] - Niles Salter
And so if we do the same

[00:05:50] - Niles Salter
query on this sorted structure, you can see when we add all of these into a priority queue and take the top one at each step,

[00:06:02] - Niles Salter
there's a lot less of the tree that we're looking at and a lot less of the tree that's actually going into the priority queue, which we can actually bound to just the size of how many completions we want.

[00:06:13] - Niles Salter
This was the previous state of the art. And my improvement on top of it was to

[00:06:20] - Niles Salter
decompose the tree. So that looks like this. We fold the vertical linked list chains into the root node.

[00:06:29] - Niles Salter
And then we store the longest common prefix between each node and the nodes inside of it.

[00:06:35] - Niles Salter
That enables us to sort vertically. So we had already sorted horizontally. Now we're sorting vertically.

[00:06:41] - Niles Salter
And when we draw this in LCRS fashion, now doing the same algorithm is equivalent to extracting the top K elements from a max heap.

[00:06:52] - Niles Salter
And so doing the same query now looks like this. So you can see we look at a lot less of the tree.

[00:07:00] - Niles Salter
And in fact, now the worst-case query that we had before is actually kind of the best case.

[00:07:06] - Niles Salter
It's the easiest to do now. But this is applicable in general at any point in the tree.

[00:07:12] - Niles Salter
I do show what it would look like to complete Li because

[00:07:19] - Niles Salter
you'll note that we might have to skip a number of nodes equal to the prefix string length.

[00:07:24] - Niles Salter
But aside from that, it's pretty straightforward. And that enables us to do queries in almost optimal time.

[00:07:30] - Niles Salter
We can do it in k log k plus length of the prefix string. So kind of fun. I wrote a paper on it.

[00:07:36] - Niles Salter
If anyone is interested in that, if you just take away demo here,

[00:07:43] - Niles Salter
then there you go.

[00:07:46] - Anthony Campolo
OK.

[00:07:47] - Niles Salter
Very fun.

[00:07:48] - Anthony Campolo
Well, yeah.

[00:07:51] - Anthony Campolo
Obviously, you are proficient with the low-level things here.

[00:07:57] - Niles Salter
So impressive.

[00:07:59] - Anthony Campolo
This is something that I

[00:08:02] - Anthony Campolo
when I saw your presentation, I was like, OK, 90-plus percent of this is over my head.

[00:08:09] - Anthony Campolo
But what interests me is we're not at the optimizing phase right now for the products that we have in Dash.

[00:08:18] - Anthony Campolo
But it may very well be that sometime down the road, we may need some of these specific skills that you have in terms of optimizing low-level data structures and code and things like this.

[00:08:35] - Anthony Campolo
So I think it may be relevant at some point. And regardless,

[00:08:43] - Anthony Campolo
I think that, yeah, the skill set that I've seen that you have could be very good for us in Dash with some of the products that we have.

[00:08:53] - Anthony Campolo
I know that GroveDB is one example of

[00:09:00] - Anthony Campolo
the Dash platform, which we'll talk about today as we get into this. Dash platform is built on a new database called GroveDB, written in Rust.

[00:09:11] - Anthony Campolo
And one of the features is that it has a proof system. And without I don't know.

[00:09:20] - Anthony Campolo
I obviously was not I'm not part of the coders on this. I'm not even really a coder myself.

[00:09:27] - Anthony Campolo
But

[00:09:28] - Anthony Campolo
there are lots of different things like Merkle data trees. And the term GroveDB comes from the fact that it's built on a technology that uses

[00:09:42] - Anthony Campolo
trees of trees. And that's why it's called GroveDB. So you would understand that a lot more than I would understand that, even though I have a lot of experience or not a lot of history with Dash.

[00:09:54] - Anthony Campolo
You'd probably be able to take a look at that code and see what's going on and how it's unique in the field.

[00:10:00] - Anthony Campolo
So without getting into those details right now, I would like to actually start by giving you a little bit of an overview of Dash and just welcome you to ask any questions that you have about it along the way because you

[00:10:15] - Anthony Campolo
've expressed an interest in contributing to Dash and contributing to either anywhere from part-time to full-time.

[00:10:27] - Anthony Campolo
With your work structure right now, I think you're working four days a week. But you've got

[00:10:32] - Anthony Campolo
a day of the week and off-time that you can contribute. So I wanted to give you a broad overview of what we're working on here.

[00:10:41] - Anthony Campolo
And we'll see, yeah, what you're interested in. Dash platform, this is a platform walkthrough series.

[00:10:48] - Anthony Campolo
And unfortunately, right now, test net is down. So we'll go through more of a conceptual walkthrough.

[00:10:56] - Anthony Campolo
And I think that we can still bring up

[00:11:01] - Anthony Campolo
the tutorial that we've been working with as more of a concept and discussion starting point for all of it.

[00:11:10] - Anthony Campolo
Yeah. I got the link in the private chat for you, Niles.

[00:11:13] - Rion Gull
So Niles, yeah, just go ahead and bring that tutorial up. It's in the private chat section of

[00:11:23] - Rion Gull
StreamYard here.

[00:11:25] - Niles Salter
Gotcha.

[00:11:26] - Rion Gull
And then we'll share your screen again. And we'll kind of jump right into it.

[00:11:31] - Anthony Campolo
I'll be curious. Do you have any experience with cryptocurrency at all?

[00:11:37] - Niles Salter
Not really, actually. But

[00:11:41] - Niles Salter
I'm excited to take a look at what's going on. I almost got a crypto job one time.

[00:11:48] - Niles Salter
Sorry, I'm just moving my monitor over now.

[00:11:50] - Anthony Campolo
Did you just get a job fresh out of high school?

[00:11:55] - Niles Salter
I actually did go to university for three semesters.

[00:12:00] - Niles Salter
And then I ended up getting a job after that. Actually, not technical to start.

[00:12:06] - Niles Salter
But

[00:12:09] - Niles Salter
yeah, actually, my first technical position, I did a little trial with Bun.

[00:12:16] - Anthony Campolo
Really?

[00:12:17] - Niles Salter
Yeah, with Oven. And

[00:12:20] - Niles Salter
yeah, so that was kind of fun.

[00:12:23] - Anthony Campolo
Bun, for anybody who doesn't know, Bun is a JavaScript compiler of sorts that's written in the Zig programming language.

[00:12:33] - Niles Salter
Yeah, I'd never even heard of Zig until Bun came out and then started looking into it.

[00:12:37] - Niles Salter
And AJ actually used to do some Zig streaming as well.

[00:12:44] - Anthony Campolo
Cool.

[00:12:44] - Niles Salter
Yeah.

[00:12:44] - Anthony Campolo
And you're going to want to bump up your font five or six times.

[00:12:49] - Niles Salter
Is that good?

[00:12:50] - Anthony Campolo
Keep it going.

[00:12:50] - Niles Salter
A little more.

[00:12:52] - Anthony Campolo
There you go. Yeah.

[00:12:53] - Rion Gull
It's better.

[00:12:57] - Anthony Campolo
So.

[00:12:57] - Niles Salter
All right.

[00:12:58] - Anthony Campolo
Coding anyway, we can actually read the first section for the first time.

[00:13:01] - Rion Gull
Yeah, let's read this first section. That'll give us a good high-level overview.

[00:13:06] - Niles Salter
Sure.

[00:13:09] - Niles Salter
Yeah. Should we take turns reading it aloud or?

[00:13:13] - Rion Gull
You can go ahead and read it. And then we'

[00:13:17] - Rion Gull
ll go from there.

[00:13:18] - Niles Salter
OK. Dash platform overview. Dash is a digital cryptocurrency that was launched in 2014, originally called Xcoin.

[00:13:27] - Niles Salter
It was renamed Darkcoin and then finally rebranded as Dash in 2015. Dash is a portmanteau of digital cash and was created as a fork of Bitcoin.

[00:13:35] - Niles Salter
Despite its origins, today, Dash differs significantly from Bitcoin by aiming to be a convenient, fast, and private digital cash platform that is suitable for everyday transactions.

[00:13:45] - Niles Salter
This goal is reflected in its design features, which include private send. This feature ensures user privacy by mixing transactions together, making them untraceable to individual users.

[00:13:55] - Niles Salter
Instant send, Dash's instant send feature, enables near-instant transaction confirmations that are faster than Bitcoins.

[00:14:02] - Niles Salter
Master nodes, Dash's network includes master nodes or full nodes, which power its unique features like instant send and private send, as well as its governance system.

[00:14:11] - Niles Salter
Decentralized autonomous organization, Dash operates as a DAO, meaning it is a transparent member-controlled organization free from central government influence.

[00:14:23] - Niles Salter
Block reward allocation, Dash's block reward is split between miners, 45%, master nodes, 45%, and a development fund, 10%, ensuring ongoing platform maintenance and development.

[00:14:36] - Niles Salter
In 2019.

[00:14:38] - Anthony Campolo
Yeah, we'll skip there. So that's basically just the overview of Dash, the cryptocurrency and whatnot.

[00:14:47] - Anthony Campolo
We'll skip the paragraph here, I guess. And I'll just talk about these features a little bit.

[00:14:54] - Anthony Campolo
So Dash platform is the second-layer blockchain that connects with the first-layer blockchain but does different things.

[00:15:07] - Anthony Campolo
So storing data is essentially the main feature of the Dash

[00:15:13] - Anthony Campolo
platform blockchain. And the features

[00:15:18] - Anthony Campolo
are Dash Drive, a decentralized API, usernames for Dash platform naming service, the platform chain, and the Dash libraries.

[00:15:29] - Anthony Campolo
So you and I talked yesterday about some of the things that we needed help with.

[00:15:35] - Anthony Campolo
One of those is the SDK, the JavaScript SDK that we're working with. So that last thing is the Dash libraries.

[00:15:45] - Anthony Campolo
So Dash platform is essentially a bunch of nodes that are operating these services, such as a storage service built on GroveDB, which we introduced a little bit before.

[00:15:58] - Anthony Campolo
And then obviously, if you want to access that data, you need an API. And

[00:16:05] - Anthony Campolo
there's also this naming service

[00:16:09] - Anthony Campolo
that you can register usernames on to interact with Dash platform. And you're using the currency Dash to do all this stuff.

[00:16:17] - Anthony Campolo
So it's an open access network that relies on if you want to write to this global data store, then you pay with the Dash cryptocurrency.

[00:16:29] - Anthony Campolo
So that's the basics of it.

[00:16:33] - Anthony Campolo
And then the client libraries, the main one that we're working on is the Rust client library.

[00:16:41] - Anthony Campolo
And Dash core group is doing that. But we also want to have the JavaScript library working very well as well.

[00:16:52] - Anthony Campolo
So just a brief overview of the timeline here. Dash platform is going to Mainnet in about a month.

[00:17:00] - Anthony Campolo
And so right now, we're working with a test network that's basically orchestrated by Dash core group.

[00:17:06] - Anthony Campolo
But between now and Mainnet, my personal wish is that we can clean up the JavaScript library.

[00:17:15] - Anthony Campolo
So that may be one of the things that we ask you to dig a little deeper into. But

[00:17:21] - Anthony Campolo
yeah, any questions so far, high-level questions, just getting oriented in the Dash ecosystem and what we're working on so far?

[00:17:30] - Anthony Campolo
I know we've gone through a lot of stuff just even in that past five minutes. But any questions so far, Niles?

[00:17:38] - Niles Salter
Yeah, I didn't have a question as you were talking. But there's a lot of stuff that I obviously don't know.

[00:17:45] - Niles Salter
So as we get into more specifics, I can ask more specific questions.

[00:17:50] - Rion Gull
Yeah. And we've gone about 17 minutes now. So we'll probably plan on about 60 minutes.

[00:17:57] - Rion Gull
And so let's continue going through this.

[00:18:02] - Anthony Campolo
We could probably skip the roadmap section.

[00:18:04] - Rion Gull
Scan

[00:18:06] - Rion Gull
through. Yeah, we'll scroll down a little bit. And we'll scan through.

[00:18:13] - Rion Gull
Yeah.

[00:18:13] - Anthony Campolo
What's your JavaScript experience like?

[00:18:18] - Niles Salter
Well, like I said, I worked on a TypeScript to Lua transpiler for a number of years.

[00:18:24] - Niles Salter
So I've actually read quite a bit of the JavaScript specification and worked on it in kind of a rigorous manner a little bit.

[00:18:34] - Anthony Campolo
Great. Yeah, this is like entry-level node stuff. So you should be just fine then.

[00:18:39] - Rion Gull
Yeah, I mean, there are two different skill sets. So when you say you've looked at the specification, you're talking about the language itself.

[00:18:48] - Rion Gull
That's a little bit of a different skill set than working in the JavaScript ecosystem and working with NPM and all that stuff.

[00:18:55] - Rion Gull
And you and I talked about that yesterday. You've got experience with that as well.

[00:19:01] - Rion Gull
So I don't know how much you're consuming as you're scanning through this. But basically, this is a tutorial to kind of get started with interacting with Dash platform and the Dash network in general.

[00:19:15] - Rion Gull
And so first of all, here, we fund a wallet. We create a wallet. And we fund a wallet.

[00:19:23] - Rion Gull
And so if you know nothing, if you know very little about cryptocurrency, then this part is kind of foundational understanding.

[00:19:31] - Rion Gull
So if you wanted to scroll back up a little bit and if you have any questions about some of this stuff, like

[00:19:42] - Rion Gull
what is a wallet and what does it mean to

[00:19:48] - Rion Gull
create a wallet, I would guess that you would have some questions about that because that's fundamental to the platform is that you have to

[00:19:57] - Rion Gull
pay with cryptocurrency. And in this tutorial, you're getting the cryptocurrency from a faucet, which is basically just saying, hey, here's a website.

[00:20:08] - Rion Gull
And if you ask for some funds, you give it your address, your cryptocurrency address.

[00:20:14] - Rion Gull
And then it sends some funds to that address. And then you can then use that cryptocurrency.

[00:20:20] - Rion Gull
So that's what this main part is. But do you know what

[00:20:27] - Rion Gull
do you know about private public key pairs in general, like asymmetric

[00:20:33] - Rion Gull
key pairs?

[00:20:34] - Niles Salter
Yeah, asymmetric cryptography. I haven't written those kinds of algorithms before.

[00:20:41] - Niles Salter
But

[00:20:43] - Niles Salter
I think I generally understand the basic idea of

[00:20:49] - Niles Salter
there being a public versus private key or

[00:20:53] - Niles Salter
being able to escalate into a secure link

[00:20:58] - Niles Salter
. Yeah, I guess I couldn't speak at length about it.

[00:21:04] - Rion Gull
Yeah, it's very similar to

[00:21:08] - Rion Gull
SSHing and things like that. When you SSH and put an SSH key onto a server and you have a private key on your own computer, that's essentially the same technology.

[00:21:21] - Rion Gull
It's public-private key pairs, asymmetric keys. And that's the basis of cryptocurrency is a wallet is just a bunch of public-private key pairs.

[00:21:36] - Rion Gull
And then sending money just means that a network

[00:21:46] - Rion Gull
has a ledger of

[00:21:49] - Rion Gull
who's able to make transactions.

[00:21:54] - Rion Gull
And yeah, we won't get into the details of all of that.

[00:22:02] - Niles Salter
So does the network keep track of how much money or credits everyone has? Or is that.

[00:22:08] - Rion Gull
Yes.

[00:22:09] - Niles Salter
OK.

[00:22:10] - Rion Gull
So that's the basis of the blockchain.

[00:22:13] - Niles Salter
Yeah, it's the first and most important job of every blockchain, yes.

[00:22:16] - Rion Gull
Yeah.

[00:22:17] - Niles Salter
Gotcha.

[00:22:19] - Rion Gull
Yeah. Anthony, do you want to take a stab at explaining that

[00:22:26] - Rion Gull
?

[00:22:28] - Niles Salter
Like what a blockchain is?

[00:22:30] - Rion Gull
Yeah, like what a blockchain is.

[00:22:31] - Anthony Campolo
Yeah, it's easy. It's a linked list. Done.

[00:22:34] - Niles Salter
There you go.

[00:22:36] - Anthony Campolo
Yeah, it's a linked list of cryptographically verified transactions that represent a balance that then attains value through the social contract of continuing to function and not allowing anyone to make up their balance

[00:22:49] - Anthony Campolo
.

[00:22:53] - Rion Gull
So you can think of a blockchain as

[00:22:59] - Rion Gull
it is

[00:23:01] - Rion Gull
a data structure, like Anthony was saying, a linked list. But what the data is in that is the ownership of coins, the ownership of certain funds, I guess you could say.

[00:23:15] - Rion Gull
So this kind of gets at the heart of what money is and everything. But in the end, money is just a ledger where you have certain identities owning certain amounts

[00:23:29] - Rion Gull
of units on the ledger. And when you make a transaction, you're just transferring ownership or transferring

[00:23:38] - Rion Gull
units from one address, one key pair to another key pair that can control sending that further on.

[00:23:49] - Rion Gull
And so blockchain, literally just a chain of blocks. What are the blocks? It's a block of transactions.

[00:23:57] - Rion Gull
And each of those transactions is modifying this ledger of global state of units of money.

[00:24:05] - Rion Gull
So that's kind of the high-level description of it. It's just a database that has

[00:24:19] - Rion Gull
a network of

[00:24:22] - Rion Gull
computers that are coming to decentralized consensus on the state of that blockchain.

[00:24:28] - Rion Gull
And so you have another core concept is who is able to participate in updating that blockchain, that ledger.

[00:24:39] - Rion Gull
And that's where you get into things like proof of work and proof of stake, where in proof of work, you have to do a bunch of work.

[00:24:46] - Rion Gull
Your computer has to do a bunch of work to be the next person to update that chain.

[00:24:55] - Rion Gull
And in proof of stake, it's a little bit different. But instead of showing that you've done a bunch of work, you show that you own a bunch of the coins already.

[00:25:03] - Rion Gull
And so

[00:25:05] - Rion Gull
that gives you then the right to

[00:25:09] - Rion Gull
update the ledger based on what consensus algorithm you're choosing to use. So in Dash, we have actually both consensus mechanisms and two different blockchains.

[00:25:21] - Rion Gull
One is a proof of work chain. And one is a proof of stake chain. And Dash platform is the proof of stake chain.

[00:25:28] - Rion Gull
And the traditional Dash network blockchain is a proof of work chain. It's like over 10 years old now.

[00:25:35] - Rion Gull
It was one of the first forks of Bitcoin. So we don't expect you to obviously know all of this right off the bat and even the high-level.

[00:25:47] - Niles Salter
I do have one question.

[00:25:49] - Rion Gull
Yeah.

[00:25:50] - Niles Salter
Do you have to globally lock the whole chain in order to do a transaction? Or can you do smaller locks on certain parts of it?

[00:26:04] - Rion Gull
You don't.

[00:26:04] - Niles Salter
I don't know if that makes sense.

[00:26:07] - Rion Gull
No, you don't globally lock anything.

[00:26:11] - Rion Gull
It's an append-only thing. And so there are tons of different you can have all sorts of different transactions happening at any time on the network.

[00:26:23] - Rion Gull
And those are broadcast through peer-to-peer messaging. And so these transactions are basically requests to update the chain, update the ledger.

[00:26:32] - Anthony Campolo
Just talk about consensus. I think that kind of answers the question.

[00:26:36] - Rion Gull
Yeah, this is a question of consensus. So in a network where anybody is able to participate, you have to have there's no concept of global authority.

[00:26:46] - Rion Gull
So

[00:26:50] - Rion Gull
if there was one single authority that said that's operating all of these nodes, then yeah, you could do that.

[00:26:56] - Rion Gull
But the whole idea is that anybody can participate that is

[00:27:03] - Rion Gull
participating in the consensus algorithm. And so you have a bunch of transactions happening.

[00:27:09] - Rion Gull
And then there are certain types of nodes that are assembling these transactions into a block of transactions, hence the name block.

[00:27:19] - Rion Gull
And then

[00:27:21] - Rion Gull
those blocks get up a block is considered

[00:27:27] - Rion Gull
valid if it shows that it has the valid proof of work. So I don't think that we'll go into the details of that.

[00:27:35] - Rion Gull
But there's no global locking or anything like that. It's a consensus mechanism that's based on

[00:27:44] - Rion Gull
showing that you are

[00:27:46] - Rion Gull
doing a bunch of work. And the whole idea behind doing the whole bunch of work is a civil proof mechanism that eventually comes to consensus but isn't immediately in consensus.

[00:28:00] - Rion Gull
But there again, Dash has made improvements on that so that the eventual nature is very, very quick.

[00:28:08] - Rion Gull
But yeah, globally distributed database coming to consensus, there is that concept outside of blockchains.

[00:28:19] - Rion Gull
And blockchains basically just add

[00:28:24] - Rion Gull
the authoritative mechanism on top of that, saying that what we define as authority is based on this idea of proving work or proving stake

[00:28:38] - Rion Gull
in the network. But I think it's a little beyond the scope. We're not going to actually go through so I don't know if we said it explicitly or not.

[00:28:48] - Rion Gull
But we're not going to go through this tutorial and actually code it out because the network's not up right now.

[00:28:54] - Niles Salter
OK.

[00:28:55] - Rion Gull
But yeah, I just wanted to use this power as.

[00:28:58] - Anthony Campolo
We should talk about

[00:29:00] - Anthony Campolo
what the functions themselves are doing, so like create wallet, create identity.

[00:29:05] - Niles Salter
Sure. Yeah. You want to go to the first one? So yeah, we got create wallet.

[00:29:10] - Rion Gull
Yeah, do you want to go ahead and take a stab at it, Anthony?

[00:29:13] - Anthony Campolo
Yeah, so you have your client, which is connecting you to the Dash SDK. And it gives you some of these helper functions to do a lot of the common functionality you would want to do with a blockchain.

[00:29:29] - Anthony Campolo
So as we were saying, the kind of most important thing is that you have some amount of coins.

[00:29:35] - Anthony Campolo
So you have this idea of a wallet. And the wallet has something called a mnemonic, which is a 12-word seed phrase that is like your password.

[00:29:44] - Anthony Campolo
And then there's the wallet address, which is a string of alphanumeric text. And basically, you just run this command, create your wallet, and gives you that information back.

[00:29:57] - Rion Gull
Ye

[00:29:59] - Rion Gull
ah, so the.

[00:30:00] - Anthony Campolo
Scroll down, you'll see what the output would be.

[00:30:04] - Niles Salter
Oh, I got what you're talking about.

[00:30:05] - Anthony Campolo
Yeah, yeah. Yep, so that's exactly what you would see if you were to run that command.

[00:30:10] - Rion Gull
So in this, the mnemonic is you can see it's just 12 words. And basically, that's just a word-encoded version of a very long random number

[00:30:23] - Rion Gull
. So it uses an encoding standard that has, I think, 2,048 words or something like that.

[00:30:30] - Rion Gull
So if you take 12 of those, you know the concept well enough to know that it's like instead of binary, if you wanted to encode it as hexadecimal, it gets smaller.

[00:30:41] - Rion Gull
And if you encode it in base 58, that's even smaller. Well, if you encode it in this very large library, a very large word list, then 12 words gives you a lot of random entropy.

[00:30:54] - Rion Gull
So that's the basis. That mnemonic forms the basis of all of the other

[00:31:00] - Rion Gull
public-private key pair generation. So you can generate a bunch of different public-private key pairs

[00:31:08] - Rion Gull
based on this one seed phrase. And where your wallet address comes from, it's derived from those 12 words

[00:31:17] - Rion Gull
with different encoding, obviously.

[00:31:21] - Niles Salter
Yeah, is this base 64 or?

[00:31:25] - Rion Gull
It's base 58.

[00:31:28] - Niles Salter
Base 58.

[00:31:28] - Rion Gull
So I think it's a slang word developed by the cryptocurrency community. So it eliminates some of the

[00:31:36] - Rion Gull
characters to avoid

[00:31:39] - Rion Gull
similar-looking things, like instead of eyes or something.

[00:31:43] - Anthony Campolo
Eyes and Os, yeah.

[00:31:45] - Rion Gull
Yeah.

[00:31:45] - Niles Salter
Oh, yeah.

[00:31:47] - Rion Gull
Yeah, because originally, I think the idea was, hey, people are going to be writing this down.

[00:31:51] - Rion Gull
And they don't want to write down the wrong thing and not be able to see. But nobody writes it in practice.

[00:31:56] - Anthony Campolo
You have attack vectors also because people can have a slightly different one saying, send it here.

[00:32:01] - Anthony Campolo
But it's actually being sent here because that's the thing you got to know about the cryptocurrency world.

[00:32:06] - Anthony Campolo
Everyone's trying to steal everyone's crap.

[00:32:10] - Rion Gull
Yeah, OK, so and then this next step, add funds to the wallet with testnet faucet.

[00:32:16] - Rion Gull
We talked about that a little bit. This network is basically just operated by Dash Core Group.

[00:32:25] - Rion Gull
And they will perform

[00:32:29] - Rion Gull
the different functions on the network, like miners and master nodes and things like that.

[00:32:36] - Rion Gull
And eventually, they spin up a new blockchain when they reset this thing, which they're resetting it right now as we speak.

[00:32:45] - Rion Gull
And so when we do this again and actually if we go through this on step two, for example, of this series with you, Niles, then we'll actually maybe go through these.

[00:32:57] - Rion Gull
And it will make a little bit more sense what we're doing.

[00:33:01] - Rion Gull
But the network, yeah, DCG then runs this explorer that shows the state of the chain.

[00:33:10] - Rion Gull
And so you can see that, OK, I requested some funds from this faucet because these funds have no value, no market value.

[00:33:18] - Rion Gull
So it's just numbers in a database anyway.

[00:33:23] - Rion Gull
So you request some funds. They give you some funds. And then you can play around with the test network.

[00:33:28] - Rion Gull
And that's what is shown here.

[00:33:32] - Niles Salter
Right.

[00:33:34] - Rion Gull
OK, so.

[00:33:36] - Niles Salter
We can get infinite money on.

[00:33:37] - Rion Gull
What the transaction looks like right there. So a transaction is inputs and outputs.

[00:33:42] - Rion Gull
So for example, on that left-hand side, that's your inputs to the transaction. And on the right-hand side is the outputs of the transaction.

[00:33:51] - Rion Gull
So you had 6.68 dash as your input that itself was an output from a previous transaction.

[00:34:00] - Rion Gull
And now you're requesting that the network does another transaction and says, hey, send a part of that 6.

[00:34:08] - Rion Gull
68 to these two addresses. So this total would add up to something close to 6.68 minus a small fee that you're giving to the miner for actually doing this on the network.

[00:34:21] - Rion Gull
So that's an example of a transaction with one input and two outputs. And the idea there was you're requesting for one of those outputs to be your own address.

[00:34:33] - Niles Salter
Oh, yeah, it says the fee right here.

[00:34:35] - Rion Gull
Yeah.

[00:34:35] - Niles Salter
There you go.

[00:34:36] - Rion Gull
Yep.

[00:34:38] - Niles Salter
OK.

[00:34:40] - Rion Gull
So the registering and retrieving an identity. The registering an identity is kind of this magic first step.

[00:34:48] - Rion Gull
We're dealing now on the proof of stake dash platform blockchain.

[00:34:55] - Rion Gull
And we're asking to register an identity. And this question has come up before several times.

[00:35:00] - Rion Gull
And I unfortunately don't have a great answer to it. But what is registering an identity?

[00:35:06] - Rion Gull
Essentially, it's creating a public-private key pair. But I don't know which type it is.

[00:35:10] - Rion Gull
And this is actually the point in the tutorial where I wanted to break off a little bit from the tutorial and actually just go into the GitHub source code to give you an idea of

[00:35:25] - Rion Gull
what kinds of code bases we're working with and what you might want to contribute to

[00:35:31] - Rion Gull
as we work together in the future. So go ahead and open up a new tab and go to github.com/dashpay.

[00:35:45] - Niles Salter
Like that?

[00:35:49] - Rion Gull
Let's see, github.com/dashpay. Did we go there?

[00:35:56] - Niles Salter
There we go.

[00:35:56] - Rion Gull
There we go.

[00:36:00] - Rion Gull
So you can see they've got they, meaning Dash Core Group, they're the primary development organization that is in Dash.

[00:36:08] - Rion Gull
And they develop and maintain the core blockchain and the platform blockchain. You can see just, yeah, scroll up a little bit further.

[00:36:20] - Rion Gull
Yeah, right there. You can see that the Dash blockchain, just the D-A-S-H right there on the top left, that's a C++ code base.

[00:36:30] - Rion Gull
Platform itself is a Rust code base for the most part. And then GroveDB is

[00:36:38] - Rion Gull
the actual database that platform is built on top of. Tender Dash is the consensus mechanism that's built in Go.

[00:36:48] - Rion Gull
It's a fork of the Tender Mint. You see the SBFT

[00:36:58] - Rion Gull
consensus.

[00:36:59] - Niles Salter
Yeah.

[00:37:00] - Rion Gull
SBFT is what's the S?

[00:37:04] - Rion Gull
I don't remember what the S is. But BFT is a very common, even outside of cryptocurrency contexts.

[00:37:13] - Rion Gull
It's a Byzantine fault-tolerant consensus mechanism. So this kind of gets back to your question about locking the whole chain.

[00:37:24] - Rion Gull
It doesn't do that. It uses these state transition state machines. And so this is just I'm giving you a high-level overview.

[00:37:34] - Rion Gull
You'll be interested in doing some of this research

[00:37:40] - Rion Gull
.

[00:37:40] - Niles Salter
Sure.

[00:37:40] - Rion Gull
Because that seems like, yeah, like the low-level stuff is probably interesting to you.

[00:37:45] - Rion Gull
But yeah, continuing the high level, the Dash Wallet and the Dash Wallet iOS repos, those are the

[00:37:55] - Rion Gull
Android and iOS respective mobile wallets. And then so this is client kind of

[00:38:04] - Rion Gull
this is what you would make transactions from, for example. So if you wanted to make a transaction using a mobile app, you could use this wallet software.

[00:38:14] - Rion Gull
If you wanted to use iOS, you'd use the other software. And then what they don't have tagged is that we also have a bunch of JavaScript libraries.

[00:38:25] - Rion Gull
But if you scroll down

[00:38:28] - Rion Gull
or search for JavaScript, yeah, view all repositories.

[00:38:35] - Rion Gull
And then you can just kind of see

[00:38:38] - Rion Gull
all the different pieces. And there's a lot of pieces that go into this. So pretty much any language that you are we don't have much we don't have anything going on with Zig.

[00:38:51] - Rion Gull
But we do have a lot of Rust. And

[00:38:55] - Rion Gull
you tell me, how similar are those?

[00:38:59] - Niles Salter
So Rust, the main feature, I think, is its type system and how it stops you from having more than one mutable reference and those types of things.

[00:39:11] - Niles Salter
I haven't used Rust that much. Zig is more like C but a little bit safer.

[00:39:19] - Niles Salter
So yeah, that's basically the distinction. I've heard people say that Rust is to C++ what Zig is to C.

[00:39:27] - Niles Salter
So that's kind of the comparison there.

[00:39:30] - Anthony Campolo
Zig is to Rust as C++ is to C?

[00:39:34] - Niles Salter
No, no, no. Rust is to C++ what Zig is to C.

[00:39:39] - Anthony Campolo
Rust is to C++ as Zig is to C. So Zig is lower level. And Rust has more extra features.

[00:39:50] - Niles Salter
Yeah, with Rust, you have to solve things in the Rust-blessed way. There's a Rust-specific way of doing things.

[00:39:59] - Niles Salter
And that gives you nice guarantees sometimes because you know that you're not going to make certain classes of mistakes.

[00:40:07] - Niles Salter
But it can also be restricting. And if you don't want that, then you have to use something else.

[00:40:15] - Niles Salter
Or you could use unsafe mode.

[00:40:17] - Anthony Campolo
Yeah, I've never really used a low-level language of like written a Rust hello world.

[00:40:22] - Anthony Campolo
So this is all above my pay grade.

[00:40:26] - Rion Gull
Can you zoom in a little bit, Niles?

[00:40:29] - Niles Salter
Sure.

[00:40:29] - Rion Gull
And I want you to find the dash SDK.

[00:40:37] - Rion Gull
And it might not be literal. So yeah, SDK.

[00:40:44] - Rion Gull
Let's see.

[00:40:51] - Rion Gull
Hmm, go back to the first page.

[00:40:56] - Rion Gull
And just do a page find for SDK.

[00:41:01] - Rion Gull
Yeah.

[00:41:04] - Rion Gull
Nothing there?

[00:41:05] - Niles Salter
Nope.

[00:41:06] - Rion Gull
OK, page two.

[00:41:10] - Niles Salter
Not on my Control-F.

[00:41:13] - Rion Gull
Huh.

[00:41:13] - Niles Salter
I could also do this, an org search. That should be the same. OK, here we go.

[00:41:20] - Anthony Campolo
I'll be right back.

[00:41:21] - Niles Salter
Got some SDK stuff.

[00:41:26] - Niles Salter
Yeah, this is RS SDK? OK.

[00:41:29] - Rion Gull
Yeah, so that's the Rust one. And that's what Dash Core Group is

[00:41:37] - Rion Gull
there we go, there's the JavaScript one.

[00:41:38] - Niles Salter
JavaScript one.

[00:41:39] - Rion Gull
So this is the one that we've been having some trouble with because it's not the priority right now for Dash Core Group.

[00:41:48] - Rion Gull
And this is one of the two things that I discussed with you yesterday on our phone call.

[00:41:54] - Rion Gull
This is, again,

[00:41:56] - Rion Gull
what the tutorial is using. So some of this will look similar or look familiar from what we've already gone over today.

[00:42:05] - Rion Gull
And

[00:42:07] - Rion Gull
yeah, this is something that we could take a look at and see if we can

[00:42:15] - Rion Gull
we won't necessarily go through this on the call today, on the stream today. But

[00:42:23] - Rion Gull
AJ has done a bunch of work in the Dash Hive repo building some of the core-level primitives for building wallets.

[00:42:35] - Rion Gull
So the Dash SDK is like a combination of a bunch of other libraries. So

[00:42:46] - Rion Gull
if you go to the package.json file in here let's see, are we in the yeah, we're in the JS dash SDK still.

[00:42:56] - Niles Salter
Yep.

[00:42:57] - Rion Gull
Yep, so you can see that this is built on a bunch of different dependencies. Right?

[00:43:04] - Niles Salter
Yep.

[00:43:05] - Rion Gull
So a lot of this is

[00:43:09] - Rion Gull
older stuff. Like you see a lot of

[00:43:13] - Rion Gull
like this code base is pretty old. Right?

[00:43:20] - Rion Gull
And I'm not sure if it would be easier to

[00:43:28] - Rion Gull
try to fix make updates to this SDK or to start fresh with some of the stuff that we've built in the incubator that already has the wallet stuff taken care of.

[00:43:44] - Rion Gull
But then

[00:43:46] - Rion Gull
yeah,

[00:43:49] - Rion Gull
looking at Dapy Client, for example. So you can see like the dash evo let's look over these.

[00:43:58] - Rion Gull
The main one is the dash evo Dapy Client. That's essentially what

[00:44:08] - Rion Gull
the SDK is I think that's like the touch point where

[00:44:19] - Rion Gull
then if we went to that, we would probably see a bunch of

[00:44:25] - Rion Gull
dependencies on other things as well

[00:44:29] - Rion Gull
. But that's where you actually are making

[00:44:35] - Rion Gull
requests to

[00:44:47] - Rion Gull
the Dash network

[00:44:49] - Rion Gull
. So anyway,

[00:44:52] - Rion Gull
I'm just

[00:44:54] - Rion Gull
giving you a little bit of an overview here.

[00:44:59] - Niles Salter
Gotcha.

[00:45:00] - Rion Gull
Of the tech stack that we're using. So

[00:45:09] - Rion Gull
let's see.

[00:45:15] - Rion Gull
Yeah, so Dapy Client. Dapy is the.

[00:45:20] - Niles Salter
The

[00:45:22] - Niles Salter
. You cut out for a second.

[00:45:27] - Anthony Campolo
He's gone entirely. We lost him. It was just you and me, bud.

[00:45:31] - Niles Salter
Wow. That sentence will never be finished.

[00:45:35] - Anthony Campolo
Yeah, Ry's dead now.

[00:45:38] - Niles Salter
I wasn't sure if it was just my internet or what.

[00:45:41] - Anthony Campolo
Yeah, he started slowing down a little bit. And then

[00:45:46] - Anthony Campolo
it caught up. And I was like, oh, maybe it's OK. And then he just cut off.

[00:45:53] - Rion Gull
So is Zig your favorite programming language, would you say?

[00:45:57] - Niles Salter
For sure, for sure. I love Zig so much. I love that it's very simple. It's one of those languages where I felt like when I first started using it, I mostly knew it.

[00:46:11] - Niles Salter
Like I had to get used to things, of course, like you do with any other language.

[00:46:15] - Niles Salter
You need to get muscle memory. But I felt like the basic concepts like if you know the delineation between the stack and heap memory, which is pretty standard for a low-level language, then

[00:46:30] - Niles Salter
it's just a matter of like, oh, yeah, the specification says, here's the operators.

[00:46:36] - Niles Salter
Here's what this thing does. Here are the types. And the type system is very straightforward and simple.

[00:46:45] - Niles Salter
In my opinion, it's what C should have been. Obviously, we have the benefit of hindsight.

[00:46:49] - Niles Salter
So I'm not like judging them for not being able to do it back in the day.

[00:46:54] - Rion Gull
Yeah, like years later.

[00:46:55] - Niles Salter
Yeah, right, exactly.

[00:46:56] - Rion Gull
A lot of hindsight bias. What was your first programming language? What was the first line of code you ever wrote?

[00:47:00] - Rion Gull
What language was it in?

[00:47:01] - Niles Salter
So it was actually in Lua. And Lua is also another very simple language.

[00:47:06] - Rion Gull
For your gamers?

[00:47:07] - Niles Salter
It's a scripting language. Yeah.

[00:47:09] - Rion Gull
That makes sense. Yeah, I know a lot of gamers get into Lua.

[00:47:13] - Niles Salter
Yeah, yeah, definitely a lot of time was wasted in my teenage years

[00:47:20] - Niles Salter
on stuff like that.

[00:47:21] - Rion Gull
Seeing where you are now, I would not consider that time wasted.

[00:47:25] - Niles Salter
Yeah, I mean,

[00:47:27] - Niles Salter
yeah, it's one of those things where you could tell someone like, oh, yeah, I've been the first time I wrote a script was like nine years ago.

[00:47:36] - Niles Salter
So I've been at this for a long time, you could say. But then at the same time, it's like, well, all the stuff that I learned with Lua, I mean, you could probably pick it up in a couple of weekends nowadays.

[00:47:48] - Niles Salter
And

[00:47:50] - Niles Salter
.

[00:47:50] - Anthony Campolo
So this is the problem with all you savant people who start at a young age. You have no idea how long this stuff takes to learn when you start as an adult.

[00:47:58] - Anthony Campolo
It took me like a year just to understand basic JavaScript. And I'm serious. It's really hard when you start as an adult.

[00:48:06] - Anthony Campolo
And you don't know where to start. There's all these videos. There's all these tutorials.

[00:48:10] - Anthony Campolo
And they're all different. They all tell you to do different things. And it's yeah.

[00:48:17] - Niles Salter
Well, we got Ryan back. Right.

[00:48:19] - Rion Gull
Yeah, sorry about that.

[00:48:21] - Anthony Campolo
Chat about languages.

[00:48:24] - Rion Gull
So yeah,

[00:48:27] - Rion Gull
overall thoughts so far, questions? I saw just kind of vamping while I was gone.

[00:48:34] - Rion Gull
But anything that you had questions about so far?

[00:48:40] - Niles Salter
Yeah, I mean, I guess

[00:48:44] - Niles Salter
so for the JavaScript SDK, you were mentioning a lot of its legacy and that there's a possibility that just throwing away parts of it might be beneficial and starting fresh.

[00:48:58] - Niles Salter
Do you have other SDKs where it already does the right thing? It's already mature.

[00:49:03] - Niles Salter
And more or less, what you need is a port?

[00:49:07] - Rion Gull
Yeah, I'm glad that you asked that because that's something I should have brought up.

[00:49:10] - Rion Gull
So

[00:49:12] - Rion Gull
the best example right now of

[00:49:15] - Rion Gull
our SDK is the Rust SDK. So that's one of the reasons why I'm kind of interested in you helping us out here because you're the type of guy that once you know programming in one language, you can generally pick up programm

[00:49:30] - Rion Gull
ing in other languages. And so with you

[00:49:35] - Rion Gull
knowing those low-level being a good, solid brain, essentially, you can take a look at the Rust SDK, which is the gold standard, and understand what's going on from there, and then try to port that over to the JavaScript

[00:49:55] - Rion Gull
SDK. Now, I've said that the JavaScript SDK is like I've said some bad things about it.

[00:50:01] - Rion Gull
But in the end, it's actually not that bad. So

[00:50:06] - Rion Gull
it has been bad for us. But I think that it's just because

[00:50:12] - Rion Gull
I haven't looked into the details.

[00:50:15] - Anthony Campolo
I think also

[00:50:17] - Anthony Campolo
it's drawbacks are in a couple very specific places that are highly consequential.

[00:50:23] - Anthony Campolo
So if it just knew how to retry and hit different nodes so it wouldn't completely fail when it hits a bad node, that would fix 90% of the problems.

[00:50:33] - Anthony Campolo
The library itself is solved. The abstractions are good. It's easy to use. The docs are actually pretty good.

[00:50:40] - Anthony Campolo
The problem is just that it breaks in a couple key ways that just completely nukes the entire experience.

[00:50:49] - Niles Salter
And yeah, I guess I do have to ask in terms of how deep the pool is for the JavaScript SDK,

[00:50:59] - Niles Salter
was there ever a consideration of trying to use the Rust reuse the Rust code as WebAssembly or something?

[00:51:07] - Niles Salter
Or what was the thought process on that? I guess I don't know what environment you're trying to run this in even.

[00:51:14] - Rion Gull
Yeah, I think that is actually the plan. That seems to be what DCG's plans are for even the JavaScript, is to wrap the Rust library and do it in Wasm and have that as.

[00:51:30] - Anthony Campolo
The issue is bundle size, I think.

[00:51:34] - Rion Gull
So I'm actually not sure what the issues are. That's something that we would want you to help us with.

[00:51:41] - Rion Gull
Or

[00:51:43] - Rion Gull
yeah.

[00:51:44] - Niles Salter
So I mean, I guess I should ask first,

[00:51:48] - Niles Salter
is this primarily meant to be run on a website? Someone's going to visit a website?

[00:51:53] - Niles Salter
Or?

[00:51:54] - Rion Gull
Well, that's the overall goal is for web developers like Anth

[00:52:01] - Rion Gull
ony I said AJ, but I was thinking of your username, AJCWebDev

[00:52:07] - Rion Gull
. For just normal, traditional web developers who may not want to or need to know all the low-level stuff going on under the hood, they just want to be able to spin up a web app and

[00:52:24] - Rion Gull
import something from NPM, like they always do and like we do with the Dash library, and use in a JavaScript environment, like a browser environment.

[00:52:34] - Rion Gull
And

[00:52:37] - Rion Gull
yeah, so I have to talk with DCG about what's their intention, what's their plans.

[00:52:44] - Rion Gull
But I know for sure that they are super busy this month and next month getting platform up to mainnet.

[00:52:53] - Rion Gull
And they probably won't have JavaScript support for several months. But if we can help with that.

[00:53:01] - Anthony Campolo
They said it would be alpha, is what the blog post said, because they're alpha, Rust to be considered beta.

[00:53:07] - Rion Gull
Well, and they say that because the SDK that we have right now, they acknowledge that it's behind in development.

[00:53:14] - Rion Gull
It's behind the Rust SDK. So whether we bring the Rust SDK into a JavaScript setting using Wasm, or whether we try to rehabilitate the existing JavaScript SDK, or whether we try to see what the essentials are from both the

[00:53:34] - Rion Gull
existing Rust and JavaScript SDKs are, and try to

[00:53:40] - Rion Gull
eliminate the dead code by starting from a clean, fresh base that we have with the JavaScript libraries that AJ this time, really AJ O'Neill has developed through the incubator, those are the three different approaches.

[00:53:58] - Rion Gull
And so this is kind of like

[00:54:01] - Rion Gull
which one is the best. Right? And it's a discussion that we would have to have.

[00:54:06] - Rion Gull
And I just wanted to use this hour as a way for you to get some

[00:54:13] - Rion Gull
high-level familiarity with the code.

[00:54:15] - Anthony Campolo
I feel like if we throw this guy at the code, give him like two months, and all issues will be solved.

[00:54:21] - Anthony Campolo
I'm feeling pretty confident about his abilities.

[00:54:25] - Niles Salter
I appreciate that.

[00:54:27] - Niles Salter
Yeah, it's definitely something where I'm going to want to look through all this and see how it connects.

[00:54:32] - Niles Salter
And then I'm going to want to go through starting up a wallet and just playing with that, which probably we should do another hour.

[00:54:40] - Anthony Campolo
Yeah, it's a forum we couldn't get test at, right? Because I would really love to actually have you running code.

[00:54:46] - Anthony Campolo
But I'm going to need to schedule another one.

[00:54:48] - Rion Gull
With that said, we can go ahead. And we can do the first step of that tutorial.

[00:54:54] - Rion Gull
We're already in an hour. So we won't do it.

[00:54:56] - Anthony Campolo
If you create your wallet, you can fund it. You won't be able to pay for anything.

[00:54:59] - Rion Gull
Yeah, creating a wallet is client-side stuff. You don't need a network for that.

[00:55:02] - Rion Gull
That's the beauty of the frequency.

[00:55:05] - Anthony Campolo
Oh, OK. Yes, if you want to go back to that first tutorial where we're looking at and just run the first couple steps, so scroll up to where you actually create your project directory and stuff, it would be set up and conf

[00:55:16] - Anthony Campolo
igure node project.

[00:55:20] - Niles Salter
OK.

[00:55:22] - Niles Salter
Well,

[00:55:28] - Niles Salter
not that. I was trying to grab it. And I actually hit the wrong key. OK.

[00:55:38] - Niles Salter
Still hear me?

[00:55:39] - Rion Gull
I'll be right back.

[00:55:40] - Anthony Campolo
Yes, we can still hear you.

[00:55:42] - Niles Salter
All right, cool.

[00:55:42] - Anthony Campolo
Yeah, you're good.

[00:55:45] - Anthony Campolo
What's your editor of choice?

[00:55:49] - Niles Salter
I'm a scrub, to be honest. I'm using VS Code. I want to switch.

[00:55:54] - Rion Gull
I just figure since you're running Linux, you seem like someone who would be using, I don't know, WebStorm or something.

[00:56:01] - Niles Salter
I want to switch to z.dev at some point. But it's macOS only for now.

[00:56:06] - Anthony Campolo
I just tried z, actually, yeah, a couple weeks ago. It was pretty nice. But they don't have the plug-in ecosystem.

[00:56:12] - Anthony Campolo
So you use all the plug-ins you get through VS Code, which is just like there's so much stuff you get from that.

[00:56:20] - Niles Salter
Yeah, I love VS Code. I wish it was faster.

[00:56:26] - Niles Salter
It is what it is. Anyways, should I try running this? Let's scroll to my documents.

[00:56:36] - Rion Gull
Can you bump up the font on your code side?

[00:56:40] - Niles Salter
Yeah.

[00:56:45] - Rion Gull
Yeah, keep going. There you go.

[00:56:47] - Niles Salter
Could do.

[00:56:48] - Rion Gull
Thanks.

[00:56:49] - Niles Salter
That was good.

[00:56:49] - Rion Gull
All right.

[00:56:57] - Niles Salter
OK. We're making a blank one?

[00:57:02] - Anthony Campolo
Yeah. And then after this step, you'll create some scripts.

[00:57:07] - Niles Salter
Cool. All right, install dash 1.0 dev

[00:57:14] - Niles Salter
.

[00:57:17] - Rion Gull
Yep, so when we move to

[00:57:20] - Rion Gull
mainnet, this will move from dev to alpha.

[00:57:28] - Niles Salter
Do we need security fixes? I don't think so. We live on the edge. All right, what do we do?

[00:57:35] - Rion Gull
Not right now, anyway. We should get them all addressed, for sure.

[00:57:39] - Niles Salter
Yeah.

[00:57:46] - Niles Salter
It's opening in my other thing.

[00:57:50] - Anthony Campolo
Bodium? That's one of those AI developers, right?

[00:57:55] - Niles Salter
Actually, it's just the open source of VS Code. That's right.

[00:58:02] - Niles Salter
I was on my.

[00:58:02] - Anthony Campolo
It's a project called Codium. That is an AI-enabled IDE. So it's not a name, probably.

[00:58:10] - Niles Salter
Yeah, it is. Yeah, I was on my E Ink monitor. So I can switch here to a different color.

[00:58:17] - Anthony Campolo
You can increase the font a lot on this too.

[00:58:23] - Niles Salter
I could.

[00:58:26] - Niles Salter
I could go more.

[00:58:30] - Rion Gull
One more.

[00:58:31] - Niles Salter
All right.

[00:58:33] - Rion Gull
Yeah, there you go.

[00:58:35] - Niles Salter
Yeah.

[00:58:38] - Niles Salter
So let's just close this so we could do a terminal right here.

[00:58:45] - Niles Salter
OK.

[00:58:54] - Niles Salter
Make a package.json. Where we got one?

[00:59:14] - Anthony Campolo
Is that extra curly braces in there? Yeah. And then delete the top extra curly brace.

[00:59:24] - Anthony Campolo
This is one of the things I have a separate version of this that's updated. But I didn't think we were going to go through the code.

[00:59:29] - Anthony Campolo
So I just gave you the canonical one.

[00:59:32] - Niles Salter
OK, create a scripts directory for our node

[00:59:39] - Niles Salter
scripts

[00:59:42] - Niles Salter
and an API directory.

[00:59:46] - Niles Salter
Oh, we have a thing here.

[00:59:53] - Niles Salter
And we could do th

[00:59:57] - Niles Salter
is. Sorry if it bothers you I'm doing one by one. But I like to read it.

[01:00:01] - Rion Gull
No, you're totally fine. It's good.

[01:00:05] - Niles Salter
Network always had to test that via the network variable

[01:00:09] - Niles Salter
in env. Do I have env yet? Yes, I do.

[01:00:13] - Niles Salter
Right, I just made it. OK, import dash from dash, pass the project's network and wallet configuration through the constructor and export.

[01:00:25] - Niles Salter
OK.

[01:00:31] - Niles Salter
Do I mind TellSense? Yes, I do. It's beautiful.

[01:00:35] - Niles Salter
OK, so mnemonic is set to null to indicate we want a new wallet to be generated.

[01:00:42] - Niles Salter
It could be null or undefined, just as God intended. All right.

[01:00:48] - Niles Salter
To get a new address, replace null with an existing wallet mnemonic. I don't have an existing one.

[01:00:55] - Niles Salter
Offline mode is set to true, indicating we don't want to sync the chain. OK.

[01:01:04] - Niles Salter
Cool.

[01:01:09] - Niles Salter
Create a new file,

[01:01:13] - Niles Salter
get wallet, export wallet.

[01:01:20] - Niles Salter
OK.

[01:01:40] - Niles Salter
And we can just run that.

[01:01:48] - Anthony Campolo
There you go. There's your wallet.

[01:01:53] - Anthony Campolo
Now you can see our actual wallet.

[01:01:55] - Niles Salter
Make your surface file clean.

[01:02:00] - Niles Salter
Awesome.

[01:02:14] - Niles Salter
So it says we want this in our environment?

[01:02:18] - Anthony Campolo
That's not really as important, because we're not going to go to the create identity step.

[01:02:22] - Anthony Campolo
Let's do the test net and then see if we can see your funds on the Explorer, because this is where the next function is the one that breaks.

[01:02:30] - Niles Salter
OK.

[01:02:35] - Rion Gull
The test net faucet might not even be working right now. We'll see.

[01:02:39] - Niles Salter
It worked for me.

[01:02:41] - Rion Gull
OK.

[01:02:43] - Niles Salter
Oh, which squares are motorcycles?

[01:02:48] - Niles Salter
Oh, I missed the mirr

[01:02:50] - Niles Salter
or.

[01:02:52] - Anthony Campolo
I hate these kind of captions. These are very ambiguous. It's not always clear what they actually mean.

[01:02:58] - Anthony Campolo
And this is, I think, why the faucet broke for me yesterday, is because I did the capture wrong.

[01:03:03] - Niles Salter
You guys consider this a bicycle?

[01:03:06] - Rion Gull
I don't know.

[01:03:08] - Anthony Campolo
These ones are less ambiguous.

[01:03:09] - Niles Salter
That's a truck. Does that count? I think it counts.

[01:03:14] - Niles Salter
Counts as a car.

[01:03:16] - Anthony Campolo
Compared to a fire hydrant, I would say yes.

[01:03:23] - Niles Salter
This is the real test of intelligence right here. Oh, see, I messed it up. Bicycles.

[01:03:28] - Niles Salter
I'm including motorcycles in this.

[01:03:38] - Niles Salter
Zoom in. These look like bicycles right there. Let's send it.

[01:03:47] - Niles Salter
Does that look like a bicycle? So small.

[01:03:53] - Niles Salter
I don't think so.

[01:03:58] - Rion Gull
As you can see, the faucet experience is wonderful.

[01:04:03] - Niles Salter
All right, let's get some.

[01:04:04] - Anthony Campolo
Now you have to put your address in the top.

[01:04:06] - Rion Gull
Put your address, yeah, it's above the capture. Yep.

[01:04:10] - Niles Salter
Yeah.

[01:04:12] - Niles Salter
Address in there.

[01:04:15] - Rion Gull
Get coins.

[01:04:16] - Anthony Campolo
Get them coins, son.

[01:04:19] - Niles Salter
I love getting coins. Will it work right now? Did I do everything I need to?

[01:04:26] - Anthony Campolo
Yeah,

[01:04:28] - Anthony Campolo
the faucet. Do you see your thing spinning in your tab?

[01:04:34] - Niles Salter
Yeah.

[01:04:34] - Anthony Campolo
Yes, yeah, just let it ride. The site's going to crash. And that means you got your coins.

[01:04:41] - Niles Salter
I love that. Great DX.

[01:04:43] - Rion Gull
Yep, all right. Only the best.

[01:04:47] - Rion Gull
Oh my gosh, it didn't even crash.

[01:04:49] - Anthony Campolo
Wow.

[01:04:50] - Niles Salter
Wow. Look at that. It must be the Synthwave stuff.

[01:04:56] - Anthony Campolo
OK, we got coins.

[01:04:58] - Niles Salter
All right, can I donate fake money to your.

[01:05:01] - Rion Gull
I'm not sure how that was possible, because as far as I know, the network wasn't up.

[01:05:05] - Rion Gull
Let me see if there's any updates on that.

[01:05:08] - Anthony Campolo
I mean, it might be the faucet itself is just like a node running somewhere that's separate from testnet itself that's just loaded up with funds.

[01:05:16] - Anthony Campolo
I have no idea.

[01:05:17] - Rion Gull
Couldn't be. But, oh well.

[01:05:26] - Niles Salter
OK, what do you want to do now? Go back to the tutorial?

[01:05:30] - Anthony Campolo
Yeah, see if we can see it in the Block Explorer. So scroll up to where you got that first link and go to the dash Block Explorer link.

[01:05:42] - Niles Salter
I'm sorry, Block Explorer.

[01:05:44] - Anthony Campolo
Yeah, right there. Yeah.

[01:05:48] - Anthony Campolo
And then put your address in the very top, the same one you put into the faucet.

[01:05:54] - Niles Salter
OK.

[01:05:59] - Niles Salter
0.

[01:06:02] - Anthony Campolo
But you see the transaction, though. So that just means it hasn't been confirmed yet, I think.

[01:06:07] - Anthony Campolo
This one's always kind of squirrely.

[01:06:11] - Rion Gull
Yeah, that's a good sign. We got it.

[01:06:15] - Niles Salter
There you go.

[01:06:16] - Rion Gull
Yep.

[01:06:19] - Niles Salter
Boom. See, JavaScript works. I don't know.

[01:06:21] - Rion Gull
We can try the next step. It looks like maybe the network's up so far.

[01:06:25] - Niles Salter
All right.

[01:06:26] - Rion Gull
So let's try the next step. We won't go through the whole thing regardless, even if it is up.

[01:06:30] - Rion Gull
But we'll see if our first create identity.

[01:06:34] - Anthony Campolo
You want to bet on it whether it works or not?

[01:06:37] - Niles Salter
Oh, yeah, you want me to click on this or?

[01:06:40] - Anthony Campolo
No, just go back to the tutorial. Scroll past the screenshots and go to the create identity function.

[01:06:46] - Anthony Campolo
Or actually, sorry, before that, first update your client. This is important, because since you ran the create wallet function, it was originally null.

[01:06:54] - Anthony Campolo
Now you need to update it so that your mnemonic is in your client.

[01:06:59] - Niles Salter
Gotcha. I lost where I was. So I'm doing the Control-F.

[01:07:03] - Anthony Campolo
You're right where you need to be.

[01:07:06] - Niles Salter
You're right.

[01:07:06] - Anthony Campolo
Yeah.

[01:07:07] - Niles Salter
Yeah. Right where I need to be. All right.

[01:07:10] - Anthony Campolo
Yep, yeah, just pop that guy in. And then you can do the create identity function.

[01:07:16] - Niles Salter
Cool.

[01:07:24] - Rion Gull
That exited fast

[01:07:27] - Rion Gull
.

[01:07:28] - Niles Salter
What?

[01:07:29] - Rion Gull
Oh, you were just echoing.

[01:07:31] - Anthony Campolo
That was writing the that was just writing a file, yeah.

[01:07:37] - Anthony Campolo
Now you got that. You can run the function. And then this will hang for a bit. And we'll see what happens.

[01:07:48] - Anthony Campolo
Yep, there you go. That error pretty fast, though. So open it up all the way.

[01:07:55] - Anthony Campolo
And then scroll to the error you got. So this is the same error I originally got.

[01:08:00] - Anthony Campolo
It says socket hangup. This is a new error that I've never gotten before, which makes me believe that Ryan is correct, that the whole network is down, because sometimes you get an error like this.

[01:08:12] - Anthony Campolo
And it just means that you hit a bad node. But this is an error that is different.

[01:08:18] - Anthony Campolo
And I'm not really able to parse the errors that it throws when you get a bad node.

[01:08:24] - Rion Gull
Yeah, OK, so this was expected failure. But I'm glad that we were able to at least create the wallet.

[01:08:30] - Rion Gull
You got the idea of using the JavaScript SDK. And if the network were up, then we would be more worried about this error.

[01:08:39] - Rion Gull
But I think that we should maybe continue this on a part two.

[01:08:46] - Anthony Campolo
You mean part B?

[01:08:48] - Rion Gull
Yeah, you can yeah, part B. Part what are we on? Part seven now?

[01:08:52] - Anthony Campolo
Part seven now.

[01:08:53] - Rion Gull
So seven B, yeah.

[01:08:55] - Rion Gull
But yeah, any other high-level questions that you had for us, Niles? Or

[01:09:03] - Rion Gull
I know there's a lot to cryptocurrency and blockchains and stuff like that. And we didn't really give you the greatest answers on some of the

[01:09:14] - Rion Gull
high-level questions.

[01:09:15] - Niles Salter
Yeah, it's fine. I mean, I'm going to have to

[01:09:18] - Niles Salter
dig into this myself as well and come back with more questions.

[01:09:25] - Niles Salter
But yeah, it was fun that we got something to work today, though. That was good.

[01:09:28] - Rion Gull
Yeah, so the main repository is dashpay, github.com/dashpay. And then we went through the

[01:09:37] - Rion Gull
platform is kind of like what we're that's the main thing that's new in Dash right now, the Dash

[01:09:47] - Rion Gull
repo itself, dashpay/dash. That's like the one that's been around for 10 plus years.

[01:09:54] - Rion Gull
And that's very stable and everything.

[01:09:58] - Rion Gull
But yeah, it's the platform stuff and all the SDKs and libraries that go along with that

[01:10:07] - Rion Gull
that we should look into a little bit more for you helping us.

[01:10:12] - Niles Salter
Sure.

[01:10:14] - Niles Salter
And I'll see if I understand anything in this paper as well.

[01:10:18] - Rion Gull
Yeah, great.

[01:10:20] - Rion Gull
All right, well, thanks for everybody for tuning in. I see we got 20 viewers. But most of those are probably Twitter people who just happened to scroll by.

[01:10:32] - Niles Salter
All right.

[01:10:33] - Rion Gull
Anyway, Anthony, do we have anybody scheduled to come on and do this?

[01:10:40] - Anthony Campolo
Not yet. I'm going to be I'm at a wedding for the next couple of days. So I'm trying not to schedule too many people.

[01:10:48] - Anthony Campolo
But next week, first week of July, we're going to have two of my friends, Jim and Claire, I'm working on nailing down some times with them.

[01:10:59] - Rion Gull
Perfect. All right, yeah, so we'll look forward to that. And

[01:11:07] - Rion Gull
I don't think we have incubator weekly scheduled yet for Monday. But it will probably happen, unless you're not able to, Anthony, for whatever reason.

[01:11:17] - Rion Gull
But we will see everybody.

[01:11:19] - Anthony Campolo
I think I'll still be available for that.

[01:11:21] - Rion Gull
Yeah, OK. All right, we'll see you Monday then, everybody. Thanks.

[01:11:26] - Anthony Campolo
Yep, all right, see you then, everybody.
