Renter Storage Upload (Offline)

# Online vs. Offline Signing

<p>

The Renter Storage Upload function also has an offline signing mode. This mode allows DApps to sign for file storage uploads for users not running a BTFS daemon. For example, offline signing enables DApps to use BTT from user crypto wallets (i.e. TronLink) for transacting file storage uploads. This differs from the <a href="https://docs.btfs.io/reference#renter-storage-upload" target="">online signing mode</a>, which requires the DApp to sign with the private key derived from BTFS daemon initialization.

The 4 offline-signing related functions are:

* Offline Sign
* Get Unsigned Data
* Sign Contract Batch
* Get Contract Batch

## API Endpoint

```shell
http://localhost:5001/api/v1/storage/upload/offline

Input Parameters

Argument

Input Values

Type

Description

Required?

arg

Hash of file uploaded to BTFS node.

string

Add hash of file to upload.

Y

leaf-hash

"True" or "False"

boolean

Flag to specify given hash(es) is leaf hash(es). Default: "false".

N

price

Price in μBTT

int64

Max price Per GB per day of storage in μBTT.

N

replication-factor

int

Replication factor for the file with erasure coding built-in. Default: "3".

N

host-select-mode

score

string

Based on mode to select the host and upload automatically. Default: "score".

N

host-selection

string

Use only these selected hosts in order on 'custom' mode. Use ',' as delimiter.

N

host-search-local

bool

Enable host search under all domains 0.0.0.0 (useful for local test).

N

storage-length

Number of days

int

Store file for certain length in days. Default: "30".

N

Usage

async upload(event) {
    const response = this.btfs.upload(
      {
        Hash: this.state.added_file_hash,
        TimeNonce: this.time.toString(),
        PrivKey: config.PrivKey,
        PeerID: config.PeerID
      }
    )
    try {
      for await (const resp of response) {
        this.setState({ added_session_id: resp.ID })
      }
    } catch (err) {
      console.error(err)
    }
    this.displayStatus(event)
  }
curl -X POST http://127.0.0.1:5001/api/v1/storage/upload/offline?arg=QmQqiYA6LXehPbMw5UtW3zCWstEZ9mY37QNxss41SspAzG&arg

Response

// Outputs Session ID

{"ID":"4a99a8a0-21a1-4e26-861f-9d725eb06012"}