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!
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
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.
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
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 )
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:
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:
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!
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
});
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 . 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
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!
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
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 )
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!