Skip to content

Commit

Permalink
Merge pull request #690 from GolosChain/alfa
Browse files Browse the repository at this point in the history
Merge changes from Sprint-apr-22, Sprint-may-14
  • Loading branch information
afalaleev authored May 30, 2019
2 parents 118b37c + c8a96a1 commit f11a87b
Show file tree
Hide file tree
Showing 48 changed files with 2,117 additions and 1,443 deletions.
2 changes: 1 addition & 1 deletion .buildkite/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ steps:

- label: ":floppy_disk: upload image"
command: ".buildkite/steps/publish-image.sh"
branches: "master develop ci-*"
branches: "master alfa develop ci-*"

- wait

Expand Down
2 changes: 2 additions & 0 deletions .buildkite/steps/build-image.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ BRANCHNAME=${BUILDKITE_BRANCH:-master}

if [[ "${IMAGETAG}" == "master" ]]; then
BUILDTYPE="stable"
elif [[ "${IMAGETAG}" == "alfa" ]]; then
BUILDTYPE="alfa"
else
BUILDTYPE="latest"
fi
Expand Down
2 changes: 1 addition & 1 deletion .buildkite/steps/deploy-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ docker-compose up -d

# Run unit-tests
sleep 10s
docker run --network golos-tests_contracts-net -ti cyberway/golos.contracts:$IMAGETAG /bin/bash -c 'export MONGO_URL=mongodb://mongo:27017; /opt/golos.contracts/unit_test -l message -r detailed && /opt/cyberway.contracts/unit_test -l message -r detailed -t "!cyber_system_tests/*" -t "!cyber_stake_tests/*"'
docker run --network golos-tests_contracts-net -ti cyberway/golos.contracts:$IMAGETAG /bin/bash -c 'export MONGO_URL=mongodb://mongo:27017; /opt/golos.contracts/unit_test -l message -r detailed && /opt/cyberway.contracts/unit_test -l message -r detailed'
result=$?

docker-compose down
Expand Down
8 changes: 5 additions & 3 deletions Docker/start-testnet.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,18 @@ exit 0
DONE
chmod a+x shutdown.sh down.sh up.sh

: ${CYBERWAY_IMAGE:=$REPOSITORY/cyberway:$BUILDTYPE}
: ${GOLOS_IMAGE:=$REPOSITORY/golos.contracts:$BUILDTYPE}
export CYBERWAY_IMAGE GOLOS_IMAGE

call_hook "files-preextract"

CYBERWAY_IMAGE=$REPOSITORY/cyberway:$BUILDTYPE
echo "=== Extract cyberway startup scripts from $CYBERWAY_IMAGE"
rm -fR startup || true
docker create --name extract-cyberway $CYBERWAY_IMAGE
docker cp extract-cyberway:/opt/cyberway/startup startup
docker rm extract-cyberway

GOLOS_IMAGE=$REPOSITORY/golos.contracts:$BUILDTYPE
echo "=== Extract Golos convertion scripts from $GOLOS_IMAGE"
rm -fR scripts || true
docker create --name extract-golos-scripts $GOLOS_IMAGE
Expand All @@ -64,7 +66,7 @@ docker rm extract-golos-scripts
call_hook "files-extracted"

echo "=== Start cyberway containers"
startup/run-with-events.sh
EXTRA_NODEOS_ARGS=$EXTRA_NODEOS_ARGS startup/run-with-events.sh

echo "=== Waiting for nodeosd started"
docker run --rm --network cyberway_cyberway-net -ti $GOLOS_IMAGE /bin/bash -c 'retry=30; until /opt/cyberway/bin/cleos --url http://nodeosd:8888 get info; do sleep 10; let retry--; [ $retry -gt 0 ] || exit 1; done; exit 0'
Expand Down
6 changes: 6 additions & 0 deletions common/calclib/fixed_point_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,14 @@ namespace fixed_point_utils {

using fixp_t = sg14::fixed_point<base_t, -fixed_point_fractional_digits>;
using wdfp_t = sg14::fixed_point<wide_t, -fixed_point_fractional_digits>;

// elastic with same number of fractional digits as fixp_t has
using elap_t = sg14::elastic_fixed_point<fixp_t::integer_digits, fixp_t::fractional_digits, base_t>;

// elastic with all (except 1) digits fractional (for values less than or equal to 1)
using elaf_t = sg14::fixed_point<sg14::elastic_integer<std::numeric_limits<base_t>::digits, base_t>, -(std::numeric_limits<base_t>::digits - 1)>;

// "integer" elastic with no fractional digits
using elai_t = sg14::fixed_point<sg14::elastic_integer<std::numeric_limits<base_t>::digits, base_t>, 0>;

constexpr fixp_t FP(base_t a) { return fixp_t::from_data(a); };
Expand Down
33 changes: 32 additions & 1 deletion common/dispatchers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,20 @@
#include "config.hpp"
#include <eosiolib/dispatcher.hpp>

template<typename T, typename... Args>
bool dispatch_with_transfer_helper( eosio::name self, eosio::name code, void (T::*func)(Args...) ) {
struct transfer_st {
eosio::name from;
std::vector<eosio::token::recipient> recipients;
};
auto data = eosio::unpack_action_data<transfer_st>();

for (auto recipient : data.recipients) {
T inst(self, code, eosio::datastream<const char*>(nullptr, 0));
((&inst)->*func)(data.from, recipient.to, recipient.quantity, recipient.memo);
}
return true;
}

#define DISPATCH_WITH_TRANSFER(TYPE, TRANSFER, MEMBERS) \
extern "C" { \
Expand All @@ -11,9 +25,26 @@ extern "C" { \
switch (action) { \
EOSIO_DISPATCH_HELPER(TYPE, MEMBERS) \
} \
/* does not allow destructor of thiscontract to run: eosio_exit(0); */ \
} else if (code == golos::config::token_name.value && action == "transfer"_n.value) { \
eosio::execute_action(eosio::name(receiver), eosio::name(code), &TYPE::TRANSFER); \
} else if (code == golos::config::token_name.value && action == "bulktransfer"_n.value) { \
dispatch_with_transfer_helper(eosio::name(receiver), eosio::name(code), &TYPE::TRANSFER); \
} \
} \
} \

#define DISPATCH_WITH_BULK_TRANSFER(TYPE, TRANSFER, BULKTRANSFER, MEMBERS) \
extern "C" { \
void apply(uint64_t receiver, uint64_t code, uint64_t action) { \
if (code == receiver) { \
switch (action) { \
EOSIO_DISPATCH_HELPER(TYPE, MEMBERS) \
} \
} else if (code == golos::config::token_name.value && action == "transfer"_n.value) { \
eosio::execute_action(eosio::name(receiver), eosio::name(code), &TYPE::TRANSFER); \
} \
else if (code == golos::config::token_name.value && action == "bulktransfer"_n.value) { \
eosio::execute_action(eosio::name(receiver), eosio::name(code), &TYPE::BULKTRANSFER); \
} \
} \
} \
2 changes: 1 addition & 1 deletion cyberway.contracts
24 changes: 12 additions & 12 deletions docs/ru-RU/golos.publication_contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,7 @@ void setrules(
const funcparams& mainfunc,
const funcparams& curationfunc,
const funcparams& timepenalty,
int64_t curatorsprop,
int64_t maxtokenprop,
uint16_t maxtokenprop,
symbol tokensymbol
);
```
Expand All @@ -51,8 +50,7 @@ void setrules(
`mainfunc` — функция, вычисляющая суммарное значение вознаграждения для автора и кураторов поста в соответствии с установленным алгоритмом (например, линейным алгоритмом или алгоритмом квадратного корня). Используемый в функции алгоритм выбирается делегатами голосованием. Функция содержит два параметра: математическое выражение (непосредственно алгоритм), по которому вычисляется сумма вознаграждения, и максимально допустимое значение аргумента для функции. При установке значений параметров для setrules выполняется их проверка на корректность (в том числе на монотонность и неотрицательность);
`curationfunc` — функция, вычисляющая значение вознаграждения для каждого из кураторов в соответствии с установленным алгоритмом (аналогично вычислению для `mainfunc`);
`timepenalty` — функция, вычисляющая вес голоса с учетом времени голосования и длительности штрафного окна;
`curatorsprop` — выделяемая доля всем кураторам от суммарного значения вознаграждения;
`maxtokenprop` — максимально возможное значение вознаграждения (сумма токенов и вестингов), которое может получить автор. Этот параметр устанавливается делегатами голосованием;
`maxtokenprop` — максимально возможное значение вознаграждения (сумма токенов и вестингов), которое может получить автор. Этот параметр устанавливается делегатами голосованием. Целое число в сотых долях процента (от 0 до 10000 = 0%—100%);
`tokensymbol` — тип токена (в рамках приложения Голос предусматривается хождение только токенов Голоса).

Правом на запуск операции-действия `setrules` обладает делегат приложения. Для запуска операции-действия `setrules` требуется наличие в транзакции подписи смарт-контракта `golos.publication` (multisig-аккаунта).
Expand All @@ -67,13 +65,14 @@ void createmssg(
name parentacc,
std::string parentprmlnk,
std::vector<structures::beneficiary> beneficiaries,
int64_t tokenprop,
uint16_t tokenprop,
bool vestpayment,
std::string headermssg,
std::string bodymssg,
std::string l anguagemssg,
std::vector<structures::tag> tags,
std::string jsonmetadata
std::string languagemssg,
std::vector<std::string> tags,
std::string jsonmetadata,
optional<uint16_t> curators_prcnt
);
```

Expand All @@ -89,7 +88,8 @@ void createmssg(
`bodymssg` — тело сообщения;
`languagemssg` — язык сообщения;
`tags` — тэг, который присваивается сообщению;
`jsonmetadata` — метаданные в формате JSON.
`jsonmetadata` — метаданные в формате JSON;
`curators_prcnt` — доля кураторского вознаграждения. Ограничивается диапазоном заданным в параметре `curators_prcnt_param`. Необязательный параметр, значение по умолчанию = `curators_prcnt_param.min_curators_prcnt`.

Параметры `parentacc`и `parentprmlnk` идентифицируют родительское сообщение, на которое создается ответ с использованием `createmssg` в виде сообщения.

Expand All @@ -106,9 +106,9 @@ void updatemssg(
name account,
std::string permlink,
std::string headermssg,
std::string bodymssg,
std::string bodymssg,
std::string languagemssg,
std::vector<structures::tag> tags,
std::vector<std::string> tags,
std::string jsonmetadata
);
```
Expand Down Expand Up @@ -216,4 +216,4 @@ void unvote(
* `max_comment_depth` — максимально возможная глубина комментариев (показывает допустимый уровень вложенности дочерних комментариев относительно родительского;
* `social_acc` — имя аккаунта social;
* `referral_acc` — имя аккаунта referral.


Loading

0 comments on commit f11a87b

Please sign in to comment.