Orbs PoS V2 contracts and testkit.
See also:
- posv2-contracts-deployment-migration - Instructions and scripts for contract deplyment and data migration.
- List of deployed contracts.
- Gas costs for delegators
// 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.
npm install @orbs-network/orbs-ethereum-contracts-v2
- many capabilities are still not exported. Please be patient and tell us about needed features
- currently the Driver object does not shutdown correctly, sometimes calling process.exit() will be required, until we expose a
shutdown
method
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"
- Launch Ganache programatically:
import { ganache } from "@orbs-network/orbs-ethereum-contracts-v2";
...
await ganache.startGanache()
...
await ganache.stopGanache()
- Access a remote Ethereum node/network:
ETHEREUM_MNEMONIC
(default:vanish junk genuine web seminar cook absurd royal ability series taste method identify elevator liquid
)ETHEREUM_URL
(default:http://localhost:7545
)
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);
});