From c721029cbb38b574b50acbfc492d568b3dd34810 Mon Sep 17 00:00:00 2001 From: jeelimm Date: Fri, 1 Apr 2022 06:42:55 +0000 Subject: [PATCH] GitBook: [#174] Docs update for TeFi Oracle and Migration contract additions --- .gitbook/assets/image (1).png | Bin 0 -> 43381 bytes .gitbook/assets/image (10).png | Bin 0 -> 37871 bytes .gitbook/assets/image (12).png | Bin 0 -> 36892 bytes .gitbook/assets/image (15).png | Bin 0 -> 43381 bytes .gitbook/assets/image (2).png | Bin 0 -> 46280 bytes .gitbook/assets/image (24).png | Bin 0 -> 37097 bytes .gitbook/assets/image (25).png | Bin 0 -> 49450 bytes .gitbook/assets/image (28).png | Bin 0 -> 53802 bytes SUMMARY.md | 8 +- contracts/admin-manager.md | 394 +++++++ contracts/architecture.md | 83 +- contracts/factory.md | 87 +- contracts/gov.md | 516 ++++---- contracts/mint.md | 309 +++-- contracts/oracle.md | 401 ------- contracts/tefi-oracle.md | 1037 +++++++++++++++++ networks.md | 6 +- .../contract-migration-procedure.md | 43 + protocol/governance/modify-gov-parameters.md | 14 +- protocol/governance/modify-poll-parameters.md | 66 ++ .../governance/oracle-whitelist-procedure.md | 23 + protocol/governance/pre-ipo-procedure.md | 4 +- protocol/governance/proposal-types.md | 282 +++-- protocol/governance/whitelist-procedure.md | 6 +- protocol/mirrored-assets-massets.md | 2 +- .../whats-new-for-mirror-v2.md | 8 +- 26 files changed, 2253 insertions(+), 1036 deletions(-) create mode 100644 .gitbook/assets/image (1).png create mode 100644 .gitbook/assets/image (10).png create mode 100644 .gitbook/assets/image (12).png create mode 100644 .gitbook/assets/image (15).png create mode 100644 .gitbook/assets/image (2).png create mode 100644 .gitbook/assets/image (24).png create mode 100644 .gitbook/assets/image (25).png create mode 100644 .gitbook/assets/image (28).png create mode 100644 contracts/admin-manager.md delete mode 100644 contracts/oracle.md create mode 100644 contracts/tefi-oracle.md create mode 100644 protocol/governance/contract-migration-procedure.md create mode 100644 protocol/governance/modify-poll-parameters.md create mode 100644 protocol/governance/oracle-whitelist-procedure.md rename whats-new-for-mirror-v2.md => readme/whats-new-for-mirror-v2.md (81%) diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png new file mode 100644 index 0000000000000000000000000000000000000000..40dbebceae7c592de8ebb5d71ededc41edeae452 GIT binary patch literal 43381 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%0A+gi7daS~}}pLfm~-qbr^q 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 A4gdfE literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (10).png b/.gitbook/assets/image (10).png new file mode 100644 index 0000000000000000000000000000000000000000..6b67b2c080777ab50c74244cef9c92db97824f6c GIT binary patch literal 37871 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 literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (12).png b/.gitbook/assets/image (12).png new file mode 100644 index 0000000000000000000000000000000000000000..30ded46328b685d24b43acb42f3555a1fd1c1f03 GIT binary patch literal 36892 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

j}D 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%0AeOcXGA-KKGqJPvSPsEGTT` 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 literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (15).png b/.gitbook/assets/image (15).png new file mode 100644 index 0000000000000000000000000000000000000000..40dbebceae7c592de8ebb5d71ededc41edeae452 GIT binary patch literal 43381 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%0A+gi7daS~}}pLfm~-qbr^q ze#SR^?dwLfzdzhWxSP0RXi(B&maArKnW5$CvPxhEN3o&E+v@toJ5DnFghww^093* zW6+FcfZ3+)ys=3ii&z^A=c$=`4tb8RL=#N9B>|#k|HTm(EZc#t_}rh~iAfcArzFaw z!Y=tPU0J*NnbvcJzV6hi#d5O12v!?5l+c3cQR>J^g-mB&-DA~6xKE%^Pkn72!vlxt zDqQkEzP$Bx;SC`eb8U6ot;AI9`@DXpKZLC2d*^~3aBy&9S}R^^Y1=jYojec*B53e} z(J`kmcI|l!5WLr+qW>@x%T@P9)#(5BZ8g?I@UKzKl6*u{>F+OC8(oE{PR!_$df{x! z#92bn^w3q$x-PpUj~xETe>R>1=wgHlED|mPz3(aqP0zYkFA;@0a`sIxsn8;c#{WVW z`rm6>le-GpeFy}fqVT!S%(=D@RaAAo$=$<4=lZ>7WICCwtSmb8sf%pF)-PEFKc#ON zY8eR{v31{X#KU*c$~$iYBHpU44rb2@-fVs-h3?Vh0UdI}W+>w^;I~dkeT+apH@-9~ zF!BZt37@_p(A zR?REjT&pR9gAQjws|{VLWKD0_{;>(Rap!GlC-7||7xvc1U<$B9r?x{idmZ-a%W4=8 z)IC&tV2tAsZ1KHHrWeU%UavF&O2%3pIh@d;bpe}VcuLo>h+mnvklT1foz|$;%)4G86F^TQxXjf*L zDsGa%4L~|@A-C6ceH+DtEbzr>pS7%x%O?HiZ^rK2_4lJMtM4`c1mK!r2=jmbY>DOoZ zNq~fB|MF+ANlOCkK1}F%hl_e_E2h`wn_Bw$(4?eX+I$$Y_Ov3prFd9}8Rq21fv`}< zZ8uZ5y_3C`<>fE8uWAvs!#~+wrgBZ@99FV7xTgRCPEZi`@vWlL(n}3KzP@u|Nk=J;)jEXZ?5;}>%+s;4vCZRqdgSZ-5`)l^L+Wtc z_h}ENubt}n)__}3ZzIK)j$Jp;Ry~f}!_+KDQJG4=S3E#aZ(4)lPLSs&KngBKS}2kbJpe)TjLrbD$8q^_Ov)u7pk5$5TDGU>?PFUyZtI_~ zCaru9dawca)+62beck)gh^N*jYelTrS*@H3g?0zrgn#+)Rf*Z!Zgr8yzusCcJZ1I8 zq2$e^p7Um+Np6H&>P-|ztR0l!5o7OzlHf&2T-=?f=k1FNK&dkee{;FvzU$l z%}#WsSDB&U)Xoyu=bmS=>mnyJr|G+9Zx)a-g1V=Ne8zJm&ro1hRoYK50pk6sq@<;* zbd_g2$#=H2_gKXq@a%EB-idFV(IR50(@|?M_l3`4`48s3XXUi5i8P(J5;j~^!MHKF zE3azgr~xaE|K?UxZX$8^{o;7nDg?R_+VdL3e34ouN5_-yoGiCMXc`vmx@uT)=&Y_D<1)vr`^7AKrj_h@ z5dOi;_j-}j?b@!GNjbi1W#7Z-YsKU_g_>5?%DG>l-YJK?w8i=KJ)y7pUzevePldDQ`CqR#cac@lEp0^5T+X198k0$_jP1{B*18$ zqsoK+t?G?S54fArQ;(&tPU}a!OtNB8y6O`m+JskkMCH>KZHQ?f^;`RU=|=98$r|>> zi37dNt90#^BezqU5a$G;i(#t{(eX75iSbh*c9p<8kaIJltGS!l(rh?(giVtuRCkv^ z!Oa4rFcy+OJVD6Ln-YM3|BwF;BoXDQE18)H9!|Gl@cQq|?7sPDD3feEXc9 z7MR&DZUQrVpXS`N`ih!AHTf6DfS9uyTd1)h(UAZc99+@{uwtbCTXp9i4rSiPaak7I zI>izVUX4QzIfM|JOu{%eDdaF)BBw$`#vu`r!^}vSn0K^ID^ruR^+vlnv`)iLtwXd3 z8}lL|A^R@&{!M?pf4$eW|Gx8=Yp%!Rdgk%`=68SZ&-Z&fIH2u*K)^jn711McwsNB| z?YPes!m#zPc~q*HXU2`)TH1*)hR4zTw)1kl%Tqhpy8il9OUs~RHK7h>GM|FR?new| za^Jn|)JW9w=V-1@`8UOS-Wi_@51i<=4c%T;6Zyq<=Uv&o9y2~_Qt6P4)ipd!hYd%_ z?#e{!OQCeKb@z^c9{D3bKmW*~2Q~y!)s;7X86e8{#p-gFV2gsyx_Y|yK7LOLgMr#z zF0Xa4QL5i?VIy-&1Y}=FuPcoMLqobPP(9>*@zTF0;K_|0yVHN*a7MF&(;xxn(F@_Z zuC9u1FA;nq2)nYsX@KHx%3Yymg|cK92{uEHN$_75m2t#&(<<=pvZ&I0ctj=AE&h5t8Q_2k)zsD^Y}zZo zN=N`Ww)}3S17?x&!JOS^HqNp?9vaG)eVJ4GwDouz9o!&uU8b}bqEyyY=%8A;nZBdN zyHJtV`rdgUa~te;gaibfI3~Z$v7v)E{_Swhm#)uX6T>L!Z_Vx08$SD9&JeJz)JG0? z-!-l8B*j?fo}jAXDzUD5QkSthIz$Ji(fuB-@#|h%Zmx@pzm%k;vW*h0E|{mB7Zu5i z8{kb^^1cR=nI#DmwsOD1a@s-5G)Z5Z?}!>3&b6n^9bxq?91`beQBM~cq^Sk)O#7qw9 zN1x1ja0#Lqq}Gt5X@QW*S3c?ETa{E1F*qB2ST6S#PX`+4mc<3H?)`k~k;%WkM9gm) zjh697KI@<7&K({%Dv`$U3a))2awgQrJTtAX(=Vj@E~&dgjj@fVLLgY1lXCu)l4l?P zrig6Ajire9)7I_{@hG9MO(I>738uX&Ev!_3l~!_*D-3^YDcoaU156Z(t1|~7Fn<2h z55-{pAp%jSD2g>fJmuee-(t&4^Uv8qAJI@^Sg#9O#r}~cq`H7H(W`M4wegdazeto; zX@ERx_Ia{}zM8{lJx2Cg2L#+8^7Ua@wS{2ugVuFK7=<-O$mxGv^)+&-2<m)7* zUJ=CLa!@@L#;f&*RfB@cuk7OgPQPB$7jU}!p!{OR3#MBCt;18Z zPB5+jkQ5j)spk+HadRZh!h?z|CxG3m^F;aA9lPWbZGB-Lk^A}`hpXZs?iZnPT-V35 z+aZ$@hEkz(vnz+6tf=Uc8pq;FAtD|HJ!`M7uIfVa+C>w*k4EF@2RF#2DD-cRBS22| zX#DSz0k~q2XV#K9A82nND_Upe!i6*d|9dvqQ|xQ&>VhEuAbO!8lEwh8ajyA&6W6H? z{XGkxCxBDW8z^ME}O0Mcm|4z>5Gxg1Sn&tmnPdy9*%>9^!M{Wwlp=pR+_X1 zIX%l=m>5LX`spW6wdd0KndSRnltne3a?a%h6`Xew7K=@D=Z^4Tkr$oXtLAJW+sI-a z?LWLa;4vlbb21h(gg$JoZ{GnvW&3Op_wyCd-mWIB_YDGoSpUQ=;~OR;Y2(Ji{>IV0 zsMhL(fe$A=J=qot^70{MdZHiXNP!~L(|TR3PbT>R^6oOpGfE8>Z$6f*q>*{sfAY3( zhgXh7%vcvY#l+Or*Vkvqz8?wR_62Q3c%ucMv64_XfKT4q;OCiHX+UadVMm9(%0rgQ zv(1Ib=@;J}?dVBt6!W66{-Wd49z2k(GB=u7}Hg(8*E17aYt_7nj8C+rQBB z-25a#2BbgxH>;BRRP6i;V_`leelx#koyu}c7?ML@c zl+OV1=W+g$1CIcz0&K!&cZDb*RMr>aWrJlGB%v?j3_lyBo;QXkz6SU^CEv~Nq5q%54W48Y zQ&P&D2hX4jK(1v29VVO2emST-Bv?->Y1hzqv6$3v?QH_CL&FH@gcvPpRYWZu@rJ91 zoJI}wvD1+wwLpw2SYP$w&H<*gOMoA0(EPw>t}Y=Valp(>b4XiQaV4U;aJ_eG%qn1` zKY3nt`Hp5jZsVwLWl=L@@!O@bxJTojszdy3F-wO7Z-s*Ur-a}|IOb+oi9eI}7Z!s# A4gdfE literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png new file mode 100644 index 0000000000000000000000000000000000000000..65e6198a64077f50fd5cc79817ab55c0b4106a2c GIT binary patch literal 46280 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 literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (25).png b/.gitbook/assets/image (25).png new file mode 100644 index 0000000000000000000000000000000000000000..f24b032c093994f39b7bb96fa2b65c4ff1af0e61 GIT binary patch literal 49450 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

vlaM%oHabY26=FGK9{cl2QM?G&(dV2aoFY-@w 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 literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (28).png b/.gitbook/assets/image (28).png new file mode 100644 index 0000000000000000000000000000000000000000..756f135b1a3e16dbec5c72be48a411487bb2d59e GIT binary patch literal 53802 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 literal 0 HcmV?d00001 diff --git a/SUMMARY.md b/SUMMARY.md index d83e6e3..3a09a34 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,7 +1,7 @@ # Table of contents * [Home](README.md) -* [What's new for Mirror v2?](whats-new-for-mirror-v2.md) + * [What's new for Mirror v2?](readme/whats-new-for-mirror-v2.md) * [Interchain Access](networks.md) * [Security](security.md) * [FAQ](faq.md) @@ -20,7 +20,10 @@ * [Pre-IPO Procedure](protocol/governance/pre-ipo-procedure.md) * [Modify Mint Parameters](protocol/governance/modify-mint-parameters.md) * [Modify Gov Parameters](protocol/governance/modify-gov-parameters.md) + * [Modify Poll Parameters](protocol/governance/modify-poll-parameters.md) * [Community Grants](protocol/governance/community-grants.md) + * [Contract Migration Procedure](protocol/governance/contract-migration-procedure.md) + * [Oracle Whitelist Procedure](protocol/governance/oracle-whitelist-procedure.md) * [Other Proposals](protocol/governance/other-proposals.md) ## Developers @@ -51,9 +54,10 @@ * [Community](contracts/community.md) * [Factory](contracts/factory.md) * [Gov](contracts/gov.md) +* [Admin Manager](contracts/admin-manager.md) * [Mint](contracts/mint.md) * [Lock](contracts/lock.md) -* [Oracle](contracts/oracle.md) +* [TeFi Oracle](contracts/tefi-oracle.md) * [Collateral Oracle](contracts/collateral-oracle.md) * [Staking](contracts/staking.md) * [Limit Order](contracts/limit-order.md) diff --git a/contracts/admin-manager.md b/contracts/admin-manager.md new file mode 100644 index 0000000..0098527 --- /dev/null +++ b/contracts/admin-manager.md @@ -0,0 +1,394 @@ +# Admin Manager + +Admin Manager contract is owned by Gov contract, and is responsible for executing contract migrations and admin key transfers, which are used in order to execute time sensitive migrations such as Terra's `columbus` network upgrades. + +All operations in admin manager contract can only be executed by submitting and executing a poll on Mirror governance (one of `migration_poll` or `auth_admin_poll`). + +### Config + +| Key | Type | Description | +| -------------------- | ------ | --------------------------------------------------------------------------------------------- | +| `owner` | String | Address of owner of admin manager (Gov contract) | +| `admin_claim_period` | u64 | The duration of admin privilege delegation to a defined address when `AuthorizeClaim` occurs. | + +### InstantiateMsg + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct InstantiateMsg { + pub owner: String, + pub admin_claim_period: u64, +} +``` + +| Key | Type | Description | +| -------------------- | ------ | -------------------------------------------------------------------------------------------- | +| `owner` | String | Address of owner of admin manager (Gov contract) | +| `admin_claim_period` | u64 | The duration of admin privilege delegation to a defined address when `AuthorizeClaim` occurs | + +## ExecuteMsg + +### UpdateOwner + +Replaces the owner address of the admin manager contract to a new one + +{% tabs %} +{% tab title="Rust" %} + + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + UpdateOwner { + owner: String, + } +``` + +| Key | Type | Description | +| ------- | ------ | ------------------------------------- | +| `owner` | String | Address of the owner of admin manager | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"update_owner": { + "owner": "terra1..." + } +} +``` + +| Key | Type | Description | +| ------- | ------ | ------------------------------------- | +| `owner` | String | Address of the owner of admin manager | +{% endtab %} +{% endtabs %} + + + +### ExecuteMigrations + +Contract migration is executed when the Gov contract sends an `ExecuteMigrations` message. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + ExecuteMigrations { + migrations: Vec<(String, u64, Binary)>, + }, +``` + +#### `migrations` + +| Type | Description | +| ------ | ----------------------------------------------------- | +| String | Address of the current Mirror contract to be migrated | +| u64 | Token code ID of the new contracts | +| Binary | Migration execution message | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"execute_migrations": { + "migrations": [ + ("terra1...", 123, eBdwav...), + ("terra1...", 123, eBdwav...) + ] + } +} +``` + +#### `migrations` + +| Type | Description | +| ------ | ----------------------------------------------------- | +| String | Address of the current Mirror contract to be migrated | +| u64 | Token code ID of the new contracts | +| Binary | Migration execution message | +{% endtab %} +{% endtabs %} + +### AuthorizeClaim + +Delegates admin privileges to migrate contracts to a specified address until `admin_claim_period` ends. + +{% tabs %} +{% tab title="Rust" %} + + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + AuthorizeClaim { + authorized_addr: String, + }, +``` + +| Key | Type | Description | +| ----------------- | ------ | ------------------------------------------------------ | +| `authorized_addr` | String | Address to temporarily delegate the admin privilege to | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"authorize_claim": { + "authrized_addr": "terra1..." + } +} +``` + +| Key | Type | Description | +| ----------------- | ------ | ------------------------------------------------------ | +| `authorized_addr` | String | Address to temporarily delegate the admin privilege to | +{% endtab %} +{% endtabs %} + +### ClaimAdmin + +Once `AuthorizeClaim` is executed, the `authorized_addr` can send this transaction to claim the rights to the admin keys until the `admin_claim_period` ends. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + ClaimAdmin { + contract: String, + }, +``` + +| Key | Type | Description | +| ---------- | ------ | -------------------------------------------------------------------- | +| `contract` | String | Address of contracts that the `authorized_addr` has right to migrate | + + +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"claim_admin": { + "contract": "terra1..." + } +} +``` + +| Key | Type | Description | +| ---------- | ------ | -------------------------------------------------------------------- | +| `contract` | String | Address of contracts that the `authorized_addr` has right to migrate | +{% endtab %} +{% endtabs %} + +## QueryMsg + +### Config + +Returns the configuration of the admin manager contract + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + Config {}, +``` + +#### ConfigResponse + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ConfigResponse { + pub owner: String, + pub admin_claim_period: u64, +} +``` + +| Key | Type | Description | +| -------------------- | ------ | ----------------------------------------------------------------------- | +| `owner` | String | Address of the owner of admin manager contract (Gov contract) | +| `admin_claim_period` | String | Length of time which the admin key is claimed and used for (in seconds) | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"config": {} +} +``` + +#### ConfigResponse + +```json +{ +"config_response": { + "owner": "terra1...", + "admin_claim_period": 8 + } +} +``` + +| Key | Type | Description | +| -------------------- | ------ | ----------------------------------------------------------------------- | +| `owner` | String | Address of the owner of admin manager contract (Gov contract) | +| `admin_claim_period` | u64 | Length of time which the admin key is claimed and used for (in seconds) | +{% endtab %} +{% endtabs %} + +### MigrationRecords + +Returns the history of `execute_migrations` records. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + MigrationRecords { + start_after: Option, // timestamp (seconds) + limit: Option, + }, +``` + +| Key | Type | Description | +| ------------- | ---- | ------------------------------------------------------- | +| `start_after` | u64 | Optional timestamp to return the migration history from | +| `limit` | u32 | Max number of migration records to return | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct MigrationRecordResponse { + pub executor: String, + pub time: u64, + pub migrations: Vec, +} +``` + +| Key | Type | Description | +| ------------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `executor` | String | Address of the migration executor | +| `time` | u64 | UNIX timestamp of when the migration was executed | +| `migrations` | MigrationItem | Migration specific details including migrated `contract` address, token code ID and `binary` message used for the migration. | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"migration_records": { + "start_after": 12341234, + "limit": 8 + } +} +``` + +| Key | Type | Description | +| ------------- | ---- | ------------------------------------------------------- | +| `start_after` | u64 | Optional timestamp to return the migration history from | +| `limit` | u32 | Max number of migration records to return | + +#### Response + +```json +{ + "executor": "terra1...", + "time": 12341234, + "migrations": { + "contract": "terra1...", + "new_code_id": 234, + "msg": "evDw12549..." + } + } +``` + +| Key | Type | Description | +| ------------ | ------------------- | --------------------------------------------------------------------------------------------------------------------------- | +| `executor` | String | Address of the migration executor | +| `time` | u64 | UNIX timestamp of when the migration was executed | +| `migrations` | Vec\ | Migration specific details including migrated `contract` address, token code ID and `binary` message used for the migration | +{% endtab %} +{% endtabs %} + +### AuthRecords + +Returns the history of `AuthorizeClaim` transactions + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg { + AuthRecords { + start_after: Option, // timestamp (seconds) + limit: Option, + }, +``` + +| Key | Type | Description | +| ------------- | ---- | ----------------------------------------------------- | +| `start_after` | u64 | Optional timestamp of when to return the history from | +| `limit` | u32 | Max number of records to return | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct AuthRecordResponse { + pub address: String, + pub start_time: u64, + pub end_time: u64, +} +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------- | +| `address` | String | The address at which the admin key was authorized to | +| `start_time` | u64 | UNIX timestamp of when the `admin_claim_period` started | +| `end_time` | u64 | UNIX timestamp of when the `admin_claim_period` ended | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"auth_records": { + "start_after": 12341234, + "limit": 8 + } +} +``` + +| Key | Type | Description | +| ------------- | ---- | ----------------------------------------------------- | +| `start_after` | u64 | Optional timestamp of when to return the history from | +| `limit` | u32 | Max number of records to return | + +#### Response + + + +```json +{ +"address": "terra1...", +"start_time": 12341234, +"end_time": 12341234 +} +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------- | +| `address` | String | The address which the admin key was authorized to | +| `start_time` | u64 | UNIX timestamp of when the `admin_claim_period` started | +| `end_time` | u64 | UNIX timestamp of when the `admin_claim_period` ended | +{% endtab %} +{% endtabs %} diff --git a/contracts/architecture.md b/contracts/architecture.md index e7b7a5a..5c73023 100644 --- a/contracts/architecture.md +++ b/contracts/architecture.md @@ -10,73 +10,21 @@ Even with a thorough understanding of Mirror Protocol, it is highly recommended The source code for Mirror smart contracts can be found on [GitHub](https://github.com/Mirror-Protocol/mirror-contracts). Mirror Protocol is deployed with one of each of the following contracts, organized through the Factory. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ContractFunction
Collector - Gathers protocol fees incurred from CDP withdrawals and liquidations and - send to Gov
Community - Manages the Community Pool fund
Factory - Central directory that organizes the various component contracts of Mirror
Gov - -

Allows other Mirror contracts to be controlled by decentralized governance

-

Distributes MIR received from Collector to MIR stakers and voters

-
Mint - Handles both long and short CDP creation, management, and liquidation
Lock - Responsible for locking up UST from short CDP
Oracle - Provides an interface for oracle feeders to post prices for mAssets
Collateral Oracle - Feeds price and collateral multiplier for each collateral asset - type
Staking - Distributes MIR rewards from block reward to LP and sLP stakers
Limit Order - Registers and executes swap orders at submitted limit price and amount
- -The Mirror Token \(MIR\) is a Terraswap CW20 Token instance that is created during the initial bootstrapping of the protocol and is registered with the Mirror Protocol core contracts. +| Contract | Function | +| ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [Collector](collector.md) | Gathers protocol fees incurred from CDP withdrawals and liquidations and send to Gov | +| [Community](community.md) | Manages the [Community Pool](../protocol/governance/#community-pool) fund | +| [Factory](factory.md) | Central directory that organizes the various component contracts of Mirror | +| [Gov](gov.md) |

Allows other Mirror contracts to be controlled by decentralized governance

Distributes MIR received from Collector to MIR stakers and voters

| +| [Admin Manager](admin-manager.md) | Contract owned by [Gov](gov.md) which enables contract migrations and admin actions through Mirror governance consensus. | +| [Mint](mint.md) | Handles both long and short CDP creation, management, and liquidation | +| [Lock](lock.md) | Responsible for locking up UST from short CDP | +| [Oracle Hub](tefi-oracle.md) | Provides an interface for registering new oracle provider and fetching asset prices with highest priority | +| [Collateral Oracle](collateral-oracle.md) | Feeds price and collateral `multiplier` for each collateral asset type | +| [Staking](staking.md) | Distributes MIR rewards from block reward to LP and sLP stakers | +| [Limit Order](limit-order.md) | Registers and executes swap orders at submitted limit price and amount | + +The Mirror Token (MIR) is a Terraswap CW20 Token instance that is created during the initial bootstrapping of the protocol and is registered with the Mirror Protocol core contracts. When new mAssets are whitelisted, Mirror Protocol will create the following contract instances: @@ -84,4 +32,3 @@ When new mAssets are whitelisted, Mirror Protocol will create the following cont * Terraswap Pair for the new mAsset against UST * Terraswap CW20 Token for the new mAsset's LP Token * Terraswap CW20 Token for the new mAsset's sLP Token - diff --git a/contracts/factory.md b/contracts/factory.md index ff0efda..570abd7 100644 --- a/contracts/factory.md +++ b/contracts/factory.md @@ -6,17 +6,17 @@ After the initial bootstrapping of Mirror Protocol contracts, the Factory is ass ## Config -| Name | Type | Description | -| ---------------------- | --------- | ---------------------------------------------------- | -| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | -| `mint_contract` | HumanAddr | Contract address of [Mirror Mint](mint.md) | -| `oracle_contract` | HumanAddr | Contract address of [Mirror Oracle](oracle.md) | -| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | -| `staking_contract` | HumanAddr | Contract address of [Mirror Staking](staking.md) | -| `commission_collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | -| `mint_per_block` | Uint128 | Amount of new MIR tokens to mint per block | -| `token_code_id` | u64 | Code ID for CW20 contract for generating new mAssets | -| `base_denom` | String | Native token denom for Terraswap pairs (TerraUSD) | +| Name | Type | Description | +| ---------------------- | --------- | ----------------------------------------------------- | +| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | +| `mint_contract` | HumanAddr | Contract address of [Mirror Mint](mint.md) | +| `oracle_contract` | HumanAddr | Contract address of [Mirror Oracle](broken-reference) | +| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | +| `staking_contract` | HumanAddr | Contract address of [Mirror Staking](staking.md) | +| `commission_collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | +| `mint_per_block` | Uint128 | Amount of new MIR tokens to mint per block | +| `token_code_id` | u64 | Code ID for CW20 contract for generating new mAssets | +| `base_denom` | String | Native token denom for Terraswap pairs (TerraUSD) | ## InitMsg @@ -94,15 +94,15 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| ---------------------- | --------- | ---------------------------------------------------- | -| `commission_collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | -| `mint_contract` | HumanAddr | Contract address of [Mirror Mint](mint.md) | -| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | -| `oracle_contract` | HumanAddr | Contract address of [Mirror Oracle](oracle.md) | -| `**owner` | HumanAddr | Address of the owner of [Mirror Factory](factory.md) | -| `staking_contract` | HumanAddr | Contract address of [Mirror Staking](staking.md) | -| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | +| Key | Type | Description | +| ---------------------- | --------- | ----------------------------------------------------- | +| `commission_collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | +| `mint_contract` | HumanAddr | Contract address of [Mirror Mint](mint.md) | +| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | +| `oracle_contract` | HumanAddr | Contract address of [Mirror Oracle](broken-reference) | +| `**owner` | HumanAddr | Address of the owner of [Mirror Factory](factory.md) | +| `staking_contract` | HumanAddr | Contract address of [Mirror Staking](staking.md) | +| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | ### `UpdateConfig` @@ -186,7 +186,7 @@ pub enum HandleMsg { Introduces a new mAsset to the protocol and creates markets on Terraswap. This process will: * Instantiate the mAsset contract as a new Terraswap CW20 token -* Register the mAsset with [Mirror Oracle](oracle.md) and [Mirror Mint](mint.md) +* Register the mAsset with Oracle Hub and [Mirror Mint](mint.md) * Create a new Terraswap Pair for the new mAsset against TerraUSD * Instantiate the LP Token contract associated with the pool as a new Terraswap CW20 token * Register the LP token with the [Mirror Staking](staking.md) contract @@ -199,7 +199,7 @@ Introduces a new mAsset to the protocol and creates markets on Terraswap. This p pub enum HandleMsg { Whitelist { name: String, - oracle_feeder: HumanAddr, + oracle_proxy: HumanAddr, params: Params, symbol: String, } @@ -223,7 +223,7 @@ pub struct Params { { "whitelist": { "name": "Mirrored Apple Derivative", - "oracle_feeder": "terra1...", + "oracle_proxy": "terra1...", "params": { "auction_discount": "0.2", "min_collateral_ratio": "1.5", @@ -235,12 +235,12 @@ pub struct Params { {% endtab %} {% endtabs %} -| Key | Type | Description | -| --------------- | --------- | ----------------------------------- | -| `name` | String | Name of new asset to be whitelisted | -| `oracle_feeder` | HumanAddr | Address of Oracle Feeder for mAsset | -| `params` | Params | mAsset parameters to be registered | -| `symbol` | String | mAsset symbol (ex: `mAAPL`) | +| Key | Type | Description | +| -------------- | --------- | ------------------------------------------------------------------------ | +| `name` | String | Name of new asset to be whitelisted | +| `oracle_proxy` | HumanAddr | Address of the oracle proxy contract that provides prices for this asset | +| `params` | Params | mAsset parameters to be registered | +| `symbol` | String | mAsset symbol (ex: `AAPL`) | #### mAsset Params @@ -431,14 +431,13 @@ Can be issued by the oracle feeder of an mAsset to trigger the [mAsset migration ```rust #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] -pub enum HandleMsg { +pub enum ExecuteMsg { MigrateAsset { - end_price: Decimal, - from_token: HumanAddr, name: String, symbol: String, - } -} + oracle_proxy: String, + from_token: String, + }, ``` {% endtab %} @@ -446,22 +445,22 @@ pub enum HandleMsg { ```javascript { "migrate_asset": { - "end_price": "123.456789", - "asset_token": "terra1...", - "name": "...", - "symbol": "..." + "name": "Apple Inc.", + "symbol": "AAPL", + "oracle_proxy": "terra1...", + "from_token": "terra1..." } } ``` {% endtab %} {% endtabs %} -| Key | Type | Description | -| ------------ | --------- | --------------------------------------------------------------------- | -| `end_price` | Decimal | Freezes the oracle price of mAsset at this value (Denominated in UST) | -| `from_token` | HumanAddr | Contract address of mAsset to migrate | -| `name` | String | Name of the new asset post-migration | -| `symbol` | String | Symbol for the new asset post-migration | +| Key | Type | Description | +| -------------- | ------ | -------------------------------------------------------------------------------------------------------------- | +| `name` | String | Name of the new asset post-migration | +| `symbol` | String | Symbol for the new asset post-migration | +| `oracle_proxy` | String | Address of the oracle proxy contract that will provide prices for this asset after asset migration takes place | +| `from_token` | String | Contract address of mAsset to migrate | ## QueryMsg diff --git a/contracts/gov.md b/contracts/gov.md index 68bb6d7..ccc3183 100644 --- a/contracts/gov.md +++ b/contracts/gov.md @@ -1,23 +1,25 @@ # Gov -The Gov Contract contains logic for holding polls and Mirror Token \(MIR\) staking, and allows the Mirror Protocol to be governed by its users in a decentralized manner. After the initial bootstrapping of Mirror Protocol contracts, the Gov Contract is assigned to be the owner of itself and [Mirror Factory.](factory.md) +The Gov Contract contains logic for holding polls and Mirror Token (MIR) staking, and allows the Mirror Protocol to be governed by its users in a decentralized manner. After the initial bootstrapping of Mirror Protocol contracts, the Gov Contract is assigned to be the owner of itself and [Mirror Factory.](factory.md) New proposals for change are submitted as polls, and are voted on by MIR stakers through the [voting procedure](../protocol/governance/). Polls can contain messages that can be executed directly without changing the Mirror Protocol code. -The Gov Contract keeps a balance of MIR tokens, which it uses to reward stakers with funds it receives from trading fees sent by the [Mirror Collector](collector.md) and user deposits from creating new governance polls. This balance is separate from the [Community Pool](../protocol/governance/#community-pool), which is held by the [Community](community.md) contract \(owned by the Gov contract\). +The Gov Contract keeps a balance of MIR tokens, which it uses to reward stakers with funds it receives from trading fees sent by the [Mirror Collector](collector.md) and user deposits from creating new governance polls. This balance is separate from the [Community Pool](../protocol/governance/#community-pool), which is held by the [Community](community.md) contract (owned by the Gov contract). ## Config -| Key | Type | Description | -| :--- | :--- | :--- | -| `mirror_token` | HumanAddr | Contract address of Mirror Token \(MIR\) | -| `quorum` | Decimal | Minimum percentage of participation required for a poll to pass | -| `threshold` | Decimal | Minimum percentage of `yes` votes required for a poll to pass | -| `voting_period` | u64 | Number of blocks during which votes can be cast | -| `proposal_deposit` | Uint128 | Minimum MIR deposit required for a new poll to be submitted | -| `effective_delay` | u64 | Number of blocks after a poll passes to apply changes | -| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | -| `snapshot_period` | u64 | Minimum number of blocks before the end of voting period which snapshot could be taken to lock the current quorum for a poll | +| Key | Type | Description | +| ------------------ | --------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | +| `quorum` | Decimal | Minimum percentage of participation required for a poll to pass | +| `threshold` | Decimal | Minimum percentage of `yes` votes required for a poll to pass | +| `voting_period` | u64 | Number of seconds during which votes can be cast | +| `proposal_deposit` | Uint128 | MIR deposit required for a new poll to be submitted | +| `effective_delay` | u64 | Number of seconds after a poll passes to apply changes | +| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | +| `snapshot_period` | u64 | Minimum number of blocks before the end of voting period which snapshot could be taken to lock the current quorum for a poll | +| `admin_manager` | String | Address of the admin manager contract | +| `poll_gas_limit` | u64 | Maximum amount of gas which a poll can consume during its execution | ## InitMsg @@ -25,15 +27,25 @@ The Gov Contract keeps a balance of MIR tokens, which it uses to reward stakers {% tab title="Rust" %} ```rust #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct InitMsg { - pub mirror_token: HumanAddr, - pub quorum: Decimal, - pub threshold: Decimal, - pub voting_period: u64, +pub struct InstantiateMsg { + pub mirror_token: String, pub effective_delay: u64, - pub proposal_deposit: Uint128, + pub default_poll_config: PollConfig, + pub migration_poll_config: PollConfig, + pub auth_admin_poll_config: PollConfig, pub voter_weight: Decimal, pub snapshot_period: u64, + pub admin_manager: String, + pub poll_gas_limit: u64, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub struct PollConfig { + pub proposal_deposit: Uint128, + pub voting_period: u64, + pub quorum: Decimal, + pub threshold: Decimal, } ``` {% endtab %} @@ -42,30 +54,57 @@ pub struct InitMsg { ```javascript { "mirror_token": "terra1...", - "quorum": "0.1", - "threshold": "0.5", - "voting_period": 8, - "effective_delay": 8, - "proposal_deposit": "100000", + "effective_delay": 8 + "default_poll_config": { + "quorum": "0.1", + "threshold": "0.5", + "voting_period": 8 + "proposal_deposit": "100000000" + }, + "migration_poll_config": { + "quorum": "0.1", + "threshold": "0.5", + "voting_period": 8 + "proposal_deposit": "100000000" + }, + "auth_admin_poll_config": { + "quorum": "0.1", + "threshold": "0.5", + "voting_period": 8 + "proposal_deposit": "100000000" + }, "voter_weight": "0.5", - "snapshot_period": 8 + "snapshot_period": 8, + "admin_manager": "terra1...", + "poll_gas_limit": 8 } ``` {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `mirror_token` | HumanAddr | Contract address of Mirror Token \(MIR\) | -| `quorum` | Decimal | Minimum percentage of participation required for a poll to pass | -| `threshold` | Decimal | Minimum percentage of `yes` votes required for a poll to pass | -| `voting_period` | u64 | Number of blocks during which votes can be cast | -| `proposal_deposit` | Uint128 | Minimum MIR deposit required for a new poll to be submitted | -| `effective_delay` | u64 | Number of blocks after a poll passes to apply changes | -| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | -| `snapshot_period` | u64 | Minimum number of blocks before the end of voting period which snapshot could be taken to lock the current quorum for a poll | - -## HandleMsg +| Key | Type | Description | +| ------------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | +| `effective_delay` | u64 | Minimum percentage of participation required for a poll to pass | +| `default_poll_config` | PollConfig | `PollConfig` for default poll types | +| `migration_poll_config` | PollConfig | `PollConfig` for migration poll types | +| `auth_admin_poll_config` | PollConfig | `PollConfig` for governance configuration change and admin key transfer polls | +| `effective_delay` | u64 | Number of blocks after a poll passes to apply changes | +| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | +| `snapshot_period` | u64 | Minimum number of blocks before the end of voting period which snapshot could be taken to lock the current quorum for a poll | +| `admin_manager` | String | Address of the admin manager contract | +| `poll_gas_limit` | u64 | Maximum amount of gas which a poll can consume during its execution | + +#### PollConfig + +| Key | Type | Description | +| ------------------ | ------- | --------------------------------------------------------------- | +| `proposal_deposit` | Uint128 | MIR deposit required for new polls to be submitted | +| `voting_period` | u64 | Number of seconds during which votes can be cast | +| `quorum` | Decimal | Minimum percentage of participation required for a poll to pass | +| `threshold` | Decimal | Minimum percentage of `yes` votes required for a poll to pass | + +## ExecuteMsg ### `Receive` @@ -99,11 +138,11 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `amount` | Uint128 | Amount of tokens received | -| `sender` | HumanAddr | Sender of token transfer | -| `msg`\* | Binary | Base64-encoded JSON of [Receive Hook](gov.md#receive-hooks) | +| Key | Type | Description | +| -------- | --------- | ----------------------------------------------------------- | +| `amount` | Uint128 | Amount of tokens received | +| `sender` | HumanAddr | Sender of token transfer | +| `msg`\* | Binary | Base64-encoded JSON of [Receive Hook](gov.md#receive-hooks) | \* = optional @@ -152,23 +191,23 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `owner`\* | HumanAddr | Address of owner of governance contract | -| `quorum`\* | Decimal | Minimum percentage of participation required for a poll to pass | -| `threshold`\* | Decimal | Minimum percentage of `yes` votes required for a poll to pass | -| `voting_period`\* | u64 | Number of blocks during which votes can be cast | -| `effective_delay`\* | u64 | Number of blocks after a poll passes to apply changes | -| `expiration_period`\* | u64 | Number of blocks after a poll's voting period during which the poll can be executed | -| `proposal_deposit`\* | Uint128 | Minimum MIR deposit required for a new poll to be submitted | -| `voter_weight`\* | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | -| `snapshot_period`\* | u64 | Minimum number of blocks before end of voting period which snapshot could be taken to lock the current quorum for a poll | +| Key | Type | Description | +| --------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------ | +| `owner`\* | HumanAddr | Address of owner of governance contract | +| `quorum`\* | Decimal | Minimum percentage of participation required for a poll to pass | +| `threshold`\* | Decimal | Minimum percentage of `yes` votes required for a poll to pass | +| `voting_period`\* | u64 | Number of blocks during which votes can be cast | +| `effective_delay`\* | u64 | Number of blocks after a poll passes to apply changes | +| `expiration_period`\* | u64 | Number of blocks after a poll's voting period during which the poll can be executed | +| `proposal_deposit`\* | Uint128 | Minimum MIR deposit required for a new poll to be submitted | +| `voter_weight`\* | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | +| `snapshot_period`\* | u64 | Minimum number of blocks before end of voting period which snapshot could be taken to lock the current quorum for a poll | \* = optional ### `CastVote` -Submits a user's vote for an active poll. Once a user has voted, they cannot change their vote with subsequent messages \(increasing voting power, changing vote option, cancelling vote, etc.\) +Submits a user's vote for an active poll. Once a user has voted, they cannot change their vote with subsequent messages (increasing voting power, changing vote option, cancelling vote, etc.) {% tabs %} {% tab title="Rust" %} @@ -198,11 +237,11 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `amount` | Uint128 | Amount of voting power \(staked MIR\) to allocate | -| `poll_id` | u64 | Poll ID | -| `vote` | VoteOption | Can be `yes`,`no` or `abstain` | +| Key | Type | Description | +| --------- | ---------- | ----------------------------------------------- | +| `amount` | Uint128 | Amount of voting power (staked MIR) to allocate | +| `poll_id` | u64 | Poll ID | +| `vote` | VoteOption | Can be `yes`,`no` or `abstain` | ### `WithdrawVotingTokens` @@ -232,8 +271,8 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| ---------- | ------- | -------------------------------------------------------------------------------- | | `amount`\* | Uint128 | Amount of MIR tokens to withdraw. If empty, all staked MIR tokens are withdrawn. | \* = optional @@ -264,7 +303,7 @@ pub enum HandleMsg { ### `StakeVotingRewards` -Immediately re-stakes user's voting rewards to Gov Contract. +Immediately re-stakes user's voting rewards to Gov Contract. {% tabs %} {% tab title="Rust" %} @@ -314,9 +353,9 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `poll_id` | u64 | Poll ID | +| Key | Type | Description | +| --------- | ---- | ----------- | +| `poll_id` | u64 | Poll ID | ### `ExecutePoll` @@ -346,9 +385,9 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `poll_id` | u64 | Poll ID | +| Key | Type | Description | +| --------- | ---- | ----------- | +| `poll_id` | u64 | Poll ID | ### `SnapshotPoll` @@ -378,9 +417,9 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `poll_id` | u64 | Poll ID | +| Key | Type | Description | +| --------- | ---- | ----------- | +| `poll_id` | u64 | Poll ID | ## Receive Hooks @@ -416,26 +455,27 @@ pub enum Cw20HookMsg { ### `CreatePoll` -Issued when sending MIR tokens to the Gov contract to create a new poll. Will only succeed if the amount of tokens sent meets the configured`proposal_deposit`amount. Contains a generic message to be issued by the Gov contract if it passes \(can invoke messages in other contracts it owns\). +Issued when sending MIR tokens to the Gov contract to create a new poll. Will only succeed if the amount of tokens sent meets the configured`proposal_deposit`amount. Contains a generic message to be issued by the Gov contract if it passes (can invoke messages in other contracts it owns). {% tabs %} {% tab title="Rust" %} ```rust #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] +#[allow(clippy::large_enum_variant)] pub enum Cw20HookMsg { - CreatePoll { + CreatePoll { + title: String, description: String, - execute_msg: Option, link: Option, - title: String, - } -} + execute_msg: Option, + admin_action: Option, + }, #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] #[serde(rename_all = "snake_case")] -pub struct ExecuteMsg { - pub contract: HumanAddr, +pub struct PollExecuteMsg { + pub contract: String, pub msg: Binary, } ``` @@ -451,25 +491,30 @@ pub struct ExecuteMsg { "msg": "eyAiZXhlY3V0ZV9tc2ciOiAiYmxhaCBibGFoIiB9" }, "link": "...", - "title": "..." + "title": "...", + "admin_action": { + "contract": "terra1...", + "msg": "eyAiZXhlY3V0ZV9tc2ciOiAiYmxhaCBibGFoIiB9" + } } } ``` {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `description` | string | Poll description | -| `execute_msg`\* | ExecuteMsg | Message to be executed by Gov contract | -| `link`\* | string | URL to external post about poll \(forum, PDF, etc.\) | -| `title` | string | Poll title | +| Key | Type | Description | +| ---------------- | --------------- | --------------------------------------------------------- | +| `description` | string | Poll description | +| `execute_msg`\* | ExecuteMsg | Message to be executed by Gov contract | +| `link`\* | string | URL to external post about poll (forum, PDF, etc.) | +| `title` | string | Poll title | +| `admin_action`\* | PollAdminAction | Messages to be executed for migration and authorize polls | \* = optional ### `DepositReward` -Reward is distributed between MIR stakers and governance poll voters based on `voter_weight` when rewards are sent from [Mirror Collector](collector.md). +Reward is distributed between MIR stakers and governance poll voters based on `voter_weight` when rewards are sent from [Mirror Collector](collector.md). {% tabs %} {% tab title="Rust" %} @@ -510,29 +555,31 @@ pub enum QueryMsg { ```rust #[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema)] pub struct ConfigResponse { - pub owner: HumanAddr, - pub mirror_token: HumanAddr, - pub quorum: Decimal, - pub threshold: Decimal, - pub voting_period: u64, + pub owner: String, + pub mirror_token: String, pub effective_delay: u64, - pub proposal_deposit: Uint128, + pub default_poll_config: PollConfig, + pub migration_poll_config: PollConfig, + pub auth_admin_poll_config: PollConfig, pub voter_weight: Decimal, pub snapshot_period: u64, + pub admin_manager: String, + pub poll_gas_limit: u64, } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `mirror_token` | HumanAddr | Contract address of Mirror Token \(MIR\) | -| `quorum` | Decimal | Minimum percentage of participation required for a poll to pass | -| `threshold` | Decimal | Minimum percentage of `yes` votes required for a poll to pass | -| `voting_period` | u64 | Number of blocks during which votes can be cast | -| `effective_delay` | u64 | Number of blocks after a poll passes to apply changes | -| `expiration_period` | u64 | Number of blocks after a poll's voting period during which the poll can be executed | -| `proposal_deposit` | Uint128 | Minimum MIR deposit required for a new poll to be submitted | -| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | -| `snapshot_period` | u64 | Minimum number of blocks before end of voting period which snapshot could be taken to lock the current quorum for a poll | +| Key | Type | Description | +| ------------------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------ | +| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | +| `default_poll_config` | PollConfig | `PollConfig` for default polls | +| `migration_poll_config` | PollConfig | `PollConfig` for migration polls | +| `auth_admin_poll_config` | PollConfig | `PollConfig` for Authorize polls | +| `effective_delay` | u64 | Number of blocks after a poll passes to apply changes | +| `proposal_deposit` | Uint128 | Minimum MIR deposit required for a new poll to be submitted | +| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | +| `snapshot_period` | u64 | Minimum number of blocks before end of voting period which snapshot could be taken to lock the current quorum for a poll | +| `admin_manager` | String | Address of admin manager contract | +| `poll_gas_limit` | u64 | Maximum amount of gas which a poll can consume during its execution | {% endtab %} {% tab title="JSON" %} @@ -546,30 +593,50 @@ pub struct ConfigResponse { ```javascript { - "config_response": { - "owner": "terra1...", - "mirror_token": "terra1...", +"config_response": { + "mirror_token": "terra1...", + "effective_delay": 8 + "default_poll_config": { "quorum": "0.1", "threshold": "0.5", - "voting_period": 100000, - "effective_delay": 13000, - "proposal_deposit": "1000000", - "voter_weight": "0.5", - "snapshot_period": 1000 - } + "voting_period": 8 + "proposal_deposit": "100000000" + }, + "migration_poll_config": { + "quorum": "0.1", + "threshold": "0.5", + "voting_period": 8 + "proposal_deposit": "100000000" + }, + "auth_admin_poll_config": { + "quorum": "0.1", + "threshold": "0.5", + "voting_period": 8 + "proposal_deposit": "100000000" + }, + "voter_weight": "0.5", + "snapshot_period": 8, + "admin_manager": "terra1...", + "poll_gas_limit": 8 +} } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `mirror_token` | HumanAddr | Contract address of Mirror Token \(MIR\) | -| `quorum` | Decimal | Minimum percentage of participation required for a poll to pass | -| `threshold` | Decimal | Minimum percentage of `yes` votes required for a poll to pass | -| `voting_period` | u64 | Number of blocks during which votes can be cast | -| `effective_delay` | u64 | Number of blocks after a poll passes to apply changes | -| `proposal_deposit` | Uint128 | Minimum MIR deposit required for a new poll to be submitted | -| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | -| `snapshot_period` | u64 | Minimum number of blocks before end of voting period which snapshot could be taken to lock the current quorum for a poll | +| Key | Type | Description | +| ------------------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------ | +| `mirror_token` | HumanAddr | Contract address of Mirror Token (MIR) | +| `default_poll_config` | PollConfig | `PollConfig` of default polls | +| `migration_poll_config` | PollConfig | `PollConfig` of migration polls | +| `auth_admin_poll_config` | PollConfig | `PollConfig` of Authorize polls | +| `quorum` | Decimal | Minimum percentage of participation required for a poll to pass | +| `threshold` | Decimal | Minimum percentage of `yes` votes required for a poll to pass | +| `voting_period` | u64 | Number of blocks during which votes can be cast | +| `effective_delay` | u64 | Number of blocks after a poll passes to apply changes | +| `proposal_deposit` | Uint128 | Minimum MIR deposit required for a new poll to be submitted | +| `voter_weight` | Decimal | Ratio of protocol fee which will be distributed among the governance poll voters | +| `snapshot_period` | u64 | Minimum number of blocks before end of voting period which snapshot could be taken to lock the current quorum for a poll | +| `admin_manager` | String | Address of admin manager contract | +| `poll_gas_limit` | u64 | Maximum amount of gas which a poll can consume during its execution | {% endtab %} {% endtabs %} @@ -597,12 +664,12 @@ pub struct StateResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `poll_count` | u64 | Total number of polls that have been created on Mirror Protocol | -| `total_share` | Uint128 | Amount of staked MIR to governance contract | -| `total_deposit` | Uint128 | Amount of locked MIR to governance polls | -| `pending_voting_rewards` | Uint128 | Amount of voting rewards that are not claimed yet | +| Key | Type | Description | +| ------------------------ | ------- | --------------------------------------------------------------- | +| `poll_count` | u64 | Total number of polls that have been created on Mirror Protocol | +| `total_share` | Uint128 | Amount of staked MIR to governance contract | +| `total_deposit` | Uint128 | Amount of locked MIR to governance polls | +| `pending_voting_rewards` | Uint128 | Amount of voting rewards that are not claimed yet | {% endtab %} {% tab title="JSON" %} @@ -625,12 +692,12 @@ pub struct StateResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `poll_count` | u64 | Total number of polls that have been created on Mirror Protocol | -| `total_share` | Uint128 | Amount of staked MIR to governance contract | -| `total_deposit` | Uint128 | Amount of locked MIR to governance polls | -| `pending_voting_rewards` | Uint128 | Amount of voting rewards that are not claimed yet | +| Key | Type | Description | +| ------------------------ | ------- | --------------------------------------------------------------- | +| `poll_count` | u64 | Total number of polls that have been created on Mirror Protocol | +| `total_share` | Uint128 | Amount of staked MIR to governance contract | +| `total_deposit` | Uint128 | Amount of locked MIR to governance polls | +| `pending_voting_rewards` | Uint128 | Amount of voting rewards that are not claimed yet | {% endtab %} {% endtabs %} @@ -648,8 +715,8 @@ pub enum QueryMsg { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| --------- | --------- | ----------------- | | `address` | HumanAddr | Address of staker | #### Response @@ -664,12 +731,12 @@ pub struct StakerResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `balance` | Uint128 | Amount of MIR staked by the user | -| `share` | Uint128 | Weight of the user's staked MIR | -| `locked_balance` | Vec<\(u64, VoterInfo\)> | Total number of staked MIR used as votes, and chosen vote option | -| `pending_voting_rewards` | u64 | Amount of voting rewards that are not claimed yet | +| Key | Type | Description | +| ------------------------ | --------------------- | ---------------------------------------------------------------- | +| `balance` | Uint128 | Amount of MIR staked by the user | +| `share` | Uint128 | Weight of the user's staked MIR | +| `locked_balance` | Vec<(u64, VoterInfo)> | Total number of staked MIR used as votes, and chosen vote option | +| `pending_voting_rewards` | u64 | Amount of voting rewards that are not claimed yet | {% endtab %} {% tab title="JSON" %} @@ -681,8 +748,8 @@ pub struct StakerResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| --------- | --------- | ----------------- | | `address` | HumanAddr | Address of staker | #### Response @@ -701,12 +768,12 @@ pub struct StakerResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `balance` | Uint128 | Amount of MIR staked by the user | -| `share` | Uint128 | Weight of the user's staked MIR | -| `locked_balance` | Vec<\(u64, VoterInfo\)> | Total number of staked MIR used as votes, and chosen vote option | -| `pending_voting_rewards` | u64 | Amount of voting rewards that are not claimed yet | +| Key | Type | Description | +| ------------------------ | --------------------- | ---------------------------------------------------------------- | +| `balance` | Uint128 | Amount of MIR staked by the user | +| `share` | Uint128 | Weight of the user's staked MIR | +| `locked_balance` | Vec<(u64, VoterInfo)> | Total number of staked MIR used as votes, and chosen vote option | +| `pending_voting_rewards` | u64 | Amount of voting rewards that are not claimed yet | {% endtab %} {% endtabs %} @@ -724,9 +791,9 @@ pub enum QueryMsg { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `poll_id` | u64 | Poll ID | +| Key | Type | Description | +| --------- | ---- | ----------- | +| `poll_id` | u64 | Poll ID | #### Response @@ -751,23 +818,23 @@ pub struct PollResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| id | u64 | Poll ID | -| creator | HumanAddr | Address of the poll creator | -| status | PollStatus | Could be one of "in progress", "rejected", "passed", "executed", "expired" | -| end\_height | u64 | Amount of voting rewards that are not claimed yet | -| title | String | Title of the poll | -| description | String | Description submitted by the creator | -| link\* | Uint128 | URL link | -| deposit\_amount | binary | Initial MIR deposit at poll creation | -| execute\_data\* | ExecuteMsg | Message to be executed by Gov contract | -| yes\_votes | Uint128 | Amount of yes votes | -| no\_votes | Uint128 | Amount of no votes | -| abstain\_votes | Uint128 | Amount of abstain votes | -| total\_balance\_at\_end\_poll\* | Uint128 | Total balanced used as yes, no, or abstain votes at the end of the poll | -| voters\_reward | Uint128 | Amount of MIR reward accumulated to be distributed to the voters | -| staked\_amount\* | Uint128 | Total number of MIR staked on governance contract \(used when Snapshot Poll has been taken\) | +| Key | Type | Description | +| ------------------------------- | ---------- | ------------------------------------------------------------------------------------------ | +| id | u64 | Poll ID | +| creator | HumanAddr | Address of the poll creator | +| status | PollStatus | Could be one of "in progress", "rejected", "passed", "executed", "expired" | +| end\_height | u64 | Amount of voting rewards that are not claimed yet | +| title | String | Title of the poll | +| description | String | Description submitted by the creator | +| link\* | Uint128 | URL link | +| deposit\_amount | binary | Initial MIR deposit at poll creation | +| execute\_data\* | ExecuteMsg | Message to be executed by Gov contract | +| yes\_votes | Uint128 | Amount of yes votes | +| no\_votes | Uint128 | Amount of no votes | +| abstain\_votes | Uint128 | Amount of abstain votes | +| total\_balance\_at\_end\_poll\* | Uint128 | Total balanced used as yes, no, or abstain votes at the end of the poll | +| voters\_reward | Uint128 | Amount of MIR reward accumulated to be distributed to the voters | +| staked\_amount\* | Uint128 | Total number of MIR staked on governance contract (used when Snapshot Poll has been taken) | {% endtab %} {% tab title="JSON" %} @@ -779,9 +846,9 @@ pub struct PollResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `poll_id` | u64 | Poll ID | +| Key | Type | Description | +| --------- | ---- | ----------- | +| `poll_id` | u64 | Poll ID | #### Response @@ -807,23 +874,23 @@ pub struct PollResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| id | u64 | Poll ID | -| creator | HumanAddr | Address of the poll creator | -| status | PollStatus | Could be one of "in progress", "rejected", "passed", "executed", "expired" | -| end\_height | u64 | Amount of voting rewards that are not claimed yet | -| title | String | Title of the poll | -| description | String | Description submitted by the creator | -| link\* | Uint128 | URL link | -| deposit\_amount | binary | Initial MIR deposit at poll creation | -| execute\_data\* | ExecuteMsg | Message to be executed by Gov contract | -| yes\_votes | Uint128 | Amount of yes votes | -| no\_votes | Uint128 | Amount of no votes | -| abstain\_votes | Uint128 | Amount of abstain votes | -| total\_balance\_at\_end\_poll\* | Uint128 | Total balanced used as yes, no, or abstain votes at the end of the poll | -| voters\_reward | Uint128 | Amount of MIR reward accumulated to be distributed to the voters | -| staked\_amount\* | Uint128 | Total number of MIR staked on governance contract \(used when Snapshot Poll has been taken\) | +| Key | Type | Description | +| ------------------------------- | ---------- | ------------------------------------------------------------------------------------------ | +| id | u64 | Poll ID | +| creator | HumanAddr | Address of the poll creator | +| status | PollStatus | Could be one of "in progress", "rejected", "passed", "executed", "expired" | +| end\_height | u64 | Amount of voting rewards that are not claimed yet | +| title | String | Title of the poll | +| description | String | Description submitted by the creator | +| link\* | Uint128 | URL link | +| deposit\_amount | binary | Initial MIR deposit at poll creation | +| execute\_data\* | ExecuteMsg | Message to be executed by Gov contract | +| yes\_votes | Uint128 | Amount of yes votes | +| no\_votes | Uint128 | Amount of no votes | +| abstain\_votes | Uint128 | Amount of abstain votes | +| total\_balance\_at\_end\_poll\* | Uint128 | Total balanced used as yes, no, or abstain votes at the end of the poll | +| voters\_reward | Uint128 | Amount of MIR reward accumulated to be distributed to the voters | +| staked\_amount\* | Uint128 | Total number of MIR staked on governance contract (used when Snapshot Poll has been taken) | {% endtab %} {% endtabs %} @@ -843,11 +910,11 @@ pub enum QueryMsg { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `filter`\* | PollStatus | Can be `yes` or `no` | -| `limit`\* | u32 | Limit of results to fetch | -| `start_after`\* | u64 | Begins search query at specific ID | +| Key | Type | Description | +| --------------- | ---------- | ---------------------------------- | +| `filter`\* | PollStatus | Can be `yes` or `no` | +| `limit`\* | u32 | Limit of results to fetch | +| `start_after`\* | u64 | Begins search query at specific ID | \* = optional @@ -860,9 +927,9 @@ pub struct PollsResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `polls` | Vec<PollResponse> | Array of poll query responses | +| Key | Type | Description | +| ------- | ------------------ | ----------------------------- | +| `polls` | Vec\ | Array of poll query responses | {% endtab %} {% tab title="JSON" %} @@ -876,11 +943,11 @@ pub struct PollsResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `filter`\* | PollStatus | Can be `yes` or `no` | -| `limit`\* | u32 | Limit of results to fetch | -| `start_after`\* | u64 | Begins search query at specific ID | +| Key | Type | Description | +| --------------- | ---------- | ---------------------------------- | +| `filter`\* | PollStatus | Can be `yes` or `no` | +| `limit`\* | u32 | Limit of results to fetch | +| `start_after`\* | u64 | Begins search query at specific ID | \* = optional @@ -913,9 +980,9 @@ pub struct PollsResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `polls` | Vec<PollResponse> | Array of poll query responses | +| Key | Type | Description | +| ------- | ------------------ | ----------------------------- | +| `polls` | Vec\ | Array of poll query responses | {% endtab %} {% endtabs %} @@ -937,10 +1004,10 @@ pub enum QueryMsg { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `limit`\* | u32 | Limit of results to fetch | -| `poll_id` | u64 | Poll ID | +| Key | Type | Description | +| --------------- | --------- | ------------------------------- | +| `limit`\* | u32 | Limit of results to fetch | +| `poll_id` | u64 | Poll ID | | `start_after`\* | HumanAddr | Begins search query with prefix | \* = optional @@ -956,11 +1023,11 @@ pub struct VotersResponseItem { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `voter` | HumanAddr | Address of the voter | -| `vote` | VoteOption | Could be one of `yes`, `no`, `abstain` | -| `balance` | Uint128 | Amount of staked MIR used for voting | +| Key | Type | Description | +| --------- | ---------- | -------------------------------------- | +| `voter` | HumanAddr | Address of the voter | +| `vote` | VoteOption | Could be one of `yes`, `no`, `abstain` | +| `balance` | Uint128 | Amount of staked MIR used for voting | {% endtab %} {% tab title="JSON" %} @@ -974,10 +1041,10 @@ pub struct VotersResponseItem { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `limit`\* | u32 | Limit of results to fetch | -| `poll_id` | u64 | Poll ID | +| Key | Type | Description | +| --------------- | --------- | ------------------------------- | +| `limit`\* | u32 | Limit of results to fetch | +| `poll_id` | u64 | Poll ID | | `start_after`\* | HumanAddr | Begins search query with prefix | \* = optional @@ -994,11 +1061,10 @@ pub struct VotersResponseItem { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `voter` | HumanAddr | Address of the voter | -| `vote` | VoteOption | Could be one of `yes`, `no`, `abstain` | -| `balance` | Uint128 | Amount of staked MIR used for voting | +| Key | Type | Description | +| --------- | ---------- | -------------------------------------- | +| `voter` | HumanAddr | Address of the voter | +| `vote` | VoteOption | Could be one of `yes`, `no`, `abstain` | +| `balance` | Uint128 | Amount of staked MIR used for voting | {% endtab %} {% endtabs %} - diff --git a/contracts/mint.md b/contracts/mint.md index 59bbb67..7eac223 100644 --- a/contracts/mint.md +++ b/contracts/mint.md @@ -1,8 +1,8 @@ # Mint -The Mint Contract implements the logic for [Collateralized Debt Positions ](../protocol/mirrored-assets-massets.md#collateralized-debt-position)\(CDPs\), through which users can mint or short new mAsset tokens against their deposited collateral \(UST or mAssets\). +The Mint Contract implements the logic for [Collateralized Debt Positions ](../protocol/mirrored-assets-massets.md#collateralized-debt-position)(CDPs), through which users can mint or short new mAsset tokens against their deposited collateral (UST or mAssets). -Current prices of collateral and minted mAssets are read from the [Collateral Oracle](collateral-oracle.md) and [Oracle Contract](oracle.md) to determine the C-ratio of each CDP. Depending on which the type of asset used as the collateral, the minimum collateral ratio of each CDP may change. Collateral Oracle is responsible for feeding prices and collateral ratio `multiplier` of each collateral asset type. +Current prices of collateral and minted mAssets are read from the [Collateral Oracle](collateral-oracle.md) and [Oracle Contract](broken-reference) to determine the C-ratio of each CDP. Depending on which the type of asset used as the collateral, the minimum collateral ratio of each CDP may change. Collateral Oracle is responsible for feeding prices and collateral ratio `multiplier` of each collateral asset type. The Mint Contract also contains the logic for liquidating CDPs with C-ratios below the minimum for their minted mAsset through auction. @@ -45,18 +45,18 @@ pub struct InitMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `owner` | HumanAddr | Owner of contract | -| `oracle` | HumanAddr | Contract address of [Mirror Oracle](oracle.md) | -| `collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | +| Key | Type | Description | +| ------------------- | --------- | -------------------------------------------------------------------- | +| `owner` | HumanAddr | Owner of contract | +| `oracle` | HumanAddr | Contract address of [Mirror Oracle](broken-reference) | +| `collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | | `collateral_oracle` | HumanAddr | Contract address of [Mirror Collateral Oracle](collateral-oracle.md) | -| `staking` | HumanAddr | Contract address of [Mirror Staking](staking.md) | -| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | -| `lock` | HumanAddr | Contract address of [Mirror Lock](lock.md) | -| `base_denom` | String | Native token denomination for stablecoin \(TerraUSD\) | -| `token_code_id` | u64 | Code ID for Terraswap CW20 Token | -| `protocol_fee_rate` | Decimal | Protocol fee | +| `staking` | HumanAddr | Contract address of [Mirror Staking](staking.md) | +| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | +| `lock` | HumanAddr | Contract address of [Mirror Lock](lock.md) | +| `base_denom` | String | Native token denomination for stablecoin (TerraUSD) | +| `token_code_id` | u64 | Code ID for Terraswap CW20 Token | +| `protocol_fee_rate` | Decimal | Protocol fee | ## HandleMsg @@ -92,11 +92,11 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `amount` | Uint128 | Amount of tokens received | -| `sender` | HumanAddr | Sender of the token transfer | -| `msg`\* | Binary | Base64-encoded string of JSON of [Receive Hook](mint.md#receive-hooks) | +| Key | Type | Description | +| -------- | --------- | ---------------------------------------------------------------------- | +| `amount` | Uint128 | Amount of tokens received | +| `sender` | HumanAddr | Sender of the token transfer | +| `msg`\* | Binary | Base64-encoded string of JSON of [Receive Hook](mint.md#receive-hooks) | \* = optional @@ -143,15 +143,15 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `owner`\* | HumanAddr | New owner | -| `oracle`\* | u64 | New oracle contract address | -| `collector`\* | HumanAddr | New collector contract address | +| Key | Type | Description | +| --------------------- | --------- | ------------------------------------- | +| `owner`\* | HumanAddr | New owner | +| `oracle`\* | u64 | New oracle contract address | +| `collector`\* | HumanAddr | New collector contract address | | `terraswap_factory`\* | HumanAddr | Contract address of Terraswap Factory | -| `lock`\* | HumanAddr | Contract address of Mirror Lock | -| `token_code_id`\* | u64 | New token code ID | -| `protocol_fee_rate`\* | Decimal | New protocol fee rate | +| `lock`\* | HumanAddr | Contract address of Mirror Lock | +| `token_code_id`\* | u64 | New token code ID | +| `protocol_fee_rate`\* | Decimal | New protocol fee rate | \* = optional @@ -204,22 +204,22 @@ pub struct IPOParams { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `asset_info` | AssetInfo | Asset to be updated | -| `auction_discount`\* | Decimal | New auction discount rate | -| `min_collateral_ratio`\* | Decimal | New minimum collateralization ratio | -| `ipo_params`\* | IPOParams | Parameters to be used for Pre-IPO asset | +| Key | Type | Description | +| ------------------------ | --------- | --------------------------------------- | +| `asset_info` | AssetInfo | Asset to be updated | +| `auction_discount`\* | Decimal | New auction discount rate | +| `min_collateral_ratio`\* | Decimal | New minimum collateralization ratio | +| `ipo_params`\* | IPOParams | Parameters to be used for Pre-IPO asset | \* = optional #### IPOParams -| Key | Type | Description | -| :--- | :--- | :--- | -| `mint_end` | u64 | Time which `mint_period` ends | -| `pre_ipo_price` | Decimal | Fixed price to be used to mint during `mint_period` | -| `min_collateral_ratio_after_ipo` | Decimal | Minimum collateralization ratio to be used after IPO is triggered \(Used for pre-IPO\) | +| Key | Type | Description | +| -------------------------------- | ------- | ------------------------------------------------------------------------------------ | +| `mint_end` | u64 | Time which `mint_period` ends | +| `pre_ipo_price` | Decimal | Fixed price to be used to mint during `mint_period` | +| `min_collateral_ratio_after_ipo` | Decimal | Minimum collateralization ratio to be used after IPO is triggered (Used for pre-IPO) | ### `RegisterAsset` @@ -257,12 +257,12 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `asset_token` | HumanAddr | Contract address of mAsset to be registered | -| `auction_discount` | Decimal | Auction discount rate | -| `min_collateral_ratio` | Decimal | Minimum collateralization ratio | -| `ipo_params`\* | IPOParams | Parameters to be used for Pre-IPO asset | +| Key | Type | Description | +| ---------------------- | --------- | ------------------------------------------- | +| `asset_token` | HumanAddr | Contract address of mAsset to be registered | +| `auction_discount` | Decimal | Auction discount rate | +| `min_collateral_ratio` | Decimal | Minimum collateralization ratio | +| `ipo_params`\* | IPOParams | Parameters to be used for Pre-IPO asset | \*= optional @@ -296,8 +296,8 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| ------------- | --------- | ----------------------------- | | `asset_token` | HumanAddr | Contract address of the token | ### `RegisterMigration` @@ -328,10 +328,10 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| ------------- | --------- | ---------------------------------------- | | `asset_token` | HumanAddr | Contract address of asset to be migrated | -| `end_price` | Decimal | Final price to freeze old mAsset | +| `end_price` | Decimal | Final price to freeze old mAsset | ### `OpenPosition` @@ -403,12 +403,12 @@ pub enum AssetInfo { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `asset_info` | AssetInfo | Asset to be minted by CDP | -| `collateral` | Asset | Initial collateral deposit for the CDP | -| `collateral_ratio` | Decimal | Initial desired collateralization ratio | -| `short_params`\* | ShortParams | Terraswap Price and spread limit to immediately short tokens after CDP creation \(used for "Short"\) | +| Key | Type | Description | +| ------------------ | ----------- | -------------------------------------------------------------------------------------------------- | +| `asset_info` | AssetInfo | Asset to be minted by CDP | +| `collateral` | Asset | Initial collateral deposit for the CDP | +| `collateral_ratio` | Decimal | Initial desired collateralization ratio | +| `short_params`\* | ShortParams | Terraswap Price and spread limit to immediately short tokens after CDP creation (used for "Short") | \*= optional @@ -428,10 +428,10 @@ pub struct ShortParams { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `belief_price`\* | Decimal | Price submitted to the Terraswap pool | -| `max_spread`\* | Decimal | Maximum slippage accepted during swap transaction against the Terraswap Pool | +| Key | Type | Description | +| ---------------- | ------- | ---------------------------------------------------------------------------- | +| `belief_price`\* | Decimal | Price submitted to the Terraswap pool | +| `max_spread`\* | Decimal | Maximum slippage accepted during swap transaction against the Terraswap Pool | \*=optional @@ -476,10 +476,10 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `collateral` | Asset | Collateral amount to be deposited | -| `position_idx` | Uint128 | Index of position | +| Key | Type | Description | +| -------------- | ------- | --------------------------------- | +| `collateral` | Asset | Collateral amount to be deposited | +| `position_idx` | Uint128 | Index of position | ### `Withdraw` @@ -518,10 +518,10 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `collateral` | Asset | Collateral to withdraw | -| `position_idx` | Uint128 | Index of position | +| Key | Type | Description | +| -------------- | ------- | ---------------------- | +| `collateral` | Asset | Collateral to withdraw | +| `position_idx` | Uint128 | Index of position | ### `Mint` @@ -565,11 +565,11 @@ pub enum HandleMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `position_idx` | Uint128 | Index of position | -| `asset` | Asset | mAssets to be minted | -| `short_params` | ShortParams | Terraswap Price and maximum slippage tolerance to be applied for selling minted token after position creation \(used for "Short"\) | +| Key | Type | Description | +| -------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `position_idx` | Uint128 | Index of position | +| `asset` | Asset | mAssets to be minted | +| `short_params` | ShortParams | Terraswap Price and maximum slippage tolerance to be applied for selling minted token after position creation (used for "Short") | ## Receive Hooks @@ -618,11 +618,11 @@ pub enum Cw20HookMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `asset_info` | AssetInfo | mAsset to be minted by CDP | -| `collateral_ratio` | Decimal | Initial collateralization ratio to use | -| `short_params` | ShortParams | Terraswap Price and spread limit to immediately short tokens after CDP creation \(used for "Short"\) | +| Key | Type | Description | +| ------------------ | ----------- | -------------------------------------------------------------------------------------------------- | +| `asset_info` | AssetInfo | mAsset to be minted by CDP | +| `collateral_ratio` | Decimal | Initial collateralization ratio to use | +| `short_params` | ShortParams | Terraswap Price and spread limit to immediately short tokens after CDP creation (used for "Short") | ### `Deposit` @@ -658,13 +658,13 @@ pub enum Cw20HookMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| -------------- | ------- | ----------------- | | `position_idx` | Uint128 | Index of position | ### `Burn` -Issued when a user sends mAsset tokens to the Mint contract. +Issued when a user sends mAsset tokens to the Mint contract. Burns the sent tokens against a CDP and reduces the C-ratio. If all outstanding minted mAsset tokens are burned, the position is closed and the collateral is returned. @@ -692,15 +692,15 @@ pub enum Cw20HookMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| -------------- | ------- | ----------------- | | `position_idx` | Uint128 | Index of position | ### `Auction` Issued when a user sends mAsset tokens to the Mint contract. -Purchases the collateral of a CDP subject to liquidation \(whose C-ratio has fallen under its minted mAsset's minimum\). The buyer cannot pay more than the CDP's current minted mAsset balance. +Purchases the collateral of a CDP subject to liquidation (whose C-ratio has fallen under its minted mAsset's minimum). The buyer cannot pay more than the CDP's current minted mAsset balance. The discounted price for the collateral is calculated as follows: @@ -732,8 +732,8 @@ pub enum Cw20HookMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| -------------- | ------- | ----------------- | | `position_idx` | Uint128 | Index of position | ## QueryMsg @@ -768,18 +768,18 @@ pub struct ConfigResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `owner` | HumanAddr | Owner of contract | -| `oracle` | HumanAddr | Contract address of [Mirror Oracle](oracle.md) | -| `collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | -| `collateral_oracle` | HumanAddr | Contract address of Mirror Collateral Oracle | -| `staking` | HumanAddr | Contract address of Mirror Staking | -| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | -| `lock` | HumanAddr | Contract address of Mirror Lock | -| `base_denom` | String | Native token denomination for stablecoin \(TerraUSD\) | -| `token_code_id` | u64 | Code ID for Terraswap CW20 Token | -| `protocol_fee_rate` | Decimal | Protocol fee | +| Key | Type | Description | +| ------------------- | --------- | ----------------------------------------------------- | +| `owner` | HumanAddr | Owner of contract | +| `oracle` | HumanAddr | Contract address of [Mirror Oracle](broken-reference) | +| `collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | +| `collateral_oracle` | HumanAddr | Contract address of Mirror Collateral Oracle | +| `staking` | HumanAddr | Contract address of Mirror Staking | +| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | +| `lock` | HumanAddr | Contract address of Mirror Lock | +| `base_denom` | String | Native token denomination for stablecoin (TerraUSD) | +| `token_code_id` | u64 | Code ID for Terraswap CW20 Token | +| `protocol_fee_rate` | Decimal | Protocol fee | {% endtab %} {% tab title="JSON" %} @@ -808,18 +808,18 @@ pub struct ConfigResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `owner` | HumanAddr | Owner of contract | -| `oracle` | HumanAddr | Contract address of [Mirror Oracle](oracle.md) | -| `collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | -| `collateral_oracle` | HumanAddr | Contract address of Mirror Collateral Oracle | -| `staking` | HumanAddr | Contract address of Mirror Staking | -| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | -| `lock` | HumanAddr | Contract address of Mirror Lock | -| `base_denom` | String | Native token denomination for stablecoin \(TerraUSD\) | -| `token_code_id` | u64 | Code ID for Terraswap CW20 Token | -| `protocol_fee_rate` | Decimal | Protocol fee | +| Key | Type | Description | +| ------------------- | --------- | ----------------------------------------------------- | +| `owner` | HumanAddr | Owner of contract | +| `oracle` | HumanAddr | Contract address of [Mirror Oracle](broken-reference) | +| `collector` | HumanAddr | Contract address of [Mirror Collector](collector.md) | +| `collateral_oracle` | HumanAddr | Contract address of Mirror Collateral Oracle | +| `staking` | HumanAddr | Contract address of Mirror Staking | +| `terraswap_factory` | HumanAddr | Contract address of Terraswap Factory | +| `lock` | HumanAddr | Contract address of Mirror Lock | +| `base_denom` | String | Native token denomination for stablecoin (TerraUSD) | +| `token_code_id` | u64 | Code ID for Terraswap CW20 Token | +| `protocol_fee_rate` | Decimal | Protocol fee | {% endtab %} {% endtabs %} @@ -837,8 +837,8 @@ pub enum QueryMsg { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| ------------- | --------- | ---------------------------------- | | `asset_token` | HumanAddr | Contract address of asset to query | #### Response @@ -854,13 +854,13 @@ pub struct AssetConfigResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `token` | HumanAddr | Contract address of asset to query | -| `auction_discount` | Decimal | Discount rate applied for liquidation auction | -| `min_collateral_ratio` | Decimal | Lowest collateral ratio to mint this mAsset | -| `end_price`\* | Decimal | Fixed oracle price of mAsset when migration / Pre-IPO / Delisting occurs | -| `ipo_params`\* | u64 | Parameters to be used for Pre-IPO assets | +| Key | Type | Description | +| ---------------------- | --------- | ------------------------------------------------------------------------ | +| `token` | HumanAddr | Contract address of asset to query | +| `auction_discount` | Decimal | Discount rate applied for liquidation auction | +| `min_collateral_ratio` | Decimal | Lowest collateral ratio to mint this mAsset | +| `end_price`\* | Decimal | Fixed oracle price of mAsset when migration / Pre-IPO / Delisting occurs | +| `ipo_params`\* | u64 | Parameters to be used for Pre-IPO assets | \*= optional {% endtab %} @@ -878,8 +878,8 @@ pub struct AssetConfigResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| ------------- | --------- | ---------------------------------- | | `asset_token` | HumanAddr | Contract address of asset to query | #### Response @@ -900,13 +900,13 @@ pub struct AssetConfigResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | -| `token` | HumanAddr | Contract address of asset to query | -| `auction_discount` | Decimal | Discount rate applied for liquidation auction | -| `min_collateral_ratio` | Decimal | Lowest collateral ratio to mint this mAsset | -| `end_price`\* | Decimal | Fixed oracle price of mAsset when migration / Pre-IPO / Delisting occurs | -| `ipo_params`\* | u64 | Parameters to be used for Pre-IPO assets | +| Key | Type | Description | +| ---------------------- | --------- | ------------------------------------------------------------------------ | +| `token` | HumanAddr | Contract address of asset to query | +| `auction_discount` | Decimal | Discount rate applied for liquidation auction | +| `min_collateral_ratio` | Decimal | Lowest collateral ratio to mint this mAsset | +| `end_price`\* | Decimal | Fixed oracle price of mAsset when migration / Pre-IPO / Delisting occurs | +| `ipo_params`\* | u64 | Parameters to be used for Pre-IPO assets | \*= optional {% endtab %} @@ -926,8 +926,8 @@ pub enum QueryMsg { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| -------------- | ------- | -------------------------- | | `position_idx` | Uint128 | Index of position to query | #### Response @@ -943,13 +943,13 @@ pub struct PositionResponse { } ``` -| Name | Type | Description | -| :--- | :--- | :--- | -| `idx` | Uint128 | Index of CDP | -| `owner` | HumanAddr | Address of CDP owner | -| `collateral` | Asset | Asset used as collateral | -| `asset` | Asset | Asset minted by CDP | -| `is_short` | bool | Determines if CDP is short position or not | +| Name | Type | Description | +| ------------ | --------- | ------------------------------------------ | +| `idx` | Uint128 | Index of CDP | +| `owner` | HumanAddr | Address of CDP owner | +| `collateral` | Asset | Asset used as collateral | +| `asset` | Asset | Asset minted by CDP | +| `is_short` | bool | Determines if CDP is short position or not | {% endtab %} {% tab title="JSON" %} @@ -961,8 +961,8 @@ pub struct PositionResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| -------------- | ------- | -------------------------- | | `position_idx` | Uint128 | Index of position to query | #### Response @@ -993,13 +993,13 @@ pub struct PositionResponse { } ``` -| Name | Type | Description | -| :--- | :--- | :--- | -| `idx` | Uint128 | Index of CDP | -| `owner` | HumanAddr | Address of CDP owner | -| `collateral` | Asset | Asset used as collateral | -| `asset` | Asset | Asset minted by CDP | -| `is_short` | bool | Determines if CDP is short position or not | +| Name | Type | Description | +| ------------ | --------- | ------------------------------------------ | +| `idx` | Uint128 | Index of CDP | +| `owner` | HumanAddr | Address of CDP owner | +| `collateral` | Asset | Asset used as collateral | +| `asset` | Asset | Asset minted by CDP | +| `is_short` | bool | Determines if CDP is short position or not | {% endtab %} {% endtabs %} @@ -1026,8 +1026,8 @@ pub struct NextPositionIdxResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| ------------------- | ------- | ---------------------------------------- | | `next_position_idx` | Uint128 | Index of the next position to be created | {% endtab %} @@ -1048,8 +1048,8 @@ pub struct NextPositionIdxResponse { } ``` -| Key | Type | Description | -| :--- | :--- | :--- | +| Key | Type | Description | +| ------------------- | ------- | ---------------------------------------- | | `next_position_idx` | Uint128 | Index of the next position to be created | {% endtab %} {% endtabs %} @@ -1085,12 +1085,11 @@ pub enum QueryMsg { {% endtab %} {% endtabs %} -| Key | Type | Description | -| :--- | :--- | :--- | -| `limit`\* | u32 | Upper bound of number of entries to query | -| `owner_addr*` | HumanAddr | Owner of positions | -| `asset_token`\* | HumanAddr | Contract address of asset token | -| `start_after`\* | Uint128 | Position index to start at | +| Key | Type | Description | +| --------------- | --------- | ----------------------------------------- | +| `limit`\* | u32 | Upper bound of number of entries to query | +| `owner_addr*` | HumanAddr | Owner of positions | +| `asset_token`\* | HumanAddr | Contract address of asset token | +| `start_after`\* | Uint128 | Position index to start at | \* = optional - diff --git a/contracts/oracle.md b/contracts/oracle.md deleted file mode 100644 index c032a93..0000000 --- a/contracts/oracle.md +++ /dev/null @@ -1,401 +0,0 @@ -# Oracle - -The Oracle Contract exposes an interface for accessing the latest reported price for mAssets. Price quotes are kept up-to-date by oracle feeders that are tasked with periodically fetching exchange rates from reputable sources and reporting them to the Oracle contract. - -Prices are only considered valid for 60 seconds. If no new prices are published after the data has expired, Mirror will disable CDP operations (mint, burn, deposit, withdraw) until the price feed resumes. - -## InitMsg - -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct InitMsg { - pub owner: HumanAddr, - pub base_asset: String, -} -``` - -| Key | Type | Description | -| ------------ | --------- | ------------------------------------------------------------ | -| `owner` | HumanAddr | Address of the owner who can register new assets | -| `base_asset` | String | Asset in which prices will be denominated (default TerraUSD) | - -## HandleMsg - -### `UpdateConfig` - -This function can only be issued by the active owner of the Oracle contract. - -{% tabs %} -{% tab title="Rust" %} -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum HandleMsg { - UpdateConfig { - owner: Option, - } -} -``` -{% endtab %} - -{% tab title="JSON" %} -```javascript -{ - "update_config": { - "owner": "terra1..." - } -} -``` -{% endtab %} -{% endtabs %} - -| Key | Type | Description | -| --------- | --------- | -------------------- | -| `owner`\* | HumanAddr | Address of new owner | - -\* = optional - -### `RegisterAsset` - -Registers a new asset with the oracle, enabling a price feed for the asset. The feeder account responsible for reporting the price is assigned at this step. Can also be used to update an existing asset. - -{% tabs %} -{% tab title="Rust" %} -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum HandleMsg { - RegisterAsset { - asset_token: HumanAddr, - feeder: HumanAddr, - } -} -``` -{% endtab %} - -{% tab title="JSON" %} -```javascript -{ - "register_asset": { - "asset_token": "terra1...", - "feeder": "terra1..." - } -} -``` -{% endtab %} -{% endtabs %} - -| Key | Type | Description | -| ------------- | --------- | -------------------------------------- | -| `asset_token` | HumanAddr | Contract address of asset token | -| `feeder` | HumanAddr | Address of Oracle Feeder for the asset | - -### `FeedPrice` - -Publish a price for one or multiple assets. Caller should be the designated oracle feeder for each of the assets for which price information is provided. - -{% tabs %} -{% tab title="Rust" %} -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum HandleMsg { - FeedPrice { - prices: Vec<(HumanAddr, Decimal)>, - } -} -``` -{% endtab %} - -{% tab title="JSON" %} -```javascript -{ - "feed_price": { - "prices": [ - ["terra1...", "123.456789"], - ["terra1...", "123.456789"] - ] - } -} -``` -{% endtab %} -{% endtabs %} - -| Key | Type | Description | -| -------- | ------------------------- | ---------------------------- | -| `prices` | Vec<(HumanAddr, Decimal)> | Price information for assets | - -## QueryMsg - -### `Config` - -Get the Mirror Oracle contract configuration. - -{% tabs %} -{% tab title="Rust" %} -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum QueryMsg { - Config {} -} -``` - -#### Response - -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct ConfigResponse { - pub owner: HumanAddr, - pub base_asset: String, -} -``` - -| Key | Type | Description | -| ------------ | --------------- | ------------------------------------------------------------ | -| `owner` | HumanAddr | Owner address | -| `base_asset` | String/`'uusd'` | Asset in which prices will be denominated (default TerraUSD) | -{% endtab %} - -{% tab title="JSON" %} -```javascript -{ - "config": {} -} -``` - -#### Response - -```rust -{ - "config_response": { - "owner": "terra1...", - "base_asset": "uusd" - } -} -``` - -| Key | Type | Description | -| ------------ | --------------- | ------------------------------------------------------------ | -| `owner` | HumanAddr | Owner address | -| `base_asset` | String/`'uusd'` | Asset in which prices will be denominated (default TerraUSD) | -{% endtab %} -{% endtabs %} - -### `Feeder` - -Get asset token details, such as designated oracle feeder. - -{% tabs %} -{% tab title="Rust" %} -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum QueryMsg { - Feeder { - asset_token: HumanAddr, - } -} -``` - -| Key | Type | Description | -| ------------- | --------- | ---------------------------------------- | -| `asset_token` | HumanAddr | Contract address of asset token to query | - -#### Response - -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct FeederResponse { - pub asset_token: HumanAddr, - pub feeder: HumanAddr, -} -``` - -| Key | Type | Description | -| ------------- | --------- | ---------------------------------------- | -| `asset_token` | HumanAddr | Contract address of asset token to query | -| `feeder` | HumanAddr | Terra address of price feeder | -{% endtab %} - -{% tab title="JSON" %} -```javascript -{ - "asset": { - "asset_token": "terra1..." - } -} -``` - -| Key | Type | Description | -| ------------- | --------- | ---------------------------------------- | -| `asset_token` | HumanAddr | Contract address of asset token to query | - -#### Response - -```rust -{ - "feeder_response": { - "asset_token": "terra1...", - "feeder": "terra1..." - } -} -``` - -| Key | Type | Description | -| ------------- | --------- | ---------------------------------------- | -| `asset_token` | HumanAddr | Contract address of asset token to query | -| `feeder` | HumanAddr | Terra address of price feeder | -{% endtab %} -{% endtabs %} - -### `Price` - -Get price information for the specified mAsset. - -{% tabs %} -{% tab title="Rust" %} -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum QueryMsg { - Price { - base_asset: String, - quote_asset: String - } -} -``` - -| Key | Type | Description | -| ------------- | -------------------- | ---------------------------------------- | -| `base_asset` | HumanAddr | Asset for which to get price | -| `quote_asset` | HumanAddr / `'uusd'` | Asset in which price will be denominated | - -#### Response - -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct PriceResponse { - pub rate: Decimal, - pub last_updated_base: u64, - pub last_updated_quote: u64, -} -``` - -| Key | Type | Description | -| -------------------- | --------- | ---------------------------------------------------------------- | -| `rate` | HumanAddr | Asset for which to get price | -| `last_updated_base` | u64 | Block height which the `base_asset` price has been updated at | -| `last_updated_quote` | u64 | Block height which the` quote_asset `price has been updated at | -{% endtab %} - -{% tab title="JSON" %} -```javascript -{ - "price": { - "base_asset": "terra1...", - "quote_asset": "uusd" - } -} -``` - -| Key | Type | Description | -| ------------- | -------------------- | ---------------------------------------- | -| `base_asset` | HumanAddr | Asset for which to get price | -| `quote_asset` | HumanAddr / `'uusd'` | Asset in which price will be denominated | - -#### Response - -```rust -{ - "price_response": { - "rate": "123.456789", - "last_updated_base": 10 - "last_updated_quote": 10 - } -} -``` - -| Key | Type | Description | -| -------------------- | --------- | ---------------------------------------------------------------- | -| `rate` | HumanAddr | Asset for which to get price | -| `last_updated_base` | u64 | Block height which the `base_asset` price has been updated at | -| `last_updated_quote` | u64 | Block height which the` quote_asset `price has been updated at | -{% endtab %} -{% endtabs %} - -### `Prices` - -Get price information for all registered mAssets. - -{% tabs %} -{% tab title="Rust" %} -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -#[serde(rename_all = "snake_case")] -pub enum QueryMsg { - Prices { - start_after: Option, - limit: Option - } -} -``` - -| Key | Type | Description | -| --------------- | --------- | ------------------------------------ | -| `start_after`\* | HumanAddr | Contract address to start query from | -| `limit` | u32 | Max number of results to report | - -#### Response - -```rust -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] -pub struct PricesResponseElem { - pub asset_token: HumanAddr, - pub price: Decimal, - pub last_updated_time: u64, -} -``` - -| Key | Type | Description | -| ------------------- | --------- | ------------------------------------------------------------ | -| `asset_token` | HumanAddr | Contract address to start query from | -| `price` | Decimal | Current price of the `asset_token` | -| `last_updated_time` | u64 | Block height which the`asset_token`price has been updated at | -{% endtab %} - -{% tab title="JSON" %} -```javascript -{ - "prices": { - "start_after": "terra1...", - "limit": 8 - } -} -``` - -| Key | Type | Description | -| --------------- | --------- | ------------------------------------ | -| `start_after`\* | HumanAddr | Contract address to start query from | -| `limit` | u32 | Max number of results to report | - -#### Response - -```rust -{ - "prices_response": { - "asset_token": "terra1...", - "price": "123.456789", - "last_updated_time": 10, - } - ... -} -``` - -| Key | Type | Description | -| ------------------- | --------- | ------------------------------------------------------------ | -| `asset_token` | HumanAddr | Contract address to start query from | -| `price` | Decimal | Current price of the `asset_token` | -| `last_updated_time` | u64 | Block height which the`asset_token`price has been updated at | -{% endtab %} -{% endtabs %} diff --git a/contracts/tefi-oracle.md b/contracts/tefi-oracle.md new file mode 100644 index 0000000..419747e --- /dev/null +++ b/contracts/tefi-oracle.md @@ -0,0 +1,1037 @@ +# TeFi Oracle + +The TeFi oracle is a set of smart contracts that support price oracles used across multiple DeFi protocols built on top of Terra blockchain, providing an interface for accessing the latest reported prices for the assets provided by its whitelisted oracle services. Price quotes are kept up-to-date by oracle providers that fetch exchange rates for real-world assets from reputable sources. + +On the Mirror Protocol, these prices are used for CDP operations (mint, burn, short, deposit, withdraw) while the price feed is active. Prices are considered stale when there is no new valid price for 60 seconds. + +### Smart Contracts + +| Contract | Function | +| -------- | ---------------------------------------------------------------------------------------- | +| Hub | A central directory that holds whitelisted oracle provider information and their proxies | +| Proxy | Storage of price information maintained by the oracle provider | + +## Hub + +The Hub contract is a central directory for all oracle price providers and their proxies. On the Mirror Protocol, the Hub contract is owned by the Mirror Governance contract, and transactions can only be called through Mirror’s governance consensus. + +Through the interaction with the Hub contract, the following actions can happen: + +* Whitelisting a new oracle service provider +* Registering new price sources on an existing proxy +* Removing and changing priorities of already existing prices + +## InstantiateMsg + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct InstantiateMsg { + pub owner: String, + pub base_denom: String, + pub max_proxies_per_symbol: u8, +} +``` + +| Key | Type | Description | +| ------------------------ | ------ | ----------------------------------------------------------- | +| `owner` | String | Owner of Hub contract (Mirror Factory) | +| `base_denom` | String | Token in which the price will be displayed | +| `max_proxies_per_symbol` | u8 | Number of sources that can be registered to a single mAsset | + +## ExecuteMsg + +{% hint style="info" %} +All Oracle Hub contract operations can be only called by owner - Mirror Factory, which is owned by Mirror Governance. +{% endhint %} + +### UpdateOwner + +Operation to update owner of the Hub contract. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { +UpdateOwner { + owner: String + }, +``` + +| Key | Type | Description | +| ------- | ------ | ------------------------------------- | +| `owner` | String | Address of the owner to be changed to | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"update_owner": { + "owner": "terra1..." + } +} +``` + +| Key | Type | Description | +| ------- | ------ | ------------------------------------- | +| `owner` | String | Address of the owner to be changed to | +{% endtab %} +{% endtabs %} + +### UpdateMaxProxies + +Operation used to update the maximum number of price sources that can be registered per mAsset + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + UpdateMaxProxies { max_proxies_per_symbol: u8 }, +``` + +| Key | Type | Description | +| ------------------------ | ---- | ------------------------------------------------------------- | +| `max_proxies_per_symbol` | u8 | Max number of price sources that can be registered per mAsset | +{% endtab %} + +{% tab title="JSON" %} + + +```json +{ +"update_max_proxies": { + "max_proxies_per_symbol": 3 + } +} +``` + +| Key | Type | Description | +| ------------------------ | ---- | ------------------------------------------------------------- | +| `max_proxies_per_symbol` | u8 | Max number of price sources that can be registered per mAsset | +| | | | +| | | | +{% endtab %} +{% endtabs %} + +### RegisterSource + +The operation used to register a new price source for an asset. Source can only be registered once a proxy is whitelisted to the Hub contract through the `WhitelistProxy` operation. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + RegisterSource { + symbol: String, + proxy_addr: String, + priority: Option, + } +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to register price source for | +| `proxy_addr` | String | Address of the proxy contract through which the price is updated | +| `priority` | u8 | Defines the priority for this price source over other existing ones | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"register_source": { + "symbol": "AAPL", + "proxy_addr": "terra1...", + "priority": 30 + } +} +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to register price source for | +| `proxy_addr` | String | Address of the proxy contract through which the price is updated | +| `priority` | u8 | Defines the priority for this price source over other existing ones | +{% endtab %} +{% endtabs %} + +### BulkRegisterSource + +Registers multiple sources in one transaction. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + BulkRegisterSource { + sources: Vec<(String, String, Option)>, // (symbol, proxy_addr, priority) + }, +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to register price source for | +| `proxy_addr` | String | Address of the proxy contract which the price is updated in | +| `priority` | u8 | Defines the priority of this price source over other existing ones for an asset | +{% endtab %} + +{% tab title="JSON" %} + + +```json +{ +"bulk_register_source": { + "sources": [ + ("AAPL", "terra1...", 10), + ("GOOGL", "terra1...", 20) + ] + } +} +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to register price source for | +| `proxy_addr` | String | Address of the proxy contract which the price is updated in | +| `priority` | u8 | Defines the priority of this price source over other existing ones for an asset | +{% endtab %} +{% endtabs %} + +### UpdateSourcePriorityList + +Updates the priorities for proxies that are already registered + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + UpdateSourcePriorityList { + symbol: String, + priority_list: Vec<(String, u8)>, + } +``` + +| Key | Type | Description | +| --------------- | ----------------- | ---------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to change source priority for | +| `priority_list` | Vec<(String, u8)> | Vector of Source address (String) and priority number (u8) | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"update_source_priority_list": { + "symbol": "AAPL", + "priority_list": [ + ("terra1...", 10), + ("terra1...", 20) + ] + } +} +``` + +| Key | Type | Description | +| --------------- | ----------------- | ---------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to change source priority for | +| `priority_list` | Vec<(String, u8)> | Vector of Source address (String) and priority number (u8) | +{% endtab %} +{% endtabs %} + +### RemoveSource + +Removes a price source of a specified asset symbol from a proxy address. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + RemoveSource { + symbol: String, + proxy_addr: String +}, +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to remove price source from | +| `proxy_addr` | String | The address of the proxy contract from which the price source is provided | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"remove_source": { + "symbol": "AAPL", + "proxy_addr": "terra1..." + } +} +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to remove price source from | +| `proxy_addr` | String | The address of the proxy contract from which the price source is provided | +{% endtab %} +{% endtabs %} + +### WhitelistProxy + +Whitelists a new proxy contract as a price source. After the proxy is whitelisted, it can be registered as a source. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + WhitelistProxy { + proxy_addr: String, + provider_name: String, + }, +``` + +| Key | Type | Description | +| --------------- | ------ | ------------------------------------------------- | +| `proxy_addr` | String | Address of the proxy contract to whitelist to Hub | +| `provider_name` | String | Name to give to the newly whitelisted proxy | +{% endtab %} + +{% tab title="JSON" %} + + +```json +{ +"whitelist_proxy": { + "proxy_addr": "terra1...", + "provider_name": "Band Protocol Feeder" + } +} +``` + +| Key | Type | Description | +| --------------- | ------ | ------------------------------------------------- | +| `proxy_addr` | String | Address of the proxy contract to whitelist to Hub | +| `provider_name` | String | Name to give to the newly whitelisted proxy | +{% endtab %} +{% endtabs %} + +### RemoveProxy + +Removes a whitelisted proxy contract entirely from the Hub contract. This is different from RemoveSource which only removes a single price of an asset, instead of removing the entire set of prices from the proxy. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + RemoveProxy { + proxy_addr: String +}, +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------ | +| `proxy_addr` | String | Address of the proxy to remove from Hub contract | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"remove_proxy": { + "proxy_addr": "terra1..." + } +} +``` + +| Key | Type | Description | +| ------------ | ------ | ------------------------------------------------ | +| `proxy_addr` | String | Address of the proxy to remove from Hub contract | +{% endtab %} +{% endtabs %} + +### InsertAssetSymbolMap + +Updates the map of asset\_token to symbol. Asset mapping storage is overwritten by this operation if it already exists. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + InsertAssetSymbolMap { + map: Vec<(String, String)>, // (address, symbol) + }, +``` + +| Key | Type | Description | +| --------- | ------ | --------------------------------------- | +| `address` | String | Address of the asset token contract | +| `symbol` | String | Symbol applied to the specified address | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"insert_asset_symbol_map": { + "map": [ + ("terra1...", "AAPL"), + ("terra1...", "GOOGL") + ] + } +} +``` + +| Key | Type | Description | +| --------- | ------ | --------------------------------------- | +| `address` | String | Address of the asset token contract | +| `symbol` | String | Symbol applied to the specified address | +{% endtab %} +{% endtabs %} + +## QueryMsg + +### Config + +Returns the configuration of the Oracle Hub contract + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + Config {}, +``` + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ConfigResponse { + pub owner: String, + pub base_denom: String, + pub max_proxies_per_symbol: u8, +} +``` + +| Key | Type | Description | +| ------------------------ | ------ | ------------------------------------------------------------ | +| `owner` | String | Owner of oracle hub contract (Factory) | +| `base_denom` | String | Base price denomination unit (UST) | +| `max_proxies_per_symbol` | u8 | Maximum number of proxies that can be registered to a symbol | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"config": {} +} +``` + +#### Response + +```json +{ +"config_response": { + "owner": "terra1...", + "base_denom": "uusd", + "max_proxies_per_symbol": 2 + } +} +``` + +| Key | Type | Description | +| ------------------------ | ------ | ------------------------------------------------------------ | +| `owner` | String | Owner of oracle hub contract (Factory) | +| `base_denom` | String | Base price denomination unit (UST) | +| `max_proxies_per_symbol` | u8 | Maximum number of proxies that can be registered to a symbol | +{% endtab %} +{% endtabs %} + +### ProxyWhitelist + +Returns the list of whitelisted proxies / oracle providers. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + ProxyWhitelist {}, +``` + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ProxyWhitelistResponse { + pub proxies: Vec, +} + +//ProxyInfoResponse +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct ProxyInfoResponse { + pub address: String, + pub provider_name: String, +} +``` + +| Key | Type | Description | +| --------------- | ----------------------- | ------------------------------------------------ | +| `proxies` | Vec\ | Vector list of proxies whitelisted in Oracle Hub | +| `address` | String | Address of the whitelisted proxy | +| `provider_name` | String | Name applied to the given proxy address | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"proxy_whitelist": {} +} +``` + +#### Response + +```json +{ +"proxy_whitelist_response": { + "proxies": [ + ("terra1...", "Band Protocol Feeder"), + ("terra1...", "Band protocol Feeder") + ] + } +} +``` + +| Key | Type | Description | +| --------------- | ----------------------- | ------------------------------------------------ | +| `proxies` | Vec\ | Vector list of proxies whitelisted in Oracle Hub | +| `address` | String | Address of the whitelisted proxy | +| `provider_name` | String | Name applied to the given proxy address | + + +{% endtab %} +{% endtabs %} + +### AllSources + +Returns the list of all symbols with all the sources + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + AllSources { + start_after: Option, // symbol for pagination + limit: Option, + }, +``` + +| Key | Type | Description | +| ------------- | ------ | ------------------------------- | +| `start_after` | String | Symbol of asset to start from | +| `limit` | u32 | Max number of entries to return | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct AllSourcesResponse { + pub list: Vec, +} + +//SourceResponse +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct PriceListResponse { + pub price_list: Vec<(u8, ProxyInfoResponse, PriceQueryResult)>, // (priority, proxy_info, result) +} +``` + +| Key | Type | Description | +| ------------ | ---------------------------------------------- | -------------------------------------------------------------------------- | +| `list` | Vec\ | Vector list of price list entries | +| `price_list` | Vec<(u8, ProxyInfoResponse, PriceQueryResult)> | Returns a list of price priority (u8), proxy information and price results | +| | | | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"all_sources": { + "start_after": "AAPL", + "limit": 10 + } +} +``` + +| Key | Type | Description | +| ------------- | ------ | ------------------------------- | +| `start_after` | String | Symbol of asset to start from | +| `limit` | u32 | Max number of entries to return | +{% endtab %} +{% endtabs %} + +### Sources + +Returns the information all registered proxies for the provided asset\_token. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + Sources { asset_token: String }, +``` + +| Key | Type | Description | +| ------------- | ------ | -------------------------------------------------- | +| `asset_token` | String | Address of the asset token to return responses for | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct SourcesResponse { + pub symbol: String, + pub proxies: Vec<(u8, ProxyInfoResponse)>, +} +``` + +| Key | Type | Description | +| ------------ | ---------------------------------------------- | -------------------------------------------------------------------------- | +| `list` | Vec\ | Vector list of price list entries | +| `price_list` | Vec<(u8, ProxyInfoResponse, PriceQueryResult)> | Returns a list of price priority (u8), proxy information and price results | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"sources": { + "asset_token": "terra1..." + } +} +``` + +| Key | Type | Description | +| ------------- | ------ | -------------------------------------------------- | +| `asset_token` | String | Address of the asset token to return responses for | + +#### Response + +```json +{ +"sources_response": { + "symbol": "AAPL", + "proxies": [ + (10, "terra1...", "Band Protocol Feeder"), + (10, "terra1...", "Band Protocol Feeder") + ] + } +} +``` + +| | | | +| ------------ | ---------------------------------------------- | -------------------------------------------------------------------------- | +| `list` | Vec\ | Vector list of price list entries | +| `price_list` | Vec<(u8, ProxyInfoResponse, PriceQueryResult)> | Returns a list of price priority (u8), proxy information and price results | +{% endtab %} +{% endtabs %} + +### SourcesBySymbol + +Returns the information of all registered proxies for a provided `asset_token`. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + SourcesBySymbol { symbol: String }, +``` + +| Key | Type | Description | +| -------- | ------ | ---------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return source information for | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct SourcesResponse { + pub symbol: String, + pub proxies: Vec<(u8, ProxyInfoResponse)>, +} +``` + +| Key | Type | Description | +| --------- | ---------------------------- | ---------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return source information for | +| `proxies` | Vec<(u8, ProxyInfoResponse)> | Returns proxy priority (u8), and general proxy information | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"sources_by_symbol": { + "symbol": "AAPL" + } +} +``` + +| Key | Type | Description | +| -------- | ------ | ---------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return source information for | + +#### Response + +```json +{ +"sources_response": { + "symbol": "AAPL", + "proxies": [ + (10, "terra1...", "Band Protocol Feeder") + ] + } +} +``` + +| Key | Type | Description | +| --------- | ---------------------------- | ---------------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return source information for | +| `proxies` | Vec<(u8, ProxyInfoResponse)> | Returns proxy priority (u8), and general proxy information | +{% endtab %} +{% endtabs %} + +### Price + +Queries the highest priority available price within the timeframe. If timeframe is not provided, the age of the price will be ignored. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + Price { + asset_token: String, + timeframe: Option, + }, +``` + +| Key | Type | Description | +| ------------- | ------------ | ---------------------------------------------------------------- | +| `asset_token` | String | Address of the asset to query prices for | +| `timeframe` | Option\ | Optional field to enter timeframe of the asset's price to return | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct PriceResponse { + pub rate: Decimal, + pub last_updated: u64, +} +``` + +| Key | Type | Description | +| -------------- | ------- | -------------------------------------------- | +| `rate` | Decimal | Price denominated in `base_denom` | +| `last_updated` | u64 | Last updated time of the given asset's price | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"price": { + "asset_token": "terra1...", + "timeframe": 23451234 + } +} +``` + +| Key | Type | Description | +| ------------- | ------ | ---------------------------------------------------------------- | +| `asset_token` | String | Address of the asset to query prices for | +| `timeframe` | u64 | Optional field to enter timeframe of the asset's price to return | + +#### Response + +```json +{ +"price_response": { + "rate": 142.123, + "last_updated": 23451234 + } +} +``` + +| Key | Type | Description | +| -------------- | ------- | -------------------------------------------- | +| `rate` | Decimal | Price denominated in `base_denom` | +| `last_updated` | u64 | Last updated time of the given asset's price | +{% endtab %} +{% endtabs %} + +### PriceBySymbol + +Returns the highest priority available price within the time frame, using the symbol instead of the asset token address. If timeframe is not provided, it will be ignored. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + PriceBySymbol { + symbol: String, + timeframe: Option, + }, +``` + +| Key | Type | Description | +| ----------- | ------ | -------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return price for (ex. AAPL) | +| `timeframe` | u64 | Optional timeframe to return the price at | + +#### Response + +Same as `Price` QueryMsg +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"price_by_symbol": { + "symbol": "AAPL", + "timeframe": 23451234 + } +} +``` + +| Key | Type | Description | +| ----------- | ------ | -------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return price for (ex. AAPL) | +| `timeframe` | u64 | Optional timeframe to return the price at | + +#### Response + +Same as `Price` QueryMsg +{% endtab %} +{% endtabs %} + +### PriceList + +Returns all registered proxy prices for the provided `asset_token` + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + PriceList { asset_token: String }, +``` + +| Key | Type | Description | +| ------------- | ------ | ---------------------------------------------------------------------- | +| `asset_token` | String | Address of the asset token contract to return all available prices for | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct PriceListResponse { + pub price_list: Vec<(u8, ProxyInfoResponse, PriceQueryResult)>, // (priority, proxy_info, result) +} +``` + +| Key | Type | Description | +| ------------ | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `price_list` | Vec<(u8, ProxyInfoResponse, PriceQueryResult)> | Returns all proxy sources available for a given symbol asset, including priority, proxy information and price queries. | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"price_list": { + "asset_token": "terra1..." + } +} +``` + +| Key | Type | Description | +| ------------- | ------ | ------------------------------------------------------ | +| `asset_token` | String | Address of the token contract to return price list for | +{% endtab %} +{% endtabs %} + +### PriceListBySymbol + +Returns all registered proxy prices for the provided `asset_token`. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + PriceListBySymbol { symbol: String }, +``` + +| Key | Type | Description | +| -------- | ------ | --------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return all price sources for | + +#### Response + +Same as `PriceList` +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"price_list_by_symbol": { + "symbol": "AAPL" + } +} +``` + +| Key | Type | Description | +| -------- | ------ | --------------------------------------------------- | +| `symbol` | String | Symbol of the asset to return all price sources for | + +#### Response + +Same as `PriceList` +{% endtab %} +{% endtabs %} + +### AssetSymbolMap + +Returns the map of `asset_token` to `symbol` + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + AssetSymbolMap { + start_after: Option, // address for pagination + limit: Option, + }, +``` + +| Key | Type | Description | +| ------------- | ------ | ------------------------------- | +| `start_after` | String | Address for pagination | +| `limit` | `u32` | Max number of entries to return | + +#### Response + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct AssetSymbolMapResponse { + pub map: Vec<(String, String)>, // address, symbol +} +``` + +| Key | Type | Description | +| --------- | ------ | ----------------------------- | +| `address` | String | Address of the proxy contract | +| `symbol` | String | Symbol of the asset | +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"asset_symbol_map": { + "start_after": "terra1...", + "limit": 10 + } +} +``` + +| Key | Type | Description | +| ------------- | ------ | ------------------------------- | +| `start_after` | String | Address for pagination | +| `limit` | u32 | Max number of entries to return | + +#### Response + +```json +{ +"asset_symbol_map_response": { + "map": [ + ("terra1...", "AAPL"), + ("terra1...", "GOOGL"), + ... + ] + } +} +``` + +| Key | Type | Description | +| --------- | ------ | ----------------------------- | +| `address` | String | Address of the proxy contract | +| `symbol` | String | Symbol of the asset | +{% endtab %} +{% endtabs %} + + + +### CheckSource + +Check to see if `proxy_addr` is whitelisted and has price feed for the specified `symbol`. Returns the `PriceResponse` or `error` to check if the price feed is valid or not. + +{% tabs %} +{% tab title="Rust" %} +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubQueryMsg { + CheckSource { proxy_addr: String, symbol: String }, +``` + +| Key | Type | Description | +| ------------ | ------ | ----------------------------- | +| `proxy_addr` | String | Address of the proxy contract | +| `symbol` | String | Symbol of the asset | + +#### Response + +Same as `PriceResponse` or an Error +{% endtab %} + +{% tab title="JSON" %} +```json +{ +"check_source": { + "proxy_addr": "terra1...", + "symbol": "AAPL" + } +} +``` + +#### Response + +Same as `PriceResponse` or an Error +{% endtab %} +{% endtabs %} diff --git a/networks.md b/networks.md index 1a2a8fd..d9009c6 100644 --- a/networks.md +++ b/networks.md @@ -22,8 +22,9 @@ Network chain ID: `columbus-5` | Community | [terra1x35fvy3sy47drd3qs288sm47fjzjnksuwpyl9k](https://finder.terra.money/columbus-4/account/terra1x35fvy3sy47drd3qs288sm47fjzjnksuwpyl9k) | | Factory | [terra1mzj9nsxx0lxlaxnekleqdy8xnyw2qrh3uz6h8p](https://finder.terra.money/columbus-4/account/terra1mzj9nsxx0lxlaxnekleqdy8xnyw2qrh3uz6h8p) | | Gov | [terra1wh39swv7nq36pnefnupttm2nr96kz7jjddyt2x](https://finder.terra.money/columbus-4/account/terra1wh39swv7nq36pnefnupttm2nr96kz7jjddyt2x) | +| Admin Manager | [terra138tljkg697vwlvatzzfc7r5lfyhkxt7n7cudce](https://finder.terra.money/mainnet/address/terra138tljkg697vwlvatzzfc7r5lfyhkxt7n7cudce) | | Mint | [terra1wfz7h3aqf4cjmjcvc6s8lxdhh7k30nkczyf0mj](https://finder.terra.money/columbus-4/account/terra1wfz7h3aqf4cjmjcvc6s8lxdhh7k30nkczyf0mj) | -| Oracle | [terra1t6xe0txzywdg85n6k8c960cuwgh6l8esw6lau9](https://finder.terra.money/columbus-4/account/terra1t6xe0txzywdg85n6k8c960cuwgh6l8esw6lau9) | +| Oracle Hub | [terra1t5k2c2p2kf5as247egz53rj8g8g2x4jw9qte9a](https://finder.terra.money/mainnet/address/terra1t5k2c2p2kf5as247egz53rj8g8g2x4jw9qte9a) | | Staking | [terra17f7zu97865jmknk7p2glqvxzhduk78772ezac5](https://finder.terra.money/columbus-4/account/terra17f7zu97865jmknk7p2glqvxzhduk78772ezac5) | | Airdrop | [terra1kalp2knjm4cs3f59ukr4hdhuuncp648eqrgshw](https://finder.terra.money/columbus-4/account/terra1kalp2knjm4cs3f59ukr4hdhuuncp648eqrgshw) | | Limit Order | [terra1zpr8tq3ts96mthcdkukmqq4y9lhw0ycevsnw89](https://finder.terra.money/columbus-4/address/terra1zpr8tq3ts96mthcdkukmqq4y9lhw0ycevsnw89) | @@ -81,8 +82,9 @@ Network chain ID: `bombay-12` | Community | [terra10qm80sfht0zhh3gaeej7sd4f92tswc44fn000q](https://finder.terra.money/tequila-0004/account/terra10qm80sfht0zhh3gaeej7sd4f92tswc44fn000q) | | Factory | [terra10l9xc9eyrpxd5tqjgy6uxrw7dd9cv897cw8wdr](https://finder.terra.money/tequila-0004/account/terra10l9xc9eyrpxd5tqjgy6uxrw7dd9cv897cw8wdr) | | Gov | [terra12r5ghc6ppewcdcs3hkewrz24ey6xl7mmpk478s](https://finder.terra.money/tequila-0004/account/terra12r5ghc6ppewcdcs3hkewrz24ey6xl7mmpk478s) | +| Admin Manager | [terra198rvl2eq3pum8skrr97vj0pqtugt3xns0lmdkc](https://finder.terra.money/testnet/address/terra198rvl2eq3pum8skrr97vj0pqtugt3xns0lmdkc) | | Mint | [terra1s9ehcjv0dqj2gsl72xrpp0ga5fql7fj7y3kq3w](https://finder.terra.money/tequila-0004/account/terra1s9ehcjv0dqj2gsl72xrpp0ga5fql7fj7y3kq3w) | -| Oracle | [terra1uvxhec74deupp47enh7z5pk55f3cvcz8nj4ww9](https://finder.terra.money/tequila-0004/account/terra1uvxhec74deupp47enh7z5pk55f3cvcz8nj4ww9) | +| Oracle Hub | [terra1sdr3rya4h039f4htfm42q44x3dlaxra7hc7p8e](https://finder.terra.money/testnet/address/terra1sdr3rya4h039f4htfm42q44x3dlaxra7hc7p8e) | | Staking | [terra1a06dgl27rhujjphsn4drl242ufws267qxypptx](https://finder.terra.money/tequila-0004/account/terra1a06dgl27rhujjphsn4drl242ufws267qxypptx) | | Airdrop | [terra1p6nvyw7vz3fgpy4nyh3q3vc09e65sr97ejxn2p](https://finder.terra.money/tequila-0004/account/terra1p6nvyw7vz3fgpy4nyh3q3vc09e65sr97ejxn2p) | | Limit Order | [terra1vc4ch0z3n6c23f9uywzy5yqaj2gmpnam8qgge7](https://finder.terra.money/tequila-0004/account/terra1vc4ch0z3n6c23f9uywzy5yqaj2gmpnam8qgge7) | diff --git a/protocol/governance/contract-migration-procedure.md b/protocol/governance/contract-migration-procedure.md new file mode 100644 index 0000000..362884f --- /dev/null +++ b/protocol/governance/contract-migration-procedure.md @@ -0,0 +1,43 @@ +# Contract Migration Procedure + +### Migrations and Updates + +The Mirror Protocol allows developers to propose a smart contract migration through Mirror governance consensus. Any developer who can build Mirror’s smart contracts can submit these polls to allow feature upgrades on Mirror Protocol’s core mechanism. + +The Mirror Admin Manager contract holds the admin keys which can only be used when this specific governance poll passes, and initiates admin actions detailed by the poll. + +{% hint style="warning" %} +There is no user interface on the web application to create migration polls since these are are highly sensitive polls that can cause unwanted results for Mirror Protocol. + +Mirror users can still view and vote on polls created by developers that are able to interact with Mirror governance contract without a user interface. +{% endhint %} + +#### Migration Poll + +This poll allows existing Mirror contracts to be migrated to newly built versions. The developer wanting to create this poll must include the following message within the `admin_action` parameter of the `CreatePoll` transaction: + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + ExecuteMigrations { + migrations: Vec<(String, u64, Binary)>, + } +``` + +where `string` is the contract address to be migrated, `u64` is the code ID, and `Binary` is the migration execution message. + +#### Admin Key Transfer + +This poll is used for special occasions where the admin key for migration is required by an entity that is preparing an update to prepare for Terra blockchain or CosmWasm contract updates. + +To create this poll, the following message must be included within the `admin_action` parameter of `CreatePoll` transaction: + +```rust +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + AuthorizeClaim { authorized_addr: String }, +``` + +where `authorized_addr` is the address to transfer the admin keys for `admin_claim_period`. diff --git a/protocol/governance/modify-gov-parameters.md b/protocol/governance/modify-gov-parameters.md index c758a04..c504dd2 100644 --- a/protocol/governance/modify-gov-parameters.md +++ b/protocol/governance/modify-gov-parameters.md @@ -1,17 +1,11 @@ # Modify Gov Parameters -At the onset of the Mirror Protocol, the `Quorum`, `Threshold`, `Voting Period`, `Effective Delay`, `Expiration Period`, and `Proposal Deposit`have been pre-set as follows: +Currently on Mirror Protocol, the`Effective Delay`and `Voter Weight`have been set as follows: -| Parameter | Current Value | -| :--- | :--- | -| Quorum | 10% | -| Threshold | 50% | -| Voting Period | 201600 blocks | -| Effective Delay | 100800 blocks | -| Expiration Period | 14400 blocks | -| Proposal Deposit | 100 MIR | +| Effective Delay | 86400 seconds (1 day) | +| --------------- | --------------------- | +| Voter Weight | 50% | For more specific information about each parameter, please refer to [**Modify Gov Parameters**](proposal-types.md#5-modify-governance-parameters). When submitting a poll to change a governance parameter, at least one field must be entered. Note that only one optional parameter may be requested to be changed per poll. - diff --git a/protocol/governance/modify-poll-parameters.md b/protocol/governance/modify-poll-parameters.md new file mode 100644 index 0000000..034a947 --- /dev/null +++ b/protocol/governance/modify-poll-parameters.md @@ -0,0 +1,66 @@ +# Modify Poll Parameters + +On Mirror Protocol, there are three different types of governance polls: + +* **Default Poll**: Polls including text poll, community grants, parameter registration and modification polls and asset whitelisting polls. +* **Migration Poll**: Polls to execute migrations through Mirror governance. +* **Authorization Poll:** Polls to transfer admin key rights to an address specified through Mirror Governance, or to modify governance configurations. + +Poll parameter modifications are considered as **Authorization Poll,** and has the same `quorum`, `threshold`, `voting_period` and `proposal deposit`. + +{% hint style="warning" %} +Due to sensitivity of **migration** and **authorization** polls, Mirror web application does not provide user interface to submit these polls to modify the configuration of the two polls. +{% endhint %} + +### 1. Default Poll Parameter + +Default poll parameters can be modified by submitting a poll on Mirror web application. Currently, the default poll parameters are as below: + +| Parameter | Current Value | +| ---------------- | ----------------------- | +| Proposal Deposit | 1,000 MIR | +| Voting Period | 604800 seconds (7 days) | +| Quorum | 18% | +| Threshold | 50% | + +### 2. Migration Poll Parameter + +The developer wanting to create polls to modify migration poll parameters must include the following message within the `admin_action` parameter of the `CreatePoll` transaction: + +```rust +pub enum PollAdminAction { +UpdateConfig { + migration_poll_config: Option, + }, +``` + +Currently, the migration poll parameters are as below: + +| Parameter | Current Value | +| ---------------- | ----------------------------------------------------------------------------------------------------------------- | +| Proposal Deposit | 2,000 MIR | +| Voting Period | 7 days (but if poll reaches quorum and threshold within the voting period, then poll can be executed immediately) | +| Quorum | 40% | +| Threshold | 66.7% | + +### 3. Authorization Poll + +The following message has to be included in `admin_action` parameter of `CreatePoll` transaction in order to create Authorization poll: + +```rust +pub enum PollAdminAction { +UpdateConfig { + auth_admin_poll_config: Option, + }, +``` + +Currently, the authorization poll parameters are as below: + +| Parameter | Current Value | +| ------------------ | ----------------------------------------------------------------------------------------------------------------- | +| Proposal Deposit | 3,000 MIR | +| Voting Period | 7 days (but if poll reaches quorum and threshold within the voting period, then poll can be executed immediately) | +| Quorum | 40% | +| Threshold | 66.7% | +| Admin claim period | 7 days | + diff --git a/protocol/governance/oracle-whitelist-procedure.md b/protocol/governance/oracle-whitelist-procedure.md new file mode 100644 index 0000000..028ba83 --- /dev/null +++ b/protocol/governance/oracle-whitelist-procedure.md @@ -0,0 +1,23 @@ +# Oracle Whitelist Procedure + +{% hint style="warning" %} +No web application user interface is provided to enable to creation of these polls as adding a new oracle source which can be malicious can result in unwanted attacks on borrow and short positions. +{% endhint %} + +New oracle service providers such as Chainlink can be added to Mirror Protocol through voting on Mirror Governance. + +Before creating a poll to whitelist a new oracle provider, a proxy contract owned and managed by the oracle provider party must be created and deployed onto Terra blockchain, using the smart contract template provided [here](https://github.com/terra-money/tefi-oracle-contracts/tree/main/contracts/oracle-proxy-template). The proxy contract must provide mapping between underlying assets symbol and price denominated in UST. + +In order to suggest a new oracle provider to Mirror Protocol, the following `execute_msg` must be included in `CreatePoll` transaction to be directed to Factory contract using `PassCommand` and then to the Oracle Hub contract when the poll is being executed. + +```rust +#[derive(Serialize, Deserialize, Clone, PartialEq, JsonSchema, Debug)] +#[serde(rename_all = "snake_case")] +pub enum HubExecuteMsg { + WhitelistProxy { + proxy_addr: String, + provider_name: String, + }, +``` + +Once this poll passes through Mirror governance, users can choose this oracle provider when registering new assets onto the protocol. diff --git a/protocol/governance/pre-ipo-procedure.md b/protocol/governance/pre-ipo-procedure.md index 3fd6124..ed76ce4 100644 --- a/protocol/governance/pre-ipo-procedure.md +++ b/protocol/governance/pre-ipo-procedure.md @@ -7,6 +7,6 @@ Pre-IPO asset whitelisting discussion can be started at the [Mirror Protocol For To enable minting of Pre-IPO asset, two separate governance polls must be passed. Pre-IPO asset whitelisting process consists of the steps below: 1. The user should create **Suggest Pre-IPO Asset** poll. The poll should provide required details and supporting information for the voters to be able to make an informed decision. An example would be to utilize the external link to provide further information about the proposal in the [Mirror Protocol Forum](https://forum.mirror.finance). Information included could potentially include an [official registration statement](https://www.sec.gov/Archives/edgar/data/1679788/000162828021003168/coinbaseglobalincs-1.htm) of the IPO asset. -2. Once the poll above is completed and passed, a subsequent **Register Pre-IPO Parameters** should be created with oracle feeder address, pre-IPO asset parameters and post-IPO asset parameters which will be effective immediately after the IPO event. +2. Once the poll above is completed and passed, a subsequent **Register Pre-IPO Parameters** should be created with oracle provider (from set of whitelisted oracle providers), pre-IPO asset parameters and post-IPO asset parameters which will be effective immediately after the IPO event. 3. If the second poll passes, Pre-IPO asset will be listed after `effective_delay`, and the asset will enter `mint_period`. During `mint_period`, Pre-IPO asset will be mintable at the submitted price, using `mint_collateral_ratio`, tradable and providable to liquidity pools. -4. When the underlying asset is publicly listed, [Mirror Oracle](../../contracts/oracle.md) will start updating the price of mAsset to mimic the real-world asset's price. This mAsset will now be treated like any other mAsset, allowing trading, minting and liquidity provision. +4. When the underlying asset is publicly listed, Mirror Oracle will start updating the price of mAsset to mimic the real-world asset's price. This mAsset will now be treated like any other mAsset, allowing trading, minting and liquidity provision. diff --git a/protocol/governance/proposal-types.md b/protocol/governance/proposal-types.md index 723497c..cf021b5 100644 --- a/protocol/governance/proposal-types.md +++ b/protocol/governance/proposal-types.md @@ -2,7 +2,7 @@ Governance proposals on the Mirror Protocol can come in a variety of formats. There are four main categories of governance proposals: **Asset Listing, Reward Distribution, Parameter Modification, and Suggestion / Others.** -![](../../.gitbook/assets/image%20%28190%29.png) +![](<../../.gitbook/assets/image (12).png>) ## Asset Listing @@ -14,115 +14,109 @@ The full process of getting a new asset to be fully operational on the Mirror Pr The function of this proposal is to start a poll to whitelist a new asset. Given that this is a simple text proposal, there are a few fields that need to be filled. The `Asset Name`, `Ticker`, `Listed Exchange`, and `Reason for listing` are required. The length of the description field is limited to 1024 bytes. It is suggested that additional information be added on a separate web page and linked to using the `Information Link` field. -![](../../.gitbook/assets/image%20%28138%29.png) +![](<../../.gitbook/assets/image (138).png>) Information that would be necessary for a voter to make informed decisions should be clearly stated in addition to reasons for listing this asset and the asset name and ticker. For example, simply stating: `Google should be listed because it is a popular stock` -has numerous problems. First, the specific exchange that the price feed should be taken from is not clearly stated \(many companies are dual-listed\). Second, Google actually has two stocks that are publicly traded: `GOOGL` and `GOOG` \(the former has voting rights whereas the latter does not\). In addition, the official name registered with NASDAQ is not `Google` but rather `Alphabet Inc.` Thus it is extremely important to make it as clear as possible to others about the asset that you intend to whitelist. +has numerous problems. First, the specific exchange that the price feed should be taken from is not clearly stated (many companies are dual-listed). Second, Google actually has two stocks that are publicly traded: `GOOGL` and `GOOG` (the former has voting rights whereas the latter does not). In addition, the official name registered with NASDAQ is not `Google` but rather `Alphabet Inc.` Thus it is extremely important to make it as clear as possible to others about the asset that you intend to whitelist. -| Field | Description | Type | -| :--- | :--- | :--- | -| Asset Name | Name of the asset to be whitelisted | Required | -| Ticker | Ticker of asset to be whitelisted | Required | -| Listed Exchange | Exchange that the underlying asset trades on | Required | -| Reason for listing | Short description of whitelist reason | Required | -| Information Link | External URL for further information | Optional | -| Suggested Oracle | Oracle provider or address | Optional | +| Field | Description | Type | +| ------------------ | -------------------------------------------- | -------- | +| Asset Name | Name of the asset to be whitelisted | Required | +| Ticker | Ticker of asset to be whitelisted | Required | +| Listed Exchange | Exchange that the underlying asset trades on | Required | +| Reason for listing | Short description of whitelist reason | Required | +| Information Link | External URL for further information | Optional | +| Suggested Oracle | Oracle provider or address | Optional | ### 2. Register Whitelist Parameters -If a proposal to whitelist is approved, another poll must be passed to set the parameters of the newly listed asset. The required fields include `Title`, `Description`, `Asset Name`, `Symbol`, `Oracle Feeder` \(address\), `Auction Discount`, and the `Minimum Collateral Ratio`. Again, it is advised to include reference to the passed whitelist poll as well as reasoning for choosing the given oracle address. Given that the Mirror Protocol is in its early stages, it is advisable to keep the parameters equal to existing parameters for already listed assets \(Auction Discount at 20%, and Minimum Collateral Ratio at 150%\). +![](<../../.gitbook/assets/image (10).png>) -The original 13 mAssets utilize Band Protocol’s feeders, so a rough guideline to communicate with Band Protocol to receive the oracle address is provided below. If another oracle address would like to be suggested, please input the address in the Oracle Feeder field. +If a proposal to whitelist is approved, another poll must be passed to set the parameters of the newly listed asset. The required fields include `Title`, `Description`, `Asset Name`, `Symbol`, `Oracle Provider`****, `Auction Discount`, and the `Minimum Collateral Ratio`. Again, it is advised to include reference to the passed whitelist poll as well as reasoning for choosing the given oracle address. Given that the Mirror Protocol is in its early stages, it is advisable to keep the parameters equal to existing parameters for already listed assets (Auction Discount at 20%, and Minimum Collateral Ratio at 150%). -![](../../.gitbook/assets/image%20%28177%29.png) +Oracle Provider can only be chosen among the ones that are listed on Oracle Hub contract. Originally, mAsset prices are provided by Band Protocol feeder, but other sources can be whitelisted to Oracle Hub contract through Mirror Governance. -{% hint style="info" %} -To ensure proper functioning of the price feed, newly whitelisted asset on Mirror Protocol also undergo a 1 week testing period where the prices are still fed by the oracle but no buy/sell, mint, or staking actions can be performed. -{% endhint %} - -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Title of the poll | Required | -| Description | Short description of the poll | Required | -| Information Link | External URL for further information | Optional | -| Asset Name | Name of the asset to be whitelisted | Required | -| Symbol | Ticker to be used on Mirror Protocol \(format: m+ticker\) | Required | -| Reference Poll ID | Poll ID of referenced poll \(ex. whitelisting poll\) | Optional | -| Oracle Feeder | Oracle feed address | Required | -| Auction Discount | Discount ratio applied during CDP liquidation auction | Required | -| Minimum Collateral Ratio | Minimum collateral ratio applied when opening a mint position | Required | +| Field | Description | Type | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | -------- | +| Title | Title of the poll | Required | +| Description | Short description of the poll | Required | +| Information Link | External URL for further information | Optional | +| Asset Name | Name of the asset to be whitelisted | Required | +| Symbol | Ticker to be used on Mirror Protocol without the `m` prefix (ex. AAPL instead of mAAPL) | Required | +| Reference Poll ID | Poll ID of referenced poll (ex. whitelisting poll) | Optional | +| Oracle Provider | Droplist of available oracle provider for a given `symbol` . The droplist will appear once the `symbol` field is entered correctly. | Required | +| Auction Discount | Discount ratio applied during CDP liquidation auction | Required | +| Minimum Collateral Ratio | Minimum collateral ratio applied when opening a mint position | Required | ### 3. Suggest Pre-IPO Asset -![](../../.gitbook/assets/image%20%28181%29.png) +The function of this proposal is to start a poll to whitelist an asset which is scheduled to go through an initial public offering (or IPO), but is not publicly listed yet. Similar to the "Suggest asset whitelisting" proposal, this is also a text proposal. Fields that need to be filled are `Asset Name`, `Ticker`, `Listed Exchange`, and `Reason for listing`. It is suggested that additional information on the IPO or supporting information to be added using the `Information Link` field. -The function of this proposal is to start a poll to whitelist an asset which is scheduled to go through an initial public offering \(or IPO\), but is not publicly listed yet. Similar to the "Suggest asset whitelisting" proposal, this is also a text proposal. Fields that need to be filled are `Asset Name`, `Ticker`, `Listed Exchange`, and `Reason for listing`. It is suggested that additional information on the IPO or supporting information to be added using the `Information Link` field. - -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Name of the asset to be whitelisted | Required | -| Reason for listing | Short description of whitelist reason | Required | -| Asset Name | Name of the asset to be whitelisted | Required | -| Symbol | Ticker of the asset to be whitelisted | Required | -| Listed Exchange | Exchange which the underlying asset will be traded on | Required | -| Information Link | External URL for further information | Optional | -| Suggested Oracle | Oracle provider or address | Optional | +| Field | Description | Type | +| ------------------ | ----------------------------------------------------- | -------- | +| Title | Name of the asset to be whitelisted | Required | +| Reason for listing | Short description of whitelist reason | Required | +| Asset Name | Name of the asset to be whitelisted | Required | +| Symbol | Ticker of the asset to be whitelisted | Required | +| Listed Exchange | Exchange which the underlying asset will be traded on | Required | +| Information Link | External URL for further information | Optional | +| Suggested Oracle | Oracle provider or address | Optional | ### 4. Register Pre-IPO Parameters -![](../../.gitbook/assets/image%20%28155%29.png) +![](<../../.gitbook/assets/image (1).png>) After the proposal to [suggest Pre-IPO asset](proposal-types.md#2-suggest-pre-ipo-asset) is approved, an additional poll to register the asset to Mirror Protocol must be submitted and executed. -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Title of the poll | Required | -| Description | Short description of whitelist reason | Required | -| Information Link | External URL for further information | Optional | -| Asset Name | Name of the asset to be whitelisted | Required | -| Symbol | Ticker of the asset to be whitelisted | Required | -| Reference Poll ID | Poll ID of the referenced poll | Optional | -| Listed Exchange | Exchange which the underlying asset will be traded on | Required | -| Oracle Feeder | Oracle Feeder address | Required | -| Auction Discount \(after IPO\) | Discount ratio applied during CDP liquidation auction for Post-IPO asset | Required | -| Min collateral ratio \(after IPO\) | Minimum collateral ratio to be used for mint operations for Post-IPO asset | Required | -| Min Collateral Ratio \(during mint period\) | Collateral ratio to be applied during `mint_period` | Required | -| Mint Period | Number of seconds which mint operation will be allowed for Pre-IPO asset | Required | -| Pre-IPO Price | Fixed price decided by official IPO registration statement, which will be used for Pre-IPO asset | Required | +| Field | Description | Type | +| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------- | +| Title | Title of the poll | Required | +| Description | Short description of whitelist reason | Required | +| Information Link | External URL for further information | Optional | +| Asset Name | Name of the asset to be whitelisted | Required | +| Symbol | Ticker of the asset to be whitelisted (without the `m` prefix) | Required | +| Reference Poll ID | Poll ID of the referenced poll | Optional | +| Listed Exchange | Exchange which the underlying asset will be traded on | Required | +| Oracle Provider | Droplist of available oracle provider for a given `symbol` . The droplist will appear once the `symbol` field is entered correctly. | Required | +| Auction Discount (after IPO) | Discount ratio applied during CDP liquidation auction for Post-IPO asset | Required | +| Min collateral ratio (after IPO) | Minimum collateral ratio to be used for mint operations for Post-IPO asset | Required | +| Min Collateral Ratio (during mint period) | Collateral ratio to be applied during `mint_period` | Required | +| Mint Period | Number of seconds which mint operation will be allowed for Pre-IPO asset | Required | +| Pre-IPO Price | Fixed price decided by official IPO registration statement, which will be used for Pre-IPO asset | Required | ### 5. Delist Asset -![](../../.gitbook/assets/image%20%28173%29.png) +![](<../../.gitbook/assets/image (173).png>) Specific mAsset on Mirror Protocol is delisted upon approval and execution of this poll. More information about delisting can be found [here](../mirrored-assets-massets.md#delisting-and-migration). -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Name of the asset to be whitelisted | Required | -| Description | Short description of whitelist reason | Required | -| Information Link | External URL for further information | Optional | -| Asset Name | Droplist of mAsset on Mirror Protocol | Required | +| Field | Description | Type | +| ---------------- | ------------------------------------- | -------- | +| Title | Name of the asset to be whitelisted | Required | +| Description | Short description of whitelist reason | Required | +| Information Link | External URL for further information | Optional | +| Asset Name | Droplist of mAsset on Mirror Protocol | Required | ## Reward Distribution -This category allows modification of two types of MIR distribution: 1\) mAsset LP staking reward; 2\) Governance voting reward. +This category allows modification of two types of MIR distribution: 1) mAsset LP staking reward; 2) Governance voting reward. ### 1. Modify mAsset Reward Distribution -![](../../.gitbook/assets/image%20%28203%29.png) +![](<../../.gitbook/assets/image (203).png>) Through this poll, the ratio which newly minted MIR tokens are distributed among LP token stakers, called `weight` parameter can be changed. To learn how `weight` parameter determines the amount of MIR distributed to each mAsset pool refer to [this document](../mirror-token-mir.md#mir-staking-rewards). -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Name of the asset to be whitelisted | Required | -| Reasons for modifying weight parameter | Short description of whitelist reason | Required | -| Information Link | External URL for further information | Optional | -| Asset | Droplist of mAsset on Mirror Protocol, which to change weight parameter for | Required | -| Weight | Weight parameter to be applied for LP staking reward distribution | Required | +| Field | Description | Type | +| -------------------------------------- | --------------------------------------------------------------------------- | -------- | +| Title | Name of the asset to be whitelisted | Required | +| Reasons for modifying weight parameter | Short description of whitelist reason | Required | +| Information Link | External URL for further information | Optional | +| Asset | Droplist of mAsset on Mirror Protocol, which to change weight parameter for | Required | +| Weight | Weight parameter to be applied for LP staking reward distribution | Required | ## Parameter Modification @@ -132,50 +126,101 @@ This poll category allows modification of mAsset, governance contract, collatera Through this poll, the existing Mirror Protocol parameters for a specific individual mAsset can be modified. The possible parameters to be updated consist of either the `Auction Discount` and the `Minimum Collateral Ratio`. -![](../../.gitbook/assets/image%20%28150%29.png) +![](<../../.gitbook/assets/image (150).png>) -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Title of the poll | Required | -| Reasons for modifying mint parameters | Short description of the poll | Required | -| Information Link | External URL for further information | Optional | -| Asset | Name of the asset to modify parameters | Required | -| Auction Discount | Discount ratio applied during CDP liquidation auction | Required | -| Minimum Collateral Ratio | Minimum collateral ratio applied when opening a mint position | Required | +| Field | Description | Type | +| ------------------------------------- | ------------------------------------------------------------- | -------- | +| Title | Title of the poll | Required | +| Reasons for modifying mint parameters | Short description of the poll | Required | +| Information Link | External URL for further information | Optional | +| Asset | Name of the asset to modify parameters | Required | +| Auction Discount | Discount ratio applied during CDP liquidation auction | Required | +| Minimum Collateral Ratio | Minimum collateral ratio applied when opening a mint position | Required | ### 2. Modify governance parameters -Similar to modifying mint parameters, governance parameters such as the `Quorum`, `Threshold`, `Voting Period`, `Effective Delay`, `Expiration Period`, `Proposal Deposit` and `Voter Weight` can be modified. +Similar to modifying mint parameters, governance parameters such as the `Effective Delay`, and `Voter Weight` can be modified. -![](../../.gitbook/assets/image%20%28193%29.png) +![](<../../.gitbook/assets/image (25).png>) -| Fields | Description | Type | -| :--- | :--- | :--- | -| Title | Title of the poll | Required | -| Reason for modifying governance parameter | Short description of the poll | Required | -| Information Link | External URL for further information | Optional | -| Quorum | Minimum quorum required for accepting a poll \(in percentage\) | Optional | -| Threshold | Minimum percentage of `YES` votes to pass a poll \(in percentage\) | Optional | -| Voting Period | Length of poll \(in units of seconds\) | Optional | -| Effective Delay | Length of delay before protocol integration for a passed poll \(in units of seconds\) | Optional | -| Expiration Period | Length of expiration period when for a failed poll \(in units of seconds\) | Optional | -| Proposal Deposit | Minimum deposit to start a poll \(in units of MIR\) | Optional | -| Voter Weight | Ratio of rewards to be distributed to governance voting participants | Optional | +| Fields | Description | Type | +| ----------------------------------------- | ----------------------------------------------------------------------------------- | -------- | +| Title | Title of the poll | Required | +| Reason for modifying governance parameter | Short description of the poll | Required | +| Information Link | External URL for further information | Optional | +| Effective Delay | Length of delay before protocol integration for a passed poll (in units of seconds) | Optional | +| Voter Weight | Ratio of rewards to be distributed to governance voting participants | Optional | + +### 3. Modify poll parameters + +This poll allows configuration modifications for `default_poll` types such as `quorum`, `threshold` , `voting_period` and `proposal_deposit`. + +{% hint style="warning" %} +Due to sensitivity in contract migration polls, both migration and key authorization poll configurations cannot be modified through Mirror Web App UI. +{% endhint %} + +![](<../../.gitbook/assets/image (28).png>) -### 3. Modify collateral parameters +| Field | Description | Type | +| ---------------- | ---------------------------------------------------------------- | -------- | +| Title | Title of the poll | Required | +| Description | Short description of the poll | Required | +| Information Link | External URL for further information | Optional | +| Quorum | Minimum quorum required for accepting a poll (in percentage) | Optional | +| Threshold | Minimum percentage of `YES` votes to pass a poll (in percentage) | Optional | +| Voting Period | Length of poll (in units of seconds) | Optional | +| Proposal Deposit | Required deposit to start a poll (in units of MIR) | Optional | -![](../../.gitbook/assets/image%20%28192%29.png) +### 4. Modify collateral parameters + +![](<../../.gitbook/assets/image (192).png>) Through this poll, existing collateral's `multiplier` or `oracle address` can be modified. -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Title of the poll | Required | -| Reasons for modifying collateral parameter | Short description of the poll | Required | -| Information Link | External URL for further information | Optional | -| Collateral \(Asset\) | Droplist of collateral types on Mirror Protocol, which to modify parameter for | Required | -| Multiplier | Number to be `min_collateral_ratio` of the asset being minted | Required | -| Collateral Oracle Feeder | Address of the collateral oracle used for this asset type | Required | +| Field | Description | Type | +| ------------------------------------------ | ------------------------------------------------------------------------------ | -------- | +| Title | Title of the poll | Required | +| Reasons for modifying collateral parameter | Short description of the poll | Required | +| Information Link | External URL for further information | Optional | +| Collateral (Asset) | Droplist of collateral types on Mirror Protocol, which to modify parameter for | Required | +| Multiplier | Number to be `min_collateral_ratio` of the asset being minted | Required | +| Collateral Oracle Feeder | Address of the collateral oracle used for this asset type | Required | + +## Price Oracle + +This category allows modification on price oracle settings and parameters. + +### 1. Update Priority + +This poll is to propose the priority settings of an mAsset’s price feed. For instance, if there are more than one price sources supporting a specific mAsset (i.e. Band Protocol and Chainlink), the proposer can create a poll to prefer one price source over another. + +{% hint style="warning" %} +This poll can only be submitted when there is more than one price source for a chosen mAsset. +{% endhint %} + +![](<../../.gitbook/assets/image (2).png>) + +| Field | Description | Type | +| ---------------- | ------------------------------------------------------------------------------------------------------------------ | -------- | +| Title | Title of the poll | Required | +| Description | Short description of priority change reason | Required | +| Information Link | Optional URL for further information | Optional | +| Asset | Droplist of mAssets on Mirror Protocol, which to change price priority for | Required | +| Priority | Drag & Drop field to put one price source over another. Sources are loaded only after the Asset field is selected. | Required | + +### 2. Remove Price + +When there is a price source that is invalid or unnecessary (as decided by community consensus), the proposer of this poll can suggest removing a price source for an asset. + +![](<../../.gitbook/assets/image (24).png>) + +| Field | Description | Type | +| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| Title | Title of the poll | Required | +| Description | Short description of price removal | Required | +| Information Link | Optional URL for further information | Optional | +| Asset | Droplist of mAssets on Mirror Protoco, which to change price priority for | Required | +| Priority | Droplist of prices currently being provided fro the chosen mAsset. The field may not be a droplist if there is only one price source. | Required | ## Suggestions / Others @@ -183,23 +228,22 @@ Through this poll, existing collateral's `multiplier` or `oracle address` can be Proposals relating to spending the accrued MIR tokens in the community pool can be made under this section. The proposal should ideally specify the reasons for the distribution and identify the recipient and amount to be given. -![](../../.gitbook/assets/image%20%28213%29.png) +![](<../../.gitbook/assets/image (213).png>) -| Fields | Description | Type | -| :--- | :--- | :--- | -| Title | Title of the poll | Required | -| Reason for community pool spending | Short description of the poll | Required | -| Information Link | External URL for further information | Optional | -| Recipient | Grant recipient address | Required | -| Amount | Grant amount \(in units of MIR\) | Required | +| Fields | Description | Type | +| ---------------------------------- | ------------------------------------ | -------- | +| Title | Title of the poll | Required | +| Reason for community pool spending | Short description of the poll | Required | +| Information Link | External URL for further information | Optional | +| Recipient | Grant recipient address | Required | +| Amount | Grant amount (in units of MIR) | Required | ### 2. Text Poll The function of the text proposal is to allow proposals that do not fit the defined categories. Given that it is a basic text proposal, simple fields for the `Title`, `Description`, and an `Information Link` for additional information. -| Field | Description | Type | -| :--- | :--- | :--- | -| Title | Title of the poll | Required | -| Description | Short description of the poll | Required | +| Field | Description | Type | +| ---------------- | ------------------------------------ | -------- | +| Title | Title of the poll | Required | +| Description | Short description of the poll | Required | | Information Link | External URL for further information | Optional | - diff --git a/protocol/governance/whitelist-procedure.md b/protocol/governance/whitelist-procedure.md index 2b9c6a3..37d81e1 100644 --- a/protocol/governance/whitelist-procedure.md +++ b/protocol/governance/whitelist-procedure.md @@ -7,7 +7,7 @@ Whitelisting discussion can be started at the [Mirror Protocol Forum](https://fo For an mAsset to be fully functional on the Mirror Protocol, _two_ governance polls will need to be passed. The whitelisting consists of four major steps. 1. A user should make a [**Whitelist a New mAsset**](proposal-types.md#2-whitelist-a-new-masset) **** poll following the instructions listed. The proposal should be as detailed as possible, providing all the necessary information that a voter would need to be able to make an informed decision. -2. Once the above poll is nearing completion and seems like it will pass, a user should request oracle support for said asset from either Band Protocol (**contact information to be announced shortly**) or Chainlink (**integrations@chain.link**). The user should refer to the specific proposal that has passed and include a link. -3. Once the oracle has tested for stability and is fully operational, any user may submit a [**Register Whitelist Parameters**](proposal-types.md#3-register-whitelist-parameters) **** with the provided oracle address in the `Oracle Feeder` field. -4. If the poll again passes, the new Mirrored Asset is immediately added to the active set of assets with prices being fed. However, there is an approximate one week delay before the new asset can be added to ensure that the feed is running smoothly on the Mirror Protocol. +2. Once the above poll is nearing completion and seems like it will pass, a user should request oracle support for said asset from either Band Protocol (**contact information to be announced shortly**) or Chainlink (**integrations@chain.link**). The user should refer to the specific proposal that has passed and include a link. The user can only choose from set of oracle providers that are [whitelisted in Oracle Hub contract through Mirror governance](oracle-whitelist-procedure.md). +3. Once the oracle has tested for stability and is fully operational, any user may submit a [**Register Whitelist Parameters**](proposal-types.md#3-register-whitelist-parameters) **** by choosing the provided `Oracle Provider` which appears upon entering the `Symbol` of the asset to whitelist. +4. If the poll again passes, the new Mirrored Asset is immediately added to the active set of assets with prices being fed. However, there is an approximate one day delay before the new asset can be added to ensure that the feed is running smoothly on the Mirror Protocol. diff --git a/protocol/mirrored-assets-massets.md b/protocol/mirrored-assets-massets.md index 84fbbe6..33b58af 100644 --- a/protocol/mirrored-assets-massets.md +++ b/protocol/mirrored-assets-massets.md @@ -78,7 +78,7 @@ When an IPO schedule and price quote has been announced, a new mAsset can be whi When IPO occurs, -* [Oracle](../contracts/oracle.md) triggers the IPO event on Mirror Protocol +* [Oracle](broken-reference) triggers the IPO event on Mirror Protocol * The asset becomes mintable again at the oracle price of the underlying asset * A new collateral ratio, defined by the Pre-IPO poll proposer is assigned diff --git a/whats-new-for-mirror-v2.md b/readme/whats-new-for-mirror-v2.md similarity index 81% rename from whats-new-for-mirror-v2.md rename to readme/whats-new-for-mirror-v2.md index 00b5e05..eb9fccb 100644 --- a/whats-new-for-mirror-v2.md +++ b/readme/whats-new-for-mirror-v2.md @@ -18,21 +18,21 @@ These changes will drive governance participation upwards by reducing risks rela A highly requested feature addition by the community was to add MIR to the list of accepted collaterals for mint positions. -Including MIR, [new collateral types](protocol/mirrored-assets-massets.md#collateral) from Terra ecosystem have been added in Mirror v2. All collaterals will be given a new governance-decided parameter called the `multiplier` which is multiplied to the `min_collateral_ratio` of minted mAsset. Stable assets such as UST or aUST will have `multiplier`=1, and volatile collaterals including LUNA, MIR and ANC will be initially set to 1.3333334. +Including MIR, [new collateral types](../protocol/mirrored-assets-massets.md#collateral) from Terra ecosystem have been added in Mirror v2. All collaterals will be given a new governance-decided parameter called the `multiplier` which is multiplied to the `min_collateral_ratio` of minted mAsset. Stable assets such as UST or aUST will have `multiplier`=1, and volatile collaterals including LUNA, MIR and ANC will be initially set to 1.3333334. ### **Short Incentives** One of the largest issues in Mirror Protocol v1 was the persisting price premium between the Terraswap and Oracle price. To reduce price premiums, a user would have to mint an asset and then sell it against Terraswap pools. However, there was no incentive for a user to short an asset since rewards from providing liquidity with bought assets were higher. In addition, minting an asset was much less capital efficient than simply buying the mAsset from Terraswap, even with the price premiums. -Mirror v2 presents a new non-tradable token called [sLP tokens](protocol/staking-tokens-lp-and-slp.md#slp-tokens-short-tokens), which is minted from creating a short position. sLP tokens are also stakable, and generates a reward that is dynamically increasing or decreasing based on the current price premium between Terraswap and Oracle price. +Mirror v2 presents a new non-tradable token called [sLP tokens](../protocol/staking-tokens-lp-and-slp.md#slp-tokens-short-tokens), which is minted from creating a short position. sLP tokens are also stakable, and generates a reward that is dynamically increasing or decreasing based on the current price premium between Terraswap and Oracle price. ### **Pre-IPO Assets** -Assets scheduled to undergo an IPO can be whitelisted and traded on Mirror v2. Any user can specify the details of the underlying asset via governance poll creation. If the poll passes, these assets will be minted (during a fixed time window) or traded like any other mAssets before the IPO. Once the IPO happens in the underlying market, [Mirror Oracle](contracts/oracle.md) will begin reporting prices from the market, and the asset will have the same features as any other mAsset. +Assets scheduled to undergo an IPO can be whitelisted and traded on Mirror v2. Any user can specify the details of the underlying asset via governance poll creation. If the poll passes, these assets will be minted (during a fixed time window) or traded like any other mAssets before the IPO. Once the IPO happens in the underlying market, [Mirror Oracle](broken-reference) will begin reporting prices from the market, and the asset will have the same features as any other mAsset. **Security Audit** for the underlying Mirror v2 Contracts is done by **Cryptonics.** -{% file src=".gitbook/assets/Mirror v2 Audit Report (1).pdf" %} +{% file src="../.gitbook/assets/Mirror v2 Audit Report (1).pdf" %} ## Genesis Parameters