1#include <eosio/eosio.hpp>
2#include <eosio/crypto.hpp>
3#include <eosio/contract.hpp>
4#include <eosio/system.hpp>
49 const std::vector<eosio::name>& required_signers = {}
53 assert_recover_key(sig.signed_hash, sig.signature, sig.public_key);
55 if (!required_signers.empty()) {
56 for (
const auto& required : required_signers) {
59 if (sig.signer == required) {
64 eosio::check(found, (
"Не найдена подпись от обязательного подписанта: " + required.to_string()).c_str());
71 constexpr checksum256 EMPTY_HASH = checksum256();
73 return doc.
hash == EMPTY_HASH;
103 auto draft = drafts.find(draft_id);
105 eosio::check(
draft != drafts.end(),
"Шаблон документа не найден");
131typedef eosio::multi_index<
133 eosio::indexed_by<
"bydraft"_n, eosio::const_mem_fun<translation, uint64_t, &translation::by_draft>>,
136 eosio::const_mem_fun<translation, uint128_t, &translation::by_draft_lang>>>
Константы контракта шаблонов документов
Definition: draft.hpp:45
static constexpr eosio::name _draft
Definition: consts.hpp:154
void verify_document_or_fail(const document2 &doc, const std::vector< eosio::name > &required_signers={})
Definition: drafts.hpp:47
bool is_empty_document(const document2 &doc)
Definition: drafts.hpp:69
eosio::multi_index<"drafts"_n, onedraft > drafts_index
Definition: drafts.hpp:98
eosio::multi_index< "translations"_n, translation, eosio::indexed_by<"bydraft"_n, eosio::const_mem_fun< translation, uint64_t, &translation::by_draft > >, eosio::indexed_by< "bydraftlang"_n, eosio::const_mem_fun< translation, uint128_t, &translation::by_draft_lang > > > translations_index
Definition: drafts.hpp:137
onedraft get_scoped_draft_by_registry_or_fail(eosio::name scope, uint64_t draft_id)
Definition: drafts.hpp:101
contract
Definition: eosio.msig_tests.cpp:977
Definition: eosio.msig.hpp:34
Definition: drafts.hpp:28
eosio::checksum256 hash
Definition: drafts.hpp:36
std::vector< signature_info > signatures
Definition: drafts.hpp:44
std::string meta
Definition: drafts.hpp:41
eosio::checksum256 meta_hash
Definition: drafts.hpp:38
std::string version
Definition: drafts.hpp:31
eosio::checksum256 doc_hash
Definition: drafts.hpp:37
checksum256 hash
Definition: drafts.hpp:9
signature signature
Definition: drafts.hpp:13
std::string meta
Definition: drafts.hpp:15
public_key public_key
Definition: drafts.hpp:11
Таблица шаблонов документов хранит информацию о шаблонах документов и их версиях.
Definition: drafts.hpp:85
std::string context
Контекст шаблона
Definition: drafts.hpp:91
uint64_t registry_id
Реестровый идентификатор шаблона
Definition: drafts.hpp:86
std::string model
Модель шаблона
Definition: drafts.hpp:92
uint64_t version
Версия шаблона
Definition: drafts.hpp:87
uint64_t default_translation_id
Идентификатор перевода по умолчанию
Definition: drafts.hpp:88
std::string description
Описание шаблона
Definition: drafts.hpp:90
std::string title
Заголовок шаблона
Definition: drafts.hpp:89
uint64_t primary_key() const
Definition: drafts.hpp:94
Definition: drafts.hpp:18
uint32_t id
Definition: drafts.hpp:19
checksum256 signed_hash
Definition: drafts.hpp:20
eosio::name signer
Definition: drafts.hpp:21
eosio::public_key public_key
Definition: drafts.hpp:22
std::string meta
Definition: drafts.hpp:25
eosio::time_point_sec signed_at
Definition: drafts.hpp:24
eosio::signature signature
Definition: drafts.hpp:23
Таблица переводов шаблонов документов хранит переводы шаблонов на различные языки.
Definition: drafts.hpp:119
uint64_t by_draft() const
Первичный ключ (1)
Definition: drafts.hpp:126
eosio::name lang
Язык перевода
Definition: drafts.hpp:122
uint128_t by_draft_lang() const
Индекс по шаблону (2)
Definition: drafts.hpp:128
uint64_t primary_key() const
Definition: drafts.hpp:125
uint64_t draft_id
Идентификатор шаблона документа
Definition: drafts.hpp:121
std::string data
Данные перевода
Definition: drafts.hpp:123
uint64_t id
Идентификатор перевода
Definition: drafts.hpp:120
static uint128_t combine_ids(const uint64_t &x, const uint64_t &y)
Definition: utils.hpp:5