@jelly-swap/bitcoin
TypeScript icon, indicating that this package has built-in type declarations

0.1.53 • Public • Published

Getting started

yarn add @jelly-swap/bitcoin
yarn add @jelly-swap/btc-web-wallet

or

npm install @jelly-swap/bitcoin
npm install @jelly-swap/btc-web-wallet

Setup

import { Providers, Contract, Config, Adapter } from  '@jelly-swap/bitcoin';

Configuration

const  SWAP_EXPIRATION_TIME = 86400; // 1 DAY

const  config = { 
    ...Config(SWAP_EXPIRATION_TIME),
    receiverAddress:  'LIQUIDITY_PROVIDER_ADDRESS',
    providerUrl:  'https://spacejelly.network/btc/api/v1/btc/',
};

BTC Provider

const  provider = new  Providers.BitcoinProvider(config.providerUrl);

BTC Web Wallet

const  mnemonic = 'choose stone donkey wheat pudding gasp harsh pupil sibling post brief afraid';
const  wallet = new  Wallet(mnemonic, provider);

BTC Adapter

const  adapter = new  Adapter(config);

BTC Contract

const  contract = new  Contract(wallet, config);

Initiate a swap

const  userInput = {
	network:  'BTC',
	inputAmount:  '0.01', // BTC amount
	outputNetwork:  'DAI',
	outputAmount:  '84212086000000000000', // DAI amount
	sender:  'bc1q9zh2n6yqun8syggzx6kqlkema5qw9nrz7he90l', // user's BTC address
	outputAddress:  '0x45ce9d7bdadb704c68242118e2b8586e491e5c51', // user's DAI address
	secret:  'film ritual cream paper try search asthma grab admit viable work auction',
};

const  swapInput = adapter.formatInput(userInput);
console.log(swapInput);
{
    network: 'BTC',
    inputAmount: '1000000',
    outputNetwork: 'DAI',
    outputAmount: '84212086000000000000',
    sender: 'bc1q9zh2n6yqun8syggzx6kqlkema5qw9nrz7he90l',
    outputAddress: '0x45ce9d7bdadb704c68242118e2b8586e491e5c51',
    secret: 'film ritual cream paper try search asthma grab admit viable work auction',
    hashLock: '0xee4aad2300d4d8d3f5f58719201ded5a65e00dbda8c3ba0bd066cf3a365e9b73',
    receiver: 'tb1qc4mwllgvmy0xqsdexpm5v8g74ldmv698whnyrw',
    expiration: 1588587562,
};

const  txHash = await  contract.newContract(swapInput);

Subscribe

contract.subscribe(callback, {
    new: {
	    type:  'getSwapsByAddressAndBlock',
	    address:  'USER_ADDRESS', 
    },
    withdraw: {
	    type:  'getWithdrawByReceiverAndBlock',
	    address:  'USER_ADDRESS',
    },
});

const  callback = (event) => {

console.log(event);

{
    eventName: 'NEW_CONTRACT',
    network: 'BTC',
    inputAmount: 5604499,
    outputNetwork: 'DAI',
    outputAmount: '2398272000000000000',
    sender: 'bc1q7fnkalepy69yuh5f5axrzt4xyz8dxwwwxcwfxk',
    isSender: true,
    outputAddress: '0xdf9cb34d9dd92d54cec4150bd1518202e391479c',
    receiver: 'bc1qwjeylyfrkn8sckwux789dqtscafujhgy4xcddg',
    refundAddress: 'bc1q7fnkalepy69yuh5f5axrzt4xyz8dxwwwxcwfxk',
    id: '0x4a04b233272a95a01827a099becc3136899cdc0a0c0c9b32b7c705ee6644ff3f',
    transactionHash: '03cad639ffb7880b9cd62794f91517865526db9d084a7e3b4b1c3cba6c98d956',
    status: 1,
    expiration: 1588651138,
    blockHeight: 628836,
    hashLock: '0xbb380eead9fa13e6388a245397950995ce72093d1d5ebe0b19ecc8767b0e1a40',
};

{
    eventName: 'WITHDRAW',
    network: 'BTC',
    id: '0x4a04b233272a95a01827a099becc3136899cdc0a0c0c9b32b7c705ee6644ff3f',
    transactionHash: 'b58a0ea14b58319d589d0a2b740715ec2d036bd67bac257eb8e78b663e9943e7',
    secret: '0x357bce78906a196afc7089c3005134bbca0b09d876e8e3c911427579fa8c2f3e',
    hashLock: '0xbb380eead9fa13e6388a245397950995ce72093d1d5ebe0b19ecc8767b0e1a40',
    sender: 'bc1q7fnkalepy69yuh5f5axrzt4xyz8dxwwwxcwfxk',
    receiver: 'bc1qwjeylyfrkn8sckwux789dqtscafujhgy4xcddg',
    blockHeight: 628849,
};

Get Past Events

  const  type = 'new' || 'withdraw';
  const  pastEvents = await  contract.getPastEvents(type, {
  	    new: { 
  		    type:  'getSwapsByAddress',
  		    address:  'USER_ADDRESS',   
  	    },
  	    withdraw: {
  		    type:  'getWithdrawByReceiver',
  		    address:  'USER_ADDRESS',
  	    },
  });

console.log(pastEvents);

New Contract

[
    {   
    network:  'BTC',
    inputAmount:  5604499,
    outputNetwork:  'DAI',
    outputAmount:  '2398272000000000000',
    sender:  'bc1q7fnkalepy69yuh5f5axrzt4xyz8dxwwwxcwfxk',
    isSender:  true,
    outputAddress:  '0xdf9cb34d9dd92d54cec4150bd1518202e391479c',
    receiver:  'bc1qwjeylyfrkn8sckwux789dqtscafujhgy4xcddg',
    refundAddress:  'bc1q7fnkalepy69yuh5f5axrzt4xyz8dxwwwxcwfxk',
    id:  '0x4a04b233272a95a01827a099becc3136899cdc0a0c0c9b32b7c705ee6644ff3f',
    transactionHash:  '03cad639ffb7880b9cd62794f91517865526db9d084a7e3b4b1c3cba6c98d956',
    hashLock:  '0xbb380eead9fa13e6388a245397950995ce72093d1d5ebe0b19ecc8767b0e1a40',
    status:  1,
    expiration:  1588651138, 
    blockHeight:  628836,
    },
    ...
];

Withdraw

[
    {
	    network: 'BTC',
	    id: '0x4a04b233272a95a01827a099becc3136899cdc0a0c0c9b32b7c705ee6644ff3f',
	    transactionHash: 'b58a0ea14b58319d589d0a2b740715ec2d036bd67bac257eb8e78b663e9943e7',
	    secret: '0x357bce78906a196afc7089c3005134bbca0b09d876e8e3c911427579fa8c2f3e',
	    hashLock: '0xbb380eead9fa13e6388a245397950995ce72093d1d5ebe0b19ecc8767b0e1a40',
	    sender: 'bc1q7fnkalepy69yuh5f5axrzt4xyz8dxwwwxcwfxk',
	    receiver: 'bc1qwjeylyfrkn8sckwux789dqtscafujhgy4xcddg',
	    blockHeight: 628849,
    },
    ....
]

Readme

Keywords

none

Package Sidebar

Install

npm i @jelly-swap/bitcoin

Weekly Downloads

1

Version

0.1.53

License

ISC

Unpacked Size

58.2 kB

Total Files

36

Last publish

Collaborators

  • kraykov