0.1.2 • Published 2 years ago

@vechain.energy/apps v0.1.2

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
2 years ago

A wrapper for connex that combines it with known ABIs and contracts to improve development setups.

This is a work in progress trialing different use cases

Installation

yarn add @vechain.energy/apps @vechain.energy/apps/registry
  • @vechain.energy/apps is the wrapper and simplifier for blockchain interaction
  • @vechain.energy/apps/registry is a list of known contracts and ABIs to be used by alias

Usage

import Apps from '@vechain.energy/apps';
import '@vechain.energy/apps/registry';

const vtho = await Apps.getContract('VTHO')

// read operations return the decoded results
const totalSupply = await vtho.totalSupply()
const balance = await vtho.balanceOf('0x04Ad3f13050cc766169433062BcDbB367B616986')

// write operations return the clauses
const transferClause = await vtho.transfer('0x04Ad3f13050cc766169433062BcDbB367B616986', '0x04Ad3f13050cc766169433062BcDbB367B616986', 1)

// standards for a known address
const noNerdsTablets = Apps.getContractAt('ERC721', '0x77fe6041fa5beb0172c9ab6014b4d8d5099f0a23')
const totalSupply = await noNerdsTablets.totalSupply()
expect(totalSupply).toBeTruthy()

// multiple standards for a known address
const noNerdsTablets = await Apps.getContractAt(['ERC20', 'ERC721'], '0x77fe6041fa5beb0172c9ab6014b4d8d5099f0a23')
const totalSupply = await noNerdsTablets.totalSupply()
expect(totalSupply).toBeTruthy()

Modifying functions return clauses

const Apps = require('@vechain.energy/apps')
await Apps.setConnex('https://testnet.veblocks.net')

const abiCounter = [{ "inputs": [], "name": "counter", "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "increment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }]
const contractAddress = '0x8384738c995d49c5b692560ae688fc8b51af1059'

const counter = await Apps.getContractAt(abiCounter, contractAddress)
const clause = await counter.increment()

const connex = Apps.getConnex()
const { txid } = connex.vendor
  .sign("tx", [clause])
  .delegate("https://sponsor-testnet.vechain.energy/by/90")
  .comment("increment counter by +1")
  .request();

Registry

Access address and abi information directly.

import Apps from '@vechain.energy/apps';

const { address, abi } = Apps.Registry('VTHO')

console.log(address)
/**
{
  "test": "0x0000000000000000000000000000456E65726779",
  "main": "0x0000000000000000000000000000456E65726779"
}
**/

console.log(abi)
/**
[
  {
    "constant": true,
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  …
**/

Register custom aliases:

import Apps from '@vechain.energy/apps';

const abi = []
const address = {
  "test": "0x0000000000000000000000000000456E65726779",
  "main": "0x0000000000000000000000000000456E65726779"
}
Apps.Registry.register({
  name: 'VTHO',
  abi,
  address
})

Contract

Access contracts with all required information directly :

import Apps from '@vechain.energy/apps';

const connex = new Connex({
  node: "https://mainnet.veblocks.net",
  network: "main"
});

const { address, abi } = Apps.Registry('VTHO')
const contract = Apps.Contract({ address, abi, connex })
const totalSupply = await contract.totalSupply()

Custom Connex

import Apps from '@vechain.energy/apps';

const connex = new Connex({
  node: "https://mainnet.veblocks.net",
  network: "main"
});

// set custom connex instance or options
// if not used, will create one automatically connecting to the MainNet
Apps.setConnex(connex)
0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago