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;
49#include <eosio/eosio.hpp>
50#include <eosio/asset.hpp>
51#include "../lib/common.hpp"
52#include "domain/index.hpp"
53
54
55using namespace eosio;
56using std::string;
57
63class [[eosio::contract]] capital : public contract {
64public:
66
72 void setconfig(name coopname, Capital::config config);
73
74 // Создать проект
76 void createproj (
77 eosio::name coopname,
78 checksum256 project_hash,
79 checksum256 parent_hash,
80 std::string title,
81 std::string description,
82 std::string meta,
83 bool can_convert_to_project
84 );
85
86 // Открыть проект на приём инвестиций
88 void openproject(name coopname, checksum256 project_hash);
89
90 // Запустить проект на приём коммитов
92 void startproject(name coopname, checksum256 project_hash);
93
94 // Завершить проект и начать голосование
96 void startvoting(name coopname, checksum256 project_hash);
97
98 // Завершить голосование
100 void cmpltvoting(name coopname, checksum256 project_hash);
101
102 // Подсчитать результаты голосования для участника
103 [[eosio::action]]
104 void calcvotes(name coopname, name username, checksum256 project_hash);
105
106 // Проголосовать по методу Водянова
107 [[eosio::action]]
108 void submitvote(name coopname, name voter, checksum256 project_hash, std::vector<Capital::vote_input> votes);
109
110 // Удалить проект
111 [[eosio::action]]
112 void delproject(name coopname, checksum256 project_hash);
113
114 // Конвертация сегмента
115 [[eosio::action]]
116 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);
117
118 // Возврат из проекта
119 [[eosio::action]]
120 void createwthd2(name coopname, name username, checksum256 project_hash, checksum256 withdraw_hash, asset amount, document2 return_statement);
121
122 [[eosio::action]]
123 void capauthwthd2(eosio::name coopname, checksum256 withdraw_hash, document2 authorization);
124
125 [[eosio::action]]
126 void capdeclwthd2(name coopname, checksum256 withdraw_hash, std::string reason);
127
128 [[eosio::action]]
129 void approvewthd2(name coopname, name approver, checksum256 withdraw_hash, document2 approved_return_statement);
130
131 // Возврат из программы
132 [[eosio::action]]
133 void createwthd3(name coopname, name username, checksum256 withdraw_hash, asset amount, document2 return_statement);
134
135 [[eosio::action]]
136 void capauthwthd3(eosio::name coopname, checksum256 withdraw_hash, document2 authorization);
137
138 [[eosio::action]]
139 void approvewthd3(name coopname, name approver, checksum256 withdraw_hash, document2 approved_return_statement);
140
141 [[eosio::action]]
142 void capdeclwthd3(name coopname, checksum256 withdraw_hash, std::string reason);
143
144 // results
145 [[eosio::action]]
146 void pushrslt(name coopname, name username, checksum256 project_hash, checksum256 result_hash,
147 eosio::asset contribution_amount, eosio::asset debt_amount, document2 statement, std::vector<checksum256> debt_hashes);
148
149 [[eosio::action]]
150 void authrslt(eosio::name coopname, checksum256 result_hash, document2 decision);
151
152 [[eosio::action]]
153 void approverslt(eosio::name coopname, checksum256 result_hash, document2 approved_statement);
154
155 [[eosio::action]]
156 void declrslt(eosio::name coopname, checksum256 result_hash, std::string reason);
157
158 [[eosio::action]]
159 void signact1(eosio::name coopname, eosio::name username, checksum256 result_hash, document2 act);
160
161 [[eosio::action]]
162 void signact2(eosio::name coopname, eosio::name chairman, checksum256 result_hash, document2 act);
163
164 // конвертация
165
166 [[eosio::action]]
167 void addauthor(name coopname, checksum256 project_hash, name author);
168
169 // Коммиты
170 [[eosio::action]]
171 void createcmmt(eosio::name coopname, eosio::name username, checksum256 project_hash, checksum256 commit_hash, uint64_t creator_hours);
172 [[eosio::action]]
173 void approvecmmt(eosio::name coopname, eosio::name master, checksum256 commit_hash);
174 [[eosio::action]]
175 void declinecmmt(eosio::name coopname, eosio::name master, checksum256 commit_hash, std::string reason);
176
177 // Проектные имущественные взносы
178 [[eosio::action]]
179 void createpjprp(eosio::name coopname, eosio::name username, checksum256 project_hash, checksum256 property_hash, eosio::asset property_amount, std::string property_description);
180 [[eosio::action]]
181 void approvepjprp(eosio::name coopname, checksum256 property_hash, document2 empty_document);
182 [[eosio::action]]
183 void declinepjprp(eosio::name coopname, checksum256 property_hash, std::string reason);
184
185 // Программные имущественные взносы
186 [[eosio::action]]
187 void createpgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, eosio::asset property_amount, std::string property_description, document2 statement);
188 [[eosio::action]]
189 void approvepgprp(eosio::name coopname, checksum256 property_hash, document2 approved_statement);
190 [[eosio::action]]
191 void declinepgprp(eosio::name coopname, checksum256 property_hash, std::string reason);
192 [[eosio::action]]
193 void authpgprp(eosio::name coopname, checksum256 property_hash, document2 decision);
194 [[eosio::action]]
195 void act1pgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, document2 act);
196 [[eosio::action]]
197 void act2pgprp(eosio::name coopname, eosio::name username, checksum256 property_hash, document2 act);
198
199 // Долги
200 [[eosio::action]]
201 void createdebt(name coopname, name username, checksum256 project_hash, checksum256 debt_hash, asset amount, time_point_sec repaid_at, document2 statement);
202
203 [[eosio::action]]
204 void approvedebt(eosio::name coopname, checksum256 debt_hash, document2 approved_statement);
205
206 [[eosio::action]]
207 void debtauthcnfr(eosio::name coopname, checksum256 debt_hash, document2 decision);
208
209 [[eosio::action]]
210 void debtpaycnfrm(name coopname, checksum256 debt_hash);
211
212 [[eosio::action]]
213 void debtpaydcln(name coopname, checksum256 debt_hash, std::string reason);
214
215 [[eosio::action]]
216 void declinedebt(name coopname, checksum256 debt_hash, std::string reason);
217
218 [[eosio::action]]
219 void settledebt(name coopname, name username, eosio::asset amount, document2 statement);
220
221 // Регистрация
222 [[eosio::action]]
223 void regcontrib(eosio::name coopname, eosio::name username, checksum256 contributor_hash, eosio::asset rate_per_hour, bool is_external_contract, document2 contract);
224 [[eosio::action]]
225 void approvereg(eosio::name coopname, checksum256 contributor_hash, document2 contract);
226 [[eosio::action]]
227 void declinereg(eosio::name coopname, checksum256 contributor_hash, std::string reason);
228
229 // Импорт вкладчиков
230 [[eosio::action]]
231 void importcontrib(eosio::name coopname, eosio::name username, checksum256 contributor_hash, eosio::asset contribution_amount, std::string memo);
232
233 // Приложения к договору УХД
234 [[eosio::action]]
235 void getclearance(eosio::name coopname, eosio::name username, checksum256 project_hash, checksum256 appendix_hash, document2 document);
236 [[eosio::action]]
237 void apprvappndx(eosio::name coopname, checksum256 appendix_hash, document2 approved_document);
238 [[eosio::action]]
239 void dclineappndx(eosio::name coopname, checksum256 appendix_hash, std::string reason);
240
241 // Инвестиции
242 [[eosio::action]]
243 void createinvest(name coopname, name username, checksum256 project_hash, checksum256 invest_hash, asset amount, document2 statement);
244
245 [[eosio::action]]
246 void approveinvst(eosio::name coopname, checksum256 invest_hash, document2 approved_statement);
247
248 [[eosio::action]]
249 void declineinvst(eosio::name coopname, checksum256 invest_hash, document2 decline_statement);
250
251 [[eosio::action]]
252 void returnunused(name coopname, checksum256 project_hash, name username);
253
254 // Программные инвестиции
255 [[eosio::action]]
256 void createpinv(name coopname, name username, checksum256 invest_hash, asset amount, document2 statement);
257
258 [[eosio::action]]
259 void apprvpinv(eosio::name coopname, checksum256 invest_hash, document2 approved_statement);
260
261 [[eosio::action]]
262 void declpinv(eosio::name coopname, checksum256 invest_hash, document2 declined_statement);
263
264 // Аллокация программных инвестиций
265 [[eosio::action]]
266 void allocate(eosio::name coopname, checksum256 project_hash, eosio::asset amount);
267
268 [[eosio::action]]
269 void diallocate(eosio::name coopname, checksum256 project_hash);
270
271
272 // Расходы
273 [[eosio::action]]
274 void createexpnse(eosio::name coopname, checksum256 expense_hash, checksum256 project_hash, name creator, asset amount, std::string description, document2 statement);
275
276 [[eosio::action]]
277 void approveexpns(name coopname, name approver, checksum256 expense_hash, document2 approved_statement);
278
279 [[eosio::action]]
280 void capauthexpns(eosio::name coopname, checksum256 expense_hash, document2 authorization);
281
282 [[eosio::action]]
283 void capdeclexpns(eosio::name coopname, checksum256 expense_hash);
284
285 [[eosio::action]]
286 void exppaycnfrm(eosio::name coopname, checksum256 expense_hash);
287
288 // Членские взносы
289 [[eosio::action]] void fundproj(eosio::name coopname, checksum256 project_hash, asset amount, std::string memo);
290 [[eosio::action]] void refreshproj(name coopname, checksum256 project_hash, name username);
291 [[eosio::action]] void fundprog(eosio::name coopname, asset amount, std::string memo);
292 [[eosio::action]] void refreshprog(name coopname, name username);
293
294 // Планирование
295 [[eosio::action]] void setmaster(name coopname, checksum256 project_hash, name master);
296 [[eosio::action]] void setplan(name coopname, name master, checksum256 project_hash, uint64_t plan_creators_hours, asset plan_expenses, asset plan_hour_cost);
297 [[eosio::action]] void expandexpnss(name coopname, checksum256 project_hash, asset additional_expenses);
298
299 // CRPS
300 [[eosio::action]] void rfrshsegment(name coopname, checksum256 project_hash, name username);
301
302 // Кошельки проектов
303 [[eosio::action]] void regshare(name coopname, checksum256 project_hash, name username);
304
305};
Контракт Capital управляет вкладами, распределением вознаграждений и выводом средств для участников....
Definition: capital.hpp:63
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 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 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