Chainvine Referral Program

GM everyone!

Following up on my initial referral program proposal, I believe that I finally found a viable solution for a Giveth referral program that works for our needs, and that also would not need extensive developer resources using Chainvine:

Proposal Description
Chainvine offered to create a custom referral program for us in which:

  1. We’ll be able to track referrals made from anyone (on Mainnet or Gnosis chain) and be able to split that data by project and referred donation amount.
  2. The referrer and referee both will receive a reward (that we define as a percentage).
  3. We can set the minimum threshold for payouts and only whitelist certain tokens for the referral program (like what we do with nice tokens).
  4. We can fund the payouts as part of the GIVbacks program.

The cost
1.5 ETH upfront and $250 / month (with a 6-month commitment)

Proposal Rationale
This program will allow us to create grassroots referral incentives with an endless amount of ambassadors (big and small). This will allow us to work with “influencers”, grassroots communities and anyone that wants to shill Giveth, in a decentralized manner (without having to get approval each time we want to run a partner promotion or keep requesting marketing funds).

Additionally, working with a partner like Chainvine, will allow us to save hours of dev time needed to build a custom referral system inhouse (given our backlog and other dev team priorities). Also, since they’re still early in their own product development, the Chainvine team is also very flexible and wants to work with us to customize their solution for our use case.

Technical Implementation
They will create a custom microsite for us that will allow users to connect their wallet, join the referral program and get a special link. Once anyone takes the actions we define through that link (donating certain tokens to projects that meet the minimum threshold we set), both the referrer and the referrer will get rewarded.

How we define that reward is up to us. I suggest we keep it as part of the GIVbacks program calculation and use that pool for rewards as @Griff suggested earlier. I also suggest we have a minimum referral amount that is paid out in GIV tokens (perhaps 10% with a minimum of $10, or even higher) and maybe even have it where only stablecoins are accepted for the referral program (similar to the nice token program but instead they’re rewarded in GIV).
For example, if $10 xDAI is donated, we could give 10% ($1) to the referrer from the GIVbacks that would be allocated to that donation anyway and the rest goes to the new user being referred (to avoid people gaming the system with multiple wallets).

Expected duration or delivery date (if applicable):
We had a meeting with the Chainvine dev team earlier this week with @mateodaza and @cquinterom096 and their team said they can give us a working solution within 2 weeks. The next steps would be to get approval for funding from GIVgarden and if the DAO approves, have a final scoping meeting with them to address any concerns or customizations we want.

If any concerns or questions are surfaced from this proposal, we could also have another meeting with them before that point of course.

Team Information

Skills and previous experience in related or similar work:
I have a lot of experience working in digital marketing and referral programs, so I’d be happy to lead the project management of this, working closely with @MoeNick and the rest of the dev team.

Funding Information

Amount of GIV requested: 1.5 ETH (upfront fees) and $1,500 (6 month subscription for $250 / month). At the time of this writing would be ~ 159,527 GIV (84,527+75,000)

Ethereum address where funds shall be transferred: TBD

More detailed description of how funds will be handled and used:
They are giving us a generous discount since we’re in the public goods space (more than 50% off), so we’ll need to pay 1.5 Eth (for initial development) and $250 / month with a 6 month commitment (to give us time to see if we like it).

Voting time

Should we do this referral program with Chainvine?

  • :white_check_mark: Yes
  • :thinking: I have concerns and would like to discuss below
  • :negative_squared_cross_mark: No

0 voters


That makes sense, we would need to add a cap of % too cause we can’t giv the referal a min of $10 if the donation is only $1… Maybe its more like a range of the % of GIVbacks… like max 50%, min10% with a plateau at $10…

So if the donation gets $1 of GIVbacks, then the referring party gets 50 cents and donor gets 50 cents
If the donation gets $10 of GIVbacks, then the referring party gets $5 and donor gets $5
If the donation gets $20 of GIVbacks, then the referring party gets $10 and donor gets $10
If the donation gets $25 of GIVbacks, then the referring party gets $10 and donor gets $15
If the donation gets $90 of GIVbacks, then the referring party gets $10 and donor gets $80
If the donation gets $100 of GIVbacks, then the referring party gets $10 and donor gets $90
If the donation gets $110 of GIVbacks, then the referring party gets $11 and donor gets $99
If the donation gets $1000 of GIVbacks, then the referring party gets $100 and donor gets $900

50%, 10% and $10 are all variables we can play with, but thats a workable pattern.


How does the referral GIVbacks work? Is it like, they click a link to a project and if they donate to that project then GIVbacks get split for that one donation, and then if they go donate to another project, all the GIVbacks go to the donor? Or is it like all the donations that person makes that day or that round give out a referral bonus to the person designated?

1 Like

@Griff Yes, I was thinking that it’s just for the initial donation, not the entire day or round, although we can play with that in the future.

For the calculations you mentioned, I think that could work. In that case, could we add this referral data to our standard GIVbacks calculation process @WhyldWanderer @renjer? For example, if for each GIVbacks round the tool gives us a list of all the referrals (their addresses along with the amounts), we then manually calculate how that affects each user’s GIVbacks and allocate accordingly from our end?
As opposed to user’s being rewarded from Chainvine or separately from GIVbacks, I think that would make it much easier for us to control.

1 Like

I think anything we want can be done automatically by giback-calculation and impact-graph, no need to do something manually

Thanks @renjer! Sorry, when I said manually I meant in-house as part of our GIVbacks process (instead of having a third party calculate the rewards for us), so yes it could be automatically calculated from us.


I really like the proposal. I think this is a HUGE opportunity for Giveth’s growth.

I also appreciate the discount.

Regarding the exact process, I think considering most people’s first transactions in a new Dapp are low, just to see if it’s actually working. It might further incentivize our ambassadors to keep influencing more donations if they get a percentage of the GIVbacks for the first month or even quarter.

Not sure that if we do this, the max 50%, min 10%, $10 plateau would still make sense per transaction or in the round’s total. Maybe in this case we could leave a fix percentage as it would stick for a longer time.


Thank you @aabugosh let’s dot it, I suggest having it as an epic and having the votes on the token log for prioritization:
Introducing open roadmap and open backlog prioritization

1 Like

I think it might be easier for the program to just start with a flat % instead of making it more complicated with the $10 plateau.

1 Like

Hey everyone!

I just submitted a request on GIVgarden for funding

1 Like

Once the funding goes thru (in just a few days :-D) What is the next step?

Hey @Griff so next steps are:

  1. Pay out the initial amount for development to Chainvine (1.5 Eth), the rest will be paid once the program is live.
  2. We need to have a development call with @mateodaza & @cquinterom096 and their dev team to make sure the API integration is working from our donation flow to their system.
  3. Their solution allows us to have full control over the rewards distribution (we’ll export the addresses and need to include them in our GIVbacks calculation), so we’ll include it as part of the GIVbacks program and need to also have a final discussion around the rewards distribution calculation and how that affects our GIVbacks calculation
  4. We’ll need to figure out the comms roll out, including what is our launch strategy, what will we call it (GIVferral, GIVilliates?), do we need a landing page, blog post, twitter space, how will it be mentioned on our platform etc.

Once it’s approved, I’ll create an epic to go through all of this!


I think we can just say we are adding referrals to our GIVback program as opposed to making it a whole new GIV thing… That said, I brainstormed some names :smiley:


Funny ones



@aabugosh Thanks, the idea is brilliant. Just I am afraid I have gotten it correctly!
Do we want to generate user-based referral links to projects and make any donations made via those links become eligible for the referral program?
If yes, I don’t think we would need lots of effort on the development side if we do it ourselves! If I haven’t underestimated it, we can generate referral links by adding a single parameter (referral wallet address or ENS) to the end of the project URL. That would be compatible with instant preview too. @Cherik Am I right?
The next step would be passing the referral information along with the donation information. This part would not be different when we use Chainvine or not.

1 Like

Hey @amin! That’s correct, so basically the main things that Chainvine is doing is:

  1. Generating a referral link for each user that automatically would track any new user that makes a donation through their link. This would need to be cookie-based though, since we need it to track the entire session (not just that page, but also if they navigate to other projects and other pages, it still needs to store that data in the user’s session). If we do it on our own, we’d need to make sure that we’re constantly looking at the referral and referrer value for each project (as an event listener), which would need work to configure to make it persist somewhere as a value in our database. With Chainvine, they already do that for us. We direct users to their platform, they store their data of the referral process and then we pass them the donation success to their API so it’s done through them, they just need the success case when a donation goes through.

  2. User’s should have a way to view their rewards (their own dashboard). For example, they can see that I helped refer X number of new donors and I got Y rewards from it, so we’d need to create that too.

  3. There should also be a referral landing page (a place where people go for them to see what the program is about and for them to sign up either as a referrer or a referrer).

If we could solve those we could do it on our own, however for now I suggest we use Chainvine to pilot it and see what the exact flow is for our platform (for at least 6 months, since that’s what we initially agreed on), then we can re-evaluate if we want to do it in-house or continue working with them if it runs smoothly and we’re benefitting from it! :pray:

1 Like

If I got it correctly, we have to build items 2 and 3 ourselves.
Regarding item 1, again keeping referral info in the session storage must be implemented on our part. The new view is a dashboard to show who has used the referral link to donate. Anyway, we must implement a dashboard for the user to track his givbacks reward through the referral program, that information can be part of it.
I considered the referrer info a simple wallet address or ens address. If you think that addresses our need, it seems there would not be many challenges.
I will bring up this in our development weekly call and post the updates here.


I totally agree with you @amin,
we can consider a unique address for each user for example:
when the user goes to this address we show a page to the user that you are coming from the Cherik referral code, and after some seconds redirect it to the donate page.
we can save the referer address or id to the cookie and let the backend knows at each request.
and about the expiration, It’s totally about the business logic of this part. but we can only use this referral code for that session. I mean after the user refreshes the page or if it visits giveth after someday we can remove that code and send requests with no referral code.

1 Like

Praise @amin & @Cherik for their inputs.

@Griff suggested pitching in here with opinions, as this is a very particular situation. On the one hand, we have a funding proposal already passed by the DAO, but on the other, the dev team (those closer to the issue) are suggesting building this in-house. Here are my thoughts:

Once the flow has been broken into pieces, I think @amin brings up a great point, that still most of the development will fall into the Giveth’s core dev team. i.e. Add referral rewards to dashboards, any landing page for this purpose, keep referral info in the session storage and sounds to me like the referral unique address and cookie tracking wouldn’t be too much effort.

Considering that and the issues that came up in the past with deliveries from previous projects, I could change my vote.

I suggest making a call with @aabugosh @amin @Cherik @Griff and other team members interested, to discuss this further and after discussing possible pathways come back to the community and let the community decide.

1 Like

Hey @Cotabe @amin and @Cherik,

Thanks for this!

So, I have a few thoughts on this:

  1. I think especially since it passed already (and we already paid the first amount to Chainvine), we should go ahead with it as a v1 to beta test the program. This will allow us to see how the system works, test out if makes sense for us and better scope out the system if we do decide to do it on our own later on. At the moment I’m not super confident that we collectively know what the product specs or exact user stories are for this yet to do it fully in-house.
  2. I wanted to clarify about the point @Cotabe and @amin mentioned about the work needed from our dev team. As far as I know, all we need to do is connect to their API for each successful donation event (they’ll do all the rest, including tracking the sessions, having a rewards dashboard, landing page etc. on their own domain), see their docs here, so I don’t think there will be a ton of work to get it integrated.
  3. I’ll be happy to have a call with everyone, but I suggest that @mateodaza @cquinterom096 also join (since they’ve been the main people coordinating on this project so far).



Thanks for the clarifications @aabugosh this is very helpful. I think your suggestion makes sense.

I would still suggest to discuss the details at a call. It could be a specific purpose one or maybe at next weekly dev call or GIVeconomy call where @amin @Cherik @mateodaza @cquinterom096 @Griff usually assist.

I made a poll to signal sentiment.

  • No need to discuss this in a call
  • Let’s make a single purpose call for this
  • Let’s discuss this at Dapp backlog call
  • Let’s discuss this at the GIVeconomy development call

0 voters

1 Like

Thanks @Cotabe! For sure, I think a call is very much needed to have a discussion and make sure we’re all on the same page. I just voted but willing to attend any time the majority votes on