@@ -35,6 +35,9 @@ def run_test(self):
35
35
# Set up
36
36
self .setup ()
37
37
38
+ # Test future swap refund on restart
39
+ self .future_swap_refund ()
40
+
38
41
# Check restart on liquidated vault
39
42
self .vault_liquidation ()
40
43
@@ -64,12 +67,12 @@ def setup(self):
64
67
# Get masternode address
65
68
self .address = self .nodes [0 ].get_genesis_keys ().ownerAuthAddress
66
69
67
- # Create tokens for tests
68
- self .setup_test_tokens ()
69
-
70
70
# Setup Oracles
71
71
self .setup_test_oracles ()
72
72
73
+ # Create tokens for tests
74
+ self .setup_test_tokens ()
75
+
73
76
# Setup pools
74
77
self .setup_test_pools ()
75
78
@@ -78,14 +81,17 @@ def setup(self):
78
81
79
82
def setup_test_tokens (self ):
80
83
81
- # Generate chain
82
- self .nodes [0 ].generate (110 )
83
-
84
- # Token symbols
85
- self .symbolDFI = "DFI"
86
- self .symbolDUSD = "DUSD"
87
-
88
84
# Create loan token
85
+ self .nodes [0 ].setloantoken (
86
+ {
87
+ "symbol" : self .symbolMETA ,
88
+ "name" : self .symbolMETA ,
89
+ "fixedIntervalPriceId" : f"{ self .symbolMETA } /USD" ,
90
+ "isDAT" : True ,
91
+ "interest" : 0 ,
92
+ }
93
+ )
94
+
89
95
self .nodes [0 ].setloantoken (
90
96
{
91
97
"symbol" : self .symbolDUSD ,
@@ -97,11 +103,21 @@ def setup_test_tokens(self):
97
103
)
98
104
self .nodes [0 ].generate (1 )
99
105
106
+ # Set collateral tokens
107
+ self .nodes [0 ].setcollateraltoken (
108
+ {"token" : self .symbolDFI , "factor" : 1 , "fixedIntervalPriceId" : "DFI/USD" }
109
+ )
110
+ self .nodes [0 ].setcollateraltoken (
111
+ {"token" : self .symbolDUSD , "factor" : 1 , "fixedIntervalPriceId" : "DUSD/USD" }
112
+ )
113
+ self .nodes [0 ].generate (1 )
114
+
100
115
# Store DUSD ID
101
116
self .idDUSD = list (self .nodes [0 ].gettoken (self .symbolDUSD ).keys ())[0 ]
102
117
103
118
# Mint DUSD
104
- self .nodes [0 ].minttokens ("100000@DUSD" )
119
+ self .nodes [0 ].minttokens (f"100000@{ self .symbolDUSD } " )
120
+ self .nodes [0 ].minttokens (f"100000@{ self .symbolMETA } " )
105
121
self .nodes [0 ].generate (1 )
106
122
107
123
# Create DFI tokens
@@ -110,13 +126,21 @@ def setup_test_tokens(self):
110
126
111
127
def setup_test_oracles (self ):
112
128
129
+ # Generate chain
130
+ self .nodes [0 ].generate (110 )
131
+
132
+ # Token symbols
133
+ self .symbolDFI = "DFI"
134
+ self .symbolDUSD = "DUSD"
135
+ self .symbolMETA = "META"
136
+
113
137
# Create Oracle address
114
138
oracle_address = self .nodes [0 ].getnewaddress ("" , "legacy" )
115
139
116
140
# Define price feeds
117
141
price_feed = [
118
- {"currency" : "USD" , "token" : "DFI" },
119
- {"currency" : "USD" , "token" : "BTC" },
142
+ {"currency" : "USD" , "token" : self . symbolDFI },
143
+ {"currency" : "USD" , "token" : self . symbolMETA },
120
144
]
121
145
122
146
# Appoint Oracle
@@ -126,6 +150,7 @@ def setup_test_oracles(self):
126
150
# Set Oracle prices
127
151
oracle_prices = [
128
152
{"currency" : "USD" , "tokenAmount" : f"1@{ self .symbolDFI } " },
153
+ {"currency" : "USD" , "tokenAmount" : f"1@{ self .symbolMETA } " },
129
154
]
130
155
self .nodes [0 ].setoracledata (self .oracle , int (time .time ()), oracle_prices )
131
156
self .nodes [0 ].generate (10 )
@@ -134,15 +159,6 @@ def setup_test_oracles(self):
134
159
self .nodes [0 ].createloanscheme (150 , 5 , "LOAN001" )
135
160
self .nodes [0 ].generate (1 )
136
161
137
- # Set collateral tokens
138
- self .nodes [0 ].setcollateraltoken (
139
- {"token" : self .symbolDFI , "factor" : 1 , "fixedIntervalPriceId" : "DFI/USD" }
140
- )
141
- self .nodes [0 ].setcollateraltoken (
142
- {"token" : self .symbolDUSD , "factor" : 1 , "fixedIntervalPriceId" : "DUSD/USD" }
143
- )
144
- self .nodes [0 ].generate (1 )
145
-
146
162
def setup_test_pools (self ):
147
163
148
164
# Create pool pair
@@ -176,6 +192,44 @@ def execute_restart(self):
176
192
)
177
193
self .nodes [0 ].generate (2 )
178
194
195
+ def future_swap_refund (self ):
196
+
197
+ # Rollback block
198
+ self .rollback_to (self .start_block )
199
+
200
+ # Set all futures attributes
201
+ self .nodes [0 ].setgov (
202
+ {
203
+ "ATTRIBUTES" : {
204
+ "v0/params/dfip2203/reward_pct" : "0.05" ,
205
+ "v0/params/dfip2203/block_period" : "25" ,
206
+ }
207
+ }
208
+ )
209
+ self .nodes [0 ].generate (1 )
210
+
211
+ # Fully enable DFIP2203
212
+ self .nodes [0 ].setgov ({"ATTRIBUTES" : {"v0/params/dfip2203/active" : "true" }})
213
+ self .nodes [0 ].generate (1 )
214
+
215
+ # Balance before restart
216
+ result = self .nodes [0 ].getaccount (self .address )
217
+ assert_equal (result [1 ], f"100000.00000000@{ self .symbolMETA } " )
218
+ assert_equal (result [2 ], f"90000.00000000@{ self .symbolDUSD } " )
219
+
220
+ # Create future swaps
221
+ self .nodes [0 ].futureswap (self .address , f"1@{ self .symbolMETA } " )
222
+ self .nodes [0 ].futureswap (self .address , f"1@{ self .symbolDUSD } " , self .symbolMETA )
223
+ self .nodes [0 ].generate (1 )
224
+
225
+ # Execute dtoken restart
226
+ self .execute_restart ()
227
+
228
+ # Balance after restart. Amount refunded and 90% locked.
229
+ result = self .nodes [0 ].getaccount (self .address )
230
+ assert_equal (result [1 ], f"10000.00000000@{ self .symbolMETA } " )
231
+ assert_equal (result [2 ], f"9000.00000000@{ self .symbolDUSD } " )
232
+
179
233
def minimal_balances_after_restart (self ):
180
234
181
235
# Rollback block
0 commit comments