Zcash-based secure payment infrastructure for a privacy-focused video-conferencing service

Hi Zcash Community Forum,

My name is Sunny and I run a startup called Birdcalls. We make privacy-focused video conferencing tools to suit the needs of professionals.

We’ve been lurking here for a while but didn’t actually create our account until today to submit this grant application - please forgive our newness! As a company that believes privacy is essential for digital society, we hope to be valuable contributors to this community in the future. Here’s our grant application, please take a look through it to learn more about who we are. We’re looking forward to answering questions and starting this conversation.

Also - you’re warmly welcomed to check out our video conferencing service, via the links below! We always welcome harsh criticisms, strong opinions, and feature requests. The main call reservation system will be payment-walled in the next few days, but both peer-to-peer phone booths will stay free.

Anonymous Internet Phone Booth [Anti-screenshot toggle on, requires our app on phones] [see comments for link, link removed for community first post guidelines]
The Internet Phone Booth [Anti-screenshot toggle off, can use laptop browsers] [see comments for link, link removed for community first post guidelines]

Best,
Sunny Allen

Title:

Zcash-based secure payment infrastructure for a privacy-focused video-conferencing service

Applicant Name:

BirdCalls

One Line Elevator Pitch For Our Proposal (140 characters):

Zcash-based secure payment infrastructure for privacy-focused video-conferencing service, w/ associated education pages for Zcash community

Total Request (USD):

265,600

Applicant Background:

BirdCalls is a diverse team of industry veterans with a combined 86+ years of technically relevant software experience, 25+ years financial experience, and 30+ years branding and marketing experience. As a team, we follow ‘Lapsed Anarchist’ Business principles. To us, this means we care deeply about open-source, but pragmatically we also care about making money to keep ourselves fed and housed, and our investors happy. This also means that we function by setting up a vision together of where the company is headed, agreeing on our corporate values, and then leaving each individual the freedom to decide their own path to get there. BirdCalls is a privacy-first company. This means we collect as little information as we can about our users, and we keep the identities of some of our own staff private as well.

Sunny Allen is a serial entrepreneur with 10+ years managing software projects (and whipping up a shell script when needed) along with 15+ years branding, marketing, and entrepreneurial project management experience. Open source, biotech, sensor frameworks. [see link to linkedin in comments, link stripped for community first post guidelines]

Dr. Aeron Tynes Hammack is a scientist and software engineer with 25+ years programming and systems architecture experience, with a focus on quantum computing physics and bioinformatics as well as copious amounts of entrepreneurial experience. [see link to linkedin in comments, link stripped for community first post guidelines]

The Architect is a software designer with 32+ years programming experience. They are a pragmatic street smarts privacy and security professional who has built a custom bitcoin payment system using the bitcoin core API on the company’s own hardware (for a previous company).

The Banker is a finance expert with 25+ years experience in international finance and lending with bulge bracket and boutique investment banks, as well as asset management firms.

████ is a software architect with 25+ years programming experience, who is so obsessed with privacy that it’s almost impossible to work with him, we never know where he is, and only one of us even knows his real name. What other kind of personality would we want in this role?

Pattie is a brand architect and creative writer focusing on marketing strategies for startups and feminist business practices. She has 12 years of experience in small business building across the travel, tech, and chemical industries.


Make a free two-person call at:

The Internet Phone Booth [see link in comments, link stripped for new community post guidelines]

Unlock full paid calling capabilities at:

[see link in comments, link stripped for new community post guidelines]

Our main site for more information:

[see link in comments, link stripped for new community post guidelines]

Our Gitlab:

[see link in comments, link stripped for new community post guidelines]

Description of Problem or Opportunity:

It’s easy for a cryptocurrency to function as a speculative investment vehicle. It’s harder for a cryptocurrency to become a real currency in society. We believe that a currency becomes real when you can use that currency to pay for the basic goods and services of daily life: food, rent, utilities, communications, and entertainment.

Here at Birdcalls, we’re focusing on re-building basic communication services for society on the internet, this time with a foundational focus on privacy. Right now, all our payments go through Stripe, which is obviously not ideal from a privacy perspective. To further our privacy-as-a-given value system, we’d love to integrate a Zcash payment processing system onto our platform. And in the process, help improve Zcash’s basic utility as a real currency.

We’ve made the internet’s phone booth. Now we want to add the phone booth’s coin slot! We’d love to partner with Zcash to do so.

Also! As a company, Birdcalls values giving as well as taking. To give back to the Zcash community as a whole, we’d like to make it easier for other internet companies to integrate Zcash payment processing systems in the future. We’ll structure our integration so that we’re building on existing Zcash community documentation efforts.

Proposed Solution: Describe the solution at a high level:

The users and stakeholders for our payment system integration are: people making private calls on the internet who want to be able to pay for the service using privacy-focused currency.

The users and stakeholders for our educational materials are: other internet businesses who want to integrate Zcash payment processing systems in the future.

Solution Format: What is the exact form of the final deliverable you’re creating?

Our final deliverable for our company’s needs will be: a payment processing system for Birdcalls [see link in comments, link stripped for community first post guidelines] where users can pay for our service via Zcash

Our final deliverable for Zcash community education will be: documentation describing how to integrate this Zcash-enabled payment processing system into other sites.

Technical Approach: Dive into the how of your project. Describe your approaches, components, workflows, methodology, etc. Bullet points and diagrams are appreciated!

How we will build the payment portal for our company’s needs

Here’s how we would normally build a payment processing system like this:

  • Run a separated server

  • Which is connected to internet only via tor

  • Each transaction reconnects to a new tor circuit to avoid transaction grouping / profiling

  • So there’s no way to tie the transactions together

  • Birdcalls’s Zcash public hierarchical key goes to the web server

  • When someone wants to pay for something the web server uses the hierarchical public key to generate a unique address to that user and that transaction

  • The zcash server sits and watches for new transactions, when an address it knows about receives funds, a signed postback is made to the web server to notify it that a payment of a certain value has been deposited to that address

  • Then pings the web server and says here’s the received address amount

  • Web server can then look up the account / transaction that this address was assigned to and mark it as paid

  • User is then notified that their payment has been received

  • Every transaction gets a new address

But, we did our research! We discovered that the Zcash community has already funded a Zcash integration for btcpay. We’ll want to assess further, but we think that this integration should be sufficient for our needs. Thus, our new set of steps will be:

  • Assess the btcpay Zcash integration

  • Set up btcpay Zcash integration

  • Configure btcpay Zcash integration

To Add To Zcash Community Educational Materials:

So that it’s easier for other online businesses to integrate Zcash payments in the future, here’s how we’ll contribute to the Zcash ecosystem:

  • Take the existing Zcash functionality that’s already been added to btcpay

  • Make sure it still works

  • If it doesn’t work, we’ll fix it

  • Create documentation for it, in the same way that other alt coins are documented (c.f. https://docs.btcpayserver.org/FAQ/Altcoin/#which-coins-does-btcpay-server-support)

  • Including a proper written setup guide

  • A proper written config guide

  • Set up the documentation as a GitHub repository that anyone can contribute to

  • We’ll maintain the documentation repository for at least 1 year

Dependencies: What external entities is your project dependent on? What involvement is required from ZF, ECC, and/or other external organizations? Who would have to incorporate your work in order for it to be usable?

None. If the existing btcpay option can’t be integrated, we have the skillset and are prepared to build it ourselves.

Execution risks: What obstacles do you expect? What is most likely to go wrong? Which unknown factors could jeopardize success? Who would have to incorporate your work in order for it to be usable?

One of our developers has already set up a bitcoin payment server in the manner described above (Technical Approach Section) so he’s not particularly worried about his ability to execute this set of tasks. It just takes time.

Unintended Consequences: What are the negative ramifications if your project is successful? Consider usability, stability, privacy, integrity, availability, decentralization, interoperability, maintainability, technical debt, requisite education, etc.

Additional customer support resources and public facing documentation will be required to support customers paying with zcash. Basically, unless we’re careful, supporting Zcash payments could actually cost us more money than it makes us. Which could lead to a problem with the whole paying-for-the-roofs-over-our-heads thing.

Evaluation plan: What metrics for success will you share with the community once you’re done? In addition to quantitative metrics, what qualitative metrics will you commit to report?

Quantitative:

  • the percentage of payments that are run through zcash vs through traditional payment methods

  • the percentage of user growth attributable to the addition of zcash payment processing system adoption

  • the percentage of users who click on the zcash payment option for info, vs the percentage of people who actually complete a zcash transaction

Qualitative:

Zcash name recognition outside of security-focused channels and raising the bar of community expectations for safety and security from digital communication companies

Hardware/Software total budget:

$0

Services total budget (cloud, hosting, etc.):

$600

  • New cloud server $50/month x 12 months = $600

Compensation total budget:

$265000

  • 1 Headcount / senior developer 6 months build and maintain = $200,000

  • Audit & accounting = $5,000

  • Legal = $60,000

Do you require startup funding?

Yes, $75,000

We need to have cash allocated in the bank in order for our developer to start these first tasks:

  • Assessment of existing btcpay zcash module

  • Integration of btcpay with zcash into our payment system

  • Zcash payment processing system tested and validated on demo server

We need to pay a lawyer some costs up front:

  • Legal startup fees so we know how to appropriately structure payment entity before private payments go live

Milestone 1 - estimated completion date:

7/03/2023

$85000

Deliverable 1.1:

  • Zcash payment processing system tested and validated on demo server

Deliverable 1.2:

  • Packet of documents delivered by legal for structuring of a regulatory-compliant entity to accept private payments

Milestone 2

10/02/2023

$100,000

Deliverable 2.1:

BirdCalls Zcash payment processing system live

Milestone 3:

03/01/2024

$5,000

Deliverable 3.1:

Accounting audit

How was the project timeline determined?

Allocation of resources of our developers’ time on this versus other internal projects, along with sufficient time to ramp up and iterate on customer adoption strategies.

How did you learn about Zcash Community Grants?

Zooko told us about it!

2 Likes

The Anonymous Internet Phone Booth [Anti-screenshot toggle on, requires our app on phones]

The Internet Phone Booth [Anti-screenshot toggle off, can use laptop browsers]

Unlock full BirdCalls calling capabilities [soon-to-be-paywalled]

BirdCalls Headquarters

Sunny Allen LinkedIn

Dr. Hammack LinkedIn

Our gitlab

Love the creative name :bird: :calling: 's ! Created an account and will take a look! :eyes:
Screenshot_2023-02-22_14-19-47

Hey @dismad, nice to meet you! Thanks for taking a look.

We really genuinely do welcome all feedback including harsh criticisms. Glad you like the security console; it’s like our love letter to the early days :grin: and a symbol of transparency. Try doing something that creates an error message, like typo your password, and you’ll see that displayed in the console log too.

1 Like

Hi! To clarify for the committee members, we’re proposing two different, but related, projects here:

  1. Implement zcash btcpay module for ourselves
  2. Audit, test, fix where necessary, expand where necessary, more comprehensively document, and maintain for some time the existing btcpay Zcash module, so that it can be more easily implemented by other companies

Elaboration of each part to follow -

Best,
Sunny

PS Here is a link to @hanh’s existing btcpay zcash module that we’re proposing to expand upon:

Elaboration:

1. Implement zcash btcpay module for ourselves

This is potentially the easier part. The only documentation for the existing btcpay module that we can find is a youtube video. It’s not clear if the existing module will work for our server. If necessary, we’re prepared to rebuild from the beginning.

2. Audit, test, fix where necessary, expand where necessary, more comprehensively document, and maintain for some time the existing btcpay Zcash module, so that it can be more easily implemented by other companies

The existing zcash module for zcash is a good start. But there’s a LOT more that needs to be done before it’s easy for lots of internet companies to easily use that module to integrate zcash payments.
Our goal here is to remove barriers for entry, to increase mass adoption of zcash payments across the internet. To make it much more accessible for many other companies who want to get into private payments, but may not have our expertise.

This is the part that’s much more complex and takes more time. The first important step has been done - there’s one working implementation, with a youtube video, and a pull request that’s been accepted by btcpay. Now we’ll expand upon that good work by making the module extendable and usable for many different situations - with standard documentation.

As we said above, the existing zcash module for btcpay is a good start but it could use:
-Auditing
-Testing across multiple systems
-Fixing where necessary to support multiple systems
-Expanding where necessary to support multiple systems
-More comprehensive documentation
-Repository maintenance

1 Like

Hi Zcash community,

We had a great talk with the committee last week. So glad to get to know you a little better.

Upon receiving the feedback of the committee, and in the interest of this just being the start of a long & fruitful relationship between Birdcalls and Zcash, we’re happy to break this first grant application up into more granular deliverables, with this first part being the ‘Exploratory’ phase.

We’re dividing out the exploratory phase simply according to

  • Individual hours billed at a standard short term contractor rate for our levels of expertise, $200 USD/hr/person
  • Team collaborative hours billed at a lower rate, $100/hr/person

We’ve also wrapped in the hours our team has already spent researching & strategizing this collaboration.

BUDGETARY BREAKDOWN

Architect has already spent 15 hrs research; $3000 USD

Architect estimates 16-24 hrs more, we’ll bill for 20; $4000

Sunny already spent 10 hrs research/management/strategy; $2000

Full team meetings 5 heads, 2 hours per meeting, 4 meetings; $4000

Sunny estimates 8 hrs more research/management/strategy; $1600

Total: $14,600

DELIVERABLE:

Provide the Zcash community with a report detailing a comprehensive time and cost breakdown for the milestones and deliverables proposed in the original grant application materials.

Best,
Sunny & the team @ BirdCalls

1 Like

@machinesunmachine, at the most recent @ZcashGrants meeting, the Committee voted to approve your Exploratory Phase proposal.

You will need to create a new submission on Submittable that only encompasses this new proposal as described above in this thread and agreed upon with ZCG.

If you have any questions feel free to DM me here on the forum.

3 Likes

Aye aye, @decentralistdan !

2 Likes

Hi, congrats on the approval of the Exploratory Phase proposal. Nice to see interest in adopting Zcash as a payment option for upcoming services/apps.

Am wondering what the use of the report from the deliverable will be to the Zcash community; am not sure how a time and cost breakdown would be useful for other projects and for the community.

Re the overall proposal, having more documentation and testing for the BTCPayServer integration would be nice, but I feel that there’s already documentation on the BTCPayServer website, and the Zcash integration is part of the upstream codebase. If future maintenance due to breaking upstream changes is needed, it would make sense for this to be brought up by the BTCPayServer maintainers (via their integration tests) and for @hanh to work on it if he is available, as he is already familiar with the codebase and wouldn’t need to spend much time on research and familiarising with the codebase.

Having an experienced architect/engineer feels a bit overkill for documentation and testing, and would probably be better to focus on developer tooling and API integrations to make the UI/UX better. I’m already working on a custom front-end and API integration for the BTCPayServer integration as part of Elemental Pay, to make adoption of BTCPayServer easier, and it would be best to coordinate any work to do with BTCPayServer to avoid duplicate work.

Having some research or a report on the legal aspects of using BTCPayServer would be nice, but I worry that this would be fairly country-specific and could become out-of-date quite quickly depending on regulatory changes. There’s probably a decent amount of collective knowledge from merchants already using BTCPayServer with different cryptocurrencies (including Monero so there should be some case studies/knowledge when it comes to the privacy aspects) and there should be lawyers already familiar with it; having some open-source legal documentation which can be easily adapted to different countries/regulatory/tax environments would be great, but best to avoid duplicate work if possible.

2 Likes

Why is this a thing? Part of the gamble of a grant proposal is that it might get rejected. I really dislike this retroactive funding that I’ve been noticing in various grants lately.

4 Likes

I completely agree. This is strange, especially for a team’s first entry into the Zcash ecosystem. It’s hard to imagine a job applicant requesting payment for preparing for an interview. Maybe it happens in jobs/industries of which I’m unaware.

Once a grant is approved then every team has a responsibility to the Zcash community to post regular updates so we can hold them accountable and to understand the amount of work being done and at what pace. We don’t have such a mechanism for prior work done, certainly not for teams whose grant application is their first post in the Zcash forums.

This is a dangerous precedent to set and I would have to encourage the ZCG committee to avoid going down that path.

3 Likes

@pkr @ryan.taylor.- Thanks for bringing this up. This issue was discussed in our April 3 meeting and will be reflected in the meeting minutes that we post later this week.

ZCG asked Birdcalls to break the grant into two phases: exploratory and integration. You’re correct, funding an exploratory phase is something we normally don’t do because the burden is on the applicant to determine if they can complete the project. However, ZCG made an exception after speaking with Birdcalls because it was unclear how much work the integration required, and making that determination significantly impacted the scope of work and the overall cost of the integration.

4 Likes

Thanks for clearing that up and I’m glad it was discussed.

2 Likes

Hi, Zcash forum! Here’s our exploratory phase deliverable, as well as what we’ll be submitting for the second phase of this grant proposal.

Birdcalls Zcash Community Grant Part A Deliverable

Contents
Birdcalls Analysis of Hanh’s Zcash module for BTCPay
Our Conclusions
Visual Illustration
Revised Timeframe
Hanh Unit Time Conversion to USD
Revised Financial Requests, Total: $245,600
Revised Milestone Payout Requests

Birdcalls Analysis of Hanh’s Zcash module for BTCPay

Pros

  • Currency data appears to work with ZCash, ZEC<->USD for example appears to work.
  • Payment pages contain ZCash option, and choosing that option generates a ZCash QR Code.

Cons

  • There’s no ZCash section in the wallets area in BTCPay. All other currencies have them as a way to review your wallet / incoming payments / match up invoices / etc. The current implementation shows the ZCash address for purchase.
  • ZCash viewing key is essentially hard-coded into the docker compose file, instead of having a settings page in the admin area like all the other currencies.
  • There does not appear to be support for multiple ZCash wallets, like with other currencies.
  • No support for multiple stores (multiple stores must share the same wallet, as the ZCash plugin hard codes the wallet address into the container).
  • There’s no setup process for ZCash wallets, like there is with other currencies (when creating a new store, other currencies ask you for wallet info and enable/disable currency support depending on how you provide it).
  • The method documented by Hanh is either incomplete or out of date, and requires using Hanh’s custom containers and will not work (at least without modification) with non ZCash currencies. The method documented below includes replacement info / code that works with the most recent version of BTCPay and is compatible with other currencies.
  • The processes below are the result of a lot of trial and error due to poor / missing / outright incorrect documentation on both the parts of BTCPay and the ZCash plugin. There is zero chance a user without significant IT/dev experience will be able to get things working without new docs / changes to the code.
  • We were unable to find any functioning wallet that supports testnet, and so had to run a full zcashd node in order to get some testnet coins to run transactions through.
  • Running a testnet node does not appear to work. There’s no official documentation for it, and although we did find a docker container by Hanh that is named as if it supports it, that container crashes immediately on startup. Since Hanh doesn’t mention it anywhere, we’re assuming it’s something else. Currently stuck on this item & decided to end this analysis here; we now know enough to move forward.

Our Conclusions

  • There is zero chance a user without significant IT/dev experience will be able to get the current Zcash module for BTCPay working without new docs / changes to the code.
  • The previous timeline suggested in our original proposal is more than justified.

Here’s how we’re thinking about this visually:

Revised Timeframe

  • In honor of the fact that we’re building on a Hanh project, we propose that we normalize our units of time in terms of ‘Hanh effort’
  • Fixing/Building Zcash BTCPay for the needs of Birdcalls: 0.25 Hanh units
  • Fixing/Building/Documenting Zcash BTCPay for the needs of less experienced developers: 1.25 Hanh units

Hanh Unit Time Conversion to USD

  • 1 Hanh unit = 3 months (the amount of time Hanh spent to get the original Zcash BTCPay module running) = $120,000 USD from Zcash community grants (c.f. Payment Gateway - BTC Pay)
  • 0.25 Hanh units x $120k USD = $30k
  • 1.25 Hanh units x $120k USD = $150k

Revised Financial Requests, Total: $245,600

  • Fixing/Building Zcash BTCPay for Birdcalls: $30k
  • Fixing/Building/Documenting Zcash BTCPay for the needs of less experienced developers: $150k
  • Services: $600 new cloud server $50/month
  • Audit & accounting: $5,000
  • Legal: $60,000

Revised Milestone Payout Requests

Startup Funds: $60,000

Milestone 1: $120,000

  • Repository in GitHub w/ documentation
  • pull request to BTCPay with best-effort modifications and enhancements to Hanh’s code that support more configurations to the BTCPay UI so that a much less experienced developer can get it working and use it much easier
  • Submit request to BTCPay to include Zcash on their list of supported alt-coins
  • Documentation of legal’s assessment of how to move forward w/ private payment processing in good regulatory compliance

Milestone 2: $35,600

  • Our Internet Phone Booth coin slot is active; people can pay for Birdcalls using Zcash

Milestone 3: $30,000

  • 1 year of repository maintenance


Again, it’s such a pleasure to be collaborating with Zcash. Here at Birdcalls, we care about making privacy-focused tools for the sake of contributing to the landscape of non-extractive, public good technologies. Ultimately, it’s about healthy societies.

For reference again, here’s what we make:

Best,
Sunny @ Birdcalls

5 Likes