Slide 1

Slide 1 text

Introduction to Erebos: a JavaScript client for Swarm Miloš Mošić

Slide 2

Slide 2 text

JavaScript client?

Slide 3

Slide 3 text

swarmgw swarm-js Are there any other JavaScript clients for Swarm?

Slide 4

Slide 4 text

What is Erebos?

Slide 5

Slide 5 text

● Bzz APIs ● Pss APIs ● CLI ● Timeline ● Utility libraries

Slide 6

Slide 6 text

bzz.download() bzz.upload() bzz.uploadFile() bzz.uploadDirectory() bzz.list() bzz.hash() What do Erebos bzz packages support?

Slide 7

Slide 7 text

Is that really all?

Slide 8

Slide 8 text

Bzz functions specific to the Node.js client bzz.downloadObservable() bzz.downloadDirectoryData() bzz.downloadFileTo() bzz.downloadDirectoryTo() bzz.downloadTo() bzz.uploadFileStream() bzz.uploadTar() bzz.uploadFileFrom() bzz.uploadDirectoryFrom() bzz.uploadFrom()

Slide 9

Slide 9 text

How about Feeds?

Slide 10

Slide 10 text

Feeds functions bzz.getDownloadURL() bzz.getUploadURL() bzz.getFeedURL() bzz.deleteResource() bzz.createFeedManifest() bzz.createFeedDigest() bzz.getFeedTopic() bzz.getFeedMetadata() bzz.getFeedValue() bzz.pollFeedValue() bzz.postSignedFeedValue() bzz.postFeedValue() bzz.updateFeedValue() bzz.uploadFeedValue()

Slide 11

Slide 11 text

What problems did it solve for us?

Slide 12

Slide 12 text

● Higher level abstractions over the HTTP API ● Breaking changes in Swarm

Slide 13

Slide 13 text

● https://github.com/ethersphere/swarm-docker ● https://hub.docker.com/r/ethdevops/swarm Breaking Changes in Swarm

Slide 14

Slide 14 text

CLI

Slide 15

Slide 15 text

Wait, Swarm already has a CLI?

Slide 16

Slide 16 text

● Bzz APIs ● Pss APIs ● Website commands

Slide 17

Slide 17 text

Bzz commands in the CLI bzz:upload bzz:download bzz:list bzz:hash

Slide 18

Slide 18 text

Pss commands in the CLI pss:address pss:key pss:topic pss:listen pss:send pss:peer

Slide 19

Slide 19 text

Website commands in the CLI website:setup website:publish

Slide 20

Slide 20 text

Timeline

Slide 21

Slide 21 text

Timeline functions timeline.download() timeline.upload() timeline.getChapter() timeline.loadChapter() timeline.updateChapterID() timeline.addChapter() timeline.createUpdater() timeline.createIterator() timeline.loadChapters() timeline.live()

Slide 22

Slide 22 text

Feed Subscriptions

Slide 23

Slide 23 text

● Messaging ● Version updates

Slide 24

Slide 24 text

Erebos website https://erebos.js.org/

Slide 25

Slide 25 text

Thank you!