-
Notifications
You must be signed in to change notification settings - Fork 4
/
ednatoken.abi
344 lines (344 loc) · 21.2 KB
/
ednatoken.abi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
{
"____comment": "This file was generated by eosio-abigen. DO NOT EDIT - 2018-09-15T16:04:13",
"version": "eosio::abi/1.0",
"types": [],
"structs": [{
"name": "config",
"base": "",
"fields": [{
"name": "config_id",
"type": "uint64"
},{
"name": "running",
"type": "uint8"
},{
"name": "overflow",
"type": "name"
},{
"name": "active_accounts",
"type": "uint32"
},{
"name": "staked_weekly",
"type": "asset"
},{
"name": "staked_monthly",
"type": "asset"
},{
"name": "staked_quarterly",
"type": "asset"
},{
"name": "total_staked",
"type": "asset"
},{
"name": "total_escrowed_monthly",
"type": "asset"
},{
"name": "total_escrowed_quarterly",
"type": "asset"
},{
"name": "total_shares",
"type": "uint64"
},{
"name": "base_payout",
"type": "asset"
},{
"name": "bonus",
"type": "asset"
},{
"name": "total_payout",
"type": "asset"
},{
"name": "interest_share",
"type": "asset"
},{
"name": "unclaimed_tokens",
"type": "asset"
},{
"name": "spare_a1",
"type": "asset"
},{
"name": "spare_a2",
"type": "asset"
},{
"name": "spare_i1",
"type": "uint64"
},{
"name": "spare_i2",
"type": "uint64"
}
]
},{
"name": "account",
"base": "",
"fields": [{
"name": "balance",
"type": "asset"
}
]
},{
"name": "stake_row",
"base": "",
"fields": [{
"name": "stake_account",
"type": "name"
},{
"name": "stake_period",
"type": "uint8"
},{
"name": "staked",
"type": "asset"
},{
"name": "stake_date",
"type": "uint32"
},{
"name": "stake_due",
"type": "uint32"
},{
"name": "escrow",
"type": "asset"
}
]
},{
"name": "currencystat",
"base": "",
"fields": [{
"name": "supply",
"type": "asset"
},{
"name": "max_supply",
"type": "asset"
},{
"name": "issuer",
"type": "name"
}
]
},{
"name": "create",
"base": "",
"fields": [{
"name": "issuer",
"type": "name"
},{
"name": "maximum_supply",
"type": "asset"
}
]
},{
"name": "issue",
"base": "",
"fields": [{
"name": "to",
"type": "name"
},{
"name": "quantity",
"type": "asset"
},{
"name": "memo",
"type": "string"
}
]
},{
"name": "transfer",
"base": "",
"fields": [{
"name": "from",
"type": "name"
},{
"name": "to",
"type": "name"
},{
"name": "quantity",
"type": "asset"
},{
"name": "memo",
"type": "string"
}
]
},{
"name": "setoverflow",
"base": "",
"fields": [{
"name": "_overflow",
"type": "name"
}
]
},{
"name": "running",
"base": "",
"fields": [{
"name": "on_switch",
"type": "uint8"
}
]
},{
"name": "stake",
"base": "",
"fields": [{
"name": "_stake_account",
"type": "name"
},{
"name": "_stake_period",
"type": "uint8"
},{
"name": "_staked",
"type": "asset"
}
]
},{
"name": "claim",
"base": "",
"fields": [{
"name": "_stake_account",
"type": "name"
}
]
},{
"name": "unstake",
"base": "",
"fields": [{
"name": "_stake_account",
"type": "name"
}
]
},{
"name": "checkrun",
"base": "",
"fields": []
},{
"name": "addbonus",
"base": "",
"fields": [{
"name": "_sender",
"type": "name"
},{
"name": "_bonus",
"type": "asset"
}
]
},{
"name": "rembonus",
"base": "",
"fields": []
},{
"name": "runpayout",
"base": "",
"fields": []
},{
"name": "initstats",
"base": "",
"fields": []
}
],
"actions": [{
"name": "create",
"type": "create",
"ricardian_contract": "# Action - `{{ create }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ create }}` action...\n*Original* unmodified from EOSIO delivered eosio.token contract\nThat Ricardian Contract applies here. \n\n### Inputs and Input Types\n\nThe `{{ create }}` action requires the following `inputs` and `input types`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ create }}` | `{{ issuerVar }}`<br/>`{{ maximum_supplyVar }}` | `{{ name }}`<br/>`{{ asset }}` |\n"
},{
"name": "issue",
"type": "issue",
"ricardian_contract": "# Action - `{{ issue }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ issue }}` action...\n*Original* unmodified from EOSIO delivered eosio.token contract\nThat Ricardian Contract applies here \n\n### Inputs and Input Types\n\nThe `{{ issue }}` action requires the following `inputs` and `input types`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ issue }}` | `{{ toVar }}`<br/>`{{ quantityVar }}`<br/>`{{ memoVar }}` | `{{ name }}`<br/>`{{ asset }}`<br/>`{{ string }}` |\n"
},{
"name": "transfer",
"type": "transfer",
"ricardian_contract": "# Action - `{{ transfer }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ transfer }}` action...\n*Original* unmodified from EOSIO delivered eosio.token contract\nThat Ricardian Contract applies here \n\n### Inputs and Input Types\n\nThe `{{ transfer }}` action requires the following `inputs` and `input types`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ transfer }}` | `{{ fromVar }}`<br/>`{{ toVar }}`<br/>`{{ quantityVar }}`<br/>`{{ memoVar }}` | `{{ name }}`<br/>`{{ name }}`<br/>`{{ asset }}`<br/>`{{ string }}` |\n"
},{
"name": "setoverflow",
"type": "setoverflow",
"ricardian_contract": "# Action - `{{ setoverflow }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ setoverflow }}` action...\nINTENT: The intent of setoverflow is to provide a storage account for tokens that were available to be paid out as a bonus, but not paid because the total staked amount in the contract was less than 100% of the total current supply of circulating EDNA Tokens. This overflow storage can be recycled into the bonus payout in later payout periods using the addbonus action. Execution is restricted to owner only permissions. \nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ setoverflow }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ setoverflow }}` | `{{ _overflowVar }}` | `{{ name }}` |\n"
},{
"name": "running",
"type": "running",
"ricardian_contract": "# Action - `{{ running }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ running }}` action...\nINTENT: The intent of running is to enable the contract for staking, or to tun off the staking function when the staking program has finished its designed run time, has run out bonus funding or otherwise needs to be paused or disabled. Execution is restricted to owner only permissions. \nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ running }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ running }}` | `{{ on_switchVar }}` | `{{ uint8 }}` |\n"
},{
"name": "stake",
"type": "stake",
"ricardian_contract": "# Action - `{{ stake }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ stake }}` action...\nINTENT: The intent of stake is to allow a user to hold EDNA tokens in the contract and earn bonus EDNA tokens for doing so. Longer stake duration is intended to earn a greater percentage of the available bonus funds for that week, as are higher stake amounts. Bonuses are calculated weekly, and added to the existing users staked tokens when the staked period has elapsed. Funds not yet due are stored in the escrow field on the staked accounts row in the stakes table until they become due and may be claimed.\nTERM: This action lasts for the duration of the processing of the contract. \n\n### Inputs and Input Types\n\nThe `{{ stake }}` action requires the following `inputs` and `input types`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ stake }}` | `{{ _stake_accountVar }}`<br/>`{{ _stake_periodVar }}`<br/>`{{ _stakedVar }}` | `{{ name }}`<br/>`{{ uint8 }}`<br/>`{{ asset }}` |\n"
},{
"name": "claim",
"type": "claim",
"ricardian_contract": "# Action - `{{ claim }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ claim }}` action...\nINTENT: The intent of claim is to allow users to move token awards from escrow to the staked token storage in the stakes table and to update the users next period stake amount. The users next payout is based on the additional tokens deposited by the system this action also serves to demark the line when the tokens move under user ownership and no longer subject to forfeiture for early withdrawal from the stake period. User participation is required for this action due to the BP-imposed timeout for transactions over 250ms, which will not allow a contract-driven global claim function to be fully executed when over 100 users have staked to the system.\nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ claim }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ claim }}` | `{{ _stake_accountVar }}` | `{{ name }}` |\n"
},{
"name": "unstake",
"type": "unstake",
"ricardian_contract": "# Action - `{{ unstake }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ unstake }}` action...\nNTENT: The intent of unstake is to allow a user to retrieve EDNA tokens that have been staked in the contract, as well as any bonus EDNA Tokens earned through staking. The contract returns these tokens to the account they were staked from. Unstaking before the term of the stake duration has elapsed forfeits any bonuses partially earned. \nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ unstake }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ unstake }}` | `{{ _stake_accountVar }}` | `{{ name }}` |\n"
},{
"name": "checkrun",
"type": "checkrun",
"ricardian_contract": "# Action - `{{ checkrun }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ checkrun }}` action...\nINTENT: The intent of checkrun action is to allow the contract owner to review the outcome of an impending execution of the runpayout action. It does not modify any data in tables or otherwise It simply report on the outcome of the current payout forecast for stakers based on current user stake adoption and bonus settings. Execution is restricted to owner only permissions. \nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ checkrun }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ checkrun }}` | `{{ _bonusVar }}` | `{{ uint64 }}` |\n"
},{
"name": "addbonus",
"type": "addbonus",
"ricardian_contract": "# Action - `{{ addbonus }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ addbonus }}` action... \nINTENT: The intent of addbonus is to allow an EOS account to add additional EDNA Tokens to the total payout bonus available for the current weekly payout. This most usually will come from the overflow account, but could come from elsewhere (donations). Adding to the payout bonus is at the discretion of the sending account. Delivery timing of any bonus is at the sole discretion of the contract owner. \nTERM: This action lasts for the duration of the processing of the contract. \n\n### Inputs and Input Types\n\nThe `{{ addbonus }}` action requires the following `inputs` and `input types`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ addbonus }}` | `{{ _senderVar }}`<br/>`{{ _bonusVar }}` | `{{ name }}`<br/>`{{ asset }}` |\n"
},{
"name": "rembonus",
"type": "rembonus",
"ricardian_contract": "# Action - `{{ rembonus }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ rembonus }}` action...\nINTENT: The intent of rembonus is should the size of the bonus grow excessively large for a single week payout due to multiple donations to the weeks bonus pool (which are open to the public through the addbonus command). At the discretion of the contract owner, excessive funds may be transferred to the overflow account for distribution across one or more future weeks. This action is also intended to recover from user error should the contract owner add too much of a bonus and it becomes apparent during the checkrun command. Execution is restricted to owner only permissions.\nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ rembonus }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ rembonus }}` | `{{ rembonusVar }}` | `{{ rembonus }}` |\n"
},{
"name": "runpayout",
"type": "runpayout",
"ricardian_contract": "# Action - `{{ runpayout }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ runpayout }}` action...\nINTENT: The intent of runpayout is to place into the stake table additional tokens earned by users staking their EDNA tokens. These additional tokens called bonus tokens are distributed to according to the following formula:\n \u2022 Weekly Bonus = 2,000,000.0000 EDNA \n \u2022 Total Tokens = 1,300,000,000.0000 EDNA max (may be calculated on less if not yet issued) \n \u2022 Staked Tokens = the total of all tokens present on the stake table \n \u2022 Percentage Staked = Staked Tokens divided by Total Tokens \n \u2022 Base Payout = Weekly Bonus times Percentage Staked \n \u2022 Total Payout = Base Payout plus any additional tokens sent using the addbonus actions \n \u2022 Each Stake entry in the table will receive a multiplier based on the length of the stake made as follows: \n1) Weekly = times 1\n2) Monthly = times 1.5\n3) Quarterly = times 2.0 \nThe process then adds all stake amounts including their associated multipliers to arrive at a total number of \"shares earned\". Shares earned are not a representation of ownership, simply a term to represent percentage of bonus each account is awarded for that week as in \"share of the total\". \nSingle Share value = Total Payout divided by the total shares earned expressed in EDNA's\nThe Single Share value times the number of shares in each staked row on the staked table is added to the table in one of three ways:\n1) if the table row is staked for a weekly term, the tokens are added to the existing stake\n2) if the table row is staked for a monthly or quarterly term and the term is completed, the tokens are added to the existing stake\n3) if the table row is staked for a monthly or quarterly term and that term is not yet elapsed (for example: Week #2 of a monthly stake) The tokens are temporarily stored on an escrow field in the stake table row and are added to the existing stake at the end of the term. \nExecution is restricted to owner only permissions. \nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ runpayout }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ runpayout }}` | `{{ runpayoutVar }}` | `{{ runpayout }}` |\n"
},{
"name": "initstats",
"type": "initstats",
"ricardian_contract": "# Action - `{{ initstats }}`\n\nThis Contract is legally binding and can be used in the event of a dispute. Disputes shall be settled through the standard arbitration process established by EOS.IO.\n\n### Description\n\nThe `{{ initstats }}` action...\nNTENT: The intent of initstats is initialize the contract by placing \"0.0000 EDNA\" in two fields of the config table, and zeros in the config fields of the same table that track user participation amounts and staked account counts. It is intended to be executed once after the initial deployment of the contract and before executing the running action to enable contract staking functions. It could also serve to reset the contract for use under a different stake table in the event of some sort of unforeseen contract failure. Execution is restricted to owner only permissions. \nTERM: This action lasts for the duration of the processing of the contract. \n\n### Input and Input Type\n\nThe `{{ initstats }}` action requires the following `input` and `input type`:\n\n| Action | Input | Input Type |\n|:--|:--|:--|\n| `{{ initstats }}` | `{{ initstatsVar }}` | `{{ initstats }}` |\n"
}
],
"tables": [{
"name": "configs",
"index_type": "i64",
"key_names": [
"config_id"
],
"key_types": [
"uint64"
],
"type": "config"
},{
"name": "accounts",
"index_type": "i64",
"key_names": [
"balance"
],
"key_types": [
"asset"
],
"type": "account"
},{
"name": "stakes",
"index_type": "i64",
"key_names": [
"stake_account"
],
"key_types": [
"name"
],
"type": "stake_row"
},{
"name": "stat",
"index_type": "i64",
"key_names": [
"supply"
],
"key_types": [
"asset"
],
"type": "currencystat"
}
],
"ricardian_clauses": [{
"id": "overall_function",
"body": "## OVERALL FUNCTION.\nTThis contract is a upgrade/replacement for the original ednazztokens contract which was deployed on Jun-19-2018, 08:29:53 AM in block 1,538,253 by transaction: 566736553519b432d02074ab0a3b6523dd6b9a394a66bb26c9479b63f5a33537 and deployed by the ednazztokens account. "
},
{
"id": "entire_agreement",
"body": "## ENTIRE AGREEMENT.\nThis contract contains the entire agreement of the parties, for all described actions, and there are no other promises or conditions in any other agreement whether oral or written concerning the subject matter of this Contract. This contract supersedes any prior written or oral agreements between the parties. "
},
{
"id": "binding_constitution",
"body": "## BINDING CONSTITUTION:\nAll the the action described in this contract are subject to the EDNA-DAC constitution as held at https://edna.life/constitution, as well a the EOSIO Constitution held at https://github.com/EOS-Mainnet/governance/blob/master/eosio.system/eosio.system-clause-constitution-rc.md
This includes, but is not limited to membership terms and conditions, dispute resolution and severability. "
}
],
"error_messages": [],
"abi_extensions": []
}