Methods

buyRam (bytes, ?payer)

Buy ram for this account

Defaults/Optionals:

  • payer - current account

const eoslime = require('eoslime').init();
// Existing accounts on local network
let payer = eoslime.Account.load('myAcc1', 'myPrivateKey1');
let account2 = eoslime.Account.load('myAcc2', 'myPrivateKey2');

// Payer will buy ram for account2
await account2.buyRam(1000,  payer);

buyBandwidth (cpu, net, ?payer)

Buy cpu and network for this account

Defaults/Optionals:

  • payer - current account

const eoslime = require('eoslime').init();
// Existing accounts on local network
let payer = eoslime.Account.load('myAcc1', 'myPrivateKey1');
let account2 = eoslime.Account.load('myAcc2', 'myPrivateKey2');

// Payer will buy cpu and network for account2 for 100 EOS 
await account2.buyBandwidth('100.0000 EOS', '100.0000 EOS', payer);

send (receiver, amount, symbol)

Send tokens to another account

Defaults/Optionals:

  • symbol - EOS

const eoslime = require('eoslime').init();
// Existing accounts on local network
let sender = eoslime.Account.load('myAcc1', 'myPrivateKey1');
let receiver = eoslime.Account.load('myAcc2', 'myPrivateKey2');

// The sender will send 100 EOS tokens to receiver
await sender.send(receiver, `100.0000`, 'EOS');

addAuthority (authorityName, ?threshold)

Creates a new authority and add current account public key in it

Defaults/Optionals:

  • threshold - 1

const eoslime = require('eoslime').init();
// Existing account on local network
const activeAccount = eoslime.Account.load('myAcc1', 'myPrivateKey1', 'active');

// It will create 'custom' authority. Parent authority will be the 'active' one
await activeAccount.addAuthority('custom', 2);

setAuthorityAbilities(authority, abilities)

Once you add a sub authority, it can not process whatever transaction. You should define what actions of which contracts the authority has permissions to execute.

Parameters

  1. authority - The name of the authority the abilities will be applied to

  2. abilities - Array of the following objects

    {
        action: 'contract action',
        contract: 'contract name'
    }
const faucetContract = await eoslime.Contract.deploy(FAUCET_WASM_PATH, FAUCET_ABI_PATH);

const account = await eoslimeTool.Account.createRandom();
await account.addAuthority('random');

await account.setAuthorityAbilities('random', [
    {
        action: 'produce',
        contract: faucetContract.name
    }
]);

const accountRandomAuth = eoslime.Account.load(account.name, account.privateKey, 'random');
await faucetContract.produce(account.name, "100.0000 TKNS", account.name, "memo", { from: accountRandomAuth });

increaseThreshold(threshold)

Increase the authority threshold.

It is useful when you have multiple keys or accounts operating from an authority. This method will allow you to prepare a multisignature account.

 const THRESHOLD = 2;
 const account = await Account.createRandom();

 const keysPair = await eoslime.utils.generateKeys();

 // Add one more key to authority
 await account.addAuthorityKey(keysPair.publicKey);
 // Once threshold being increased, 
 // both keys should sign the transaction in order to be broadcasted
 await account.increaseThreshold(THRESHOLD);

addPermission (permission, ?weight)

Add permission to authority such as eosio.code

Defaults/Optionals:

  • weight - 1

Adding eosio.code permission would result in

const eoslime = require('eoslime').init();
// Existing accounts on local network
let account = eoslime.Account.load('myaccount', 'myPrivateKey', 'active');
let tokenFactoryAccount = eoslime.Account.load('tokenfactory', 'factoryPrivateKey', 'active');

/* 
    It will allow a contract account with eosio.code permission to act on behalf when you are authorizing an action with active authority
    Use case:
        We have two contracts:  TokenFactory and Token
        TokenFactory.create behind the scene calls Token.issue_tokens. issue_tokens caller will be the TokenFactory. 
        However you could want your account to be forwarded to issue_tokens instead of TokenFactory's one

*/
await account.addPermission('eosio.code');

addOnBehalfAccount(accountName, authority, ?weight)

Allow another account to act from your authority

const accounts = await Account.createRandoms(2);
const child = accounts[0];
const parent = accounts[1];

await child.addOnBehalfAccount(parent.name, AUTHORITY);

addOnBehalfKey(publicKey, ?weight)

Add more keys to your authority

const WEIGHT = 2;
const account = await Account.createRandom();

const keysPair = await eoslime.utils.generateKeys();
await account.addOnBehalfKey(keysPair.publicKey, WEIGHT);

setWeight(weight)

Set weight on account public key. This applies to current account authority.

If you have loaded your account with active authority and public key pub_key this will result in

 const WEIGHT = 2;
 const account = await Account.createRandom();

 await account.setWeight(WEIGHT);

getAuthorityInfo()

Returns information for loaded authority

const account = await Account.createRandom();
const authority = await account.getAuthorityInfo();

/*
    authority = 
    {
        perm_name: 'active',
        parent: 'owner',
        required_auth:
            { 
                threshold: 1, 
                keys: [ [Object] ], 
                accounts: [], 
                waits: [] 
            }
    }
*/

getBalance (?symbol, ?code)

Returns the account balance

Defaults/Optionals:

  • symbol - EOS

  • code - eosio.token

const eoslime = require('eoslime').init();
// Existing account on local network
let account = eoslime.Account.load('myAcc1', 'myPrivateKey1');

// custom.token is a contract account with a token deployed on it
await account.getBalance('CUSTOM', custom.token);

Last updated