npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cooptypes

v0.5.18

Published

_description_

Downloads

1,424

Readme

COOPTYPES

npm version npm downloads bundle JSDocs License

Модуль cooptypes содержит информацию для работы со смарт-контрактами кооперативной экономики. В этом модуле представлены реестры действий и таблиц каждого смарт-контракта, а также имена аккаунтов для разных блокчейн-сетей.

Каждое действие содержит интерфейс транзакции, информацию о требуемой авторизации и имя действия, которое нужно вызвать на уровне смарт-контракта.

Каждая таблица содержит интерфейс для работы с данными и информацию о пространстве хранения информации в блокчейне.

Как пользоваться

Перейти на страницу документации и ознакомиться с набором пространств имен контрактов, в каджом из которых есть действия и таблицы, а также, интерфейсы данных, имена контрактов, пространств хранения и требуемая авторизация. Всё это доступно из интерфейса IDE после импорта контракта.

Получение таблиц

import EosApi from 'eosjs-api';
import {SovietContract} from 'cooptypes'

const options = {
    httpEndpoint: 'http://127.0.0.1:8888',
  };

const api = new EosApi(options);
const coopname = 'testcoop' - тестовое имя аккаунта кооператива

const _scope = SovietContract.Tables.Boards.scope

Получив _scope, необходимо проверить его и подставить переменную:
let scope

if (_scope === '_coopname' )
  scope = coopname
if (_scope === '_username)
  scope = username
... и так далее

scope - это области памяти хранения информации в смарт-контракте, которые представлены в виде универсальных параметров _username, _coopname или прочих, в соответствии с которыми необходимо подставить переменную.

Например, для получения таблицы с членами совета кооператива, необходимо подставить область памяти _coopname, или, 'testcoop', как было определено выше для тестового кооператива. Также, вместо _coopname могут быть указаны имена других контрактов или пользователей. Область памяти определяется тем, как именно смарт-контракт хранит информацию.

После подстановок, мы можем получить информацию из таблицы смарт-контракта блокчейна:

api.getTableRows(
    {
        json: true,
        code: SovietContract.contractName.production, //извлекаем имя контракта
        scope, //подставляем ранее полученную область памяти
        table: SovietContract.Tables.Boards.tableName, //извлекаем имя таблицы в контракте
        limit: 10, // устанавливаем лимит

        // не обязательные параметры запроса
        /*  upper_bound, // - верхняя граница
            lower_bound, // - нижняя граница
            key_type, // - тип ключа
            index_position, // нижняя граница
        */
    })

Те же параметры scope, table, code могут быть использованы для получения информации из модуля COOPARSER. Последнее используется, когда необходимо получить исторические данные и нет необходимости проверять их актуальность по наличию таблиц в блокчейне. Однако, таблицы в блокчейне необходимо всегда проверять перед отправкой любой транзакции действия. Нельзя полагаться на данные из парсера при подготовке транзакции действия.

Транзакция действий

Состояние любого смарт-контракта может изменяться только с помощью действий. Для того, чтобы совершить действия, необходимо сформировать и отправить транзакцию с помощью библиотеки eosjs или альтернатив.

import { Api, JsonRpc } from 'eosjs';
import { JsSignatureProvider } from 'eosjs/dist/eosjs-jssig';
import { TextEncoder, TextDecoder } from 'util';
import fetch from 'isomorphic-fetch';

const signatureProvider = new JsSignatureProvider([wif]);
const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), textEncoder: new TextEncoder() });

транзакция может содержать в себе массив действий, которые будут применяться последовательно друг за другом. Ниже мы сформируем транзакцию регистрации нового аккаунта, которая может быть вызвана только администратором или председателем кооператива.

  const result = await eos.transact(
    {
      actions: [
        {
          //здесь мы извлекаем имя контракта
          account: RegistratorContract.contractName.production,
          //здесь мы извлекаем имя действия
          name: RegistratorContract.Actions.CreateAccount.actionName,
          authorization: [
            {
              // требуемые авторизации хранятся в RegistratorContract.Actions.CreateAccount.authorizations, откуда могут быть извлечены программно или вручную.
              actor: chairman,
              permission: 'active',
            },
          ],
          data: {
            // подставляем данные действия
          } as RegistratorContract.Actions.CreateAccount.ICreateAccount,
          // здесь извлекаем интерфейс для действия
        },
      ]
    }
  );

Лицензия

MIT License © 2024-PRESENT CBS VOSKHOD