Skip to content

crowd sourced, token incentivized, recipe for success for achieving your dreams...

Notifications You must be signed in to change notification settings

zach-is-my-name/GoalZappEthereum

Repository files navigation

Contributors Forks Stargazers Issues MIT License LinkedIn



Logo

"Given enough eyeballs, all bugs are shallow"

~ Linus Tovalds, creator of Linux, the world's largest open source software project


  • GoalZapp is an Ethereum enabled web application allowing you to post personal goals and receive suggested steps from others toward achieving those goals.

  • Suggesters are rewarded with the ZAPP token for their contribution if you deem their suggested step valuable enough to be included in your list of steps

  • Like a crowd sourced, token incentivized, recipe for success for achieving your dreams...



Table of Contents

  1. About The Project
  2. Usage
  3. Getting Started
  4. Roadmap
  5. Testing
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgments


About The Project

Goal-Zapp-Screen-Shot

     GoalZapp was designed with the intent to help people. Unlike other places on the internet where people turn for advice (ie. Reddit, Quora, StackExchange), GoalZapp features a crypto-financial mechanism to simultaneously incentivize quality contributions, and to disinsentivize both low-quality advice and financial speculators who errode intrinsic value of utility tokens.

Key Features

Automated Market Maker with Bonding Curve

  • The buy / sell price is a function of the amount of tokens in circulation (a.k.a. total tokens owned)

  • Buying a token:

    • Money (ETH) is sent to the Bonding Curve Contract
      • ETH remains in contract as collatoral
    • Token is created (minted)
    • Sent to buyer
    • Added to the circulation
  • More tokens in circulation = higher token price

    • (Interesting Side-Note: price is calculated dynamically. e.g. A single transaction to purchase 10 tokens costs a higher $ amount / per token, than a single transaction to purchase 5 tokens, because the purchase its self is augmenting supply and affecting the price paid)
  • Selling a token:

    • Token(s) are sent to the Bonding Curve Contract
      • ETH from collateral pool is paid to the seller
    • Token is destroyed (burned)
    • Removed from circulation
  • Fewer tokens in circulation = lower token price

    View the graph in interactive mode to trace the price of the token at a given supply

    Bonding-Curve-Graph

Parameters: Bonding-Curve-Formula

  • Initial Token Supply (s) = 128
  • Balance of Contract (b) = .03359789 ETH
  • Reserve Ratio (r) = .333333
    • For standard point-slope reference m = b / (r * s ^ (1 / r))

     Motivation: simple, intuitive, fair pricing with a strong mechanism for driving platform growth

     Note: Parameterizing a bonding curve is very much an act of balancing priorities. Adjusting for how quickly price rises relative to the total amount of tokens purchased hinges on two competing priorities: financial incentive and accessibility. A curve that rises more gradually and evenly favors accessibility (more tokens can be bought at a relatively lower price; lowering barrier to entry). A curve that rises more quickly favors financial incentive (it's profitable to "buy now", because the price will escalate quickly). The chosen parameters as implemented favor financial incentive because profit-motive is seen as the strongest driver of network participation. Combined with the measures outlined below to limit speculative behavior, we hope to achieve the highest level of network participation.

     Thought experiment: How do contributions with profit incentive compare with contributions based purely on intrinsic incentive (on platforms such Stack Exchange and Reddit)? Are those incentives mutually exclusive?


Trading Restrictions

     You can't sell or transfer the token until you use it first

     Motivation: The people who buy tokens on GoalZapp actually use GoalZapp


Protection Period

     Even after using the token for its intended utility (paying people for helpful suggestions on your goal), you still must wait to a period of 3 days to transfer it.

     Motivation: This serves once again to protect the beneficiaries of the platform and add friction to financial speculators. Honest users are given further assurance that they will not fall victum to pump and dump schemes, strengthing the utility orientation of the token.


Built With

Usage

     Here's how you can build a roadmap of steps toward achieving your posted goal; Or contribute your knowledge towards building the steps list of someone else's goal:

Own goal

  • Create a goal
  • Add steps to your goal
  • Reorder steps
  • Remove Steps

Someone else's Goal

  • Suggest a step on a goal
  • Suggest remove a step
  • Suggest Edit a a step

Own goal with suggestions

  • Accept a suggested step
  • Decline a suggested step

Application Flow: Rewards and Risks*

*All funds associated with risks and rewards are denominated in GoalZapp tokens

Own Goal

  • When you create a goal, you have the option to fund an escrow smart contract associated with that goal (you may fund the goal any time after creation)
  • Attaching funds to your goal enables you to accept suggestions from other users
  • Funds are used to pay:
    • The reward amount to suggesters (set globally by administrator)
    • The bond amount
      • Bonds are utilized to incentivize engagment and prevent stale suggestions
        • Bonds are only transfered between the goal escrow contract and the user who posted it
          • Because bonds posted are effectively locked in a contract until a user takes action, they incentivize a user to return to any action they initiated
          • Bonds are released even if a user fails to take action, by utilizing a timer mechanism (currently 3 days)
    • When you accept a step:
      • The reward amount is automatically sent to a suggester
      • The bond amount is returned to both parties (suggester and goal owner)
    • When you reject a step:
      • The reward amount remains in the smart contract
      • The bond amount is returned to both parties (suggester and goal owner)

Someone Else's Goal

  • To view goals created by other users, go to the Globalfeed page
    • Click the goal of the user you're interested in
  • On another user's goal page, you see that user's goal and corresponding steps
  • You can:
    • Suggest a step
    • Suggest edit a step
    • Suggest remove a step
    • Suggest move a step
  • At this time: only suggest step has an economic consequence
    • When you suggest a step, you choose an amount to post as a bond
      • (arbitrary bond amounts chosen by the suggester; > 1 token )
    • Your Ethereum wallet will prompt you to accept a series of transactions
      • These transactions include:
        • Approval to move tokens from your wallet
        • Subsequent transfer of tokens as bond to escrow contract

Risks and Rewards Summary

  • Suggestions goal owners accept pay out 1 token to the suggester

Getting Started

Roadmap

  • Integrate smart contracts to L2 roll-up Optimism

Testing

Contributing

     Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License

Contact

Twitter: @_zach_michaels

Email: contact@zachmichaels.dev

Project Link: https://github.com/zach-is-my-name/GoalZappEthereum

Acknowledgments

  • Simon de la Rouviere
    • For eloquently elaborating on the nature of tokens in 2015 youtube
    • For his work on developing bonding curves medium
  • Bancor
    • For creating and contributing the essential formula that make bonding curves possible in Solidity github
  • Slava Balasanov
    • For laying out in technical terms how bonding curves work medium
    • and personally answering questions
  • Billy Rennekamp
    • For conveying bonding curve technical terms and formulas in a simplified way medium
  • Karl Floersch
    • For keeping the flame of altruism through applied technology

About

crowd sourced, token incentivized, recipe for success for achieving your dreams...

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published