Смарт-контракт
Чтобы взаимодействовать со смарт-контрактом KurateDAO напрямую, используйте API ниже. Смарт-контракт может быть найден на Github.
База данных
mintDatabase
function mintDatabase(
string memory title,
string memory description,
string memory curatorName,
string memory curatorUrl,
uint timeoutCrowd,
uint timeoutCurator,
uint thresholdCurator,
string memory jsonSchema
) public payable
getDatabasesAll
function getDatabasesAll() public view returns(DatabaseSimple[] memory)
Schema
JSON Schema хранится в смарт-контракте, чтобы клиенты знали, соответствуют ли строки структуре базы данных..
{
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "VIPs",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"guests": {
"type": "number"
}
},
"required": ["name","guests"]
}
Методы строк
Минт строки (оплачиваемый)
function mintRow(uint databaseId, string memory json) public payable
Получить строки
function getRows(uint databaseId) view public returns ( RowSimple[] memory)
Стейк строк (оплачиваемый)
function stakeRow(uint databaseId, uint rowId, Decision decision) public payable
Вынос решения по строке
function adjudicateRow(uint databaseId, uint rowId, Decision decision) public
Сжигание строки (удаление)
function burnRow(uint databaseId, uint rowId) public
База данных это живой документ. Так же, как куратор имеет возможность добавить строку в базу данных, он также имеет возможность удалить (сжечь) строку, если она больше не нужна.
Другое
Запускать задачу CRON
function cron() public
Для вынесения решений по элементам, которые вышли за пределы тайм-аута толпы и куратора, необходимо вызывать функцию cron (планировщик) примерно раз в минуту. Тот, кто вызовет ее первым в каждом цикле блока, получит небольшое вознаграждение.
События
event MintedDatabase(uint databaseId);
event MintedRow(uint databaseId, uint rowId);
event Staked(uint databaseId, uint rowId);
event Adjudicated(uint databaseId, uint rowId, Decision decision);
event BurntRow(uint databaseId, uint rowId);
event Croned();
Конструкции (структуры)
База данных
struct Database {
uint id;
string title;
string description;
string curatorName;
string curatorUrl;
uint timeoutCrowd;
uint timeoutCurator;
uint thresholdCurator;
string jsonSchema;
address owner;
uint timestamp;
Row[] rows;
}
Строка
struct Row {
uint id;
string json;
uint timestamp;
mapping(uint => Stake) stakes;
uint stakeLength;
address owner;
}
Стейк
struct Stake {
uint amount;
Decision decision;
Stage stage;
address owner;
uint timestamp;
}
Решение
enum Decision {
INCLUDE,
EXCLUDE,
TBD
}
Этап
enum Stage {
CROWD,
CURATOR,
DATABASE
}
Last updated