# Overview
[![Build Status](https://drone.nitowa.xyz/api/badges/npm-packages/xrpio/status.svg)](https://drone.nitowa.xyz/npm-packages/xrpio)
[![Current Version](https://img.shields.io/npm/v/xrpio.svg)](https://www.npmjs.com/package/xrpio)
[![Weekly Downloads](https://img.shields.io/npm/dw/xrpio?color=important)](https://www.npmjs.com/package/xrpio)
[![License Type](https://img.shields.io/npm/l/xrpio?color=blueviolet)](https://gitea.nitowa.xyz/docs/xrpio/src/branch/master/LICENSE.md)
xrpio is a library that allows you to write and read arbitrary data in the ripple blockchain.
# How to install
```
npm i xrpio
```
# Caution
This library is in an early stage of development and **breaking changes may occur spontaneously and without regard of semantic versioning until the v1.0.0 release**.
## Operation on the main-net is untested and should not be used in production!
# Quickstart
```typescript
import {RippleAPI} from 'ripple-lib'
import {treeRead, treeWrite} from 'xrpio'
const api = new RippleAPI({ server: "..." })
await api.connect()
const dataRootHash = await treeWrite(
api,
"Arbitrary string data 123",
{
address: "Sender address",
secret: "Sender private key"
},
"Receiver address"
)
const data = await treeRead(api, [dataRootHash])
console.log(data) //"Arbitrary string data 123"
```
# A simple ready-to-run example for the testnet
```typescript
import { treeRead, treeWrite, Wallet } from 'xrpio'
import { RippleAPI } from 'ripple-lib'
import fetch from 'node-fetch'
export const makeTestnetWallet = () : Promise => fetch('https://faucet.altnet.rippletest.net/accounts', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
}).then((raw:any) => {
return raw.json().then(content => content.account)
});
(async()=>{
const api = new RippleAPI({server: 'wss://s.altnet.rippletest.net:51233'})
await api.connect()
const fromWallet = await makeTestnetWallet()
const toWallet = await makeTestnetWallet()
await new Promise((res, rej) => setTimeout(res, 10000)) //it takes a moment for the wallets to become active
const rootHash = await treeWrite(api, "test123", fromWallet, toWallet.address)
const data = await treeRead(api, [rootHash])
console.log(data)
})()
```
# [Full documentation](https://gitea.nitowa.xyz/docs/xrpio)