COOPENOMICS  v1
Кооперативная Экономика
apps.hpp
См. документацию.
1#pragma once
2
3
4#include "../lib/core/ram_payer.hpp"
5#include <eosio/asset.hpp>
6#include <eosio/contract.hpp>
7#include <eosio/crypto.hpp>
8#include <eosio/eosio.hpp>
9#include <eosio/multi_index.hpp>
10#include <eosio/system.hpp>
11#include <eosio/time.hpp>
12#include <optional>
13
14#include "../lib/index.hpp"
15
16using namespace Apps;
17
75namespace Apps {
82static constexpr uint64_t RELEASE_RETENTION_SECS = 90 * 86400;
83
89static constexpr uint64_t CLEANUP_BUDGET_PER_CALL = 50;
90} // namespace Apps
91
92class [[eosio::contract(APPS)]] apps : public coop_contract {
93
94public:
95 apps(eosio::name receiver, eosio::name code,
96 eosio::datastream<const char *> ds)
97 : coop_contract(receiver, code, ds) {}
98
99 [[eosio::action]] void migrate();
101 [[eosio::action]] void cleanup();
102
103 // ─── packages ───────────────────────────────────────────────────────
104
116 [[eosio::action]] void regpackage(eosio::name coopname,
117 eosio::name package_id,
118 std::string package_name,
119 eosio::name owner,
120 std::vector<eosio::name> compatible_subnets);
121
126 [[eosio::action]] void transferpkg(eosio::name coopname,
127 eosio::name package_id,
128 eosio::name new_owner);
129
130 // ─── releases ───────────────────────────────────────────────────────
131
146 [[eosio::action]] void setrelease(eosio::name coopname,
147 eosio::name package_id,
148 std::string version,
149 Apps::scope_t scope,
150 eosio::checksum256 tarball_sha256,
151 eosio::name moderated_by,
152 std::string meta);
153
162 [[eosio::action]] void reactivate(eosio::name coopname,
163 eosio::name package_id,
164 std::string version);
165
173 [[eosio::action]] void withdraw(eosio::name coopname,
174 eosio::name package_id,
175 std::string version,
176 std::string reason);
177
178
179 // ─── subscriptions ──────────────────────────────────────────────────
180
193 [[eosio::action]] void regsub(eosio::name coopname,
194 eosio::name subscriber,
195 eosio::name package_id,
196 eosio::checksum256 chain_id,
197 eosio::name plan,
198 eosio::time_point_sec start_at,
199 eosio::time_point_sec end_at);
200
206 [[eosio::action]] void expsub(eosio::name coopname,
207 eosio::name subscriber,
208 eosio::name package_id);
209
210 // ─── coops ──────────────────────────────────────────────────────────
211
225 [[eosio::action]] void regcoop(eosio::name coopname,
226 eosio::checksum256 chain_id,
227 eosio::name subnet_label,
228 eosio::public_key signing_key);
229
239 [[eosio::action]] void setcoop(eosio::name coopname,
240 std::optional<eosio::checksum256> chain_id,
241 std::optional<eosio::name> subnet_label,
242 std::optional<eosio::public_key> signing_key,
243 std::optional<bool> active);
244
245 // ─── pricing & globals (v2.1) ───────────────────────────────────────
246
267 [[eosio::action]] void setpricing(eosio::name package_id,
268 eosio::name plan,
269 eosio::asset hourly_rate);
270
281 [[eosio::action]] void setglobals(uint32_t min_payment_period_seconds,
282 uint32_t free_trial_period_seconds,
283 uint32_t lead_time_seconds,
284 uint8_t retry_max);
285
286 // ─── clients (multi-tenant onboarding, v2.4) ────────────────────────
287
299 [[eosio::action]] void regclient(eosio::name catalog_operator,
300 eosio::name client_coopname);
301
311 [[eosio::action]] void delclient(eosio::name catalog_operator,
312 eosio::name client_coopname);
313
314 // ─── subscription extend / retry-counter (D4, v2.5/v2.6) ────────────
315
341 [[eosio::action]] void extendsub(eosio::name catalog_operator,
342 eosio::name subscriber,
343 eosio::name package_id,
344 uint32_t period_seconds,
345 eosio::checksum256 charge_intent_id);
346
363 [[eosio::action]] void setattempt(eosio::name catalog_operator,
364 eosio::name subscriber,
365 eosio::name package_id,
366 uint8_t attempt);
367
368 // ─── service tables ─────────────────────────────────────────────────
369
370 struct [[eosio::table, eosio::contract(APPS)]] counts : counts_base {};
371};
372
373// Плательщик за оперативную память строк таблицы — правило в lib/core/ram_payer.hpp.
RAM_PAYER_CLASS(apps::counts, contract)
Definition: apps.hpp:92
apps(eosio::name receiver, eosio::name code, eosio::datastream< const char * > ds)
Definition: apps.hpp:95
Базовый класс контрактов платформы.
Definition: coop_contract.hpp:33
#define APPS
Definition: consts.hpp:161
const auto active
Definition: eosio.limitauth_tests.cpp:17
const auto owner
Definition: eosio.limitauth_tests.cpp:16
contract
Definition: eosio.msig_tests.cpp:977
Definition: apps.hpp:75
static constexpr uint64_t CLEANUP_BUDGET_PER_CALL
Definition: apps.hpp:89
static constexpr uint64_t RELEASE_RETENTION_SECS
Definition: apps.hpp:82
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: table_apps_releases.hpp:32
Definition: apps.hpp:370
Definition: table_counts.hpp:8