Dizzy Wallet - Minor Grants Updates

Hello Zcash Community, I’ve created this topic to document and post updates about my project Dizzy Wallet.
First of all it’s an honor to be part of this first Minor Grants Program. I’ll do my best to deliver the milestones in time.

A little recap of my grant proposal:

  • Develop and maintain Dizzy, a discord bot that allows users to receive, deposit and withdraw ZEC directly from their Discord account.
  • Even before receiving this grant, I developed a few bots and other services for Zcash, so this grant will also cover maintanence and hosting costs for these projects.
  • A few bonus projects (A beta release of a similar bot for telegram and a Proof of Concept Snack Machine that accepts Zcash)

Later today I’ll be posting the first milestone, which is done!

Thanks for the opportunity, and I hope this project(s) will serve the needs of Zcash users!

See you later, James Katz.

13 Likes

Milestone 1 completed!

Deliverable 1.1: First release of Dizzy Wallet for testing (private discord server).

Dizzy is avaiable only in my private Discord Server, for testing purposes before official launch. Searching for bugs and vulnerabilities.
What works so far:

  • Most of Dizzy funcionality is working
    • Tip users
    • Airdrops
    • Prhase drops
    • Red packets
  • Withdraws from Dizzy
    • Withdraw from Dizzy to a regular wallet was tested succesfully using transparent and shielded addresses (Sapling and orchard)
  • Deposit to Dizzy
    • Deposits wasn’t thoroughly tested, but it’s working
  • Zero crashes so far :fire:

Screenshots:

g1150
(Temporary Logo, will work on something better)


(Dizzy main interface for the user)

Captura de tela_2023-04-22_17-19-35
($ztip command, tipping multiple users at once)

Captura de tela_2023-04-22_17-23-30
($zdrop command, airdrop collected by two users)

Captura de tela_2023-04-22_17-20-02
(Rank of top tippers)

Captura de tela_2023-04-22_17-24-13
(withdraw confirmation screen, Dizzy uses the default fee)

Captura de tela_2023-04-22_17-24-22
(Successful withdraw from Dizzy)

Captura de tela_2023-04-22_17-33-11
(Successful deposit to Dizzy)


(Withdraw to YWallet)

Deliverable 1.2: Continue Hosting previous work on Virtual Private Computing service (AWS / Lightsail)

The bots and services i’ve developed before this grant are actively beeing maintained and hosted!

  • ZecQuiz - Educational Discord bot that starts trivia regarding Zcash.
    • This one is a favorite of Zcash Global members, it was used last Thursday during Zcash Brazil Weekly Call.
  • ZecStats - Bot for displaying Zcash statistics
    • The command zecstats show information about Zcash and it’s blockchain
    • The command zcountdown displays an accurate Zcash halving countdown.
  • ZecGPT - Simple discord bot using openai’s gpt3.5-turbo model for education and entertainment.
    • First appearance last Thursday during Zcash Brazil Weekly call.

So, that’s it, first milestone is completed!
If any member of @ZcashFoundation wants to join my private discord server to verify the progress of Dizzy, please contact me via direct message.

Hope to write here again very soon, c’ya!

11 Likes

gud job on dese bots! community will use dese much i hope

3 Likes

Can you implement your ZecGPT bot in telegram too ?

2 Likes

Sure can!
Give me one or two days and I’ll give you more information. :slightly_smiling_face:

4 Likes

Forget what I’ve said about one or two days, here it is: Telegram: Contact @ZecGPTBot Just invite it to your server (I hope it’s Zcash related :rofl:)

Remeber: this is very experimental software, so you may experience a few bugs.

4 Likes

This looks really nice.
Awesome, I must say.
Congrats, @james_katz :hugs:

3 Likes

Wassup guys!
Little update here. Dizzy (Discord Zcash Bot) is almost ready for launch!
Tested and working:

  • Tips
  • Airdrops
  • Red packets
  • Phrase drops
  • Deposits in ZEC
  • Withdraw in ZEC
  • Safety mechanisms:
    • If transfer of funds fails, the bot will automatically refund the user.
    • And many other minor bug fixes.

Many github commits and 2 medium security bug fixes

Tipsy (Telegram Zcash Bot) development for beta release is going pretty strong, the interface is almost done. (need to implement zcash client, hopefully will be ready for next month milestone).


(Telegram for desktop, the mobile version looks better)

I’m planning to publicly launch Dizzy on may 25th. Will contact @vito @Michae2xl to see if we can launch it during the weekly call. After that the bot will be public for everyone to add on their own servers (Zcash related or not).

A good friend of Zcash Brasil, @Tchosco, already told me he wants this bot on his servers.

Also, this week I’ll be recording a video tutorial on how to use Dizzy, and most important, to inform people to not hold any ZEC within Dizzy. Dizzy is intended to be a easy way for users to receive and tip ZEC to friends. Dizzy is not a wallet!

That’s it, very small update, I want to save the good stuff for the milestone update coming soon :slight_smile:

Once again, thanks Zcash Foundation for this opportunity, and thanks to all Zcashers who really welcomed me here!

(Sorry for the broken english, I used to put my text through ChatGPT, but now I think is better to put my own words here, even if nobody can understand me :rofl:)

12 Likes

Quick update on Dizzy Launch: It was a huge success!
Hello guys, I’m here to repport on the lanch of Dizzy - The discord bot for Zcash micropayments was a success!

Dizzy was announced at Zcash Brasil weekly call, 1+ ZEC was distributed to the participants.

Zcash Brasil helped a lot, promoting Dizzy on twitter

@Minevg created a new Logo for dizzy, way cooler than anything I would ever come up:

The first airdrop (zdrop) on Zcash Latam Server using Dizzy:
Captura de tela_2023-05-29_18-56-33

A fellow Zcahser @Dbarreira created a nice video in Portuguese explaining how to use Dizzy. Thanks Danilo!

So far:

  • Only 1 minor bug!
  • No crashes!
  • No angry customers!

Discord users are really enjoying beeing able to deposit and withdraw ZEC using Sappling and Orchard addresses.

Dizzy is flexible, @dismad requested a command for tipping online users. This feature was implemented the very next day!


(The above command only send the tip for members with the role “ZecHub Community” and that were not offline at the moment of the tip)

That’s it, verry small update.
Very soon I’ll come back with the Milestone 2 updates!

Later!

12 Likes

Congrats on this launch @james_katz , shielded ZEC for microtransactions, and for incentives the community is enormous.

I would love to see that in all Zcash servers and in all crypto-related servers as well.

4 Likes

Great work James! :slightly_smiling_face:

2 Likes

Congrats, brother! I’m very excited to make shielded transactions on Discord using Dizzy :slightly_smiling_face:

1 Like

Milestone 2 completed!

Deliverable 2.1: Dizzy Wallet will already be in public use

Dizzy, the Discord bot for sending, receiving, depositing and withdrawing ZEC from discord was publicly launched. Read this post for more info.

Deliverable 2.2: Intense development, possible bug fixing of Dizzy

Dizzy is under active development and bug fixing.

  • Only a few minor bugs so far.
  • No missed deposits.
  • No missed withdraws.
    Few metrics:
  • 265 users.
  • 260 users with balance (0.0001 ZEC or more)
  • 3 guilds (servers)
  • 31 depositis to Dizzy
  • 52 withdraws from Dizzy

Deliverable 2.3: Continue Hosting previous work on Virtual Private Computing service (AWS / Lightsail);

  • No pending payments to AWS Hosting.
  • 2 Lightsail instances hosting:
    • ZecStats
    • ZecQuiz
    • ZecGPT
    • Dizzy

Deliverable 2.4: Beta release of a version of this wallet for Telegram

Thanks to feedback from the forum users, Delivrable 2 also includes a bot for telegram. The bot, jockingly called Tipsy, is ready for launch.
This is a BETA release (as promised in the grant), which means the bot has fewer features than Dizzy, the main focus of the proposal.
The telegram bot can:

  • Send tips to other telegram users
  • Start airdrops to be collected by other users
  • Deposit ZEC
  • Withdraw ZEC.

Screenshots of Tipsy

Captura de tela_2023-06-17_20-02-57
Bot interface

Captura de tela_2023-06-17_20-03-16
Balance check

Captura de tela_2023-06-17_20-04-02
Withdraw ZEC from Tipsy

Captura de tela_2023-06-17_20-04-23
Example of a successful withdraw

Captura de tela_2023-06-17_20-05-05
Example of a successful deposit

Captura de tela_2023-06-17_20-05-30
Sending a tip to users in a group

Captura de tela_2023-06-17_20-06-14
Airdrop, users must click Enter airdrop to participate

The bot is released. I’m already talking with @vito and @Michae2xl and we’re planning to launch this bot really soon.

Thank you guys once again for the support and encouragement!

9 Likes

Looking good, small correction needed, one of the screenshots says “Your transaction is been processed”, this should be “Your transaction is being processed”. Good luck!

4 Likes

Quick update.
Milestones 3 and 4 will be swapped.

Milestone 3 was the construction of proof of concept Snack Vending Machine that accepts ZEC.
I ordered the items (Microcontrollers, dc motors, etc…) from china, but it will take a month to arrive in my country. This means 1 month of no work.

So I asked to change the milestones delivery dates and they will be swapped.
The vending machine will be delivered by December.

Milestone 3 now is the release of my node.js Zcash library on github. One could argue this is even more useful than a vending machine PoC.

My lib right now is based on zecwallet-light-lib, but I’m porting it to use zingolib instead, a more up to date implementation.

This is lib is very easy to use, see the example:

// Initialize the client
const client = new Litewallet('https://mainnet.lightwalletd.com:9067/');
// Wait the client to initialize
client.init().then(async ()=> {
    const tx = new TxBuilder() // Helper class for building transactions
        .setValue(0.05) // Amount $ZEC
        .setRecipient("zs1spqhd2ne9sl6z5k8hwjf67txtqm2rx5356hhvl3qakpuvdlcd2dsqjhrnj6gd7x07dnnvz7f7u0") // Recipient
        .setMemo("Hello Zcash!"); // Memo :)
    let txid = await client.sendTransaction(tx.getSendJson()); // Sends the transaction and get the txid
    client.deinitialize(); // Deinitialize the client
});

Even a non-coder can understand what is going on.

The code will be released by next month or so.

Hope you guys like this change.

5 Likes

Whats the timeline for going live nowadays?

Milestone 3 complete!

as mentioned here milestone 3 and were changed.

Deliverable 4.1: Public release of the source code of Node.js library on github

Yes, that’s right a node.js library for working with Zcash.

It uses zingolib in th background. My code wraps and made coding very easy!
My library does:

  • Automatic wallet creation or restoring
  • Automatic wallet syncing
  • Provide easy to use classes to create and send transactions
  • Provide easy to use classes for payment detection.

I didn’t felt comfortable releasing this code without some sort of demo, so I created a Zec Faucet using this library.

Son I’ll write proper documentation, but it’s quite easy to use.
Basic example:

const Litewallet = require('./litewallet');

const client = new Litewallet("https://mainnet.lightwalletd.com:9067/");

client.init().then(()=> {
    // Fetch wallet balance
    const bal = client.fetchTotalBalance();
    console.log(bal);

    // Get all addresses
    const addrs = client.fetchAllAddresses();
    console.log(addrs);

    // Get addresses with balance
    const addrsbal = client.fetchAddressesWithBalance();
    console.log(addrsbal);

    client.deinitialize();        
}).catch((err) => {console.log(err)});

Sending payments are very easy:

const tx = new TxBuilder()
            .setRecipient("u1h0dhm6mqf2dylrtczhcwxaw84qh0n47u63grz7mwtjfkw73eh0mjpsx3fm8sv2j2amnghgu3s5g0fyk6zc8r7fd93rrf0y48d4ms4je2glw6v6suwvt0qygvp8hfwua8mc44ughqswuy5gte62z8x93nzzfzlk5fjd8g0wuvpzvze445mlq8l305kudlnsw6cpdqpt2zcy3xkks2llr")
          .setAmount(0.007)
          .setMemo("Hello World");

      // Get the sendjson
      const sendJson = tx.getSendJSON();
      
      client.sendTransaction(sendJson).then((txid) => {
          console.log(txid);
      });

Detecting a payment is also very easy:

const pd = new PaymentDetect(client);
pd.detectSimple(5000); // Scan for payment every 5 seconds (5000 ms)

// Get latest deposit
pd.on('payment', (tx) => {
     console.log(tx);
});

I’m not sure how to deliver as a npm / yarn packege, but clonning the repo is good enough for now. Try messing around with index.js or the examples.

Deliverable 4.2: Continue development, possible bug fixing of Dizzy Wallet

Dizzy is working perfectly. Discord users love it. It has a lot of features.
Not much to report here, since no bugs have appeared :slight_smile:. Only needed some code clean up.
edit
I spoke too soon. Not 10 minutes after I said Dizzy has no bugs, a major bug appeared. I’m already working on it, I have backups, no ZEC was lost. I’ll keep you guys updated.
edit 08/04/2023
Dizzy is back online for withdrawing. Users can withdraw their ZEC from Dizzy to their wallets.
edit 08/05/2023
Dizzy is fully operational again :slight_smile:

Deliverable 4.3: Continue Hosting previous work on Virtual Private Computing service (AWS / Lightsail)

All of my projects are beeing hosted on Lightsail, no missed payment.
Projects being maintained:

  • Dizzy
    • The Discord Zec bot
  • Tipsy
    • The telegram Zec bot
  • ZecQuiz
    • Discord bot for testing members knowledge about Zcash.
  • ZecStats
    • Zcash stats and halving countdown
    • ZecStats has a new commando for converting ZEC prices directly on discord $zconvert 1 ZEC to USD for example.
  • ZecGPT
    • ZecGPT 2.0 was released, the community loved it. Now it uses openai’s gpt4 model. ZecGPT 2.0 are context aware and can answer questions better than before. Users also love to chat random subjects with it.

That’s it

And that’s it for this milestone. I believe the star of the show is the release of node.js library, Let’s see creative things people will make with it. As soon as I discover how to make it available as npm / yarn package I’ll write a follow up post here.
You think my code isn’t good enough? Please help me sending PRs and opening issues, please!

8 Likes

I appreciate your effort, but it bums me out that you are spending your talent on a closed platform like Discord. Hopefully you will join forces with a web-based approach like free2z :slight_smile:

2 Likes

¡Zcash has its Ztipping bot on Telegram!
Really cool news.

Congrats, James! :tada:
You’re a giant!

2 Likes

Milestone 4 complete!

Hello guys, I’m really happy to announce that I’ve just completed milestone 4!
(Again, it was originally milestone 3, but I asked to switch milestones 3 and 4)

Deliverable 4.1: Other projects will be ready, like the

Snack Machine Proof of Concept.
It was hard, but finally, the Vending Machine Proof of Concept is ready.



I’m using zingolib as a backend wallet. The transaction took 2:14 minutes to complete. For now it only detects payments with 1 confirmation. In the future I plan to make it detect zero confirmation payments, so the user won’t need to wait 2 minutes to get their snack.
Yes, the machine is a bit rough around the edges, but as a Proof of Concept I believe everything went well.
For possible presentations at events I’ll polish it a little more.
The item is select using the memo field, a memo starting with 1 means the user will purchase the leftmost item, and a memo starting with a 2 means the user will purchase the rightmost item.
In the video you can see the full experience, selecting the item, scanning the QR code, paying and waiting. (I’m visually impaired, that’s why the big letters on my phone :rofl:)

Deliverable 4.2: Continue development, possible bug

fixing of Dizzy Wallet
Dizzy, the discord hot wallet is being constantly maintained, had a few bug fixes and lots o new commands. The Brazilian community really love the new “hangman” game, earning ZEC for playing.

Deliverable 4.3: Continue Hosting previous work on

Virtual Private Computing service (AWS / Lightsail)
All of my projects are beeing hosted on Lightsail, no missed payment.
Projects being maintained:

  • Dizzy
    • The Discord Zec bot
  • ZecQuiz
    • Discord bot for testing members knowledge about Zcash.
  • ZecStats
    • Zcash stats and halving countdown
    • ZecStats has a new commando for converting ZEC prices directly on discord $zconvert 1 ZEC to USD for example.
  • ZecGPT
    • ZecGPT 2.0 Uses openai’s gpt4 model. ZecGPT 2.0 are context aware and can answer questions better than before. Users also love to chat random subjects with it.
  • ZecFaucet
    • I’m also hosting ZecFaucet with my Minor Grant reward. ZecFaucet is a community faucet on mainnet.

It’s done!

Well, I would say everything went well.
All milestones completed! Sorry for the delay on this last one, it was harder than expected.
It was a huge pleasure to be part of the first round of minor grants. Looking forward to applly again in the future!
Once again, thanks for opportunity, and see you guys later!

15 Likes