From 7c38bb0d700f7476c60cfbb709145765a99064a7 Mon Sep 17 00:00:00 2001 From: Do Kwon Date: Thu, 8 Aug 2019 12:49:34 +0900 Subject: [PATCH 1/4] clean up readme: wip --- MANDATE.md | 0 MOTIVATION.md | 0 README.md | 49 +++++++++++++++++++++++++------------------------ 3 files changed, 25 insertions(+), 24 deletions(-) create mode 100644 MANDATE.md create mode 100644 MOTIVATION.md diff --git a/MANDATE.md b/MANDATE.md new file mode 100644 index 0000000..e69de29 diff --git a/MOTIVATION.md b/MOTIVATION.md new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index a86595b..c1f0d63 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,55 @@ -# Build & Install +# Santa Claus + +![banner](docs/terra-core.png) + +Santa Claus subsidizes block rewards for Terra's Columbus mainnet. It is intended to subsidize the security of the network until Terra transaction volume (and attendent staking returns from transaction fees) has had sufficient time to mature. A detailed explanation on the [motivation](./MOTIVATION.md) for starting Santa Claus is explained. + +## Build & Install + +First, check out the rep + ``` $ git clone https://github.com/terra-project/feegiver.git $ git checkout master ``` -## Install +### Install ``` $ make install ``` -## make config +### Make config ``` $ feegiver config ``` -## change config +### Change config ``` $ vim ~/.feegiver/config.yaml ``` -## Add Key +### Add / Recover Key ``` -$ feegiver keys add yun -Enter a passphrase to encrypt your key to disk: -Repeat the passphrase: -{"name":"yun","type":"local","address":"terra1a26sc2vqs20hfx239kejhd88v6cl87yfswvk0t","pubkey":"terrapub1addwnpepqwspkmsl724h9azfvgqgs8jkyuyyr3d6eme432afvlvulk3al0mwwnxwlxv","mnemonic":"decade urge pond sustain unit film milk sunny wash accuse profit staff what black problem treat velvet metal leg review math history juice soccer"} +$ feegiver keys add yun ``` + ## Recover Key ``` $ feegiver keys add yun --recover -Enter a passphrase to encrypt your key to disk: -Repeat the passphrase: -> Enter your bip39 mnemonic -theory fat merge under hungry utility toss much trend turkey degree glare bread connect trend grain silk toe pupil crouch innocent pause zero shove - -{"name":"yun","type":"local","address":"terra1gn37dh0jl4zu4fp48d8y4c0hqs9cel83x7st7v","pubkey":"terrapub1addwnpepqfukqlgu8chxwwqns6adgjxvfny6y6tcvqmqkkn2xk6e6kefdaggvh4j7f0","mnemonic":"spatial fantasy weekend romance entire million celery final moon solid route theory way hockey north trigger advice balcony melody fabric alter bullet twice push"} ``` -## Add Key with Old HD Path -``` -$ feegiver keys add yun --recover --old-hd-path -Enter a passphrase to encrypt your key to disk: -Repeat the passphrase: -> Enter your bip39 mnemonic -flash until glimpse chase cradle adjust brick view uncover analyst test pact sponsor example item victory memory attract visual hover pink meadow mosquito torch -{"name":"yun","type":"local","address":"terra1gn37dh0jl4zu4fp48d8y4c0hqs9cel83x7st7v","pubkey":"terrapub1addwnpepqfukqlgu8chxwwqns6adgjxvfny6y6tcvqmqkkn2xk6e6kefdaggvh4j7f0","mnemonic":"spatial fantasy weekend romance entire million celery final moon solid route theory way hockey north trigger advice balcony melody fabric alter bullet twice push"} -``` ## Start Server ``` $ feegiver start yun Enter the passphrase: ``` + + +## Status + + + +## Mechanism + + From 5ed058ec36a20376bfac4bd64f49fda531974340 Mon Sep 17 00:00:00 2001 From: Do Kwon Date: Thu, 8 Aug 2019 13:35:12 +0900 Subject: [PATCH 2/4] polished README --- README.md | 124 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 77 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index c1f0d63..f3b0767 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,85 @@ -# Santa Claus +# Santa ![banner](docs/terra-core.png) -Santa Claus subsidizes block rewards for Terra's Columbus mainnet. It is intended to subsidize the security of the network until Terra transaction volume (and attendent staking returns from transaction fees) has had sufficient time to mature. A detailed explanation on the [motivation](./MOTIVATION.md) for starting Santa Claus is explained. - -## Build & Install - -First, check out the rep - -``` -$ git clone https://github.com/terra-project/feegiver.git -$ git checkout master -``` - -### Install -``` -$ make install -``` -### Make config -``` -$ feegiver config -``` -### Change config -``` -$ vim ~/.feegiver/config.yaml -``` - -### Add / Recover Key -``` -$ feegiver keys add yun -``` - - -## Recover Key -``` -$ feegiver keys add yun --recover -``` - - - -## Start Server -``` -$ feegiver start yun -Enter the passphrase: -``` - - -## Status - +Santa subsidizes block rewards for Terra's Columbus mainnet. It is intended to support the security of the network until Terra transaction volume (and attendent staking returns from transaction fees) has had sufficient time to mature. Read [here](./MOTIVATION.md) for more details on the project motivation. ## Mechanism +The config file looks something like the following: +``` +key_dir: ... +node: ... +trigger_interval: 1 +fee_amount: 1000000uluna +``` +Every `trigger_interval` number of blocks on Columbus, Santa sends a transaction containing `1 uluna` with `fee_amount` of fees to itself. Effectively, this scheme allows Santa to subsidize block rewards by paying fees over periodic block intervals. + +For example, in order to subsidize 21.6 million Luna tokens every block over 1 year, one needs to set `trigger_interval` to 1, and `fee_amount` to `21.6 million / (3.154e+7 / 6.5) * 10^6 = 4451490 uluna`. + +## Status + +An instance of Santa is currently being jointly operated and supported by several top validators in the network: + +``` +Hashed +Arrington XRP Capital +Polychain Labs +Certus One +Chorus One +Terraform Labs +B Harvest +A Team +Dokia Capital +Terraforming +Healings +``` + +To kick off the process, Terraform Labs has donated 21.6 million tokens to be distributed over the course of the next year, slightly above a 10% annualized return on currently staked tokens. You can see Santa hard at work here: https://finder.terra.money/columbus-2/account/terra13u66u4knssnws7n7w0n38mzyyqak5ygp807gyl + +Some details on future operations: +- **IMPORTANT**: Santa will operate independently of existing rewards from fees and swaps. As Terra transaction volume goes up, expected rewards may well be significantly higher than that provided by Santa. +- Every time the number of staked tokens go up by more than 10 million tokens, Terraform Labs is commiting to deposit an additional 1 million Luna to Santa to prevent reward dilution for existing stakeholders. No tokens will be withdrawn in the opposite case where the number of staked tokens go down. +- Terra's validator community will actively monitor the network's reward dynamics and continue supporting Santa in the unlikely case that staking returns continue to lag behind the industry average. The Terraform Labs validator will commit up to 100 million Luna tokens for this purpose, which, at current parameters, sufficient to keep Santa running for the next five years. +- Members of the community looking to support the network are either encouraged to either donate tokens to the [currently active Santa address](https://finder.terra.money/columbus-2/account/terra13u66u4knssnws7n7w0n38mzyyqak5ygp807gyl) or start their own instances of Santa. + +## Build & Install + +First, check out the repo: + +``` +$ git clone https://github.com/terra-project/santa.git +$ git checkout master +``` + +Then, build and install: +``` +$ make install +``` + +To initialize the config file for Santa: +``` +$ santa config +``` + +To edit the config file: +``` +$ vim ~/.santa/config.yaml +``` + +To add a key to an account containing tokens to be doled out: +``` +$ santa keys add +``` + +To recover a key: +``` +$ santa keys add --recover +``` + +Finally: to start santa and have Christmas come early: +``` +$ santa start +``` \ No newline at end of file From aa768436c88a2f43e3e9ac64312fbfdf7dd877ee Mon Sep 17 00:00:00 2001 From: Do Kwon Date: Thu, 8 Aug 2019 17:34:16 +0900 Subject: [PATCH 3/4] added banner to readme --- MANDATE.md | 0 README.md | 2 +- banner.png | Bin 0 -> 31533 bytes keys/keys.db/000004.ldb | Bin 484 -> 0 bytes keys/keys.db/000007.ldb | Bin 184 -> 0 bytes keys/keys.db/000010.log | Bin 406 -> 0 bytes keys/keys.db/CURRENT | 1 - keys/keys.db/CURRENT.bak | 1 - keys/keys.db/LOCK | 0 keys/keys.db/LOG | 54 ----------------------------------- keys/keys.db/MANIFEST-000011 | Bin 207 -> 0 bytes 11 files changed, 1 insertion(+), 57 deletions(-) delete mode 100644 MANDATE.md create mode 100644 banner.png delete mode 100644 keys/keys.db/000004.ldb delete mode 100644 keys/keys.db/000007.ldb delete mode 100644 keys/keys.db/000010.log delete mode 100644 keys/keys.db/CURRENT delete mode 100644 keys/keys.db/CURRENT.bak delete mode 100644 keys/keys.db/LOCK delete mode 100644 keys/keys.db/LOG delete mode 100644 keys/keys.db/MANIFEST-000011 diff --git a/MANDATE.md b/MANDATE.md deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index f3b0767..d73c010 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Santa -![banner](docs/terra-core.png) +![banner](./banner.png) Santa subsidizes block rewards for Terra's Columbus mainnet. It is intended to support the security of the network until Terra transaction volume (and attendent staking returns from transaction fees) has had sufficient time to mature. Read [here](./MOTIVATION.md) for more details on the project motivation. diff --git a/banner.png b/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8a436f368649342b229700d2b8475f237b53f0 GIT binary patch literal 31533 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 literal 0 HcmV?d00001 diff --git a/keys/keys.db/000004.ldb b/keys/keys.db/000004.ldb deleted file mode 100644 index c4be06b69ab29c8e4bd667e606cdfd3109994c22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 484 zcmeBRe!*bFQIc9zlxUcqXKbF5VUU$$QdMe_R$yY0Vo_<5Y>-h{Y?+*zV_{rjUR+{c zrk9wKQj}U;%*e#Rz{sRiS(>MpnU|K&Ah484kcWklkx}YH1OvljCf>E8wp`3WX(6@O zQ7_vSnJN=%W$g6QEri>4UGX^Mb8=B;MS>Z3RF>)1xzU>W0c}$68FfLx$<^J{Pa(wB z&&4&!*V8XVAt1;z%rV4O!P_;GQQ^ZyU9RkuG%JOq7`_F0PRD9OIHOv#?^Lq!gF1kbqq8(lk>er*uDk zgYZH>-(a_*q@cm i72|(SMiquAxXh1FyPD&<@a( diff --git a/keys/keys.db/000010.log b/keys/keys.db/000010.log deleted file mode 100644 index e08bd0d4642bc4cc9c1cb025768ad0fd970337bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 406 zcmWgbH8QqkWMpT607f9i$Wd9Er!_FQicI?#>~h~3 z^w=!Mt@dAce+!Fr()s!C^%gs5yG`j`+8^dF^`21|1e{#mJ^d6yT>V^JgM2;xLKFgm zJi{DATot@sBf$!|vQyHm6q1sQDho=uiW756tQ6dwoJ}lTEKCdy&791PoQ;f)oQ<80 zOiY}dot%taEiAaWioMbuGrht>oXR{hvdSaO4V{dQETTNkBOJqvyb?^K9v(h8OxtzU9BlW9NN>Z}2L&A-{d`z4Q6Wx7{OOiuP z!t%n6D$^r^O(G&9ZMkeCEDIyJz%B*)0iQ>f?EU=E8yIZJVQ5m4T2z#1Se|Z_n^RPg tlAD*8on4uoUYKrDm6u&G^qfJR_ zQBk5{dY-X)N`^sJj!9LiNm_x4MT$kGNwPskVX Date: Thu, 8 Aug 2019 18:12:18 +0900 Subject: [PATCH 4/4] fix testcode to wait for next blockg --- utils/websocket_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/websocket_test.go b/utils/websocket_test.go index 1705074..a41bfc0 100644 --- a/utils/websocket_test.go +++ b/utils/websocket_test.go @@ -5,6 +5,7 @@ import ( "bytes" "log" "strings" + "time" "testing" "github.com/stretchr/testify/require" @@ -12,6 +13,9 @@ import ( func TestWebsocketListen(t *testing.T) { app := setupWithPlentyBalanceAccount(t) + // DO NOT TOUCH - wait next block + time.Sleep(time.Second * 10) + var logBuf bytes.Buffer log.SetOutput(&logBuf) defer log.SetOutput(os.Stderr)