# dnsprovejs

> Port of dnsprove.go

Latest version **0.0.15** (published 2019-05-28) · ISC license · 0 weekly downloads

## Install

```sh
npm install dnsprovejs
pnpm add dnsprovejs
yarn add dnsprovejs
bun add dnsprovejs
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.15 |
| Published | 2019-05-28 |
| First published | 2018-06-11 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 10 |
| Unpacked size | 3.2 MB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Maintainers | makoto_inoue |

## Links

- npm: https://www.npmjs.com/package/dnsprovejs
- npm.io page: https://npm.io/package/dnsprovejs

## Dependencies (10)

- [web3](https://npm.io/package/web3.md) 1.0.0-beta.34
- [js-sha1](https://npm.io/package/js-sha1.md) ^0.6.0
- [dns-packet](https://npm.io/package/dns-packet.md) ^5.0.4
- [es6-promise](https://npm.io/package/es6-promise.md) ^4.2.4
- [babel-polyfill](https://npm.io/package/babel-polyfill.md) ^6.26.0
- [ethereumjs-util](https://npm.io/package/ethereumjs-util.md) ^5.2.0
- [eth-ens-namehash](https://npm.io/package/eth-ens-namehash.md) ^2.0.8
- [isomorphic-fetch](https://npm.io/package/isomorphic-fetch.md) ^2.2.1
- [@ensdomains/dnsregistrar](https://npm.io/package/@ensdomains/dnsregistrar.md) ^0.3.3
- [@ensdomains/dnssec-oracle](https://npm.io/package/@ensdomains/dnssec-oracle.md) 0.0.8

## Recent versions

- 0.0.15 (latest) — 2019-05-28
- 0.0.14 — 2019-04-24
- 0.0.13 — 2019-04-22
- 0.0.12 — 2019-04-22
- 0.0.11 — 2019-04-22
- 0.0.10 — 2019-04-22
- 0.0.9 — 2018-10-24
- 0.0.8 — 2018-09-04
- 0.0.7 — 2018-09-04
- 0.0.6 — 2018-08-25
- 0.0.5 — 2018-08-25
- 0.0.4 — 2018-08-16
- 0.0.3 — 2018-06-25
- 0.0.2 — 2018-06-22
- 0.0.1 — 2018-06-11

## README

# dnsprove.js 

## Functionalities

- Fetches DNS information of given domain name and type
- Validates DNS reponses and constructs proofs
- Submits the proofs into DNSSEC(Domain Name System Security Extensions) Oracle smart contract
- Works from both browser and from node.js

## Installing

```
npm install '@ensdomains/dnsprovejs' --save
```

## Usage

```js
    var provider  = web3.currentProvider;
    var DnsProve  = require('dnsprove');
    var dnsprove  = new DnsProve(provider);
    var textDomain = '_ens.matoken.xyz';
    var dnsResult = await dnsprove.lookup('TXT', textDomain);
    var oracle    = await dnsprove.getOracle('0x123...');
    var proofs = dnsResult.proofs;

    if(dnsResult.found){
        await oracle.submitAll(dnsResult, {from:nonOwner});
    }else if (dnsResult.nsec){
        await oracle.deleteProof(
            'TXT', textDomain,
            proofs[proofs.length -1],
            proofs[proofs.length -2],
            {from:nonOwner}
        );
    }else{
        throw("DNSSEC is not supported")
    }
```

Alternatively, if you want to submit the proof not only to Oracle contract but also to claim via `dnsregistrar`, then you can call `getAllProofs` and pass the result into the `proveAndClaim` function.

```js
    let dnsResult = await dnsprove.lookup('TXT', '_ens.matoken.xyz', address);
    let oracle    = await dnsprove.getOracle(address);
    let data = await oracle.getAllProofs(dnsResult, params);
    await registrar.methods
        .proveAndClaim(encodedName, data[0], data[1])
        .send(params)
```
## API

Please refer to [the doc](https://dnsprovejs.readthedocs.io)

## Testing

```
  npm run test
```

---
_Source: https://npm.io/package/dnsprovejs · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
