Skip to content

Commit

Permalink
Merge 980817a into 07b036f
Browse files Browse the repository at this point in the history
  • Loading branch information
monokh committed Jan 14, 2020
2 parents 07b036f + 980817a commit ada3a5f
Show file tree
Hide file tree
Showing 10 changed files with 361 additions and 5 deletions.
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -24,6 +24,8 @@ Query different blockchains with account management using a single and simple in
|[@liquality/bitcoin-rpc-provider](./packages/bitcoin-rpc-provider)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/bitcoin-rpc-provider.svg)](https://npmjs.com/package/@liquality/bitcoin-rpc-provider)|
|[@liquality/bitcoin-wallet-node-provider](./packages/bitcoin-node-wallet-provider)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/bitcoin-node-wallet-provider.svg)](https://npmjs.com/package/@liquality/bitcoin-node-wallet-provider)|
|[@liquality/bitcoin-swap-provider](./packages/bitcoin-swap-provider)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/bitcoin-swap-provider.svg)](https://npmjs.com/package/@liquality/bitcoin-swap-provider)|
|[@liquality/bitcoin-esplora-api-provider](./packages/bitcoin-esplora-api-provider)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/bitcoin-esplora-api-provider.svg)](https://npmjs.com/package/@liquality/bitcoin-esplora-api-provider)|
|[@liquality/bitcoin-esplora-swap-find-provider](./packages/bitcoin-esplora-swap-find-provider)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/bitcoin-esplora-swap-find-provider.svg)](https://npmjs.com/package/@liquality/bitcoin-esplora-swap-find-provider)|
|[@liquality/bitcoin-utils](./packages/bitcoin-utils)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/bitcoin-utils.svg)](https://npmjs.com/package/@liquality/bitcoin-utils)|
|[@liquality/bundle](./packages/bundle)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/bundle.svg)](https://npmjs.com/package/@liquality/bundle)|
|[@liquality/client](./packages/client)|[![ChainAbstractionLayer](https://img.shields.io/npm/v/@liquality/client.svg)](https://npmjs.com/package/@liquality/client)|
Expand Down
48 changes: 48 additions & 0 deletions packages/bitcoin-esplora-swap-find-provider/README.md
@@ -0,0 +1,48 @@
# `@liquality/bitcoin-esplora-swap-find-provider` <img align="right" src="https://raw.githubusercontent.com/liquality/chainabstractionlayer/master/liquality-logo.png" height="80px" />


[![Build Status](https://travis-ci.com/liquality/chainabstractionlayer.svg?branch=master)](https://travis-ci.com/liquality/chainabstractionlayer)
[![Coverage Status](https://coveralls.io/repos/github/liquality/chainabstractionlayer/badge.svg?branch=master)](https://coveralls.io/github/liquality/chainabstractionlayer?branch=master)
[![Standard Code Style](https://img.shields.io/badge/codestyle-standard-brightgreen.svg)](https://github.com/standard/standard)
[![MIT License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](../../LICENSE.md)
[![@liquality/bitcoin-esplora-swap-find-provider](https://img.shields.io/npm/dt/@liquality/bitcoin-esplora-swap-find-provider.svg)](https://npmjs.com/package/@liquality/bitcoin-esplora-swap-find-provider)
[![Gitter](https://img.shields.io/gitter/room/liquality/Lobby.svg)](https://gitter.im/liquality/Lobby?source=orgpage)
[![Telegram](https://img.shields.io/badge/chat-on%20telegram-blue.svg)](https://t.me/Liquality) [![Greenkeeper badge](https://badges.greenkeeper.io/liquality/chainabstractionlayer.svg)](https://greenkeeper.io/)

> :warning: This project is under heavy development. Expect bugs & breaking changes.
### :pencil: [Introductory Blog Post: The Missing Tool to Cross-Chain Development](https://medium.com/liquality/the-missing-tool-to-cross-chain-development-2ebfe898efa1)


Query different blockchains with account management using a single and simple interface.


## Installation

```bash
npm i @liquality/bitcoin-esplora-swap-find-provider
```

or

```html
<script src="https://cdn.jsdelivr.net/npm/@liquality/bitcoin-esplora-swap-find-provider@0.2.3/dist/bitcoin-esplora-swap-find-provider.min.js"></script>
<!-- sourceMap at https://cdn.jsdelivr.net/npm/@liquality/bitcoin-esplora-swap-find-provider@0.2.3/dist/bitcoin-esplora-swap-find-provider.min.js.map -->
<!-- available as window.BitcoinEsploraSwapFindProvider -->
```


## Usage

```js
import BitcoinEsploraSwapFindProvider from '@liquality/bitcoin-esplora-swap-find-provider'

const apiProvider = new BitcoinEsploraSwapFindProvider('https://blockstream.info/testnet/api')

await apiProvider.getBlockByNumber(1)
```


## License

[MIT](../../LICENSE.md)
@@ -0,0 +1,40 @@
import axios from 'axios'
import Provider from '@liquality/provider'

import { version } from '../package.json'

export default class BitcoinEsploraSwapFindProvider extends Provider {
constructor (url) {
super()
this.url = url
this._axios = axios.create({
baseURL: url,
responseType: 'text',
transformResponse: undefined // https://github.com/axios/axios/issues/907,
})
}

async findAddressTransaction (address, currentHeight, predicate) {
// TODO: This does not go through pages as swap addresses have at most 2 transactions
// Investigate whether retrieving more transactions is requiredl.
const response = await this._axios.get(`/address/${address}/txs`)
const transactions = response.data
const transaction = transactions.find(tx => {
const formattedTransaction = this.getMethod('formatTransaction')(tx, currentHeight)
return predicate(formattedTransaction)
})
if (transaction) return this.getMethod('formatTransaction')(transaction, currentHeight)
}

async findSwapTransaction (recipientAddress, refundAddress, secretHash, expiration, blockNumber, predicate) {
const currentHeight = await this.getMethod('getBlockHeight')()
const swapOutput = this.getMethod('getSwapOutput')(recipientAddress, refundAddress, secretHash, expiration)
const paymentVariants = this.getMethod('getSwapPaymentVariants')(swapOutput)
for (const paymentVariant of Object.values(paymentVariants)) {
const addressTransaction = this.findAddressTransaction(paymentVariant.address, currentHeight, predicate)
if (addressTransaction) return addressTransaction
}
}
}

BitcoinEsploraSwapFindProvider.version = version
3 changes: 3 additions & 0 deletions packages/bitcoin-esplora-swap-find-provider/lib/index.js
@@ -0,0 +1,3 @@
import BitcoinEsploraSwapFindProvider from './BitcoinEsploraSwapFindProvider'

export default BitcoinEsploraSwapFindProvider
214 changes: 214 additions & 0 deletions packages/bitcoin-esplora-swap-find-provider/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 46 additions & 0 deletions packages/bitcoin-esplora-swap-find-provider/package.json
@@ -0,0 +1,46 @@
{
"name": "@liquality/bitcoin-esplora-swap-find-provider",
"umdName": "BitcoinEsploraSwapFindProvider",
"umdExport": "default",
"version": "0.4.11",
"description": "",
"module": "lib/index.js",
"main": "dist/index.cjs.js",
"files": [
"dist",
"lib"
],
"scripts": {
"build:node": "webpack --config ../../webpack/webpack.node.config.js",
"build:browser": "webpack --config ../../webpack/webpack.browser.config.js",
"build": "webpack --config ../../webpack/webpack.config.js"
},
"author": "Liquality <info@liquality.io>",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.4.3",
"@liquality/provider": "^0.4.11",
"@liquality/utils": "^0.4.11",
"axios": "^0.19.0",
"bignumber.js": "^8.1.1",
"lodash": "^4.17.11"
},
"engines": {
"node": "~8.12.0"
},
"homepage": "https://github.com/liquality/chainabstractionlayer#readme",
"repository": {
"type": "git",
"url": "git+https://github.com/liquality/chainabstractionlayer.git"
},
"bugs": {
"url": "https://github.com/liquality/chainabstractionlayer/issues"
},
"publishConfig": {
"access": "public"
},
"gitHead": "1855d9ec369c8c577f74eb04e310a7c00b9eaa6c",
"devDependencies": {
"nock": "^10.0.6"
}
}
6 changes: 3 additions & 3 deletions packages/bitcoin-swap-provider/lib/BitcoinSwapProvider.js
Expand Up @@ -237,13 +237,13 @@ export default class BitcoinSwapProvider extends Provider {
}

async findInitiateSwapTransaction (value, recipientAddress, refundAddress, secretHash, expiration, blockNumber) {
return this.findSwapTransaction(recipientAddress, refundAddress, secretHash, expiration, blockNumber,
return this.getMethod('findSwapTransaction', false)(recipientAddress, refundAddress, secretHash, expiration, blockNumber,
tx => this.doesTransactionMatchInitiation(tx, value, recipientAddress, refundAddress, secretHash, expiration)
)
}

async findClaimSwapTransaction (initiationTxHash, recipientAddress, refundAddress, secretHash, expiration, blockNumber) {
const claimSwapTransaction = await this.findSwapTransaction(recipientAddress, refundAddress, secretHash, expiration, blockNumber,
const claimSwapTransaction = await this.getMethod('findSwapTransaction', false)(recipientAddress, refundAddress, secretHash, expiration, blockNumber,
tx => this.doesTransactionMatchRedeem(initiationTxHash, tx, recipientAddress, false)
)

Expand All @@ -257,7 +257,7 @@ export default class BitcoinSwapProvider extends Provider {
}

async findRefundSwapTransaction (initiationTxHash, recipientAddress, refundAddress, secretHash, expiration, blockNumber) {
const refundSwapTransaction = await this.findSwapTransaction(recipientAddress, refundAddress, secretHash, expiration, blockNumber,
const refundSwapTransaction = await this.getMethod('findSwapTransaction', false)(recipientAddress, refundAddress, secretHash, expiration, blockNumber,
tx => this.doesTransactionMatchRedeem(initiationTxHash, tx, refundAddress, true)
)
return refundSwapTransaction
Expand Down

0 comments on commit ada3a5f

Please sign in to comment.