COOPENOMICS  v1
Кооперативная Экономика
capital.hpp
См. документацию.
1// capital.hpp
2
3#pragma once
4
5#include <cstdint>
6
7
8
43const double AUTHOR_BASE_COEFFICIENT = 0.618;
44const double AUTHOR_BONUS_COEFFICIENT = 1;
45const double CONTRIBUTORS_BONUS_COEFFICIENT = 1.618;
46const uint32_t MAX_PROJECT_AUTHORS = 12;
47const uint64_t MAX_RATE_PER_HOUR = 30000000;
48const uint64_t MAX_HOURS_PER_DAY = 12;
51#include <eosio/eosio.hpp>
52#include <eosio/asset.hpp>
53#include "../lib/common.hpp"
54#include "domain/index.hpp"
55
56
57using namespace eosio;
58using std::string;
59
65class [[eosio::contract]] capital : public contract {
66public:
68
74 void setconfig(name coopname, Capital::config config);
75
76 // Создать проект
78 void createproj (
79 eosio::name coopname,
80 checksum256 project_hash,
81 checksum256 parent_hash,
82 std::string title,
83 std::string description,
84 std::string invite,
85 std::string meta,
86 std::string data,
87 bool can_convert_to_project
88 );
89
90 // Редактировать проект
92 void editproj (
93 eosio::name coopname,
94 checksum256 project_hash,
95 std::string title,
96 std::string description,
97 std::string invite,
98 std::string meta,
99 std::string data,
100 bool can_convert_to_project
101 );
102
103
104 // Открыть проект на приём инвестиций
105 [[eosio::action]]
106 void openproject(name coopname, checksum256 project_hash);
107
108 // Закрыть проект от приёма инвестиций
109 [[eosio::action]]
110 void closeproject(name coopname, checksum256 project_hash);
111
112 // Запустить проект на приём коммитов
113 [[eosio::action]]
114 void startproject(name coopname, checksum256 project_hash);
115
116 // Остановить проект
117 [[eosio::action]]
118 void stopproject(name coopname, checksum256 project_hash);
119
120 // Завершить проект и начать голосование
121 [[eosio::action]]
122 void startvoting(name coopname, checksum256 project_hash);
123
124 // Завершить голосование
125 [[eosio::action]]
126 void cmpltvoting(name coopname, checksum256 project_hash);
127
128 // Подсчитать результаты голосования для участника
129 [[eosio::action]]
130 void calcvotes(name coopname, name username, checksum256 project_hash);
131
132 // Проголосовать по методу Водянова
133 [[eosio::action]]
134 void submitvote(name coopname, name voter, checksum256 project_hash, std::vector<Capital::vote_input> votes);
135
136 // Удалить проект
137 [[eosio::action]]
138 void delproject(name coopname, checksum256 project_hash);
139
140 // Конвертация сегмента
141 [[eosio::action]]
142 void convertsegm(eosio::name coopname, eosio::name username, checksum256 project_hash, checksum256 convert_hash, asset wallet_amount, asset capital_amount, asset project_amount, document2 convert_statement);
143
144 // Возврат из проекта
145 [[eosio::action]]
146 void createwthd2(name coopname, name username, checksum256 project_hash, checksum256 withdraw_hash, asset amount, document2 return_statement);
147
148 [[eosio::action]]
149 void capauthwthd2(eosio::name coopname, checksum256 withdraw_hash, document2 authorization);
150
151 [[eosio::action]]
152 void capdeclwthd2(name coopname, checksum256 withdraw_hash, std::string reason);
153
154 [[eosio::action]]
155 void approvewthd2(name coopname, name approver, checksum256 withdraw_hash, document2 approved_return_statement);
156
157 // Возврат из программы
158 [[eosio::action]]
159 void createwthd3(name coopname, name username, checksum256 withdraw_hash, asset amount, document2 return_statement);
160
161 [[eosio::action]]
162 void capauthwthd3(eosio::name coopname, checksum256 withdraw_hash, document2 authorization);
163
164 [[eosio::action]]
165 void approvewthd3(name coopname, name approver, checksum256 withdraw_hash, document2 approved_return_statement);
166
167 [[eosio::action]]
168 void capdeclwthd3(name coopname, checksum256 withdraw_hash, std::string reason);
169
170 // results
171 [[eosio::action]]
172 void pushrslt(name coopname, name username, checksum256 project_hash, checksum256 result_hash,
173 eosio::asset contribution_amount, eosio::asset debt_amount, document2 statement, std::vector<checksum256> debt_hashes);
174
175 [[eosio::action]]
176 void authrslt(eosio::name coopname, checksum256 result_hash, document2 decision);
177
178 [[eosio::action]]
179 void approverslt(eosio::name coopname, eosio::name username, checksum256 result_hash, document2 approved_statement);
180
181 [[eosio::action]]
182 void declrslt(eosio::name coopname, checksum256 result_hash, std::string reason);
183
184 [[eosio::action]]
185 void signact1(eosio::name coopname, eosio::name username, checksum256 result_hash, document2 act);
186
187 [[eosio::action]]
188 void signact2(eosio::name coopname, eosio::name chairman, checksum256 result_hash, document2 act);
189
190 // конвертация
191
192 [[eosio::action]]
193 void addauthor(name coopname, checksum256 project_hash, name author);
194
195 // Коммиты
196 [[eosio::action]]
197 void createcmmt(eosio::name coopname, eosio::name username, checksum256 project_hash, checksum256 commit_hash, uint64_t creator_hours, std::string description, std::string meta);
198 [[eosio::action]]
199 void approvecmmt(eosio::name coopname, eosio::name username, checksum256 approval_hash, document2 approved_document);
200 [[eosio::action]]
201 void declinecmmt(eosio::name coopname, eosio::name username, checksum256 approval_hash, std::string reason);
202
203 // Проектные имущественные взносы
204 [[eosio::action]]
205 void createpjprp(eosio::name coopname, eosio::name username, checksum256 project_hash, checksum256 property_hash, eosio::asset property_amount, std::string property_description);
206 [[eosio::action]]
207 void approvepjprp(eosio::name coopname, eosio::name username, checksum256 property_hash, document2 empty_document);
208 [[eosio::action]]
209 void declinepjprp(eosio::name coopname, eosio::name username, checksum256 property_hash, std::string reason);
210
211 // Программные имущественные взносы
212 [[eosio::action]]
213 void createpgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, eosio::asset property_amount, std::string property_description, document2 statement);
214 [[eosio::action]]
215 void approvepgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, document2 approved_statement);
216 [[eosio::action]]
217 void declinepgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, std::string reason);
218 [[eosio::action]]
219 void authpgprp(eosio::name coopname, checksum256 property_hash, document2 decision);
220 [[eosio::action]]
221 void act1pgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, document2 act);
222 [[eosio::action]]
223 void act2pgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, document2 act);
224
225 // Долги
226 [[eosio::action]]
227 void createdebt(name coopname, name username, checksum256 project_hash, checksum256 debt_hash, asset amount, time_point_sec repaid_at, document2 statement);
228
229 [[eosio::action]]
230 void approvedebt(eosio::name coopname, eosio::name username, checksum256 debt_hash, document2 approved_statement);
231
232 [[eosio::action]]
233 void debtauthcnfr(eosio::name coopname, checksum256 debt_hash, document2 decision);
234
235 [[eosio::action]]
236 void debtpaycnfrm(name coopname, checksum256 debt_hash);
237
238 [[eosio::action]]
239 void debtpaydcln(name coopname, checksum256 debt_hash, std::string reason);
240
241 [[eosio::action]]
242 void declinedebt(name coopname, eosio::name username, checksum256 debt_hash, std::string reason);
243
244 [[eosio::action]]
245 void settledebt(name coopname, name username, eosio::asset amount, document2 statement);
246
247 // Регистрация
248 [[eosio::action]]
249 void regcontrib(eosio::name coopname, eosio::name username, checksum256 contributor_hash, eosio::asset rate_per_hour, uint64_t hours_per_day, bool is_external_contract, document2 contract);
250 [[eosio::action]]
251 void approvereg(eosio::name coopname, eosio::name username, checksum256 contributor_hash, document2 contract);
252 [[eosio::action]]
253 void declinereg(eosio::name coopname, eosio::name username, checksum256 contributor_hash, std::string reason);
254
255 // Редактирование вкладчиков
256 [[eosio::action]]
257 void editcontrib(eosio::name coopname, eosio::name username, eosio::asset rate_per_hour, uint64_t hours_per_day);
258
259 // Импорт вкладчиков
260 [[eosio::action]]
261 void importcontrib(eosio::name coopname, eosio::name username, checksum256 contributor_hash, eosio::asset contribution_amount, std::string memo);
262
263 // Приложения к договору УХД
264 [[eosio::action]]
265 void getclearance(eosio::name coopname, eosio::name username, checksum256 project_hash, checksum256 appendix_hash, document2 document);
266 [[eosio::action]]
267 void apprvappndx(eosio::name coopname, eosio::name username, checksum256 appendix_hash, document2 approved_document);
268 [[eosio::action]]
269 void dclineappndx(eosio::name coopname, eosio::name username, checksum256 appendix_hash, std::string reason);
270
271 // Инвестиции
272 [[eosio::action]]
273 void createinvest(name coopname, name username, checksum256 project_hash, checksum256 invest_hash, asset amount, document2 statement);
274
275 [[eosio::action]]
276 void approveinvst(eosio::name coopname, eosio::name username, checksum256 invest_hash, document2 approved_statement);
277
278 [[eosio::action]]
279 void declineinvst(eosio::name coopname, eosio::name username, checksum256 invest_hash, document2 decline_statement);
280
281 [[eosio::action]]
282 void returnunused(name coopname, checksum256 project_hash, name username);
283
284 // Программные инвестиции
285 [[eosio::action]]
286 void createpinv(name coopname, name username, checksum256 invest_hash, asset amount, document2 statement);
287
288 [[eosio::action]]
289 void apprvpinv(eosio::name coopname, eosio::name username, checksum256 invest_hash, document2 approved_statement);
290
291 [[eosio::action]]
292 void declpinv(eosio::name coopname, eosio::name username, checksum256 invest_hash, document2 declined_statement);
293
294 // Аллокация программных инвестиций
295 [[eosio::action]]
296 void allocate(eosio::name coopname, checksum256 project_hash, eosio::asset amount);
297
298 [[eosio::action]]
299 void diallocate(eosio::name coopname, checksum256 project_hash);
300
301
302 // Расходы
303 [[eosio::action]]
304 void createexpnse(eosio::name coopname, checksum256 expense_hash, checksum256 project_hash, name creator, asset amount, std::string description, document2 statement);
305
306 [[eosio::action]]
307 void approveexpns(name coopname, name approver, checksum256 expense_hash, document2 approved_statement);
308
309 [[eosio::action]]
310 void capauthexpns(eosio::name coopname, checksum256 expense_hash, document2 authorization);
311
312 [[eosio::action]]
313 void capdeclexpns(eosio::name coopname, checksum256 expense_hash);
314
315 [[eosio::action]]
316 void exppaycnfrm(eosio::name coopname, checksum256 expense_hash);
317
318 // Членские взносы
319 [[eosio::action]] void fundproj(eosio::name coopname, checksum256 project_hash, asset amount, std::string memo);
320 [[eosio::action]] void refreshproj(name coopname, checksum256 project_hash, name username);
321 [[eosio::action]] void fundprog(eosio::name coopname, asset amount, std::string memo);
322 [[eosio::action]] void refreshprog(name coopname, name username);
323
324 // Планирование
325 [[eosio::action]] void setmaster(name coopname, checksum256 project_hash, name master);
326 [[eosio::action]] void setplan(name coopname, name master, checksum256 project_hash, uint64_t plan_creators_hours, asset plan_expenses, asset plan_hour_cost);
327 [[eosio::action]] void expandexpnss(name coopname, checksum256 project_hash, asset additional_expenses);
328
329 // CRPS
330 [[eosio::action]] void rfrshsegment(name coopname, checksum256 project_hash, name username);
331
332 // Кошельки проектов
333 [[eosio::action]] void regshare(name coopname, checksum256 project_hash, name username);
334
335};
Контракт Capital управляет вкладами, распределением вознаграждений и выводом средств для участников....
Definition: capital.hpp:65
contract
Definition: eosio.msig_tests.cpp:977
action act
Definition: eosio.msig_tests.cpp:974
share_type amount
Definition: eosio.token_tests.cpp:174
const uint64_t MAX_HOURS_PER_DAY
Максимальное количество часов в день
Definition: capital.hpp:48
const uint32_t MAX_PROJECT_AUTHORS
Максимальное количество авторов в проекте
Definition: capital.hpp:46
const double CREATORS_BONUS_COEFFICIENT
Коэффициент премий создателей от своей себестоимости (100%)
Definition: capital.hpp:42
const double CONTRIBUTORS_BONUS_COEFFICIENT
Коэффициент премий вкладчиков от себестоимостей создателей, авторов и координаторов (161....
Definition: capital.hpp:45
const double AUTHOR_BONUS_COEFFICIENT
Коэффициент премий авторов от своей себестоимости (100%)
Definition: capital.hpp:44
const uint64_t MAX_RATE_PER_HOUR
Максимальная ставка за час
Definition: capital.hpp:47
const double AUTHOR_BASE_COEFFICIENT
Коэффициент авторской себестоимости от себестоимости создателя (61.8%)
Definition: capital.hpp:43
fc::mutable_variant_object voter(account_name acct)
Definition: eosio.system_tester.hpp:1183
Definition: eosio.msig.hpp:34
action(permission_level{ _gateway, "active"_n}, _gateway, "adduser"_n, std::make_tuple(coopname, deposit->username, to_spread, to_circulation, eosio::current_time_point(), true)).send()
Конфигурация контракта, управляемая пользователем.
Definition: global_state.hpp:11
Таблица решений кооператива
Definition: coops.hpp:251
Definition: drafts.hpp:28
Definition: drafts.hpp:7