2c110c81ee
* swarm/storage/mru: Adaptive Frequency swarm/storage/mru/lookup: fixed getBaseTime Added NewEpoch constructor swarm/api/client: better error handling in GetResource() swarm/storage/mru: Renamed structures. Renamed ResourceMetadata to ResourceID. Renamed ResourceID.Name to ResourceID.Topic swarm/storage/mru: Added binarySerializer interface and test tools swarm/storage/mru/lookup: Changed base time to time and + marshallers swarm/storage/mru: Added ResourceID (former resourceMetadata) swarm/storage/mru: Added ResourceViewId and serialization tests swarm/storage/mru/lookup: fixed epoch unmarshaller. Added Epoch Equals swarm/storage/mru: Fixes as per review comments cmd/swarm: reworded resource create/update help text regarding topic swarm/storage/mru: Added UpdateLookup and serializer tests swarm/storage/mru: Added UpdateHeader, serializers and tests swarm/storage/mru: changed UpdateAddr / epoch to Base() swarm/storage/mru: Added resourceUpdate serializer and tests swarm/storage/mru: Added SignedResourceUpdate tests and serializers swarm/storage/mru/lookup: fixed GetFirstEpoch bug swarm/storage/mru: refactor, comments, cleanup Also added tests for Topic swarm/storage/mru: handler tests pass swarm/storage/mru: all resource package tests pass swarm/storage/mru: resource test pass after adding timestamp checking support swarm/storage/mru: Added JSON serializers to ResourceIDView structures swarm/storage/mru: Sever, client, API test pass swarm/storage/mru: server test pass swarm/storage/mru: Added topic length check swarm/storage/mru: removed some literals, improved "previous lookup" test case swarm/storage/mru: some fixes and comments as per review swarm/storage/mru: first working version without metadata chunk swarm/storage/mru: Various fixes as per review swarm/storage/mru: client test pass swarm/storage/mru: resource query strings and manifest-less queries swarm/storage/mru: simplify naming swarm/storage/mru: first autofreq working version swarm/storage/mru: renamed ToValues to AppendValues swarm/resource/mru: Added ToValues / FromValues for URL query strings swarm/storage/mru: Changed POST resource to work with query strings. No more JSON. swarm/storage/mru: removed resourceid swarm/storage/mru: Opened up structures swarm/storage/mru: Merged Request and SignedResourceUpdate swarm/storage/mru: removed initial data from CLI resource create swarm/storage/mru: Refactor Topic as a direct fixed-length array swarm/storage/mru/lookup: Comprehensive GetNextLevel tests swarm/storage/mru: Added comments Added length checks in Topic swarm/storage/mru: fixes in tests and some code comments swarm/storage/mru/lookup: new optimized lookup algorithm swarm/api: moved getResourceView to api out of server swarm/storage/mru: Lookup algorithm working swarm/storage/mru: comments and renamed NewLookupParams Deleted commented code swarm/storage/mru/lookup: renamed Epoch.LaterThan to After swarm/storage/mru/lookup: Comments and tidying naming swarm/storage/mru: fix lookup algorithm swarm/storage/mru: exposed lookup hint removed updateheader swarm/storage/mru/lookup: changed GetNextEpoch for initial values swarm/storage/mru: resource tests pass swarm/storage/mru: valueSerializer interface and tests swarm/storage/mru/lookup: Comments, improvements, fixes, more tests swarm/storage/mru: renamed UpdateLookup to ID, LookupParams to Query swarm/storage/mru: renamed query receiver var swarm/cmd: MRU CLI tests * cmd/swarm: remove rogue fmt * swarm/storage/mru: Add version / header for future use * swarm/storage/mru: Fixes/comments as per review cmd/swarm: remove rogue fmt swarm/storage/mru: Add version / header for future use- * swarm/storage/mru: fix linter errors * cmd/swarm: Speeded up TestCLIResourceUpdate
45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
/*
|
|
Package mru defines Mutable resource updates.
|
|
|
|
A Mutable Resource is an entity which allows updates to a resource
|
|
without resorting to ENS on each update.
|
|
The update scheme is built on swarm chunks with chunk keys following
|
|
a predictable, versionable pattern.
|
|
|
|
A Resource is tied to a unique identifier that is deterministically generated out of
|
|
the chosen topic.
|
|
|
|
A Resource View is defined as a specific user's point of view about a particular resource.
|
|
Thus, a View is a Topic + the user's address (userAddr)
|
|
|
|
Actual data updates are also made in the form of swarm chunks. The keys
|
|
of the updates are the hash of a concatenation of properties as follows:
|
|
|
|
updateAddr = H(View, Epoch ID)
|
|
where H is the SHA3 hash function
|
|
View is the combination of Topic and the user address
|
|
Epoch ID is a time slot. See the lookup package for more information.
|
|
|
|
A user looking up a resource would only need to know the View in order to
|
|
another user's updates
|
|
|
|
The resource update data is:
|
|
resourcedata = View|Epoch|data
|
|
|
|
the full update data that goes in the chunk payload is:
|
|
resourcedata|sign(resourcedata)
|
|
|
|
Structure Summary:
|
|
|
|
Request: Resource update with signature
|
|
ResourceUpdate: headers + data
|
|
Header: Protocol version and reserved for future use placeholders
|
|
ID: Information about how to locate a specific update
|
|
View: Author of the update and what is updating
|
|
Topic: Item that the updates are about
|
|
User: User who updates the resource
|
|
Epoch: time slot where the update is stored
|
|
|
|
*/
|
|
package mru
|