MFM Token - это проект, предоставляющий набор инструментов и утилит для управления токенами в веб-приложении.
Убедитесь, что на вашем компьютере установлено следующее программное обеспечение:
- Node.js (v14.x или новее)
- npm (v6.x или новее)
Для установки проекта выполните следующую команду:
npm i mfm-token
Далее нужно пройти по ссылке и создать базовый токен:
curl -X GET http://localhost/mfm-token/init.php
"Пароль" - это комбинация ключа для расшифровки последнего хеша пароля и хеша нового пароля, разделенных двоеточием. Для нового токена это будет просто хеш нового пароля. Pass это объединение ключа для расшифровки последнего хеша пароля и хеша нового пароля разделенным двоеточием. для нового токена это будет просто хеш нового пароля. md5(md5(password)) = 5f4dcc3b5aa765d61d8327deb882cf99 для последующих транзакций пароль будет рассчитываться так: md5(password):md5(password) + prev_hash для исключения повторения хешей у разных пользователей пароль состоит из нескольких частей.
- domain - домен пользователя
- address - адрес пользователя
- password - пароль пользователя
- prev_hash - предыдущий хеш ключа
использование md5 хеша является уязвимостью, переход на sha256 планируется в будущем.
- create token: https://localhost/mfm-token?domain=catcoin&address=admin: аддрес аккаунта который совершил первую транзакцию будет считаться владельцем токена.
- получение профиля токена
- получение баланса токена https://localhost/mfm-token?domain=catcoin&address=admin:
- create account
- send token to account
- delegate account
- получение списка транзакций
Контракты нужно разрабатывать на языке php.
- необходимо унаследовать скрипт /mfm-token/utils.php
- Получение параметров с помощью утилиты /mfm-data/params.php
- подробное описание параметров можно найти в документации mfm-db
- проверка параметров на допустимые значения
- в любой момент контракта можно вызвать функцию error() для завершения выполнения контракта с ошибкой
- отправка токенов на адрес
- для отправки токенов на адрес необходимо вызвать функцию sendToken() - необходимо знать что amount может быть только не более чем с 2 знаками после замятой.
- делегирование аккаунта
- для делегирования аккаунта необходимо вызвать функцию delegateAccount()
- коммит изменений
- сохранение всех данных в базе данных должно происходить только после удачного выполнения контракта. Поэтому все данные которые должны быть сохранены в базу данных должны находиться в оперативной памяти до конца выполнения контракта.
Пример контракта:
<?php
require_once $_SERVER["DOCUMENT_ROOT"] . "/mfm-token/utils.php";
// получение параметров
$domain = get_required(domain);
$from_address = get_required(from_address);
$to_address = get_required(to_address);
$amount = get_int_required(amount);
$pass = get_required(pass);
$delegate = get_string(delegate);
// код контракта
tokenSend($domain, $from_address, $to_address, $amount, $pass, $delegate);
// сохранение изменений
commit();