Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Go Freaking Do It – Smart contract for reaching your goals (gofreakingdoit.com)
128 points by superkarolis on Dec 4, 2017 | hide | past | web | favorite | 109 comments

ignoring the tech, i think many folks here are missing the point. Assume you really want to quit smoking right now, and you are also pro choice. With a system like this you can say "I will quit smoking in 2 months or this $5000 will go to an anti-abortion charity." now THIS system doesn't do that BUT the core point remains, if you can attach "significant" loss to NOT achieving a goal it can help motivate people (not all people, but you get teh point).

this system is limited in that it can only do "money" for significance. it can't also tie it to something you loathe. I don't think any of the available things ( https://www.beeminder.com/ was mentioned by someone ) can do this, but you can do it with a friend you trust.

to those who suggested having the money go to charity: Having the money go to a charity you LIKE is a terrible idea because then if you fail in your task "well at least my favorite charity is getting money" You actually have incentive to fail.

Did something similar to this at a previous employer. We had a problem with a particular weekly meeting starting on time, so we all agreed on a $1 late fee, per minute. At year's end, the collected fees were gifted to one of the firm's wealthy executives whom we all disliked. The meeting's on-time rate skyrocketed.

Did you send a card along with the money explaining this to the executive?

Hah, yes and no. The card said we wanted the money to go to the person we thought needed it the least. However, he knew he was not well-liked, presumably connected the dots, and thought it was funny anyways.

So he has a sense of humor. That would make me like him more which means I would sadly be late to a lot of your meetings.

Dear Jim,

We begrudgingly offer you this gift as a token of our accumulated tardiness to company meetings.


Your subordinates

The good news is, none of them have to attend the meeting anymore.

I used to run a CLI program called smoketimer [1]. It'd give an output like (from the README example):

"4 Months, one week, 5 days, two hours, 51 minutes, 39 seconds. 3084 cigarettes not smoked, saving EUR 478.02. Life saved: One week, one day, 13 hours, 36 minutes."

After I saved up an X amount of money (a year or so?), I bought myself a laptop from that; the first laptop I ever bought for myself. Quite a decent motivator if I may say so myself.

Sure, I had relapses. Multiple even. Last one in 2014, whilst on vacation (very difficult time for me not smoking on vacation). I bought one pack, ended up throwing away half of it.

[1] https://www.stack.nl/~martijnb/smoketimer.tgz

That's a very interesting idea, although it would be pretty tricky to implement in a way that didn't require self-reporting. The main obvious benefit using a smart contract could provide is automatically making the donation unless you actively lie (or tell the truth) that you didn't smoke at all, and the UI could play that up by asking you if you're sure you aren't lying.

The same concept, but with credit cards: https://www.beeminder.com

Awesome job building your idea! Took at a look at the source code an found a few bugs and put them here in a post: https://medium.com/@jesperht/dont-go-freaking-do-it-5da4df4d...

Feel free to get in touch with me if you need a hand fixing any of this!

Hey, thanks for the thorough inspection. I now realize there are several flaws in the implementation that will need fixing. V2 release of the contract will come soon!

Why did you say that it was verified safe?

That's great! Looking forward to seeing the next version :-)

You could have written that here rather than push more self-promotional blog content...

But then he wouldn't have any self-promotional blog content, silly!

what a jerk

>> and will keep the funds otherwise.

If I'm possibly going to give my money away, why would I want to do this to some random contract, instead maybe a Charity or somewhere other than directly to the contract?

It is kind of awkward that a business that exists to help you get things done is paid whenever you fail.

Doctors and pharmaceutical companies are supposed to help you be healthy, but make more if you're ill long-term.

Banks, credit card companies, and brokerages all make more money if you make poor financial decisions (fees, interest, and active trading, respectively).

Auto mechanics and car companies make money if your car doesn't work or doesn't last past the warranty period.

Even piano teachers only make money if you continue needing lessons, rather than becoming able to learn on your own.

Hopefully enlightened businesses will follow the model that customer referrals are more scalable than bleeding the money out of any one individual.

The incentive structure you are describing is a huge part of the problem in the statist/industrial paradigm of human existence.

Blockchains and smart contracts purport to lift of out of these conditions, but, as you point out, this one seems to suffer from the same flaws.

>The incentive structure you are describing is a huge part of the problem in the statist/industrial paradigm of human existence.

You misspelled "capitalist".

Sure, call it that too. I think that that word is a bit unwiedly in today's political dialogue, because it means something different to everybody.

To some, "capitalist" is an attribute of a society that resist state intervention in economic collaboration. It is equal to the phrase "free market" and viewed with great skepticism.

To others, "capitalist" is more tantamount to greed and cronyism; it is understood in a way that's contrary to traditional anarchic theory about the state.

You might detect that I usually find myself in the second category.

Because of this dichotomy, I like to think of the procession of ages of humankind represented by the dawn of the internet being from "statist/industrial" toward "humanitarian/information-driven".

But you can also certainly think of it as being from "capitalist" to "humanitarian" or whatever may go in that second slot, sure.

It sounds like you're fantasizing about anarcho-capitalism?

What type of system do you think cryptocoins facilitate?


I have run into AnCaps whose opinions I respected, but I've never quite been convinced that their version of the world is sufficiently selective for compassion.

>Doctors and pharmaceutical companies are supposed to help you be healthy, but make more if you're ill long-term.

Which results in unnecessary procedures, and unnecessary prescriptions.

>Banks, credit card companies, and brokerages all make more money if you make poor financial decisions

Which caused the housing crisis and great recession.

>Auto mechanics and car companies make money if your car doesn't work or doesn't last past the warranty period.

Which results in some of the most untrustworthy salespeople in one of the most untrustworthy industries.

All of those industries are regulated by the government, precisely because the incentives are wrong and it causes people to do more harm than good if left unregulated.

I was able to find a trustworthy mechanic. If they did a poor job or were sabotaging my car when I brought it to them, I would choose another mechanic.

My point is those fields need extra regulations because there are incentives that promote unethical behavior, and thus shouldn't be used as examples of why this websites incentives are good business practices. Not that there's no such thing as a trustworthy mechanic.

HN is ridiculous. If a mechanic sabotages your car, you can sue them... you know, a service provider by the government. But what if your town has only that one mechanic? What if the mechanic is worth billions and bought the other smaller shops just to shut them down? Do keep in mind that sometimes there is no competition, or the incentives are so perverse that competition doesn’t matter. The world isn’t black and white. Despite what Ayn Rand might’ve told you, you can’t just expect competition to fix literally everything.

Hackernews is supposed to have smart people, but the pithy nonsense like the parent I’m responding to makes it abundantly clear that that’s not the case.

You aren't making a case for, you are making cases against all these other industries.

Those problems also outline a potential business model based on verified long-term reviews.

If a doctor's treatment record and long-term ROI follows them around, or if piano students can track their proficiency over time, the market can act on that information. Without it, we're all flying blind so of course we get suckered into bad exchanges.

It also reflects opportunities for stronger regulations... For example, financial advisor were required to act in the best interest of their customers (until Trump repealed Obama's executive order)

This is effectively the business model of every health club out there. They lock you into a 1 year contract, knowing most people will not continue past the first or second month.

In that case, the only incentive they have for you to fail is to pack more gym memberships in the same square footage. Still, I think as a perverse incentive it's a lot more indirect.

Exactly, while they can benefit from having fewer people go regularly to offer a better experience to those who do, churn is still a gym's biggest problem, it's why they lock up longer contracts and why gyms have trainers available and regular progress reports, to enhance customer LTV.

But in this instance, that's the incentive. You want that money back, rather than going to someone else.

That's also the business model of most dating websites.

If you really want it to motivate, the funds should be sent to some group you detest if you fail. I.e. the DNC for a staunch republican, or the NRA for someone who believes in gun control.

Our (Beeminder's) counterargument: https://blog.beeminder.com/anticharity/


Take my thoughts on this with a huge grain of salt, given my conflict of interest, but I really dislike commitment devices that destroy things — either information or other forms of value. StickK’s anti-charities seem the most egregious, actively harming the world. I’m certainly motivated to not allow the world to become a worse place, so it’s not that it would be ineffective as a commitment contract. Just that I’m also motivated to prevent things that don’t make the world worse in any way, like paying money to a third party (who’s not evil).

> StickK’s anti-charities seem the most egregious, actively harming the world.

That assumes that (1) there are "good" charities and "bad" charities, and (2) that most of Stickk's users are good people who end up benefiting "bad" charities when they fail.

Point (1) seems hard to prove and point (2) is impossible to prove without detailed info about how Stickk is used.

It seems like you're in this market, so perhaps you have data like this. Do you? If not, how do you justify the above assertion?

Good points, but I don't think we need assumptions that strong. For example, if democrats donate to the republican party as an anti-charity and republicans donate an equal total to the democratic party, then probably democrats and republicans would all agree that that's strictly worse than nobody donating at all.

But more to the point, I'm just viewing it from the individual user's perspective. From your point of view, you're actively harming the world by donating to an anti-charity. It doesn't matter that those other wrong-on-the-internet people think your donation is doing good. :)

It is useful to distinguish between the individual user's perspective and the global perspective.

You want to focus on the individual user, and that makes sense. But to him/her, they're using an anti-charity because they want to increase their odds of accomplishing their goal. So when thinking about whether it is "good for the world" or "bad for the world" that people do this, we have to factor in:

1: the x% probability that the user will fail, and money will be donated, and

2: the y% chance that the user would have failed without the anti-charity option, but succeeds instead because of it.

When you consider both of these aspects, it is not at all clear that the anti-charity option is bad for the world.

Ah, yes, my assumption is that you can derive the same amount of motivation with a non-evil beneficiary by just jacking up the amount at risk. Like donating $1 to the KKK is extremely aversive but you're equally motivated to avoid giving, say, $1k to a neutral 3rd party.

Exactly zero harm befalls the world in the latter case.

I'd even go so far as to say you could achieve the same effect with a true charity by risking an amount that you really couldn't afford. But, as I point out in the blog post I linked to above, no one ever has the guts to actually do that.

Btw, on Beeminder we very occasionally have people who risk thousands of dollars. I think they tend to be really hardcore fans who may in fact view it as improving the world by giving us money. Hence them shrugging off smaller amounts and needing to risk something ridiculous to stay motivated to stay on track. But it's still super win-win (because they do stay on track overall -- and sometimes staying on track means things like finishing a PhD!).

> Ah, yes, my assumption is that you can derive the same amount of motivation with a non-evil beneficiary by just jacking up the amount at risk. Like donating $1 to the KKK is extremely aversive but you're equally motivated to avoid giving, say, $1k to a neutral 3rd party.

Is there any evidence to support this theory? Seems like the existence of tools that offer anti-charity donations indicate that for at least some people, this assumption is incorrect.

It's easier to slack off on your goals if it feels like a noble thing to do.

Couldn't the smart contract literally "burn" the funds in case of failure?

Like transfer a small percentage to the owner as a fee for the service, then send the rest to a faulty address or contract setup to never be retrievable?

yes. or maybe even distribute it among those that managed to reach their goals.

Then people might try to game the system. I think you present the excess to one person each day that receives votes as the best (public) goal matched. It incentivizes people to publicize their goals, which helps the business, and also makes them more likely to fulfill the goal. You will still see gaming I'm sure, but at least it will be vetted by peers.

In a way "burning" the funds already does distribute them to everyone else.

Since that is now money that is forcibly and irrevocably taken out of circulation, so therefore everyone else's money is worth slightly more because of it!

Goal: "Set a goal that makes me eligible to receive a portion of the rewards".


Even more reason to not fail your goal and give money to "stupid freeloaders" :P

I wonder if deliberately sending money to a blockchain address that no one has the keys to could be legally considered destruction of money?

Probably not yet, but maybe eventually. It's essentially the same as burning it.

Destruction of value is not destruction of money. If I were to buy some extremely expensive memorabilia (a pristine copy of Abbey Road, signed by all of the Beatles) and burn it in my back yard, that wouldn't be destruction of money.

While BTC, ETH, XMR function like currencies and can be traded - they are not recognized as a currency in most places

+1. I'd be fine giving the site a percentage as a cut, but would want to be able to designate an address for the primary portion of the funds.

> instead maybe a Charity

Money going to charity won't make me feel that bad about not achieving my goal.

"oh well atleast someone needy is getting the money"

Defeats the whole point of the exercise( pardon the pun).

I don't really understand the trend of solving all problems with "smart contracts". This just seems to limit the potential market to people who care about smart contracts, and complicate an otherwise simple arrangement, without providing any benefits. You still have to find a supervisor your trust, why not just give money to a friend instead?

This app reminds me of the cartoons where a character says 'lock me in here and don't let me out no matter what say'

The app is basically the exact plot of one of the schemes from Nathan for You s2e6

It's probably mainly a way to learn how to implement something / anything with smart contracts. I don't see anything wrong with that.

Yeah quite possibly, and a very valid reason, although not how the product is pitched.

Agree. This seems like Stickk [1], but with "smart contract" branding. There may be other differences (and I'd be interested to know more about them), but I had the same initial reaction as you.

1: www.stickk.com

Here are all the other similar such apps we know of: http://blog.beeminder.com/competitors

www.stikk.com also has an inspirational nature/valley overlook cover image. I don't get it. When I see these images, I am only reminded of nice it is to not focus on my goals and go dick off in nature for a day.

They didn't implement the most difficult part of the idea: the supervisor.

Seems like a half-baked solution. Interesting, but incomplete.

It asks for a supervisor's email. I'm not aware of how these smart contracts work. What else needs to be done?

I had the exact same idea years ago. Eventually I found there are some shortage about it so I ditched the idea:

- How to verify people achieved their goal (this website introduces "supervisor" but I'm not sure that's gonna work well)

- You gain nothing from achieving goals, v.s. you lose money if you didn't

- The gain (goal achieved, which can be done without losing money) is much less than lose (lose real money), so no incentive for people to use this service.

This website will face the same challenge.

I'm happy to see there are someone out there having the exact same idea, I hope they can do well sincerely.

You gain nothing from achieving goals, v.s. you lose money if you didn't

One solution to that would be having the app share the money from the losers between all the winners (less a fee for running the app if you wanted to monetize it).

Then every customer would have a financial incentive to always lie and say they completed their goals.

It's already iffy with the 'lose money if you don't meet them' approach, but if you could actually get a piece of all the users moneys, yeah, you might as well say you're a winner (or only create goals where you can easily win) and game the system.

That's the hard part of the problem, and the bit that makes it worth solving.

You know how the customers who pay the least are the most work? Well this idea creates customers who literally pay a negative amount. My sense from the erstwhile GymPact -- https://blog.beeminder.com/gympact/ -- is that those "customers" tended to be a nightmare.

Hence Beeminder rationalizing just keeping all the money! :)

I had the same idea too!

I had been discussing almost exactly this idea with a friend over the last couple weeks, wholly unaware of the similar services listed elsewhere in the comments (although I realise there is a chance I heard about one of them in the past but forgot about it). Good job on getting this up and running, looks great so far!

The way we had proposed to deal with funds that were not returned to the user because of failing a goal was to add them to a reward pool of sorts. We would take a percentage of any failed goal funds, but the majority would be given as rewards to others who had completed their goals in a similar area or time period. The details of this hadn't been fleshed out but one potential way to do it we discussed would be to distribute the reward pool at the end of every month to those who had completed gals in that month (proportional to the amount of money staked).

This would potentially remove some people's concerns listed in the comments about the money not being handled well in case of goal failure. Also it might drive more usage of the service if people would maybe even profit.

Something to think about with that, wearing my black hat:

What's to stop me from putting up a stake, using a second email address as my "supervisor", and just confirming at the end of the month that I've reached my goal? Without doing anything, that makes me eligible for a chunk of the reward pool.

Exactly. The difficult part of creating these kind of value systems isn't just providing more beneficial incentives. It's also about providing the right combination of incentives that remove (as much as possible) any malicious intentions.

Nothing, you make a good point. We were going to use github commits as a trusted oracle in our first prototype of this idea so that a supervisor would not be needed (i.e. you would pledge to commit to a certain project a given amount within the month) but this would still be easy to game in the way you described.

Maybe there isn't a great way to implement this.

But this may be gamed by users who submit easy-to-fulfill tasks.

Since setGoalFailed is public (because you want it to be callable by the person trying to achieve the goal, and the contract owner is the supervisor) and does no checks, seems like anyone can mark a goal as failed and the money held in the smart contract will go to the contract owner?

Shouldn't that check that msg.sender is either goals[_hash].owner or owner ?

You are right, thank you for spotting this! I will have to make a new contract, this one is flawed. If someone decides to call this function and I get the funds, I will give a manual refund. It will have to do until v2 release of the contract. Right now at least it's not holding any major funds.

No worries! Still much better code than Parity Multisig and their fake constructors :)

It also doesn't appear to be checking if a goal has already been set as failed, so someone could fail their goal repeatedly and drain the contract of all its funds.

Exactly, "Go Fucking Do It" is the original concept and inspiration for this side-project. I informed him about what I am building. The only difference is that "Go Freaking Do It" is built on top of Ethereum blockchain and the funds are verifiably safe.

I don't like kill functions. If you have to trust that the owner won't just kill the contract in the middle of your goal it's not actually trustless.

+1, kill functions only make sense in contracts which are expected to operate within a specific narrow time window that is governed outside of the contract.

For example, a fundraising period. Kill functions work well when you can effectively say "oops we screwed up the event window, we're going to relaunch with a fresh event window."

For something that is intended to exist permanently, the kill function is strictly harmful as it creates risk for anyone depending on the contract (unless your intention is to avoid having people depend on it, I suppose).

I don't like the concept of a smart contract having an "owner". Why should anybody have any more power than anybody else?

A true trustless smart contract would have no owner.

> get an email emailed

I think this could be rewritten as "send an email".

So if your supervisor flakes out, you lose the money? There is definitely a flaw in that...

Or goes on vacation for a week. I wonder if there's a time limit for their response?

Interesting idea, but it seems ultimately like a high-tech implementation of a low-tech process-- really I'm just relying on the 'supervisor' to hold me accountable, and if I get to the point of asking someone else to hold me accountable to a deadline I've already accomplished the hard part, anyway. Sharing goals is a proven strong motivator in itself, I think.

It did bring to mind an interesting related idea, though, specifically for software side projects: instead of relying on a human to validate your success, create a smart contract around a test suite; funds are released by passing your tests by the deadline.

This is a neat idea.

But it makes wonder that there's perhaps more to consider about "your goals" if you need "a supervisor" to verify that you met your goals and a monetary penalty for failing to meet your goals.

More importantly, one's _choice_ of goals and the process by which they strive to achieve them (the journey) is every bit as important as the "verifiable" success/failure rate if we're talking about personal goals.

Similar on the bitcoin blockchain - https://www.realitykeys.com/

Using technology and money to blackmail yourself isn't an effective way to make you do something you don't actually want to do; shady.

why can you put in negative numbers as the amount?

Hahhahaha my procrastination could have finally paid off!

It only allowed you to put negative number in UI box but that would have not made a valid Ethereum smart contract so it still wouldn't have worked. It made me scared for a second though!

Oh, good. That could have been really bad.

Good question, that's my oversight, got that sorted now.

Hi, I think the link to Firefox metamask should be https://addons.mozilla.org/en-US/firefox/addon/ether-metamas...

Thank you for mentioning and supporting Mozilla Firefox!


Suggestion to make it with lesser scope, but with verifiable contracts, so you can automatically verify that it was done. I'd actually use that service myself :)

For example: 1) Run 10K on Strava. 2) Solve programming challenge on Codeforces/TopCoder. 3) Pass coursera class. 4) Have X bitcoins on your wallet 5) Check-in in some specific location.

I think there is an Oracle problem here with trying to bring in data from external services


You might want to note that you can test it on the testnet. It looks like it works, i did it using ropsten testnet but the verbiage in the posting says mainnet regardless of if it is actually the mainnet.

I've seen these financial penalty systems promoted as change motivators, but does anyone have a success story using them?

At risk of meta-overload, our startup wouldn't exist but for doing this!


This is a great idea!

This seems like a great way to have your money stolen

come on you can do this without tech, it's called discipline.

Seems like an exact copy of gofuckingdoit.com

Yes, it's inspired by "Go Fucking Do It" and Pieter, the creator of the original concept, is aware of this re-implementation :)

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact