orbs-network / orbs-ethereum-contracts-v2

Orbs PoS V2 Ethereum smart contracts and testkit
MIT License
6 stars 4 forks source link

Version Licence

orbs-ethereum-contracts-v2

Orbs PoS V2 contracts and testkit.

See also:

To acquire contract ABIs:

// By name
import { getAbiByContractName } from "@orbs-network/orbs-ethereum-contracts-v2";
const ProtocolWalletABI = getAbiByContractName('ProcotolWallet');

// By contract registry key
import { getAbiByContractRegistryKey } from "@orbs-network/orbs-ethereum-contracts-v2";
const StakingRewardsWalletABI = getAbiByContractRegistryKey('stakingRewardsWallet');

// By address
import { getAbiByContractAddress } from "@orbs-network/orbs-ethereum-contracts-v2";
const DelegationsContractABI = getAbiByContractRegistryKey("0xB97178870F39d4389210086E4BcaccACD715c71d");

Important - getAbiByContractAddress() needs to be manually updated for every newly deployed contract. It may return undefined when the given address is unrecognized. The address->ABI mapping is defined here. See Upgrading contracts.

To use the test-kit

npm install @orbs-network/orbs-ethereum-contracts-v2

Known issues

setup ganache

Ganache must run in order for the testkit to function. By default the test-kit will assume Ganache is running locally with these default settings:

ganache-cli -p 7545 -i 5777 -a 100 -m  "vanish junk genuine web seminar cook absurd royal ability series taste method identify elevator liquid"
alternative options to running ganache:

Usage Example - javascript:

const BN = require('bn.js').BN;
const Driver = require('@orbs-network/orbs-ethereum-contracts-v2').Driver;

async function createVC() {
    const d = await Driver.new(); // deploys all contracts and returns a driver object

    const monthlyRate = new BN(1000);
    const firstPayment = monthlyRate.mul(new BN(2));

    const subscriber = await d.newSubscriber('defaultTier', monthlyRate);

    // buy subscription for a new VC
    const appOwner = d.newParticipant();

    await d.erc20.assign(appOwner.address, firstPayment); // mint fake ORBS

    await d.erc20.approve(subscriber.address, firstPayment, {
        from: appOwner.address
    });

    return subscriber.createVC(firstPayment, "main", {
        from: appOwner.address
    });
}

// just print the tx Hash and exit

createVC().then((r)=>{
    console.log('Success, txHash', r.transactionHash);
    process.exit(0);
}).catch((e)=>{
    console.error(e);
    process.exit(1);
});