This commit is contained in:
Corey 2019-05-31 10:17:33 -04:00
parent 6839c1c7c1
commit 99f5bb75a0
No known key found for this signature in database
GPG Key ID: 65CAB2A922CDF343
5 changed files with 188 additions and 291 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,3 +0,0 @@
div {
/* max-width: 80% !important; */
}

View File

@ -30,18 +30,18 @@ class App extends Component {
if (name === 'viewof ensUserbar') { if (name === 'viewof ensUserbar') {
return new Inspector(this.ensUserbarRef.current); return new Inspector(this.ensUserbarRef.current);
} }
if (name === 'viewof amountDepositSnt') { if (name === 'viewof dollarPriceDomain') {
return new Inspector(this.amountDepositSntRef.current); return new Inspector(this.dollarPriceDomainRef.current);
} }
if (name === 'viewof lockedSntBar') { if (name === 'viewof discountRate') {
return new Inspector(this.lockedSntBarRef.current); return new Inspector(this.discountRateRef.current);
}
if (name === 'viewof sntPrice') {
return new Inspector(this.sntPriceRef.current);
} }
if (name === 'viewof lockedUsdBar') { if (name === 'viewof lockedUsdBar') {
return new Inspector(this.lockedUsdBarRef.current); return new Inspector(this.lockedUsdBarRef.current);
} }
if (name === 'viewof netPresentUtility') {
return new Inspector(this.netPresentUtilityRef.current);
}
return null; return null;
}); });
} }
@ -60,14 +60,14 @@ class App extends Component {
ensUserbarRef = React.createRef(); ensUserbarRef = React.createRef();
amountDepositSntRef = React.createRef(); dollarPriceDomainRef = React.createRef();
lockedSntBarRef = React.createRef(); discountRateRef = React.createRef();
sntPriceRef = React.createRef();
lockedUsdBarRef = React.createRef(); lockedUsdBarRef = React.createRef();
netPresentUtilityRef = React.createRef();
render() { render() {
return ( return (
<div className="App"> <div className="App">
@ -89,22 +89,22 @@ class App extends Component {
</p> </p>
<p> <p>
There is currently quite a bit of work being done in this field, but There is currently quite a bit of work being done in this field, but
it is mostly for investment firms to make appropriate capital allocation it is mostly for investment firms to make appropriate capital
decisions among a diversified portfolio of cryptoassets. While this is allocation decisions among a diversified portfolio of cryptoassets.
drastically important for growth and project funding, there is great lack While this is drastically important for growth and project funding,
of research on capital and resource allocation inside of a single network. there is great lack of research on capital and resource allocation
More specifically, any utility token needs to be able to objectively evaluate inside of a single network. More specifically, any utility token needs
various features and utilities of their platform, and how they affect the to be able to objectively evaluate various features and utilities of
entirety of their ecosystem. For instance, we need to be able to ask their platform, and how they affect the entirety of their ecosystem.
questions like the following: How can we objectively measure the use For instance, we need to be able to ask questions like the following:
of SNT if it gets used in feature X as a function of our user base? How can we objectively measure the difference in the rate users use
Based on that measurement, is its development cost justified, or feature X in Status and its respective impact on the ecosystem?
should we focus on something else?
</p> </p>
<p> <p>
We will be launching Status with the following SNT use-cases, as We will be launching Status with the following SNT use-cases, as
described in the{' '} described in the{' '}
<a href="https://status.im/whitepaper.pdf">whitepaper</a>: <a href="https://status.im/whitepaper.pdf">whitepaper</a> and{' '}
<a href="https://www.status.im">the website</a>:
<ul> <ul>
<li>Teller Network</li> <li>Teller Network</li>
<li>Tribute to Talk</li> <li>Tribute to Talk</li>
@ -112,26 +112,41 @@ class App extends Component {
<li>Sticker Market</li> <li>Sticker Market</li>
<li>SNT Curated Dapp Store</li> <li>SNT Curated Dapp Store</li>
<li>Network Incentivization (may not be available at launch)</li> <li>Network Incentivization (may not be available at launch)</li>
<li>Liquid Funding (may not be avaialble at launch)</li>
<li>User Acquisition Engine (will not be available at launch)</li>
</ul> </ul>
</p> </p>
<p> <p>
Each of these use-cases make use of the SNT token, but in very Each of these use-cases leverage the SNT token, but in very different
different ways. This means each will have differing effects on the ways. For instance, some will lock up large amounts, some will
supply and demand of the token itself. It doesnt stop there, as actually burn the token, and some will incentivize sending and
Status is an open and permissionless platform for developers to build receiving. This means each will have differing effects on the supply
on and use, which means that anyone can build SNT use-cases that and demand of the token itself, and will need to be modeled
affect the overall supply and demand. But how do we know what effect a differently. It doesnt stop there as Status is an open and
utility has? Where do we go to try and evaluate its usefulness? permissionless platform for developers to build on and use, which
means that anyone can build SNT use-cases that affect the overall
supply and demand. But how do we know what effect a utility has? Where
do we go to try and evaluate its usefulness?
</p> </p>
<p> <p>
To this end, we would like to start a blog series detailing some of To this end, we would like to start a blog series detailing some of
the research we are doing within Status to objectively evaluate the the research we are doing within Status to objectively evaluate the
value flows of SNT, the potential effects of our implemented (and upcoming) value flows of SNT, the potential effects of our implemented (and
SNT use cases within Status, and how our potential user growth changes upcoming) SNT use cases within Status, and how our potential user
things. This work will encompass traditional economic and finance growth changes things. This work will encompass traditional economic
theory, work currently being done in crypto-economics, and novel and finance theory, work currently being done in crypto-economics, and
methodology. That means a part of this endeavor is an attempt to get novel methodology. That means a part of this endeavor is an attempt to
peer review and evaluation of what we do by you, the community! get peer review and evaluation of what we do by you, the community!
</p>
<p>
<b>
DISCLAIMER: The work in this article (and mentioned notebooks) is
for modeling purposes only. The numbers herein are not to project
actual values locked up in Status and should not be used for
investment advice. It is our strict desire to create and improve
models that describe value flow of SNT use-cases (and similar token
use-cases), and how these use-cases compare to each other.
</b>
</p> </p>
<p> <p>
Lets start with the ENS naming system. In Status, for a little SNT, Lets start with the ENS naming system. In Status, for a little SNT,
@ -159,25 +174,25 @@ class App extends Component {
</p> </p>
<p> <p>
The use case and token flow are both relatively simple, but what are The use case and token flow are both relatively simple, but what are
the effects on the network? Lets first try and model what value the effects on the network? Lets first try and model what value this
this could potentially accrue over time. We can start by picking out could potentially accrue over time. We can start by picking out the
the variables in this process to see how things depend on each other. variables in this process to see how things depend on each other.
Furthermore, the above values are what we currently use, but in terms Furthermore, the above values are what we currently use, but in terms
of modeling, we should turn those into variables that allow us to see of modeling, we should turn those into variables that allow us to see
what effect each has on the overall mechanism. This can help inform us what effect each has on the overall mechanism. This can help inform us
(and you) on appropriate choices. (and you) on appropriate choices.
</p> </p>
<h2>Disucssion of variables</h2> <h2>Discussion of variables</h2>
<h3>Number of Users</h3> <h3>Number of Users</h3>
<p> <p>
It is clear that this all depends on how many users Status has in the It is clear that this all depends on how many users Status has in the
app. If they are not using Status, then they wont use the feature. app. If they are not using Status, then they wont use the feature.
This is our base metric, and we will model it using compounding growth This is our base metric, and we will model it using compounding growth
and loss. We can start with a number of users that are using the network, and loss. We can start with a number of users that are using the
and set additional growth and loss variables (in percentages) that network, and set additional growth and loss variables (in percentages)
define how this number changes over the next 10 years. This means that that define how this number changes over the next 10 years. This means
every year, we expect a certain percentage change in users based on that every year, we expect a certain percentage change in users based
the numbers of the previous year. Depending on how you set those on the numbers of the previous year. Depending on how you set those
percentages, the number of users can grow very rapidly! Go ahead and percentages, the number of users can grow very rapidly! Go ahead and
play with the following variables to see how the number of users play with the following variables to see how the number of users
change over the years. change over the years.
@ -210,40 +225,141 @@ class App extends Component {
<div ref={this.userConversionRef} /> <div ref={this.userConversionRef} />
<div ref={this.removalRateRef} /> <div ref={this.removalRateRef} />
<div ref={this.ensUserbarRef} /> <div ref={this.ensUserbarRef} />
<h3>Amount of SNT required to deposit</h3> <h3>
US Dollar Amount of SNT to Deposit, Discount Rate, and Net Present
Value
</h3>
<p> <p>
Now we have the amount of users that will (or have) use(d) this Now the contract itself locks up a specific amount of SNT per
utility. Lets figure out how that translates to SNT. In order to do username, but the goal is to model around a reasonable target price in
that, we have another variable to define: The amount of SNT required US dollars and have the contract change over time to adapt as the
to register an ENS username. By multiplying each user by this price of SNT changes. Why do we do this? In order to evaluate value
variable, we can show how much SNT is being locked up every year which flow overtime we need a relatively stable unit by which to measure and
effectively takes it out of the circulating supply, i.e. normalize the value flows. We use US dollars due to the size,
stability and data availability for that market. While one can argue
that US dollars do not maintain their value in the long term, they at
least depreciate at a stable and predictable rate. The mechanisms and
governance around how this price change works is a subject still under
discussion and will be addressed in future articles (but weve got
some really cool ideas). So the knob we choose to tweak here is the US
dollar amount of SNT to be locked up.
</p>
<div ref={this.dollarPriceDomainRef} />
<p>
An additional factor in using the US Dollar equivalent of SNT here is
that we can add a discounted cash flow analysis based on historical
data of USD. Future notebooks and articles will look into deriving and
modeling a discount rate purely in cryptocurrency. For brevity, this
article will only introduce the concept and gloss over a good portion
of the details and derivation of the terms within. For more
information, please visit the{' '}
<a href="https://observablehq.com/@bgits/status-cost-of-capital">
more detailed workbook
</a>
.
</p>
<p>
A simple surface level description of a discount rate is the rate you
use to figure out how much present value a known future cash flow is
worth. In other words, how to presently evaluate the amount of money
you know will come in the future. Once you have the discount rate, you
can calculate the <em>Net Present Value</em>, which is given by the
following formula:
</p> </p>
<p> <p>
<Latex displayMode> <Latex displayMode>
{ {
'$$N_{\\text{SNT locked}} = N_{\\text{registrations}} * N_{\\text{SNT per registration}}$$' '$$NPV = \\sum^n_{t=1} \\frac{R_t}{(1+i)^t} - \\text{initial cost}$$'
} }
</Latex> </Latex>
</p> </p>
<div ref={this.amountDepositSntRef} />
<div ref={this.lockedSntBarRef} />
<h3>How to assign value to all of this?</h3>
<p> <p>
Having the amount of SNT locked up is quite useful by itself. From where <Latex>$$t$$</Latex> is the number of time periods (10 in this
there, we can look at the circulating supply and see how this use-case article),
affects its availability. It is also interesting to see how this maps <Latex>$$R_t$$</Latex>
to more traditional assets by looking at the current price of SNT in US Dollars is the cashflow of that particular time period , and{' '}
(USD). Since most evaluation mechanism use a market capitalization <Latex>$$i$$</Latex> is the discount rate. The concept of discounting
(cap) metric to compare different networks and tokens, mapping each future value has been around for along time. The earliest known
use-case , and eventually the whole network, allows us to see how much reference was in the 6th century BCE{' '}
they contribute to a given market cap. By converting value flows to USD <a href="http://www.aramaic-dem.org/English/History/The%20proverbs%20of%20the%20Aramean%20Ahikar.pdf">
we can also make use of established measures by which to discount future Proverbs of Ahiqar
value flows (10-year US Treasury rate) which are currently non-existant </a>
among crypto assets. :
</p> </p>
<div ref={this.sntPriceRef} /> <blockquote>
A sparrow in thy hand is better than a thousand sparrows flying
</blockquote>
<p>
You have probably heard a more common version is this, and Warren
Buffet does a good job of{' '}
<a href="https://www.youtube.com/watch?v=BP_TUDOYDrg">
explaining it:
</a>
</p>
<blockquote>
How many birds are in the bush? When are you going to get them out?
and how sure are you?
</blockquote>
<p>
Either way, more details on how we can do this will be explained in a
future article. Below is a knob to change this discount rate. The
higher the rate, the more unsure you are about the future income. Play
with both of these knobs to find out how much money will be locked up
in the ENS username contract over 10 years.
</p>
<div ref={this.discountRateRef} />
<div ref={this.lockedUsdBarRef} /> <div ref={this.lockedUsdBarRef} />
<p>
and all of this gets summed together to give you the following Net
Present Value of ENS Usernames within Status:
</p>
<div className="slide">
<div ref={this.netPresentUtilityRef} />
</div>
<p>
In other words, after setting all of the above model inputs we have
finally come to a way of looking at how &quot;impactful&quot; ENS
usernames are in a single value. This value will become more useful as
we build out other models for other use cases so we can compare them
and see relative differences. Eventually, we will be able to see the
relatively impact a given utility within Status has within the entire
ecosystem.
</p>
<h2>Example Scenario Analysis</h2>
<p>
It is also useful to look at how this number changes as we tweak the
input variables to see their impact. As an example, let&apos;s look at
what happens if we are able to do something to increase the number
Status users who actualy register an ENS username (actually currently
in the works). This is an example of the question we postuated in the
beginning of this article. The default value is 50%, which leads to a
Net Present Utility Value of $8,527,197.00 (holding all default values
constant).
</p>
<p>
What happens if we&apos;re able to increase this number, say, to 75%?
Keeping all other variables equal, this change alone changes the Net
Present Utility Value to $12,815,797.00, which is a 50.3% growth and
would constitute a linear relationship.
</p>
<p>
As another example, let&apos;s look at what happens if we increase our
yearly growth rate, going from 300% per year to 350% per year. holding
everything else constant, with a 350% growth rate per year, we come to
Net Present Utility Value of $24,157,021.00, a 183% growth and would
constitue a superlinear relatinoship due to the effects of compounding
growth. Based on these two simple examples, it is clear we should
spend more time on user acquisition and continuious growth over
increasing ENS username conversion rates (OR BOTH!).
</p>
<p>
As you can see, by making models of our SNT use-cases, we can start to
ask questions and get numbers to give us actionable data (assuming a
decent accuracy of the model). Even if the actual numbers are
drastically wrong, but the relationships are correct, we can still
come away with quality information on how we spend our time, money,
and effort.
</p>
<h2>Thoughts and Conclusions</h2> <h2>Thoughts and Conclusions</h2>
<p> <p>
So what have we learned from all of this? How can we change the model So what have we learned from all of this? How can we change the model
@ -274,11 +390,12 @@ class App extends Component {
means we would love to get feedback from you, the community. If we means we would love to get feedback from you, the community. If we
have done something incorrectly, or you know of some way to better have done something incorrectly, or you know of some way to better
model various aspects herein, please join the discussion. We will be model various aspects herein, please join the discussion. We will be
posting all of these articles in [DISCUSS WHERE WE WANT THIS TO LIVE]. posting all of these articles in{' '}
<a href="https://discuss.status.im">our discuss</a> and linking around
the internet in relevant places.
</p> </p>
<h3>Future Improvements</h3> <h3>Future Improvements</h3>
<ul> <ul>
<li>discounted value rate</li>
<li>probability of failure</li> <li>probability of failure</li>
<li>justifications using historical data</li> <li>justifications using historical data</li>
<li>assign variables and create equations for each</li> <li>assign variables and create equations for each</li>