Расширение внедряет контентный скрипт содержащий переменную с веб3 провайдером: vizonator. Любое действие направляется к исполнительной логике расширения, которое проверяет сохраненные правила для автоматического подтверждения или отказа в действии. Если правил для конкретного сайта не было найдено — расширение спросит пользователя об утверждении запроса.
Эта документация больше для фронтенд разработчиков на javascript.
Доступные операции
Типы операций: подпись и исполнение операций, запрос данных расширения, запросы через API.
Каждая операция запрашивает разные виды правил. Если пользователь отметил галочкой запомнить свое решение, расширение сохранит это для конкретного сайта.
- check vizonator variable
- get_account (extension data)
- get_settings (extension data)
- import_account
- get_custom_account (API)
- get_account_history (API)
- get_accounts_on_sale (API)
- get_subaccounts_on_sale (API)
- account_metadata
- award
- fixed_award
- committee_vote_request
- custom
- delegate_vesting_shares
- passwordless_auth
- transfer
- transfer_to_vesting
- withdraw_vesting
check_vizonator
Проверьте переменную vizonator перед тем как делать запросы на операции.
if(typeof vizonator !== "undefined"){
$(".vizonator_callback.test_check_vizonator").html("Vizonator initialized!");
}
else{
$(".vizonator_callback.test_check_vizonator").html("Vizonator NOT initialized...");
}
Запустить примерget_account
Запрашиваемые правила: account
Запрашивает информацию о текущем аккаунт у расширения: логин, уровень энергии, заполнены ли ключи для шифрования заметок (memo) и управления активами (active).
vizonator.get_account(function(error,result){
let el=$(".vizonator_callback.test_get_account");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерget_settings
Запрашиваемые правила: settings
Запрашивает настройки расширения: шаг энергии, затрачиваемая операцией награждения энергия по умолчанию, темный режим, выбранный язык.
vizonator.get_settings(function(error,result){
let el=$(".vizonator_callback.test_get_settings");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерimport_account
Запрашиваемые правила: account
let account="invite";
let regular_key=false;
let active_key="5KcfoRuDfkhrLCxVcE9x51J6KN9aM9fpb78tLrvvFckxVV6FyFW";
let memo_key=false;
vizonator.import_account(account,regular_key,active_key,memo_key,function(error,result){
let el=$(".vizonator_callback.test_import_account");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерget_custom_account
Запрашиваемые правила: account, api
API запрос по любому аккаунту VIZ с счетчиком для кастомного (custom) протокола. Если аккаунт пустой или булево ложь (false) — запрашивает аккаунт пользователя.
let account="on1x";
let protocol="V";//can be empty
vizonator.get_custom_account(account,protocol,function(error,result){
let el=$(".vizonator_callback.test_get_custom_account");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерget_account_history
Запрашиваемые правила: account, api
API запрос для получения истории операций любого аккаунта VIZ. Если аккаунт пустой или булево ложь (false) — запрашивает аккаунт пользователя.
let account="on1x";
let from=-1;//from the latest activity
let limit=5;
vizonator.get_account_history(account,from,limit,function(error,result){
let el=$(".vizonator_callback.test_get_account_history");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерget_accounts_on_sale
Запрашиваемые правила: account, api
let from=0;//from first entry
let limit=50;//max 1000
vizonator.get_accounts_on_sale(from,limit,function(error,result){
let el=$(".vizonator_callback.test_get_accounts_on_sale");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерget_subaccounts_on_sale
Запрашиваемые правила: account, api
let from=0;//from first entry
let limit=50;//max 1000
vizonator.get_subaccounts_on_sale(from,limit,function(error,result){
let el=$(".vizonator_callback.test_get_subaccounts_on_sale");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерaccount_metadata
Запрашиваемые правила: meta, regular, account
Перезаписывает/обновляет информацию об метаданных аккаунта. Обычно используется для модификации профиля (в начале - получение метаданных из блокчейна, после - изменение их структуры, наконец - запись данных в блокчейн этой операцией).
let metadata="{}";//be careful, this operation will be clear account metadata
vizonator.account_metadata({json:metadata},function(error,result){
let el=$(".vizonator_callback.test_account_metadata");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text("Result: "+JSON.stringify(result));
}
});
Запустить примерaward
Запрашиваемые правила: award, regular
Дополнительные параметры: beneficiaries (бенефициары, структура в виде массива аккаунтов с процентом получаемой награды [{"account":"login1","weight":100},{"account":"login2","weight":200}]), custom_sequence (used by social gateways), force_memo_encoding (принудительное шифрование заметки).
Результат содержит объект с свойством approximate_amount в виде дробного значения. Оно содержит приблизительное количество социального капитала которым был награжден получатель.
vizonator.award({receiver:"on1x",energy:500,memo:"Vizonator docs"},function(error,result){
let el=$(".vizonator_callback.test_award");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result));
}
});
Запустить примерfixed_award
Запрашиваемые правила: award, regular
Идентично award, отличие в переменной reward_amount и max_energy для фиксированной награды.
vizonator.fixed_award({receiver:"on1x",reward_amount:"1.000 VIZ",max_energy:500,memo:"Vizonator docs"},function(error,result){
let el=$(".vizonator_callback.test_fixed_award");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result));
}
});
Запустить примерcommittee_vote_request
Запрашиваемые правила: committee, regular
Голосует за активную заявку в ДАО VIZ. Параметр процент голоса (vote_percent) может быт в диапазоне от -10000 (-100.00%) до 10000 (100.00%).
vizonator.committee_vote_request({request_id:5,vote_percent:10000},function(error,result){
let el=$(".vizonator_callback.test_committee_vote_request");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text("Result: "+JSON.stringify(result));
}
});
Запустить примерcustom
Запрашиваемые правила: custom, protocol_*, regular*, active*
Отправляет json данные кастомного (custom) протокола в блокчейн. Тип доступа (authority) может быть как активным (active), так и обычным (regular).
let authority_type="regular";//can be "active"
let protocol_id="test";
let json_data='{"hello":"world"}';
vizonator.custom({authority:authority_type,id:protocol_id,json:json_data},function(error,result){
let el=$(".vizonator_callback.test_custom");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text("Result: "+JSON.stringify(result));
}
});
Запустить примерdelegate_vesting_shares
Запрашиваемые правила: delegate, active
Делегирование социального капитала другому аккаунту или разделегирование. Влияет на эффективность награждений и весу голоса в ДАО.
let amount="1.000000 SHARES";//"0.000000 SHARES" for undelegate
vizonator.delegate_vesting_shares({delegatee:"on1x",vesting_shares:amount},function(error,result){
let el=$(".vizonator_callback.test_delegate_vesting_shares");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text("Result: "+JSON.stringify(result));
}
});
Запустить примерpasswordless_auth
Запрашиваемые правила: auth, account, regular*, active*
Подписывает уникальную строку для беспарольного доказательства аутентификации. Строка содержит домен сайта, тип доступа, аккаунт и временную отметку в формате unixtime. Сайт обрабатывает полученную строку, верифицирует подпись и должен кэшировать ее с двух-минутной экспирацией, чтобы блокировать попытки авторизации от других источников (в случае MITM атаки).
let authority_type="regular";//can be "active"
vizonator.passwordless_auth({authority:authority_type},function(error,result){
let el=$(".vizonator_callback.test_passwordless_auth");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text(JSON.stringify(result,null,2));
}
});
Запустить примерtransfer
Запрашиваемые правила: transfer, active
Запрашивает у пользователя перевод определенного количества viz. Может запросить принудительное шифрование заметки.
let amount="0.001 VIZ";
let memo="Vizonator docs";
let force_encoding=false;//can be boolean true for force encoding by shared memo key
vizonator.transfer({to:"committee",amount:amount,memo,force_memo_encoding:force_encoding},function(error,result){
let el=$(".vizonator_callback.test_transfer");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text("Result: "+JSON.stringify(result));
}
});
Запустить примерtransfer_to_vesting
Запрашиваемые правила: vesting, active
Запрашивает у пользователя перевод суммы viz в социальный капитал.
vizonator.transfer_to_vesting({to:"committee",amount:"0.001 VIZ"},function(error,result){
let el=$(".vizonator_callback.test_transfer_to_vesting");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text("Result: "+JSON.stringify(result));
}
});
Запустить примерwithdraw_vesting
Запрашиваемые правила: vesting, active
Запрашивает у пользователя вывод из социального капитала определенную сумму в viz.
vizonator.withdraw_vesting({vesting_shares:"10.000000 SHARES"},function(error,result){
let el=$(".vizonator_callback.test_withdraw_vesting");//debug element
if(error){
el.text("Error: "+JSON.stringify(error));
}
else{
el.text("Result: "+JSON.stringify(result));
}
});
Запустить пример