Skip to content

CREDITSCOM/CScheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

60 Commits
 
 
 
 
 
 
 
 

Repository files navigation

CScheduler

  1. Сайт проекта http://descheduler.com
  2. Проект позволяет вызывать указанные функции в смарт контрактах в указанное время
  3. Доступ ко всем функциям сайта имеет только зарегистрированный пользователь.

Пример использования: Для правильного функционирования работы сайта http://cryptopoll.me необходимо проводить завершение раунда.

После завершения раунда происходит следующее:

  • Среди участников распределяется вознаграждение
  • Текущий опрос завершается
  • Начинается новый опрос

Для реализации завершения раунда в смарт контракте предусмотрен метод executeRound(). Для автоматического вызова этого метода можно использовать данный сервис. Для этого необходимо сделать следующее:

  • Перейти на сайт http://descheduler.com и зарегистрироваться
  • На главой странице нажать кнопку "Добавить задачу" и заполнить все параметры задачи:



API

/Api/AddNewTask - добавление новой задачи

Для добавления новой задачи необходимо отправить post запрос по адресу http://descheduler.com/Api/AddNewTask и передать в теле запроса json-объект с параметрами. Обязательные параметры:
  • ApiKey - ваш API ключ. При регистрации на сайте http://descheduler.com вам автоматически присваивается уникальный ключ. Найти ключ можно в личном кабинете (Menu - My account - Personal data)
  • Name - наименование задачи.
  • Network - сеть, в которой находится ваш смарт контракт. Может принимать одно из трех значений: "CreditsNetwork", "DevsDappsTestnet" или "testnet-r4_2".
  • Method - публичный метод в смарт контракте, который вы собираетесь вызывать в запланированное время. Например: "executeRound". Указывается без скобок.
  • Address - адрес смарт контракта. Например: "GVGAFSYAsTSfnnAZuHzHL43q9UpbvpEZzKn2VmfaMcEH".
  • ExecutionMode - периодичность с которой будет вызываться вышеуказанные метод (Method) в смарт контракте. Может принимать одно из четырех значений:
    • Regular - задача будет выполняться регулярно
    • Once - задача будет выполнена единожды в строго указанное время
    • InSeconds - задача будет выполнена единожды через указанное количество секунд с момента выполнения запроса. Количество секунд указывается в параметре InSecondsValue
    • CronExpression - выражение в формате Cron. Например: "0,11 0,2,34 0,15 6 APR ? *". Данное выражение можно сформировать автоматически, используя какой-либо онлайн-сервис, например, freeformatter.com

Передача других параметров зависит от того какой ExecutionMode используется.
Вариант 1. Если ExecutionMode="Regular", то необходимо передать еще 4 параметра:

  • RegularDateFrom - дата начала выполнения в формате "ММ-ДД-ГГГГ-ЧЧ-ММ-СС". Тип строка.
  • RegularDateTo - дата окончания выполнения в формате "ММ-ДД-ГГГГ-ЧЧ-ММ-СС". Тип строка.
  • RegularPeriod - периодичность. Может принимать 1 из трех значений: "Days", "Hours" или "Minutes". Тип строка.
  • RegularValue - частота выполнения. Тип строка. Целочисленное значение. Например: 1, 3, 5, 10.
Вариант 2. Если ExecutionMode="Once", то необходимо передать еще 1 параметр:
  • OnceDate - дата выполнения в формате "ММ-ДД-ГГГГ-ЧЧ-ММ-СС"
Вариант 3. Если ExecutionMode="InSeconds", то необходимо передать еще 1 параметр:
  • InSecondsValue - количество секунд через которое необходимо выполнить задание. Отсчет начинается с момента вызова данного запроса. Например, если InSecondsValue=60, то задание будет выполнено через 1 минуту после выполнения запроса.
Вариант 4. Если ExecutionMode="CronExpression", то необходимо передать еще 1 параметр:
  • CronExpression - выражение в формате Cron


Пример 1. Метод executeRound в смарт контракте по адресу GVGAFSYAsTSfnnAZuHzHL43q9UpbvpEZzKn2VmfaMcEH будет вызываться с 1-го января по 31-е декабря каждые 3 часа, начиная с 01:01:01.

let model = new Object();
model.ApiKey = <YourApiKey>;
model.Name = "Test1";
model.Network = 'DevsDappsTestnet'; //CreditsNetwork or testnet-r4_2 or DevsDappsTestnet
model.Method = 'executeRound';
model.Address = GVGAFSYAsTSfnnAZuHzHL43q9UpbvpEZzKn2VmfaMcEH;
model.ExecutionMode = 'Regular';
model.RegularDateFrom = '01-01-2019-01-01-01';
model.RegularDateTo = '12-31-2019-23-59-59';
model.RegularPeriod = 'Hours';
model.RegularValue = '3';

$.ajax({
    type: "POST",
    url: "http://descheduler.com/Api/AddNewTask",
    data: JSON.stringify(model),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        if (response.IsSuccess) {
            alert('Action completed!');
        } else {
            alert('Error: ' + response.Message);
        }                    
    }
});

Пример 2. Метод executeRound будет вызван единожды 31 декабря в 23:59:59

let model = new Object();
model.ApiKey = <YourApiKey>;
model.Name = "Test2";
model.Network = 'DevsDappsTestnet'; //CreditsNetwork or testnet-r4_2 or DevsDappsTestnet
model.Method = 'executeRound';
model.Address = GVGAFSYAsTSfnnAZuHzHL43q9UpbvpEZzKn2VmfaMcEH;
model.ExecutionMode = 'Once';
model.OnceDate = '12-31-2019-23-59-59';

$.ajax({
    type: "POST",
    url: "http://descheduler.com/Api/AddNewTask",
    data: JSON.stringify(model),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        if (response.IsSuccess) {
            alert('Action completed!');
        } else {
            alert('Error: ' + response.Message);
        }                    
    }
});

Пример 3. Метод executeRound будет вызываться согласно расписанию, закодированному в формате cron

let model = new Object();
model.ApiKey = <YourApiKey>;
model.Name = "Test3";
model.Network = 'DevsDappsTestnet'; //CreditsNetwork or testnet-r4_2 or DevsDappsTestnet
model.Method = 'executeRound';
model.Address = GVGAFSYAsTSfnnAZuHzHL43q9UpbvpEZzKn2VmfaMcEH;
model.ExecutionMode = 'CronExpression';
model.CronExpression = '0,11 0,2,34 0,15 6 APR ? *';

$.ajax({
    type: "POST",
    url: "http://descheduler.com/Api/AddNewTask",
    data: JSON.stringify(model),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        if (response.IsSuccess) {
            alert('Action completed!');
        } else {
            alert('Error: ' + response.Message);
        }                    
    }
});

Пример 4. Метод executeRound будет вызыван один раз через 15 минут после создания задачи.

let model = new Object();
model.ApiKey = <YourApiKey>;
model.Name = "Test4";
model.Network = 'DevsDappsTestnet'; //CreditsNetwork or testnet-r4_2 or DevsDappsTestnet
model.Method = 'executeRound';
model.Address = GVGAFSYAsTSfnnAZuHzHL43q9UpbvpEZzKn2VmfaMcEH;
model.ExecutionMode = 'InSeconds';
model.InSecondsValue = '900'; //15 мин * 60 сек в 1 мин = 900 сек

$.ajax({
    type: "POST",
    url: "http://descheduler.com/Api/AddNewTask",
    data: JSON.stringify(model),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        if (response.IsSuccess) {
            alert('Action completed!');
        } else {
            alert('Error: ' + response.Message);
        }                    
    }
});



/Api/DeploySmartContract - создать новый смарт контракт

Для создания нового контракта необходимо отправить post запрос по адресу http://descheduler.com/Api/DeploySmartContract и передать в теле запроса json-объект с 4-мя параметрами:
  • Network - может быть одним из трех значений: 'CreditsNetwork' или 'testnet-r4_2' или 'DevsDappsTestnet'
  • PublicKey - публичный ключ вашего кошелька
  • PrivateKey - приватный ключ вашего кошелька
  • JavaCode - java код вашего смарт контракта

В ответе будет возвращен json-объект с 3-мя параметрами:

  • IsSuccess - если смарт контракт добавлен, то значение равно true, иначе false
  • Address - если смарт контракт добавлен, то значение будет содержать адрес контракта
  • Message - если смарт контракт добавлен, то значение равно 'Ok', иначе описание ошибки

Пример запроса:

let model = new Object();            
model.Network = 'CreditsNetwork'; //CreditsNetwork or testnet-r4_2 or DevsDappsTestnet
model.PublicKey = '<your public key>';
model.PrivateKey = '<your private key>';
model.JavaCode = '' +
    'import com.credits.scapi.annotations.Getter;' +
    'import com.credits.scapi.v0.SmartContract;' +
    'import com.google.gson.*;' +

    'public class CryptoBattle extends SmartContract' +
    '{' +
    '    public String payable(BigDecimal amount, byte[] userData)' +
    '    ...' +
    '    ...' +
    '}';
        
$.ajax({
    type: "POST",
    url: "http://descheduler.com/Api/DeploySmartContract",
    data: JSON.stringify(model),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        if (response.IsSuccess) {
            alert('Smart contract address: ' + response.Address);
        } else {
            alert('Error: ' + response.Message);
        }                    
    }
});

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published