Catalog npm
PACKAGE EXPLORERView in registry

@0confirmation/sdk

npm

0confirmation sdk

0confirmationsdk
Versions collected14
Direct dependencies53From release 1.0.1
Last observed20 Oct, 22:06 UTC

README

Current package documentation

@0confirmation/sdk

The flagship 0confirmation product. Imports all relevant modules to capture any sort of logic you would need for building 0confirmation enabled apps.

Usage

Instantiate a Zero instance:


const ethers = require('ethers');
const Zero = require('@0confirmation/sdk');
const makePrivateKeyWeb3Provider = require('@0confirmation/providers/private-key-or-seed') // truffle HDWalletProvider doesn't correctly handle personal_sign, but this provider will!
const web3ProviderFromEthersProvider = require('@0confirmation/providers/from-ethers'); // converts an ethers.js provider to a web3 provider

const provider = makePrivateKeyWeb3Provider('a000000000000000000000000000000000000000000000000000000000000000', web3ProviderFromEthersProvider(new ethers.providers.InfuraProvider('mainnet'));

const zero = new Zero(provider, 'mainnet');

await zero.initializeDriver(); // instantiates a WebRTC connection to the network via lendnet.0confirmation.com

Check liquidity pool renBTC holdings


// instantiate Zero instance

const { makeManagerClass } = require('@0confirmation/eth-manager');
const ERC20 = makeManagerClass(require('@0confirmation/sol/build/DAI')) // will make an ethers.js wrapper compatible with DAI, which is a mock token that exports the ERC20 ABI
const environments = require('@0confirmation/sdk/environments');
const mainnet = environments.getAddresses('mainnet');
const renbtc = new ERC20(mainnet.renbtc, zero.getProvider().asEthers());

const zeroBTC = await zero.getLiquidityTokenFor(mainnet.renbtc);
const liquidityPoolRenBTCHoldings = await renbtc.balanceOf(zeroBTC.address);
console.log(String(liquidityPoolRenBTCHoldings));

ERC20 approve liquidity pool, then add liquidity


await zero.approveLiquidityToken(mainnet.renbtc)
await (
  await zero.addLiquidity(ethers.utils.parseUnits('10', 8))
).wait(); // lets add 10 renbtc to the pool

For a keeper, ERC20 approve transfers by the ShifterPool to be able to execute borrows


await (
  await zero.approvePool(mainnet.renbtc)
).wait();

Create a liquidity request, sign it, broadcast over libp2p, then wait for your borrow proxy


const randomBytes = require('random-bytes').sync;

const liquidityRequest = zero.createLiquidityRequest({
  amount: ethers.utils.parseUnits('0.05', 8),
  gasRequested: ethers.utils.parseEther('0.05'), // request some gas to use your btc with, optional
  nonce: '0x' + randomBytes(32).toString('hex'),
  token: mainnet.renbtc
});

const liquidityRequestParcel = await liquidityRequest.sign();
console.log(liquidityRequestParcel.depositAddress) // outputs the BTC deposit address to initiate the shift
await liquidityRequestParcel.broadcast();
const depositedLiquidityRequestParcel = await liquidityRequestParcel.waitForDeposit();
while (true) {
  const borrowProxy = await depositedLiquidityRequestParcel.getBorrowProxy();
  if (borrowProxy) {
    // can call await borrowProxy.proxy(someContractAddress, calldata, value) to pilot the borrow proxy through supported modules
  } else {
    await new Promise((resolve) => setTimeout(resolve, 5000));
  }
}

Transaction scripts

To run transaction scripts with a borrow, you can either pass an array as follows:


const liquidityRequest = zero.createLiquidityRequest({
  amount: someAmount,
  nonce: someNonce,
  gasRequested: '0',
  token: mainnet.renbtc,
  actions: [{
    to: uniswapRouter,
    calldata: new ethers.utils.Interface(UniswapV2Router01.abi).functions.tokenToTokenSwapInput.encode(...someParameters)
  }]
});

Or for examples of how to use a thunk to preprocess a transaction payload, check the 0confirmation-swap-react for usage of Zero.staticPreprocessor to dynamically assemble bytecode for contract creation code which will be executed in a sandbox to compute a list of transactions to execute.

Refer to 0confirmation-sol/contracts/preprocessors/V2SwapAndDrop.sol for an example of a thunk

TODO

Running a keeper, for now refer to 0confirmation-keeper for example code

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 14

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.1Registry latest18 Feb 202153
1.0.018 Feb 202153
0.2.32 Jul 202052
0.2.22 Jul 202052
0.2.12 Jul 202052
0.1.1526 Jun 202052
0.1.1426 Jun 202052
0.1.1314 Jun 202052
0.1.117 Jun 202052
0.1.107 Jun 202052
0.1.97 Jun 202049
0.1.87 Jun 202048
0.1.77 Jun 202046
0.1.67 Jun 202046

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
0confirmation/0confirmation

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:06 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:4baa31490b7555f4a5190b642df1fe9682a4e767f06e57b4621d347d675f146d