-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.tex
More file actions
4965 lines (4323 loc) · 161 KB
/
main.tex
File metadata and controls
4965 lines (4323 loc) · 161 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass{article}
\pdfsuppresswarningpagegroup=1
\hbadness=99999
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage{amsmath}
\usepackage{array}
\usepackage{hyperref}
\usepackage{pdflscape}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{svg}
\usepackage{placeins}
\usepackage{tabularx}
\usepackage{ltablex}
\usepackage{eso-pic}
\usepackage{tablefootnote}
\usepackage{amssymb}
\keepXColumns
\newcolumntype{L}{>{\raggedright}X}
\usetikzlibrary{positioning}
\tikzset{
script/.style={draw, circle},
utxo/.style={draw, rectangle, align=center}
}
\AddToShipoutPictureBG{%
\begin{tikzpicture}[remember picture, overlay]
\node[opacity=.5, inner sep=0pt]
at(current page.center){\includegraphics{
images/background.png}};
\end{tikzpicture}%
}
% Avoid hyphenation
\tolerance=1
\emergencystretch=\maxdimen
\hyphenpenalty=10000
\hbadness=10000
% Style hyperlinks
\hypersetup{%
colorlinks=true,
linkcolor=blue,
linkbordercolor=red,
pdfborder={0 0 0}
}
% Cover page image
\AddToShipoutPicture*{%
\put(0,0){%
\parbox[b][\paperheight]{\paperwidth}{%
\vfill
\centering
\includegraphics[width=\paperwidth,height=\paperheight]{
images/coverpage.jpg}%
\vfill
}}}
\renewcommand*\contentsname{Table of Contents}
\begin{document}
\begin{sloppypar}
\begin{titlepage}
\sffamily\selectfont
\centering
\vspace*{7cm}
{\includesvg[width=10cm]{images/logo.svg}}\\[5\baselineskip]
\textcolor{white}{
{\Huge Synthetic Assets on Cardano}\\[2\baselineskip]
{\Large Indigo Laboratories, Inc.}\\[0.5\baselineskip]
{\large info@indigo-labs.io}\\[3\baselineskip]
{\large November 2022, v1.0.1}
}
\end{titlepage}
\tableofcontents
\hypertarget{motivation}{%
\section{Motivation}\label{motivation}}
For most of the world's population, important financial tools are
inaccessible. This is exemplified by the fact that two people can share
the same education, perform the same work, and put in the same amount of
effort, yet not have the same development possibilities. One could have
access to a share of the global economy's growth, while the other may be
left out.
It's brutal and unfair. Until now, borders have limited human
development. With the advent of blockchain technology, we are amid a
global switch in the financial foundation we use as a society to trade
and transact. At the forefront of this transformation, we present a new
solution to equalize the playing field by bringing the world's assets to
the blockchain. This solution allows anyone to access and participate in
new financial markets and take control of their own financial destiny,
paving the way for a new mantra: Tokenize Everything.
\hypertarget{introduction}{%
\section{Introduction}\label{introduction}}
This document (the ``Indigo paper'') presents the Indigo Protocol (the
``protocol'' or ``Indigo''), a synthetic assets protocol built for
Cardano\footnote{\href{https://www.coinbase.com/learn/crypto-basics/what-is-cardano}{Cardano}
is a public blockchain that supports smart contracts and custom tokens
utilizing an
\href{https://docs.cardano.org/plutus/eutxo-explainer/}{eUTXO}
architecture, an extension of
\href{https://unchained.com/blog/what-is-a-utxo-bitcoin/}{UTXO}.}.
Combining the benefits of a white paper\footnote{A
\href{https://cointelegraph.com/funding-for-beginners/what-is-a-white-paper-a-beginners-guide-on-how-to-write-and-format-one}{white
paper} is a marketing tool typically used to attract investors.} and a
yellow paper\footnote{A
\href{https://wikicryptocoins.com/currency/Yellow_Paper}{yellow paper}
typically contains complete specification details.}, the Indigo paper
provides both a high-level and detailed protocol specification for
educating the Indigo community. The Indigo paper serves as the basis to
introduce Indigo and kickstart complete community management.
Indigo has been committed to a \protect\hyperlink{fair-launch}{Fair
Launch} to bootstrap the protocol from the ground up. As part of this
initiative, no minting, pre-sale, or distribution of tokens related to
the protocol have been undertaken. This ensures that starting from
launch, Indigo will be community managed.
\hypertarget{synthetic-assets}{%
\subsection{Synthetic Assets}\label{synthetic-assets}}
Indigo creates synthetic assets which are known in the protocol as
iAssets (i.e., ``Indigo Assets''). iAssets are cryptocurrency assets
that derive their prices from tracked assets. Prices of iAssets are
influenced via protocol rules with the intention of matching the prices
of the tracked assets. One example of an iAsset is iBTC, representing a
synthetic version of Bitcoin (BTC); it is designed to mimic the price
action of BTC -- an asset that lives in separate ecosystem than Indigo.
\hypertarget{indigo-protocol}{%
\subsection{Indigo Protocol}\label{indigo-protocol}}
Indigo is a decentralized synthetics protocol for on-chain exposure to
assets with publicly verifiable prices. Using Cardano Plutus\footnote{\href{https://developers.cardano.org/docs/smart-contracts/plutus/}{Plutus}
is a smart contract platform for Cardano.} smart contracts, the
protocol enables the creation of iAssets. Prices of iAssets are soft
pegged\footnote{A
\href{https://coinmarketcap.com/alexandria/glossary/soft-peg}{soft
peg} is a strategy of maintaining the value of an asset against
another asset by utilizing an exchange rate mechanism.} to external
tracked assets; iAssets are overcollateralized in the form of a
decentralized Collateralized Debt Position (``CDP''). The protocol
enforces liquidations to ensure iAssets always maintain
overcollateralization, meaning the value of the collateral in the CDP
exceeds the intended value of the iAsset. In the event of a CDP becoming
undercollateralized, a liquidation reestablishes overcollateralization
by confiscating the collateral of the undercollateralized CDP and
replacing it with another user's overcollateralized CDP.
While minting an iAsset requires opening a CDP, after iAssets are minted
they are freely exchangeable. Anyone with a Cardano wallet can send or
receive iAssets, regardless of whether they have an open CDP.
\hypertarget{benefits-of-iassets}{%
\subsection{Benefits of iAssets}\label{benefits-of-iassets}}
Users can gain some benefits of owning an asset without being required
to obtain or own the asset themselves. This can be useful in cases where
assets are difficult for a user to obtain or for assets that live
elsewhere yet users desire to utilize on the Cardano blockchain.
iAssets can be used as building pieces to be included in a wider
financial strategy. This could include being part of derivative
contracts or constructing a widely diversified portfolio in one easy to
use system. Users can make trades without requiring the underlying
supply. For example, more iAsset could exist than total supply of the
real asset, allowing for leveraged trades that wouldn't be possible to
be settled using the real underlying assets.
iAssets have the following properties:
\begin{itemize}
\item
Tracking different type of assets and statistics; which allows the
creation of many new asset classes for emerging industries.
\item
No custodians; iAsset creation is fully decentralized.
\item
Low barrier to entry; anyone with cryptocurrency can use Indigo to
mint new synthetic assets or buy and trade them on the open market.
\item
Composability; iAssets can be used as a lego block, enabling their
integration into a larger financial ecosystem.
\end{itemize}
\begin{tabularx}{\linewidth}{l|l}
\caption{Examples of possible iAssets}
\tabularnewline
\toprule
\textbf{Name} & \textbf{Description}
\tabularnewline
\midrule
\endhead
\textbf{iBTC} & Tracks the price of BTC on the Bitcoin
blockchain
\tabularnewline
\midrule
\textbf{iETH} & Tracks the price of ETH on the Ethereum
blockchain
\tabularnewline
\midrule
\textbf{iUSD} & Tracks the price of dollar-denominated stablecoins on
any blockchain
\tabularnewline
\midrule
\textbf{iCPI} & Tracks the change of the Consumer Price Index over
time
\tabularnewline
\bottomrule
\end{tabularx}
\footnotetext{The
\href{https://www.bls.gov/cpi/}{Consumer Price Index} is a measure
of the average change over time in the prices of goods and
services.}
Generally, an iAsset names begin with the letter ``i,'' followed by the
name of the tracked asset.
\hypertarget{obtaining-iassets}{%
\subsubsection{Obtaining iAssets}\label{obtaining-iassets}}
There are two ways to obtain iAssets:
\begin{itemize}
\item
\textbf{Buying iAssets --} Users directly purchase iAssets via an
exchange (centralized or decentralized), thus gaining exposure without
having to request any loan.
\item
\textbf{Minting iAssets --} Users make interest-free,
overcollateralized loans against their cryptocurrency assets.
\end{itemize}
Users can buy iAssets from any exchange that has available supply. After
buying an iAsset, the user gains full control of the iAsset and can reap
benefits from price possible appreciation. Users can be assured that
iAssets maintain their intended pegged prices due to Indigo's
liquidation process.
The second way for users to obtain iAssets is by minting them within the
Indigo Web App by depositing collateral and creating a loan.
\hypertarget{collateralized-debt-positions}{%
\subsection{Collateralized Debt
Positions}\label{collateralized-debt-positions}}
Every iAsset is backed by collateral held in a Collateralized Debt
Position (a ``CDP''). A CDP is created by a user locking collateral (a
minimum of 10 ADA) into Indigo to mint a new iAsset. An iAsset is
borrowed against the \textbf{collateral}, creating a \textbf{debt}, and
this \textbf{position} is watched by liquidators to ensure
overcollateralization.
The value of the collateral in a CDP should always exceed a
governance-based Minimum Collateral Ratio (a ``MCR''). Each iAsset type
has its own MCR. Both the value of the collateral and iAsset price can
fluctuate over time, potentially causing a CDP to become
undercollateralized. A CDP is considered undercollateralized when its
collateral ratio (the ``CR'') falls below the iAsset's MCR. The CR is
the ratio of the collateral value relative to the minted iAsset value,
and can be calculated using the formula:
\[c = \frac{a}{md}\]
or:
\[c = \frac{ab}{mp}\]
Where:
\begin{itemize}
\item
\(c\) is the CR used to determine solvency
\item
\(a\) is the amount of ADA locked in the CDP
\item
\(b\) is the dollar-denominated price of ADA
\item
\(p\) is the dollar-denominated price of the iAsset's tracked asset
\item
\(d\) is the ADA-denominated price of the iAsset's tracked asset
\item
\(m\) is the amount of iAsset minted from the CDP
\end{itemize}
When CR drops below MCR, the CDP is considered insolvent and eligible
for being frozen, which can then lead to
\protect\hyperlink{stability-pools}{liquidation} to ensure the
reestablishment of solvency.
\hypertarget{cdp-and-iasset-example}{%
\subsubsection{CDP and iAsset Example}\label{cdp-and-iasset-example}}
As an example, assume Violet wants to mint 100 iDOT (\(m\)). DOT is
trading for \$15 (\(p\)). Violet has 2,000 ADA (\(a\)) she's willing to
use as collateral to borrow iDOT. ADA is trading for \$1.28 (\(b\)).
Violet deposits 2,000 ADA into Indigo to mint 100 iDOT. A CDP is created
consisting of 2,000 ADA. Violet now owns 100 iDOT and owes 100 iDOT to
Indigo. Violet can still earn
\protect\hyperlink{cdp-liquid-staking}{staking rewards} from her 2,000
ADA, but cannot transfer it because it now is used as collateral. To
regain control of her ADA, Violet must return 100 iDOT.
Violet's CR is \textasciitilde171\%:
\[c = \frac{ab}{mp} \therefore \frac{2000 \times 1.28}{100 \times 15} = \ \sim 1.71\]
As the price of either DOT or ADA changes, CR changes too. When CR drops
below the iDOT's MCR, Violet's CDP is subject to liquidation.
If the price of ADA increases to \$1.40 (\(b\)) and DOT increases to
\$19 (\(p\)), then Violet's CR drops to \textasciitilde147\%:
\[\frac{2000 \times 1.4}{100 \times 19} = \sim 1.47\]
If the iDOT MCR was 150\%, Violet's CDP could be liquidated. Upon
liquidation, Violet would lose her 2,000 ADA collateral deposit. Violet
could still have her 100 iDOT, worth \$1,900 (\$19 x 100). The 2,000 ADA
she lost would be worth \$2,800 (\$1.40 x 2000). Therefore, Violet could
have lost \$900 of value (\$2,800 - \$1,900).
To have prevented liquidation, Violet needed to either add more ADA into
her CDP to increase its CR, or close the CDP by returning the 100 iDOT
she borrowed.
\hypertarget{cdp-actions-and-states}{%
\subsubsection{CDP Actions and States}\label{cdp-actions-and-states}}
Several actions can be taken against a CDP by users of the protocol:
\begin{itemize}
\item
\textbf{Open Position --} Creates a CDP by a user depositing a minimum
of 10 ADA as collateral, and associates it with an iAsset type that
can be minted. The user who creates the CDP becomes the CDP's owner.
\item
\textbf{Deposit Collateral --} An owner can increase CR by depositing
more collateral.
\item
\textbf{Withdraw Collateral --} An owner can lower CR by withdrawing
part or all the collateral. Collateral cannot be withdrawn if it
brings CR below the iAsset's MCR. If a CDP has no debt (i.e., no
minted iAsset) and all collateral is withdrawn, then the CDP is
closed.
\item
\textbf{Borrow iAsset --} An owner can lower CR by minting an iAsset.
This increases the amount of debt against the CDP. More iAsset cannot
be minted if it brings CR below the iAsset's MCR.
\item
\textbf{Repay Debt --} An owner can increase the CR by repaying debt
in the form of iAsset. When the debt is repaid, the iAsset is burned
(i.e., destroyed). More iAsset cannot be burned than debt owed by the
CDP.
\item
\textbf{Freeze --} If CR is below the iAsset's MCR, any user can
submit a transaction for that CDP to be frozen. Upon freezing, a CDP
is no longer usable or interactable by its former owner. The former
owner loses all access and rights to the CDP.
\item
\textbf{Liquidate --} If a CDP is frozen, any user can submit a
transaction for that CDP to be liquidated. Upon liquidation, CDP debt
is repaid by withdrawing iAsset from a
\protect\hyperlink{stability-pools}{Stability Pool}. As debt is
repaid, collateral is withdrawn from the CDP. If all debt is repaid,
then all collateral is withdrawn, and the CDP is closed.
\item
\textbf{Merge --} If two or more CDPs are frozen, any user can submit
a transaction for them to be merged into one CDP. Upon merging, all
but one of the CDPs requested to be merged are closed, and their debt
and collateral are transferred into a single CDP.
\end{itemize}
A CDP has the following states:
\begin{itemize}
\item
\textbf{Open --} A CDP that is fully collateralized, with its CR value
above the iAsset's MCR. Open CDPs remain fully usable by their owners.
\item
\textbf{Insolvent --} A CDP that is undercollateralized, with its CR
value below the iAsset's MCR. Insolvent CDPs remain fully usable by
their owners but eligible to be frozen by any user.
\item
\textbf{Frozen --} A CDP that has been confiscated by the protocol and
no longer has an owner. A CDP becomes frozen after a user successfully
submits a request against an insolvent CDP. Frozen CDPs cannot be used
by their former owners.
\item
\textbf{Closed --} A CDP whose CR value is zero, no longer having any
collateral or debt. A CDP is closed after all its debt is repaid and
its collateral is withdrawn.
\end{itemize}
\hypertarget{cdp-liquid-staking}{%
\subsubsection{CDP Liquid Staking}\label{cdp-liquid-staking}}
Indigo supports liquid staking of ADA collateral within CDPs, allowing
users to continue earning ADA rewards from the Cardano network on top of
utilizing the benefits of iAsset minting. This improves capital
efficiency and doubles reward capabilities -- rewards earned from
Cardano, and rewards earned from Indigo. Liquid staking is a unique
capability offered by Indigo and will help attract liquidity from
outside of the Cardano ecosystem to encourage more participation,
bringing iAssets to a wider audience.
To use liquid staking, users must first have their Cardano wallet staked
to their preferred stake pool\footnote{Indigo supports any
\href{https://cardano.org/stake-pool-delegation/}{Cardano stake pool}.
A stake pool is a Cardano network node that forms the basis for
consensus on the blockchain. Users can
\href{https://www.adastrong.com/staking/}{delegate their ADA} to stake
pools to earn ADA rewards from the Cardano network.}. The Indigo Web
App automatically attaches the user's staking key when creating a CDP.
All ADA deposited into that CDP will continue to earn staking rewards
from the user's chosen stake pool, accruing in the user's wallet.
If the user delegates their wallet to a new stake pool after creating
the CDP, the CDP will automatically earn rewards from the new stake
pool.
\filbreak
\hypertarget{indy}{%
\subsection{INDY}\label{indy}}
The Indigo DAO Token (``INDY'') is a Cardano native asset that can be
owned, held, or transferred by any user. INDY serves as Indigo's utility
token, with one of its key purposes being to allow on-chain voting on
DAO proposals (a ``proposal'')\footnote{The usage of INDY and the
process of voting is described further in the
\href{https://github.com/IndigoProtocol/indigo-dao}{Indigo DAO
Constitution and Voting Procedures}.}. The total supply of INDY is 35M
with a 6 decimal precision. INDY's monetary policy disallows future
minting and burning, therefore making the total supply constant and
unchanging. Indigo is undergoing a \protect\hyperlink{fair-launch}{Fair
Launch}, therefore there has been no pre-sale nor private distribution
to investors prior to launch.
INDY will be distributed every Cardano epoch (five days), over a period
of five years. There will be three distribution schedules for the
community:
\begin{itemize}
\item
\textbf{Governance Distribution --} Users who opt to stake their INDY
into Indigo and participate in \protect\hyperlink{governance}{DAO
Governance} by voting on proposals will be eligible for INDY rewards
proportionally to their pro-rata share of staked INDY.
\item
\textbf{Stability Pool Distribution --} Users who stake their iAssets
in \protect\hyperlink{stability-pools}{Stability Pools} to ensure the
protocol's solvency will be eligible for INDY rewards proportionally
to their pro-rata share of staked iAssets.
\item
\textbf{Liquidity Distribution --} Users who provide
\protect\hyperlink{liquidity-staking-rewards}{liquidity} in DEXes and
stake their LP tokens in Indigo will be eligible for INDY rewards
proportionally to their pro-rata share of staked LP tokens.
\end{itemize}
\hypertarget{indy-distribution}{%
\begin{figure}[htbp]
\centering
\includesvg[width=17cm,inkscapelatex=false]{
images/tokenomics/distribution.svg}
\caption{Distribution of INDY over five years}
\end{figure}}
\filbreak
\hypertarget{fair-launch}{%
\subsubsection{Fair Launch}\label{fair-launch}}
Indigo has approached its tokenomics and launch from a new perspective,
with a focus on gaining community trust first, allowing the protocol to
be built with a vision of fairness. Early supporters of Indigo will be
among the first receivers of INDY for use within the protocol. INDY will
be distributed predominantly to users of the project, rather than
investors or special insiders.
After being in development for almost two years without investor
funding, the initial Core Contributors of Indigo who have built the
codebase -- and will continue to improve, optimize, and develop new
features -- will receive tokens vested over two years beginning the day
of mainnet launch.
Indigo has not minted, sold, allocated, distributed, or promised any
tokens to third parties. The purpose of INDY is to be used within the
protocol; until the launch of mainnet, there is or has been no use for
INDY to be distributed or sold. Indigo's Fair Launch has helped
alleviate community concerns over rug-pulling or the team not delivering
a useful and highly functional product. No purchasing of tokens will be
possible until the community has an opportunity to see and use Indigo
for themselves.
Indigo's Fair Launch is a novel approach to bootstrapping liquidity,
allowing the Indigo community to become highly collaborative, driven,
and vibrant. This is evidenced by the Indigo DAO Kickstart -- an effort
to decentralize the launch of Indigo -- which has received wide praise.
This approach bolsters Indigo's core tenet of decentralization, making
the launch itself a decentralized decision involving possibly thousands
of individuals from around the world. Indigo will be governed by the
community immediately upon launch. There will be no barriers for use.
Anyone, regardless of traits, will be able to gain benefit from Indigo's
iAssets. Indigo has established a new framework to allow for
community-led projects to come to life, which will be used to generate
INDY in as fair of a manner as possible.
\hypertarget{token-generation-event}{%
\subsubsection{Token Generation Event}\label{token-generation-event}}
Indigo's Token Generation Event (the ``TGE'') will occur upon the
beginning of, and at no point prior to, deployment of the Indigo
Protocol to mainnet (which is currently anticipated to be November
20\textsuperscript{th}, 2022). Upon minting of INDY, the Initial Token
Distribution (the ``ITD'') will be as follows:
\begin{itemize}
\item
350,000 INDY to two or three DEXs approved by the Indigo community
\item
350,000 INDY to participants within the Indigo community
\item
21,000,000 INDY to one or more wallets (administrated by Indigo
Laboratories, Inc. at the direction of the Indigo Foundation on behalf
of the \protect\hyperlink{governance}{Indigo DAO}) to be used for the
sole purpose of community rewards distributions
(\protect\hyperlink{stability-pool-staking-rewards}{Stability Pools},
\protect\hyperlink{liquidity-staking-rewards}{Liquidity}, and
\protect\hyperlink{staking}{Governance})
\item
4,550,000 INDY to the \protect\hyperlink{indigo-dao-treasury}{DAO
Treasury Reserve}
\item
8,750,000 INDY will be allocated to Indigo Laboratories, Inc. for
future building, administering, and further developing the protocol,
with 7,875,000 being distributed to team members under a two-year
monthly vesting schedule
\end{itemize}
\hypertarget{indy-piechart}{%
\begin{figure}[htbp]
\centering
\includesvg[width=10cm,inkscapelatex=false]{
images/tokenomics/piechart.svg}
\caption{Allocation of INDY}
\end{figure}}
At launch, the circulating supply of INDY\footnote{A full detailed
spreadsheet of the distribution of INDY with specific dates and
allocations can be found in the open source
\href{https://github.com/IndigoProtocol/indy-tokenomics}{indy-tokenomics}
project.} will be 1,903,125; 350,000 of which being allocated to
Cardano DEXs via an Initial Liquidity Event.
\hypertarget{initial-liquidity-event}{%
\subsubsection{Initial Liquidity Event}\label{initial-liquidity-event}}
Indigo's Initial Liquidity Event (the ``ILE'') will distribute and make
INDY publicly available. The ILE will consist of three phases in
conjunction with the launch of Indigo:
\begin{enumerate}
\item
Airdrop
\item
Liquidity Bootstrapping Event (the ``LBE'')
\item
Liquidity Pool Creation
\end{enumerate}
\hypertarget{indigo-airdrop}{%
\paragraph{Indigo Airdrop}\label{indigo-airdrop}}
Indigo's airdrop will distribute 350,000 INDY to participants within the
Indigo community. The airdrop will consist of two phases:
\begin{enumerate}
\item
Distribution to early participants of the Indigo community
\item
Distribution to stakers supporting the decentralization of Cardano and
Indigo
\end{enumerate}
Each phase will be distributed 175,000 INDY. Cardano wallet addresses
have been collected by Indigo Laboratories, Inc. (the ``Labs'') and will
be forwarded to Vending Machine.\footnote{\href{https://vm.adaseal.eu/about}{Vending
Machine} is a Cardano token distribution system.} The Labs will send
350,000 INDY to Vending Machine, who will subsequently distribute INDY
to qualified recipients via the Indigo Web App.
To redeem airdropped INDY, qualified users will need to connect their
wallet to the Indigo Web App and follow the in-app instructions to
withdraw INDY into their wallets. Users will be able to determine
whether they qualify for the airdrop upon connecting their wallets and
navigating to the appropriate reward page. Users will have until March
31\textsuperscript{st} 2023 to withdraw their INDY rewards into their
wallets. Any INDY not withdrawn by this time will not be eligible to be
withdrawn by users and instead will be subject to redistribution by the
Labs.
Members or affiliates of the Labs or Indigo Foundation make no promises
on the distribution of tokens. No action or series of actions guarantees
a user to receive INDY.
\hypertarget{airdrop-1-distribution-to-early-participants}{%
\paragraph{Airdrop 1: Distribution to Early
Participants}\label{airdrop-1-distribution-to-early-participants}}
Qualified participants for Airdrop 1 fit into either one of two
categories:
\begin{enumerate}
\item
Participants who showed their interest by successfully completing each
of the processes, which were:
\begin{enumerate}
\item
Participate in Indigo's
\href{https://forum.indigoprotocol.io/t/indigo-initial-token-distribution-vote/1399}{first
temperature check} in the Indigo Forum
\item
Connect their Indigo Forum account with their Discord account
\item
Complete the \href{https://quiz.indigoprotocol.io/}{Indigo Quiz} to
become an Indigo Guru
\end{enumerate}
\item
Participants who aided the Indigo community, as identified by the
Labs' team
\end{enumerate}
172,751.924982 INDY is to be distributed to wallets that fit into the
first category, and 2,248.07304 INDY is to be distributed to wallets
that fit into the second category. A total of 3,458 wallets qualified
for the first category, and 30 wallets qualified for the second
category.
Addresses deemed to be suspicious or fraudulent were removed from the
first category.
\hypertarget{airdrop-2-distribution-to-decentralization-stakers}{%
\paragraph{Airdrop 2: Distribution to Decentralization
Stakers}\label{airdrop-2-distribution-to-decentralization-stakers}}
175,000 INDY will be distributed as a reward to users who helped boost
decentralization of the Cardano network by staking with a member of the
\href{https://singlepoolalliance.net/}{Cardano Single Pool Alliance}
(CSPA). To have qualified for receiving this reward, a user had to have
been staking a minimum of 10 ADA in one of 357 pools on November
6\textsuperscript{th}, 2022. A total of 79,679 wallets qualified to be
eligible to withdraw rewards. Each user who connects a qualified wallet
to the Indigo Web App will be eligible for a one-time withdrawal of 5
INDY on a first come first serve basis.
\hypertarget{indigo-liquidity-bootstrapping-event-and-liquidity-pool-creation}{%
\paragraph{Indigo Liquidity Bootstrapping Event and Liquidity Pool
Creation}\label{indigo-liquidity-bootstrapping-event-and-liquidity-pool-creation}}
In partnership with \href{https://minswap.org/}{Minswap}, Indigo will
begin a Liquidity Bootstrapping Event (the ``LBE'') on November
14\textsuperscript{th} 2022\footnote{More information about Indigo's LBE
will be available on
\href{https://indigoprotocol1.medium.com/}{Indigo's Medium}.}. The
goal of the LBE is to use a decentralized and transparent process to
discover a fair price for INDY. After the LBE starts, users can deposit
ADA into the Minswap Launch Bowl. Deposited ADA will be used to create
INDY/ADA Liquidity Pools (a ``LP'').
The Minswap LP will consist of 75\% of deposited ADA in the LBE paired
with 262,500 INDY. Depending on slippage analysis at the time of the LBE
end date of November 20\textsuperscript{th} 2022, 25\% of deposited ADA
in the LBE paired with 87,500 INDY will be used to create LPs on either
one or two DEXs approved by the Indigo community.
\hypertarget{stability-pools}{%
\subsection{Stability Pools}\label{stability-pools}}
A Stability Pool (a ``SP'') helps maintain iAsset solvency by acting as
the source of liquidity to repay debt from liquidated CDPs, thus
intending all minted iAsset supply to remain overcollateralized.
Every supported iAsset has its own SP (e.g., iBTC SP, iETH SP). A user
can deposit corresponding iAsset into a SP to become a SP staker (a ``SP
staker''). SP stakers provide stability to the protocol by offering
their iAssets to be used for liquidations.
SP Liquidation (``SPL'') is the process of utilizing a SP to liquidate a
CDP, where iAsset deposited in a SP are burned to repay the debt of an
undercollateralized CDP. In exchange, SP stakers earn a share of the
collateral that was confiscated from liquidated CDPs. When CR falls
below the iAsset MCR, the CDP is considered insolvent and subject to
liquidation, which amounts to canceling the debt where:
\begin{enumerate}
\item
the same amount of iAsset debited by the CDP is burned from the
corresponding SP; and
\item
the collateral from the CDP is proportionally distributed to SP
stakers.
\end{enumerate}
As CDPs become liquidated, SP stakers lose a pro-rata share of their
iAsset deposits while gaining a pro-rata share of the liquidated
collateral. An incentive for SP stakers to participate in SPL is the
possibility of earning net gains from liquidations. Under normal
circumstances, the value of the collateral earned may be greater than
the value of the canceled debt, because a liquidated CDP is likely to
have a CR value above 100\% (the value of the iAsset).
SPL first requires that CDPs are frozen. Each liquidation request of a
CDP is executed against its iAsset's associated single SP. Optionally,
users can make requests for CDPs to be merged. As illustrated in the
\protect\hyperlink{cdp-merge-figure}{CDP merge figure}, three CDPs could
be merged into a single CDP. The resulting merged CDP can then be
liquidated against the SP. While only a single liquidation can occur per
SP at once, multiple CDPs can be merged in parallel. Merging CDPs
effectively enables multiple frozen CDPs to be liquidated
simultaneously.
\hypertarget{cdp-merge-figure}{%
\begin{figure}[htbp]
\centering
\includesvg[width=10cm,inkscapelatex=false]{images/merge-cdp.svg}
\caption{Three CDPs being merged into one}
\label{cdp-merge-figure}
\end{figure}}
Indigo allows for both full and partial liquidations. A full
liquidation, as illustrated in the \protect\hyperlink{spl-figure}{SPL
figure}, repays all debt of a CDP and closes the CDP. A partial
liquidation, as illustrated in the
\protect\hyperlink{spl-figure}{partial SPL figure}, repays some debt of
a CDP and keeps the remaining position frozen. If a CDP debt is higher
than the entire amount of iAssets in the related SP, the protocol
attempts to cancel as much debt as possible with the iAsset supply
available. Any remaining non-liquidated collateral and debt of the CDP
remains frozen until more iAsset is deposited into the SP and another
liquidation is initiated.
\hypertarget{spl-figure}{%
\begin{figure}[htbp]
\centering
\includesvg[width=7cm,inkscapelatex=false]{images/spl.svg}
\caption{Illustration of a full liquidation where sufficient funds are
present in the SP}
\label{spl-figure}
\end{figure}}
\hypertarget{partial-spl-figure}{%
\begin{figure}[htbp]
\centering
\includesvg[width=7cm,inkscapelatex=false]{images/partial-spl.svg}
\caption{Illustration of a partial liquidation where there are
insufficient funds present in the SP}
\label{partial-spl-figure}
\end{figure}}
\filbreak
Values for the liquidated CDP and associated SP can be calculated using:
\[w = a - min\left\{ a,b \right\}\]
\[x = d - min\left\{ a,e \right\}\frac{d}{a}\]
\[y = e - min\left\{ a,e \right\}\]
\[z = g + min\left\{ a,e \right\}\frac{d}{a}\]
Where:
\begin{itemize}
\item
\(w\) is the updated debt of the CDP after liquidation
\item
\(x\) is the updated amount of collateral in the CDP after liquidation
\item
\(y\) is the updated amount of iAsset in the SP after liquidation
\item
\(z\) is the updated amount of ADA rewarded to the SP after
liquidation
\item
\(a\) is the amount of debt of the CDP before liquidation
\item
\(b\) is the amount of iAsset in the SP
\item
\(d\) is the amount of collateral in the CDP before liquidation
\item
\(e\) is the amount of iAsset in the SP before liquidation
\item
\(g\) is the amount of ADA rewarded to the SP before liquidation
\end{itemize}
\hypertarget{stability-pool-staking-fees}{%
\subsubsection{Stability Pool Staking
Fees}\label{stability-pool-staking-fees}}
Users can stake and unstake iAssets from SPs at any time. To stake
iAsset, a user needs to create a SP account by depositing 7 ADA and the
amount of iAsset they desire to stake. 2 ADA is returnable to the user
upon closing the SP account, which involves withdrawing all their iAsset
and earned rewards. 5 ADA is taken as a fee. Users pay a 1 ADA fee for
each new iAsset deposit into their SP account.
SP fees are collected and distributed to all SP stakers as part of
liquidation rewards.
\hypertarget{stability-pool-liquidation-rewards}{%
\subsubsection{Stability Pool Liquidation
Rewards}\label{stability-pool-liquidation-rewards}}
As liquidations occur, SP stakers lose a pro-rata share of iAsset
deposits and gain a pro-rata share of ADA rewards. A SP ``product
constant'' maintains mathematical state of liquidations occurred. When a
SP is first created, its product constant is set to one. Upon
liquidation, the product constant can be calculated using the formula:
\[c=a\left ( 1 - \frac{b}{d} \right )\]
Where:
\begin{itemize}
\item
\(c\) is the new product constant
\item
\(a\) is the current product constant
\item
\(b\) is the amount of iAsset debited from the SP for the liquidation
\item
\(d\) is the total amount of iAsset in the SP
\end{itemize}
A SP ``compounded constant'' maintains the mathematical state of rewards
earned from liquidations relative to the product constant. When a SP is
first created, its compounded constant is zero. Upon liquidation, the
compounded constant can be calculated using the formula:
\[r = a + \frac{bc}{d}\]
Where:
\begin{itemize}
\item
\(r\) is the new compounded constant
\item
\(a\) is the current compounded constant
\item
\(b\) is the amount of ADA earned during the liquidation
\item
\(c\) is the product constant before the liquidation
\item
\(d\) is the total amount of iAsset in the SP before the liquidation
\end{itemize}
When an action is taken against a SP, such as a deposit of an iAsset or
a liquidation, its state is updated. The SP state data structure --
represented in the \protect\hyperlink{stability-pool-state}{SP state
table} -- is stored within the UTXO of the SP; ``iAsset Deposit''
records the number of iAsset in the SP deposited by all users.
A SP epoch ends when all iAsset from a SP is drained via liquidations.
Epoch is a running tally of the number of occurrences there have been
when the SP's total iAsset deposit reached zero. Upon updating the SP
state, if the total iAsset in the SP is to be set to zero, then this
marks the end of an epoch. At the end of an epoch, the following occurs:
\begin{itemize}
\item
Epoch is recorded in a UTXO paired with the compounded constant value
after the latest liquidation
\item
The SP state is updated with the values:
\begin{itemize}
\item
epoch incremented by one;
\item
product constant set to one; and
\item
compounded constant set to zero.
\end{itemize}
\end{itemize}
\hypertarget{stability-pool-state}{}
\begin{tabularx}{\linewidth}{l|l}
\caption{State stored upon updates to a SP}
\tabularnewline
\toprule
\textbf{Name} & \textbf{Description}
\tabularnewline
\midrule
\endhead
\textbf{Product Constant} & The new product constant
(\(c\))
\tabularnewline
\midrule
\textbf{Compounded Constant} & The new compounded reward
(\(r\))
\tabularnewline
\midrule
\textbf{iAsset Deposit} & The updated amount of iAsset deposited into
the SP
\tabularnewline
\midrule
\textbf{Epoch} & The current epoch
\tabularnewline
\bottomrule
\end{tabularx}
\hypertarget{stability-deposits}{%
\begin{figure}[htbp]
\centering
\includesvg[width=8cm,inkscapelatex=false]{images/stability-deposits.svg}
\caption{iAsset being deposited into a new SP}
\label{stability-deposits}
\end{figure}}
When a user deposits iAsset into a SP, a SP staker ``account record'' is
created or updated for that user's account. The account record is
represented the same as SP state and stored within the UTXO of the SP
staker's position; iAsset Deposit records the number of iAssets owned
individually by the SP staker. All other values for the account record
are copied from the SP state.
\hypertarget{stability-liquidation}{%
\begin{figure}[htbp]
\centering
\includesvg[width=7cm,inkscapelatex=false]{images/stability-liquidation.svg}
\caption{SP state being updated after a liquidation occurs}
\label{stability-liquidation}
\end{figure}}
\filbreak
During a liquidation, iAsset is extracted from a SP. Proportionally, the
ownership share of the iAsset within each SP staker's position is
reduced. If the epoch in the account record matches the epoch in the SP
state, the amount of iAsset an individual SP staker holds can be
calculated using:
\[m = a\frac{c}{b}\]
Where:
\begin{itemize}
\item
\(m\) is the amount of iAsset owed to the SP staker
\item
\(a\) is the amount of iAsset the SP staker deposited (retrieved from
the account record)
\item
\(c\) is the current product constant (retrieved from the SP state)
\item
\(b\) is the product constant when the SP staker deposited their
iAsset (retrieved from the account record)
\end{itemize}
\hypertarget{stability-user-rewards}{%
\begin{figure}[htbp]
\centering
\includesvg[width=10cm,inkscapelatex=false]{images/stability-user-rewards.svg}
\caption{SP staker rewards after a liquidation has occurred}
\label{stability-user-rewards}
\end{figure}}
If the epoch in the account record does not match the epoch in the SP
state, then the amount of iAsset owned to the SP staker (\(m\)) is zero.
This is due to all the user's iAsset having been burned during a
previous epoch.
\hypertarget{stability-epoch}{%
\begin{figure}[htbp]
\centering
\includesvg[width=10cm,inkscapelatex=false]{images/stability-epoch.svg}
\caption{Illustration of a new SP epoch beginning after
a liquidation drains all iAsset}
\label{stability-epoch}
\end{figure}}
\hypertarget{stability-user-epoch-rewards}{%
\begin{figure}[htbp]
\centering
\includesvg[width=10cm,inkscapelatex=false]{images/stability-user-epoch-rewards.svg}
\caption{SP staker rewards after SP has been
drained and a new epoch has begun}
\label{stability-user-epoch-rewards}
\end{figure}}