or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

access-controllers.mdaddress-management.mddatabase-types.mdidentity-system.mdindex.mdoplog-system.mdorbitdb-factory.mdstorage-backends.md

address-management.mddocs/

0

# Address Management

1

2

OrbitDB uses unique addresses to identify and locate distributed databases across the network. These addresses enable database sharing and replication between peers.

3

4

## Capabilities

5

6

### Address Validation

7

8

Validates whether a string is a valid OrbitDB database address.

9

10

```javascript { .api }

11

/**

12

* Validates an OrbitDB database address

13

* @param address An OrbitDB database address string or OrbitDBAddress object

14

* @returns True if the address is valid, false otherwise

15

*/

16

function isValidAddress(address: string | OrbitDBAddress): boolean;

17

```

18

19

**Usage Examples:**

20

21

```javascript

22

import { isValidAddress } from '@orbitdb/core';

23

24

// Valid OrbitDB addresses

25

const validAddress1 = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To';

26

const validAddress2 = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/my-database';

27

28

console.log(isValidAddress(validAddress1)); // true

29

console.log(isValidAddress(validAddress2)); // true

30

31

// Invalid addresses

32

console.log(isValidAddress('not-an-address')); // false

33

console.log(isValidAddress('/ipfs/QmHash')); // false

34

console.log(isValidAddress('')); // false

35

```

36

37

### Address Parsing

38

39

Parses OrbitDB address strings into structured OrbitDBAddress objects.

40

41

```javascript { .api }

42

/**

43

* Parses an OrbitDB address string into an OrbitDBAddress object

44

* @param address OrbitDB address string to parse

45

* @returns Parsed OrbitDBAddress object

46

* @throws Error if address is invalid

47

*/

48

function parseAddress(address: string): OrbitDBAddress;

49

```

50

51

**Usage Examples:**

52

53

```javascript

54

import { parseAddress } from '@orbitdb/core';

55

56

// Parse a basic address

57

const address1 = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To';

58

const parsed1 = parseAddress(address1);

59

console.log(parsed1.root); // 'zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To'

60

console.log(parsed1.path); // ''

61

62

// Parse an address with path

63

const address2 = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/my-database';

64

const parsed2 = parseAddress(address2);

65

console.log(parsed2.root); // 'zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To'

66

console.log(parsed2.path); // 'my-database'

67

```

68

69

### OrbitDBAddress Interface

70

71

The OrbitDBAddress class provides methods for working with parsed addresses.

72

73

```javascript { .api }

74

interface OrbitDBAddress {

75

/** The root hash of the database manifest */

76

root: string;

77

/** The path component of the address (database name) */

78

path: string;

79

80

/** Converts the address back to its string representation */

81

toString(): string;

82

}

83

```

84

85

**Usage Examples:**

86

87

```javascript

88

import { parseAddress } from '@orbitdb/core';

89

90

const address = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/users';

91

const parsed = parseAddress(address);

92

93

// Access components

94

console.log('Root:', parsed.root);

95

console.log('Path:', parsed.path);

96

97

// Convert back to string

98

console.log('Full address:', parsed.toString());

99

100

// Use in database operations

101

const orbitdb = await createOrbitDB({ ipfs });

102

const db = await orbitdb.open(parsed.toString());

103

```

104

105

### Database Address Creation

106

107

When you create a database, OrbitDB automatically generates an address for it.

108

109

```javascript

110

import { createHelia } from 'helia';

111

import { createOrbitDB } from '@orbitdb/core';

112

113

const ipfs = await createHelia();

114

const orbitdb = await createOrbitDB({ ipfs });

115

116

// Create a new database

117

const db = await orbitdb.open('my-database');

118

119

// Get the generated address

120

const address = db.address;

121

console.log('Database address:', address.toString());

122

console.log('Root hash:', address.root);

123

console.log('Database name:', address.path);

124

125

// Share this address with other peers

126

const addressString = address.toString();

127

// Other peers can open the same database using this address

128

```

129

130

### Cross-Platform Address Handling

131

132

OrbitDB addresses work consistently across platforms and handle different path separators.

133

134

```javascript

135

import { isValidAddress, parseAddress } from '@orbitdb/core';

136

137

// Unix-style paths

138

const unixAddress = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/path/to/db';

139

console.log(isValidAddress(unixAddress)); // true

140

141

// Windows-style paths (also supported)

142

const windowsAddress = '\\orbitdb\\zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To\\path\\to\\db';

143

console.log(isValidAddress(windowsAddress)); // true

144

145

// Both parse to the same result

146

const parsed1 = parseAddress(unixAddress);

147

const parsed2 = parseAddress(windowsAddress);

148

console.log(parsed1.toString() === parsed2.toString()); // true

149

```

150

151

### Address-Based Database Operations

152

153

You can perform various operations using database addresses directly.

154

155

```javascript

156

import { createOrbitDB, isValidAddress } from '@orbitdb/core';

157

158

const ipfs = await createHelia();

159

const orbitdb = await createOrbitDB({ ipfs });

160

161

// Function to safely open a database by address

162

async function openDatabaseByAddress(addressString) {

163

if (!isValidAddress(addressString)) {

164

throw new Error('Invalid OrbitDB address');

165

}

166

167

try {

168

const db = await orbitdb.open(addressString);

169

console.log(`Opened database: ${db.name}`);

170

return db;

171

} catch (error) {

172

console.error('Failed to open database:', error.message);

173

throw error;

174

}

175

}

176

177

// Example usage

178

const address = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/shared-data';

179

const db = await openDatabaseByAddress(address);

180

```

181

182

### Address Comparison and Equality

183

184

Compare addresses to check if they refer to the same database.

185

186

```javascript

187

import { parseAddress } from '@orbitdb/core';

188

189

const address1 = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/db1';

190

const address2 = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/db1';

191

const address3 = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/db2';

192

193

const parsed1 = parseAddress(address1);

194

const parsed2 = parseAddress(address2);

195

const parsed3 = parseAddress(address3);

196

197

// Compare addresses

198

console.log(parsed1.toString() === parsed2.toString()); // true (same database)

199

console.log(parsed1.toString() === parsed3.toString()); // false (different databases)

200

201

// Compare components

202

console.log(parsed1.root === parsed3.root); // true (same manifest)

203

console.log(parsed1.path === parsed3.path); // false (different names)

204

```

205

206

### Working with Database Manifests

207

208

The root hash in an OrbitDB address points to the database manifest, which contains metadata about the database.

209

210

```javascript

211

import { createOrbitDB } from '@orbitdb/core';

212

213

const ipfs = await createHelia();

214

const orbitdb = await createOrbitDB({ ipfs });

215

216

// Create database with metadata

217

const db = await orbitdb.open('my-app-data', {

218

meta: {

219

description: 'Application data store',

220

version: '1.0.0',

221

created: new Date().toISOString()

222

}

223

});

224

225

console.log('Database address:', db.address.toString());

226

console.log('Database metadata:', db.meta);

227

228

// The root hash identifies this specific database configuration

229

console.log('Manifest hash:', db.address.root);

230

```

231

232

## Error Handling

233

234

Handle common address-related errors:

235

236

```javascript

237

import { isValidAddress, parseAddress } from '@orbitdb/core';

238

239

function safeParseAddress(addressString) {

240

try {

241

if (!isValidAddress(addressString)) {

242

throw new Error(`Invalid OrbitDB address format: ${addressString}`);

243

}

244

return parseAddress(addressString);

245

} catch (error) {

246

console.error('Address parsing failed:', error.message);

247

return null;

248

}

249

}

250

251

// Example usage

252

const validAddress = '/orbitdb/zdpuAkstgbTVGHQmMi5TC84auhJ8rL5qoaNEtXo2d5PHXs2To/test';

253

const invalidAddress = 'not-an-address';

254

255

const parsed1 = safeParseAddress(validAddress); // Returns OrbitDBAddress

256

const parsed2 = safeParseAddress(invalidAddress); // Returns null

257

```