This commit is contained in:
Raven Scott
2026-05-20 21:02:45 -04:00
parent 1f3f4b24a2
commit 14d0980b4f
734 changed files with 682 additions and 746 deletions
@@ -0,0 +1,6 @@
node_modules/
*.log
hyper-p2p-reputation-system-storage/
.DS_Store
test-storage/
coverage/
@@ -0,0 +1,32 @@
# Changelog
## [0.2.0] - 2026-05-20
### Added
- Real Hyperswarm + Protomux v3 wiring via `../_shared/p2p-bare.js` (where applicable)
- 2-node integration test under `real_tests/integration/`
### Changed
- Protomux v3: `createChannel` + `addMessage` + `channel.open()`
## [0.1.1] - 2026-05-20
### Fixed
- Migrated tests from `bare-test` to `brittle` / `brittle-bare`
- `hypercore-crypto` for keyPair, sign, verify, hash
- `bare-process/global` and `bare-process` v4 imports
- Background timers opt-in (`enableBackgroundTimers`, `enableGossip`) for clean test exit
<!-- legacy: v0.2.0 -->
- Production-grade docs, validation, and expanded tests.
<!-- legacy: v0.3.0 -->
- Wave 6: presence-tier API tables, architecture wire section, validation test.
<!-- legacy: v0.3.1 -->
- Wave 7: correct protocol in docs, getStats(), wire tables, category README.
## [0.3.2] - 2026-05-21
### Changed
- Exhaustive documentation pass (api, architecture, README) per DOC_STANDARDS.md.
@@ -0,0 +1,43 @@
# hyper-p2p-reputation-system
HyperP2PReputationSystem Novel P2P reputation/trust primitive for Bare/Pear. - Cryptographic Ed25519 signed attestations for tamper-proof updates - Time-decaying scores with configurable rate
**Category:** Trust & security
**Composes with:** `hyper-p2p-attestation-chain`, `hyper-p2p-trust-graph`
**Protocol:** `hyper-p2p-reputation-system/v1`
## When to use
Multi-peer apps that need trust & security over a shared Hyperswarm topic.
## When not to use
Single-process tools with no P2P topic (use local APIs only or skip `ready()`).
## Quick start
```js
const { HyperP2PReputationSystem } = require('hyper-p2p-reputation-system')
const topic = process.argv[2] // 64-char hex or string
const mod = new HyperP2PReputationSystem({ topic, enableBackgroundTimers: false })
await mod.ready() // joins swarm when topic set
// ... application logic ...
await mod.close()
```
## Docs
- [docs/api.md](docs/api.md) — constructor, methods, events, errors
- [docs/architecture.md](docs/architecture.md) — wire types, state, composition
- [../_shared/PRODUCTION.md](../../_shared/PRODUCTION.md) — production checklist
- [../_shared/DOC_STANDARDS.md](../../_shared/DOC_STANDARDS.md) — documentation standards
- Integration: [`../../real_tests/integration/`](../../../real_tests/integration/) — `reputation-system-two-node.js`
## Test
```bash
npm install && npm test
```
@@ -0,0 +1,124 @@
# API: hyper-p2p-reputation-system
**Protocol:** `hyper-p2p-reputation-system/v1`
**Export:** `HyperP2PReputationSystem`
## Overview
HyperP2PReputationSystem Novel P2P reputation/trust primitive for Bare/Pear. - Cryptographic Ed25519 signed attestations for tamper-proof updates - Time-decaying scores with configurable rate
## Constructor
```js
const mod = new HyperP2PReputationSystem(opts)
```
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| `keyPair` | KeyPair | random Ed25519 | keyPair |
| `storageDir` | `<cwd>/{module}-storage` | `<cwd>/{module}-storage` | Hypercore/Hyperbee storage root |
| `decayIntervalMs` | varies | DEFAULT_DECAY_INTERVAL_MS | decayInterval (ms) |
| `decayRate` | varies | DEFAULT_DECAY_RATE | decayRate |
| `minScore` | varies | DEFAULT_MIN_SCORE | minScore |
| `maxScore` | varies | DEFAULT_MAX_SCORE | maxScore |
| `topic` | varies | null | topic |
| `enableBackgroundTimers` | boolean | `false` | Periodic timers (off in tests) |
## Methods
### `ready(—)`
- **Returns:** `Promise`
- **Throws:** — (none documented in method body)
### `attest(targetPeerId, delta, metadata = {}, remoteAttestation = null)`
- **Returns:** `Promise`
- **Throws:** — (none documented in method body)
### `receiveAttestation(attestation, targetPeerId)`
- **Returns:** `Promise`
- **Throws:** — (none documented in method body)
### `getReputation(peerId)`
- **Returns:** `value`
- **Throws:** — (none documented in method body)
### `getTopPeers(k = 10)`
- **Returns:** `value`
- **Throws:** — (none documented in method body)
### `getHistory(peerId, limit = 50)`
- **Returns:** `value`
- **Throws:** — (none documented in method body)
### `exportSnapshot(—)`
- **Returns:** `value`
- **Throws:** — (none documented in method body)
### `importSnapshot(snapshot)`
- **Returns:** `Promise`
- **Throws:**
- `Error: Invalid or unsupported snapshot version`
- `Error: Invalid snapshot: must be an object`
### `getStats(—)`
- **Returns:** `object`
- **Throws:** — (none documented in method body)
### `close(—)`
- **Returns:** `Promise<void>`
- **Throws:** — (none documented in method body)
### `getCausalTick(—)`
- **Returns:** `value`
- **Throws:** — (none documented in method body)
### `simulateRemoteAttestation(targetPeerId, delta, fromPeerHex = 'remote-peer')`
- **Returns:** `value`
- **Throws:** — (none documented in method body)
## Events
| Event | Payload |
|-------|---------|
| `attestation` | target, local |
| `close` | no payload |
| `error` | err |
| `hyperbee-fallback` | err |
| `peerBanned` | score |
| `ready` | no payload |
| `scoreUpdated` | peerId, score, attester |
| `snapshotImported` | timestamp, scoresCount, historyEntries |
## getStats()
Returns `{ ...this._stats }` — typically `ops`, `errors`, and module-specific counters (`created`, `relays`, `open`, `peers`, etc.).
Library-only modules may include `mode: 'local'`.
## Errors
Stable message substrings: see [`../_shared/ERROR_CODES.md`](../../_shared/ERROR_CODES.md).
## P2P
When `topic` is set, `ready()` joins Hyperswarm and opens Protomux `hyper-p2p-reputation-system/v1`.
## Testing
```bash
npm install && npm test
```
Integration: [`../../real_tests/integration/reputation-system-two-node.js`](../../../real_tests/integration/reputation-system-two-node.js)
@@ -0,0 +1,43 @@
# Architecture: hyper-p2p-reputation-system
**Category:** Trust & security
```mermaid
flowchart LR
App[Application] --> Mod[HyperP2PReputationSystem]
Mod --> Mux[Protomux hyper-p2p-reputation-system/v1]
Mux --> Swarm[Hyperswarm]
```
## Sequence (P2P)
```mermaid
sequenceDiagram
participant App
participant Mod as Module
participant SW as Hyperswarm
participant Peer
App->>Mod: ready(topic)
Mod->>SW: join(topic)
SW->>Peer: connection
Mod->>Peer: gossip / Protomux
Peer-->>Mod: onmessage
Mod-->>App: emit(event)
```
## Wire messages
| type | fields | direction | behavior |
|------|--------|-----------|----------|
| `attestation` | attestation, target | gossip | Handled in onmessage / gossipSend |
## State model
- In-memory `Map` / `Set` structures for hot path
- Optional Hyperbee/Hypercore persistence when `storageDir` or `memoryOnly` is configured
- `close()` tears down swarm, timers, and clears ephemeral state
## Composition
Composes with: `hyper-p2p-attestation-chain`, `hyper-p2p-trust-graph`.
@@ -0,0 +1,40 @@
const HyperP2PReputationSystem = require('../index.js')
const crypto = require('bare-crypto')
const b4a = require('b4a')
async function main () {
console.log('=== hyper-p2p-reputation-system Basic Usage Demo ===\n')
const reputation = new HyperP2PReputationSystem({
storageDir: './test-reputation-storage'
})
await reputation.ready()
const peerA = b4a.toString(crypto.randomBytes(32), 'hex')
const peerB = b4a.toString(crypto.randomBytes(32), 'hex')
console.log('Issuing attestations...')
await reputation.attest(peerA, 50, { reason: 'successful-collaboration' })
await reputation.attest(peerB, -10, { reason: 'timeout' })
console.log('\nReputation A:', reputation.getReputation(peerA))
console.log('Reputation B:', reputation.getReputation(peerB))
console.log('\nTop peers:', reputation.getTopPeers(5))
console.log('\nHistory for A:', reputation.getHistory(peerA, 3))
// Simulate remote attestation
console.log('\nSimulating remote attestation...')
await reputation.simulateRemoteAttestation(peerA, 30)
console.log('After remote:', reputation.getReputation(peerA))
console.log('\nMetrics:', reputation.metrics)
await reputation.close()
console.log('\n=== Demo Complete ===')
}
main().catch(console.error)
@@ -0,0 +1,417 @@
require('bare-process/global')
const EventEmitter = require('bare-events')
const crypto = require('bare-crypto')
const { setInterval, clearInterval, setTimeout, clearTimeout } = require('bare-timers')
const fs = require('bare-fs/promises')
const path = require('bare-path')
const process = require('bare-process')
const b4a = require('b4a')
const Protomux = require('protomux')
const REPUTATION_PROTOCOL = 'hyper-p2p-reputation-system/v1'
const DEFAULT_DECAY_INTERVAL_MS = 60000 // 1 minute
const DEFAULT_DECAY_RATE = 0.99 // multiplicative decay per interval
const DEFAULT_MIN_SCORE = -100
const DEFAULT_MAX_SCORE = 1000
const ATTESTATION_TTL_MS = 7 * 24 * 60 * 60 * 1000 // 7 days
/**
* HyperP2PReputationSystem
* Novel P2P reputation/trust primitive for Bare/Pear.
* - Cryptographic Ed25519 signed attestations for tamper-proof updates
* - Time-decaying scores with configurable rate
* - Sybil resistance via public key identity binding + unique attestation nonces
* - Optional Hyperbee persistence for full history and recovery
* - P2P gossip hooks for cross-peer reputation propagation
* - Causal hooks for integration with vector clocks / event bus
* - Query: getReputation, getTopPeers, getHistory
* - Events: attestation, scoreUpdated, decayed, peerBanned (low score)
* - Production: metrics, graceful close, error handling, dedup
*/
class HyperP2PReputationSystem extends EventEmitter {
constructor (opts = {}) {
super()
this._stats = { ops: 0, errors: 0 }
this.keyPair = opts.keyPair || require('hypercore-crypto').keyPair()
this.publicKey = this.keyPair.publicKey
this.publicKeyHex = b4a.toString(this.publicKey, 'hex')
const cwd = process.cwd()
this.storageDir = opts.storageDir || path.join(cwd, 'hyper-p2p-reputation-system-storage')
this.decayIntervalMs = opts.decayIntervalMs || DEFAULT_DECAY_INTERVAL_MS
this.decayRate = opts.decayRate || DEFAULT_DECAY_RATE
this.minScore = opts.minScore || DEFAULT_MIN_SCORE
this.maxScore = opts.maxScore || DEFAULT_MAX_SCORE
this.scores = new Map() // peerIdHex -> { score, lastUpdated, attestationsCount }
this.history = new Map() // peerIdHex -> [{ ts, delta, attester, signature, metadata }]
this.attestationNonces = new Set() // for dedup / replay protection
this.topic = opts.topic || null
this.useHyperbee = opts.useHyperbee === true
this.swarm = null
this._hypercore = null
this.bee = null // optional Hyperbee for persistence
this._protocol = null
this._decayTimer = null
this._joined = false
this._enableBackgroundTimers = opts.enableBackgroundTimers === true
this.metrics = {
attestationsReceived: 0,
attestationsIssued: 0,
scoresUpdated: 0,
decaysPerformed: 0,
queries: 0,
gossipSent: 0,
sybilAttemptsBlocked: 0
}
this._localClock = 0
}
_nextNonce () {
const buf = crypto.randomBytes(16)
return b4a.toString(buf, 'hex')
}
_signAttestation (targetPeerHex, delta, metadata = {}, nonce) {
const payload = b4a.from(JSON.stringify({
target: targetPeerHex,
delta,
attester: this.publicKeyHex,
nonce,
ts: Date.now(),
metadata
}))
const signature = require('hypercore-crypto').sign(payload, this.keyPair.secretKey)
return {
payload: b4a.toString(payload, 'base64'),
signature: b4a.toString(signature, 'base64'),
nonce
}
}
_verifyAttestation (attestation, expectedTarget) {
try {
const payload = b4a.from(attestation.payload, 'base64')
const signature = b4a.from(attestation.signature, 'base64')
const data = JSON.parse(b4a.toString(payload))
if (data.target !== expectedTarget) return null
if (this.attestationNonces.has(data.nonce)) {
this.metrics.sybilAttemptsBlocked++
return null // replay / duplicate
}
const valid = require('hypercore-crypto').verify(payload, signature, b4a.from(data.attester, 'hex'))
if (!valid) return null
// TTL check
if (Date.now() - data.ts > ATTESTATION_TTL_MS) return null
this.attestationNonces.add(data.nonce)
return data
} catch {
return null
}
}
async ready () {
if (this._joined) return
await this._initStorage()
await this._initP2P()
this._startDecayTimer()
this._joined = true
this.emit('ready')
}
async _initStorage () {
try {
await fs.mkdir(this.storageDir, { recursive: true })
if (this.useHyperbee) {
try {
const Hypercore = require('hypercore')
const Hyperbee = require('hyperbee')
const core = new Hypercore(path.join(this.storageDir, 'reputation-core'), {
valueEncoding: 'json'
})
await core.ready()
this.bee = new Hyperbee(core, { keyEncoding: 'utf-8', valueEncoding: 'json' })
await this.bee.ready()
this._hypercore = core
return
} catch (err) {
this.emit('hyperbee-fallback', err)
}
}
const stateFile = path.join(this.storageDir, 'state.json')
try {
const data = await fs.readFile(stateFile, 'utf8')
const parsed = JSON.parse(data)
if (parsed.scores) {
for (const [k, v] of Object.entries(parsed.scores)) this.scores.set(k, v)
}
if (parsed.history) {
for (const [k, v] of Object.entries(parsed.history)) this.history.set(k, v)
}
} catch {
// new storage
}
} catch (err) {
this.emit('error', err)
}
}
async _persistState () {
try {
await fs.mkdir(this.storageDir, { recursive: true })
const stateFile = path.join(this.storageDir, 'state.json')
const data = {
scores: Object.fromEntries(this.scores),
history: Object.fromEntries(this.history),
lastPersist: Date.now()
}
await fs.writeFile(stateFile, JSON.stringify(data, null, 2))
} catch (err) {
this.emit('error', err)
}
}
async _initP2P () {
this._protocol = REPUTATION_PROTOCOL
if (!this.topic) return
const { initModuleSwarm } = require('../../_shared/p2p-bare.js')
const self = this
await initModuleSwarm(this, {
keyPair: this.keyPair,
topic: this.topic,
protocol: REPUTATION_PROTOCOL,
onmessage (data) {
if (data && data.type === 'attestation' && data.attestation) {
self._applyAttestation(data.target, data.attestation, false).catch(() => {})
}
}
})
}
_startDecayTimer () {
if (this._decayTimer) clearInterval(this._decayTimer)
if (!this._enableBackgroundTimers) return
this._decayTimer = setInterval(() => {
this._performDecay()
}, this.decayIntervalMs)
}
_performDecay () {
let changed = false
for (const [peerId, info] of this.scores) {
const oldScore = info.score
info.score = Math.max(this.minScore, Math.floor(oldScore * this.decayRate))
if (oldScore !== info.score) {
changed = true
this.metrics.decaysPerformed++
this.emit('scoreUpdated', { peerId, score: info.score, reason: 'decay' })
if (info.score <= this.minScore) {
this.emit('peerBanned', { peerId, score: info.score })
}
}
}
if (changed) {
this._persistState().catch(() => {})
}
}
async attest (targetPeerId, delta, metadata = {}, remoteAttestation = null) {
this.metrics.attestationsIssued++
const targetHex = typeof targetPeerId === 'string' ? targetPeerId : b4a.toString(targetPeerId, 'hex')
const nonce = this._nextNonce()
const attestation = this._signAttestation(targetHex, delta, metadata, nonce)
// Apply locally
await this._applyAttestation(targetHex, attestation, true)
const { gossipSend } = require('../../_shared/p2p-bare.js')
gossipSend(this, { type: 'attestation', target: targetHex, attestation })
this.metrics.gossipSent++
this.emit('attestation', { target: targetHex, attestation, local: true })
// Optional: persist
await this._persistState()
return attestation
}
async receiveAttestation (attestation, targetPeerId) {
const targetHex = typeof targetPeerId === 'string' ? targetPeerId : b4a.toString(targetPeerId, 'hex')
const verified = this._verifyAttestation(attestation, targetHex)
if (!verified) {
return false
}
await this._applyAttestation(targetHex, attestation, false)
this.metrics.attestationsReceived++
this.emit('attestation', { target: targetHex, attestation, local: false })
await this._persistState()
return true
}
async _applyAttestation (targetHex, attestation, isLocal) {
const verifiedData = isLocal ? JSON.parse(b4a.toString(b4a.from(attestation.payload, 'base64'))) : this._verifyAttestation(attestation, targetHex)
if (!verifiedData) return
const delta = verifiedData.delta || 0
let info = this.scores.get(targetHex) || { score: 0, lastUpdated: Date.now(), attestationsCount: 0 }
const newScore = Math.max(this.minScore, Math.min(this.maxScore, info.score + delta))
info.score = newScore
info.lastUpdated = Date.now()
info.attestationsCount = (info.attestationsCount || 0) + 1
this.scores.set(targetHex, info)
// History
let hist = this.history.get(targetHex) || []
hist.push({
ts: Date.now(),
delta,
attester: verifiedData.attester || this.publicKeyHex,
signature: attestation.signature,
metadata: verifiedData.metadata || {}
})
if (hist.length > 100) hist = hist.slice(-100) // bound history
this.history.set(targetHex, hist)
this.metrics.scoresUpdated++
this.emit('scoreUpdated', { peerId: targetHex, score: newScore, delta, attester: verifiedData.attester })
}
getReputation (peerId) {
this.metrics.queries++
const targetHex = typeof peerId === 'string' ? peerId : b4a.toString(peerId, 'hex')
const info = this.scores.get(targetHex)
return info ? { score: info.score, lastUpdated: info.lastUpdated, attestationsCount: info.attestationsCount } : { score: 0, lastUpdated: null, attestationsCount: 0 }
}
getTopPeers (k = 10) {
this.metrics.queries++
const sorted = Array.from(this.scores.entries())
.sort((a, b) => b[1].score - a[1].score)
.slice(0, k)
.map(([peerId, info]) => ({ peerId, score: info.score, attestationsCount: info.attestationsCount }))
return sorted
}
getHistory (peerId, limit = 50) {
this.metrics.queries++
const targetHex = typeof peerId === 'string' ? peerId : b4a.toString(peerId, 'hex')
const hist = this.history.get(targetHex) || []
return hist.slice(-limit)
}
/**
* Export a serializable snapshot of the current reputation state.
* Useful for backup, migration, analytics, or sharing with trusted peers.
* Production feature for state portability in decentralized environments.
*/
exportSnapshot () {
this.metrics.queries++
return {
version: '1.1-snapshot',
timestamp: Date.now(),
publicKey: this.publicKeyHex,
scores: Array.from(this.scores.entries()),
history: Array.from(this.history.entries()),
metrics: { ...this.metrics },
options: {
decayRate: this.decayRate,
minScore: this.minScore,
maxScore: this.maxScore,
decayIntervalMs: this.decayIntervalMs
}
}
}
/**
* Import a previously exported snapshot, restoring scores, history, and metrics.
* Overwrites current in-memory state (use with care in production).
* Emits 'snapshotImported' event.
*/
async importSnapshot (snapshot) {
await fs.mkdir(this.storageDir, { recursive: true })
if (!snapshot || typeof snapshot !== 'object') {
throw new Error('Invalid snapshot: must be an object')
}
if (!snapshot.version || !snapshot.version.startsWith('1.')) {
throw new Error('Invalid or unsupported snapshot version')
}
if (Array.isArray(snapshot.scores)) {
this.scores = new Map(snapshot.scores)
}
if (Array.isArray(snapshot.history)) {
this.history = new Map(snapshot.history)
}
if (snapshot.metrics && typeof snapshot.metrics === 'object') {
Object.assign(this.metrics, snapshot.metrics)
}
if (snapshot.options) {
if (typeof snapshot.options.decayRate === 'number') this.decayRate = snapshot.options.decayRate
if (typeof snapshot.options.minScore === 'number') this.minScore = snapshot.options.minScore
if (typeof snapshot.options.maxScore === 'number') this.maxScore = snapshot.options.maxScore
}
this.emit('snapshotImported', {
timestamp: snapshot.timestamp,
scoresCount: this.scores.size,
historyEntries: Array.from(this.history.values()).reduce((sum, h) => sum + h.length, 0)
})
return true
}
getStats () {
return { ...this._stats }
}
async close () {
if (this._decayTimer) {
clearInterval(this._decayTimer)
this._decayTimer = null
}
if (this.swarm) {
await this.swarm.destroy().catch(() => {})
this.swarm = null
}
if (this._hypercore) await this._hypercore.close().catch(() => {})
if (this.bee) await this.bee.close().catch(() => {})
await this._persistState()
this._joined = false
this.emit('close')
}
// Hook for integration with other primitives (e.g. vector clock tick on attest)
getCausalTick () {
return ++this._localClock
}
// For P2P simulation / testing
simulateRemoteAttestation (targetPeerId, delta, fromPeerHex = 'remote-peer') {
const nonce = this._nextNonce()
const attestation = {
payload: b4a.toString(b4a.from(JSON.stringify({
target: typeof targetPeerId === 'string' ? targetPeerId : b4a.toString(targetPeerId, 'hex'),
delta,
attester: fromPeerHex,
nonce,
ts: Date.now(),
metadata: { simulated: true }
})), 'base64'),
signature: 'simulated-signature',
nonce
}
return this.receiveAttestation(attestation, targetPeerId)
}
}
module.exports = HyperP2PReputationSystem
module.exports.REPUTATION_PROTOCOL = REPUTATION_PROTOCOL
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,97 @@
{
"name": "hyper-p2p-reputation-system",
"version": "0.3.1",
"description": "A novel, production-grade P2P reputation and trust scoring primitive for Bare/Pear applications. Provides cryptographic attestations (Ed25525519 signed reputation updates), time-decaying weighted scoring, Sybil resistance via unique peer identity binding, Hyperbee persistence for reputation history and scores, P2P gossip propagation via Hyperswarm/Protomux, causal ordering with vector clock integration hooks, query APIs for trust levels and top-k peers, automatic score decay and pruning, event-driven notifications, and rich metrics. Enables decentralized trust, peer ranking, and Sybil-resistant coordination in the Holepunch/Bare/Pear P2P ecosystem. First reusable reputation/trust primitive — never-before-seen.",
"main": "index.js",
"type": "commonjs",
"exports": {
".": "./index.js",
"./package.json": "./package.json"
},
"keywords": [
"holepunch",
"bare",
"pear",
"p2p",
"reputation",
"trust",
"attestation",
"ed25519",
"cryptographic-proof",
"sybil-resistance",
"decentralized-trust",
"peer-ranking",
"score-decay",
"hyperbee",
"hyperswarm",
"protomux",
"causal-ordering",
"decentralized"
],
"author": "Holepunch Development Agent",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/holepunchto/hyper-p2p-reputation-system"
},
"bugs": {
"url": "https://github.com/holepunchto/hyper-p2p-reputation-system/issues"
},
"homepage": "https://github.com/holepunchto/hyper-p2p-reputation-system",
"dependencies": {
"bare-events": "^2.8.0",
"bare-crypto": "^1.9.0",
"bare-process": "^4.4.0",
"bare-timers": "^2.0.0",
"bare-path": "^3.0.0",
"bare-fs": "^4.0.0",
"b4a": "^1.6.7",
"protomux": "^3.0.0",
"hypercore-crypto": "^3.0.0"
},
"peerDependencies": {
"hyperbee": "^2.0.0",
"hyperswarm": "^4.0.0",
"hypercore": "^10.0.0",
"bare": ">=1.0.0"
},
"devDependencies": {
"brittle": "^3.0.0"
},
"engines": {
"bare": ">=1.0.0"
},
"pear": {
"name": "hyper-p2p-reputation-system",
"type": "module"
},
"imports": {
"process": {
"bare": "bare-process",
"default": "process"
},
"crypto": {
"bare": "bare-crypto",
"default": "crypto"
},
"path": {
"bare": "bare-path",
"default": "path"
},
"fs": {
"bare": "bare-fs",
"default": "fs"
},
"timers": {
"bare": "bare-timers",
"default": "timers"
},
"events": {
"bare": "bare-events",
"default": "events"
}
},
"scripts": {
"test": "brittle-bare test/test.js"
}
}
@@ -0,0 +1,23 @@
{
"scores": {
"a69ca7c39679a8e8991d1b09e0c21023e3136cb005597b24d4b729cdd527a9ea": {
"score": 75,
"lastUpdated": 1779303685725,
"attestationsCount": 1
}
},
"history": {
"a69ca7c39679a8e8991d1b09e0c21023e3136cb005597b24d4b729cdd527a9ea": [
{
"ts": 1779303685725,
"delta": 75,
"attester": "6088ba74a6f376e1578806d90616293607be1186e730b89d919dece498170a85",
"signature": "gmd+G1f5rJ0TV50L9/6MfMeYQrF9K5pYsONUAvgH5Qgdlt/Xqdyw804eto0eYesYz6eymduvfWpcL2b5espRBg==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779303685725
}
@@ -0,0 +1,23 @@
{
"scores": {
"76eeb84d2ac78d5b9817cef094a45a8d9ae647411ac76230b2936851a1645702": {
"score": 75,
"lastUpdated": 1779303938609,
"attestationsCount": 1
}
},
"history": {
"76eeb84d2ac78d5b9817cef094a45a8d9ae647411ac76230b2936851a1645702": [
{
"ts": 1779303938609,
"delta": 75,
"attester": "f9941fde1446e0c0dcf62f3715735a58d8a2eb2178ff62ff2a977958ba48ec60",
"signature": "QPOh37Ii141WZGOxw0wV0UqMvMc+WTQeipr9v0pNtxKloe3nKIWTiw1Axy4RUi8Lc1LOfeNIlDRFih2j8G4XBA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779303938609
}
@@ -0,0 +1,23 @@
{
"scores": {
"1112187d2d0601ccaabba893d94ca787a4b560628850d0140168829477a84d7b": {
"score": 75,
"lastUpdated": 1779304099654,
"attestationsCount": 1
}
},
"history": {
"1112187d2d0601ccaabba893d94ca787a4b560628850d0140168829477a84d7b": [
{
"ts": 1779304099654,
"delta": 75,
"attester": "cae2a3f7478b95dee903842ca854354fd324e43aae0450bb8ac74e8a161a4946",
"signature": "BZ9J4idYoeBOiA3wTzOYQQPOxkKbRmnbP6ZE4QoTNQ78wENIeWqFIqEQmziWy7BNJ/FBIavpGtm4yz4DcYCjCg==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779304099654
}
@@ -0,0 +1,23 @@
{
"scores": {
"3e74959c219c8fe6e71fb81ca91e0814cfd78cfb5bcace39b6df1dec045f5481": {
"score": 75,
"lastUpdated": 1779311253085,
"attestationsCount": 1
}
},
"history": {
"3e74959c219c8fe6e71fb81ca91e0814cfd78cfb5bcace39b6df1dec045f5481": [
{
"ts": 1779311253085,
"delta": 75,
"attester": "890ac9fef6c6785ce4f7d2971e2f135002acfc89ec54b38480a5fdb72ccf71d2",
"signature": "v4iJGcFxZGjTkDR7LGI3BtDFhraoiyTWMjeUmlvAvgdPp5vbGTkWDnzfZwc6XMhSuiB5S04W/Tm6xGhwVJ1IBA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779311253087
}
@@ -0,0 +1,23 @@
{
"scores": {
"557cc2c8a352ef96abd8336a21a1a4053c93077f7b71c41f80b956b56460239b": {
"score": 75,
"lastUpdated": 1779311444880,
"attestationsCount": 1
}
},
"history": {
"557cc2c8a352ef96abd8336a21a1a4053c93077f7b71c41f80b956b56460239b": [
{
"ts": 1779311444880,
"delta": 75,
"attester": "89eb63c199e83bd269294aaffde7de46136d60408a9ce7cb4b49941bf30aa9dc",
"signature": "pXUlgX/VaYALgpDd8iziHDozY7eX3P3Az+IaBWekcEQyj5hg3oUGd0D18pO1m/9BOSpemhWvH4H2Pc0Fex/8Cw==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779311444976
}
@@ -0,0 +1,23 @@
{
"scores": {
"94f4ea8a534a639e7a660ebb5790bf4ffa2b1a31b00f59829a0657ffeee327f3": {
"score": 75,
"lastUpdated": 1779311463446,
"attestationsCount": 1
}
},
"history": {
"94f4ea8a534a639e7a660ebb5790bf4ffa2b1a31b00f59829a0657ffeee327f3": [
{
"ts": 1779311463446,
"delta": 75,
"attester": "dd3ceb4df246ebcd0d8e1b1237fab5eb3aa1e0dad3537ddeb19bf4142dbecf39",
"signature": "l22DMcQ4Tvt8r0zl/8X66ud6ddApjxCQ1Jn2R8SqvLcKztezn2ajgZaOfR31IPcsXzbQVrNogWJBHAq0bEV7AQ==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779311463548
}
@@ -0,0 +1,23 @@
{
"scores": {
"7530a27f9163d50eb58646d51d7d6fd6602d1ed65d41c174531626b58e6bb462": {
"score": 75,
"lastUpdated": 1779311879806,
"attestationsCount": 1
}
},
"history": {
"7530a27f9163d50eb58646d51d7d6fd6602d1ed65d41c174531626b58e6bb462": [
{
"ts": 1779311879806,
"delta": 75,
"attester": "471f23ff09c9dd6851a0dae0f87a787490c0e694e7e63984e9581d4f377a8305",
"signature": "aH7OevAgfKaGhQDqmYwP/h84zidI6bj4cz/TQjnMjPDQCXtdwX9y1Tjjf4J/y8zT2+0M2SzUyzdm2ABe30z9AA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779311879892
}
@@ -0,0 +1,23 @@
{
"scores": {
"9a7447a62939fed8972a21584358ae841176d9bea5a778ee595eb0dcc974faef": {
"score": 75,
"lastUpdated": 1779313150686,
"attestationsCount": 1
}
},
"history": {
"9a7447a62939fed8972a21584358ae841176d9bea5a778ee595eb0dcc974faef": [
{
"ts": 1779313150686,
"delta": 75,
"attester": "b553633830fad5f0ae72dfb4777ad1c30a1f631be1b7f9c8b69a57d82d99f1d2",
"signature": "/S3yN5f7BiMDQ4Ia/3tyS84NisrHn1YQqBkQ6bz0wqqselX6szZ4u+xWr1Snwp4yZ3NHKhIU4/CNLARSUk9eBw==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779313150746
}
@@ -0,0 +1,23 @@
{
"scores": {
"7aad1180ce02770a762e8ade23298a72b7fb69a410aaf96967cf4cc8bbe263f7": {
"score": 75,
"lastUpdated": 1779314988625,
"attestationsCount": 1
}
},
"history": {
"7aad1180ce02770a762e8ade23298a72b7fb69a410aaf96967cf4cc8bbe263f7": [
{
"ts": 1779314988625,
"delta": 75,
"attester": "54c78e088fa0763e649487d92cc567e4438dea71b62e4a798899ea4ee3581f08",
"signature": "fKEF7p7sK8biri3SKW2HLLWHKbmtPbFTmfj+3kol9mPwYcs1Nw9KS9gx+HJCuU93rYLmvVqtsZAoR154py0SCg==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779314988683
}
@@ -0,0 +1,23 @@
{
"scores": {
"d5669d592237fcbaf50261b9bbe5a6dbf1a40b3832a3c84e874c26952e3b8e73": {
"score": 75,
"lastUpdated": 1779316214954,
"attestationsCount": 1
}
},
"history": {
"d5669d592237fcbaf50261b9bbe5a6dbf1a40b3832a3c84e874c26952e3b8e73": [
{
"ts": 1779316214954,
"delta": 75,
"attester": "ac1244bc82870eace3b680c09e2751829e2e59f5d236b6941fb9fc1916be0b81",
"signature": "MPzJC0IJDspFF2jGJ6Mrfyy4vCLqdgOJWY74ttRsxMPXBGL6T4sDYbGCVkfCmp60em/h4/T5XAjmYNn+au/sAA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779316215011
}
@@ -0,0 +1,23 @@
{
"scores": {
"41b533d221b2784e5f1cc1be209638a6858a3dfda6ba29dd7f8c0c3ca3f8d5b5": {
"score": 75,
"lastUpdated": 1779316798520,
"attestationsCount": 1
}
},
"history": {
"41b533d221b2784e5f1cc1be209638a6858a3dfda6ba29dd7f8c0c3ca3f8d5b5": [
{
"ts": 1779316798520,
"delta": 75,
"attester": "63b7844d2d7e895a5347f597c5c6821cd783e27add84374ca7ea5631be7707ef",
"signature": "744IWChpA7h/L16pMy78zMJUwBL8d6AxQwlNy4ZPP5Im39b3W3QzzYvm0Wb1w4lMODoxzI8LYY4BF3BxstrVCQ==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779316798579
}
@@ -0,0 +1,23 @@
{
"scores": {
"0e45dc0772f648e877c1e71b9dbf6fb879aa0d6f298c36911857df763179401e": {
"score": 75,
"lastUpdated": 1779317165919,
"attestationsCount": 1
}
},
"history": {
"0e45dc0772f648e877c1e71b9dbf6fb879aa0d6f298c36911857df763179401e": [
{
"ts": 1779317165919,
"delta": 75,
"attester": "dd38e0ec1e5a7aa307d95b4761dd15341ee1d10f900905588ca003ec87ac5522",
"signature": "+O2nK9DszOXdDwGZleGiV+DCr2+1WvZbTYJkt5ycEZedWjGmaGfWAH2sP5vjAchZA/aBf4JBLOuEZknisQ9rBg==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779317165978
}
@@ -0,0 +1,23 @@
{
"scores": {
"5615697e69af7578b137bf17cbe4e6e82c62521191aace42047acaa0b957a04c": {
"score": 75,
"lastUpdated": 1779317798005,
"attestationsCount": 1
}
},
"history": {
"5615697e69af7578b137bf17cbe4e6e82c62521191aace42047acaa0b957a04c": [
{
"ts": 1779317798005,
"delta": 75,
"attester": "9b587d598c45503d826e80da94ff7cf155f12365ee8555a5f8b59b3060e196ec",
"signature": "mLXiZ/5PExP9qkl+/dF3vUtewA1lBkaygsbjvhRPOfslrqYNaWlFs4NBSlBIQFrgKwRWeRy5CEzcCqxBgSd7DA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779317798100
}
@@ -0,0 +1,23 @@
{
"scores": {
"368879352fc0bea44c9e7023bd9cbe27b96bc4a00029fc0a4e5e0e1fc9e3e8a4": {
"score": 75,
"lastUpdated": 1779318294944,
"attestationsCount": 1
}
},
"history": {
"368879352fc0bea44c9e7023bd9cbe27b96bc4a00029fc0a4e5e0e1fc9e3e8a4": [
{
"ts": 1779318294945,
"delta": 75,
"attester": "459facd6812cd7967daf9974ae155de6b512e5c4805be1efbc1c8768e605d6b6",
"signature": "vgSP4jLsAEo1OR8nD8x1Lh0fzuOwXacFWgREFJh3jfyotvOrV1nJjFtPr82ACa8sZJYOoKgipr1IBi9NcEH/AA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779318295001
}
@@ -0,0 +1,23 @@
{
"scores": {
"7ed3bc4fdd6dbaad0e76b0082e2bd82f8f0d5168f2d90be3888910e022bb9ae6": {
"score": 75,
"lastUpdated": 1779318513243,
"attestationsCount": 1
}
},
"history": {
"7ed3bc4fdd6dbaad0e76b0082e2bd82f8f0d5168f2d90be3888910e022bb9ae6": [
{
"ts": 1779318513243,
"delta": 75,
"attester": "2220345f39bad168fb1748fdc937e3ca2997c1961a5ee613b526004edce3438f",
"signature": "67ovm6BkZYGXeLWFiNIgMTvRgLImMnC1duwuSKYGP/1IiyomLB1aSi0BwWD8BWw759CMAMe1KpyAqjzgHrD/Bg==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779318513299
}
@@ -0,0 +1,23 @@
{
"scores": {
"8f684d45f37743f48b6c14f1c4b90303cea941a38c243289022116f70658c98c": {
"score": 75,
"lastUpdated": 1779319307562,
"attestationsCount": 1
}
},
"history": {
"8f684d45f37743f48b6c14f1c4b90303cea941a38c243289022116f70658c98c": [
{
"ts": 1779319307562,
"delta": 75,
"attester": "b933efc366b9c3fff2efe950a4ca2118fc53a70e0dece935fec724b32c562967",
"signature": "BRXJk+UKmcO2pvhcJ9nRfp0BJbL6PJkTmtVuWnocyilnbzZEefGrEaRbfvL7TZ5yaEkiwl7xitSPiz1h7gRBBA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779319307618
}
@@ -0,0 +1,23 @@
{
"scores": {
"52ea33d0a53cbfd3678feb75ab9f3fe0a036021cf3eb06a5d7924fedd2f282f5": {
"score": 75,
"lastUpdated": 1779320035070,
"attestationsCount": 1
}
},
"history": {
"52ea33d0a53cbfd3678feb75ab9f3fe0a036021cf3eb06a5d7924fedd2f282f5": [
{
"ts": 1779320035070,
"delta": 75,
"attester": "c9911fcd9736f641d65d94c5563ba38ca23015f59b527df941c94a85cc7f22a0",
"signature": "EFB0MMo3SdRQcDh88Oh/BKRXtdFw9hpKLp7+IzE9xehB2L8enffFmoe6vUea7+b+AENgfj7b0ZJDcjveX35DDQ==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779320035126
}
@@ -0,0 +1,23 @@
{
"scores": {
"97e1f6bf09d20cb18fc3e553e614e1f3d8e3e0d849ee0f1bb5014ec2617faff2": {
"score": 75,
"lastUpdated": 1779320328383,
"attestationsCount": 1
}
},
"history": {
"97e1f6bf09d20cb18fc3e553e614e1f3d8e3e0d849ee0f1bb5014ec2617faff2": [
{
"ts": 1779320328383,
"delta": 75,
"attester": "61951dcbbb6618af66460d4f43a6cba330f987659162a494d5e183dce3818add",
"signature": "U6WAg/vg9sIsBoUHYeRYGy5KyhW1CvRQKGIfXPkBDmcD2S+7X0McUyR4HMvPMZius+fXmyuc7fViO9aYAillCA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779320328440
}
@@ -0,0 +1,23 @@
{
"scores": {
"56b26ee15d77463641e889afbd5ffe34d8572e35b9c32af5373fd9fe2da0ee64": {
"score": 75,
"lastUpdated": 1779320795378,
"attestationsCount": 1
}
},
"history": {
"56b26ee15d77463641e889afbd5ffe34d8572e35b9c32af5373fd9fe2da0ee64": [
{
"ts": 1779320795378,
"delta": 75,
"attester": "9a028d2b7d0a4f63935ed45c7ff84d05a8f22cf7d5eefe0bf6f97c9260fdf098",
"signature": "5TQHMcUQLTzq1uQSRcSN5oQ6fXZbZEMX4MDJCeOb074RYYn+pjmQwngjB8WvxAvo/9j9buI6T+TK+9seeaM+Cg==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779320795435
}
@@ -0,0 +1,23 @@
{
"scores": {
"afae6a39a0bd4dd2b0dc5f47765da140fca840419b09bcaa72302d5fdca29540": {
"score": 75,
"lastUpdated": 1779321777686,
"attestationsCount": 1
}
},
"history": {
"afae6a39a0bd4dd2b0dc5f47765da140fca840419b09bcaa72302d5fdca29540": [
{
"ts": 1779321777686,
"delta": 75,
"attester": "c47e2a7334e2746f8ac98042435b7fadd4c8cbfbfe8818b139bbb1a984271c2f",
"signature": "eAXpO1li14PrLgU3wezveUSqkNdSKx1ROwEpP3K3aIcGpNJQtSjDrkuAJpAuqX1KN0JFPbJ4oa+ORuhVuKL9Ag==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779321777742
}
@@ -0,0 +1,23 @@
{
"scores": {
"374f3a5d8d1d7fc1cf3cb476c25456e193551be7dfa4d32293f4fdbae4873f64": {
"score": 75,
"lastUpdated": 1779322222269,
"attestationsCount": 1
}
},
"history": {
"374f3a5d8d1d7fc1cf3cb476c25456e193551be7dfa4d32293f4fdbae4873f64": [
{
"ts": 1779322222269,
"delta": 75,
"attester": "96189824c73fdf87410949c912f16adf8a44a1ce23023981c2322df201082b13",
"signature": "ZoPQHghxtar+DCNN5fZybUYCJrlwJ+EZsRu46iOwtAcKaCe0mZxOwPX6zgQJh4ZI6bEr+5UEQtRRRpl31Tz/Cw==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779322222325
}
@@ -0,0 +1,23 @@
{
"scores": {
"3b2acc8e14e0150e9448c951ab1fe8560cc29a2a88b8e77890ff63f959cf994d": {
"score": 75,
"lastUpdated": 1779322474897,
"attestationsCount": 1
}
},
"history": {
"3b2acc8e14e0150e9448c951ab1fe8560cc29a2a88b8e77890ff63f959cf994d": [
{
"ts": 1779322474897,
"delta": 75,
"attester": "d18985553cb94d5dc47ac23292c947381dd198f7c3cf7d773ddd60ab773bc87f",
"signature": "QF3n/1RupJ9+AIf+a5zFAwMTE+vWsCADwunSAZ3oKIExoGiKg/wTJI6CALQuJXRV7VEZ2Cmjtvdj98xOQbpaCA==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779322474953
}
@@ -0,0 +1,23 @@
{
"scores": {
"2ce5d85bf32acff04423dbc70d32b6c7ec17f994485e5408f3e174e9ab5da441": {
"score": 75,
"lastUpdated": 1779323795248,
"attestationsCount": 1
}
},
"history": {
"2ce5d85bf32acff04423dbc70d32b6c7ec17f994485e5408f3e174e9ab5da441": [
{
"ts": 1779323795248,
"delta": 75,
"attester": "c13b3f157adae945c1102c7e20aaf5459f693d7946578f131a973bfe6732d3cb",
"signature": "MZyCYBNFXqR0m4NhIDlppXSf70jIUyuYsuCCy6uOwYd4F3737sHYOkWWFuADG7kUtokHzBYA0df4eTobEz9uDw==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779323795304
}
@@ -0,0 +1,23 @@
{
"scores": {
"4374f97cf98991d8ab16129e9db21050adcb6038d1dde6a260b1e5228e4ac09c": {
"score": 75,
"lastUpdated": 1779324100712,
"attestationsCount": 1
}
},
"history": {
"4374f97cf98991d8ab16129e9db21050adcb6038d1dde6a260b1e5228e4ac09c": [
{
"ts": 1779324100712,
"delta": 75,
"attester": "56968920f113b6416cb9221ac17c9e2616c9ac650eb2c2fcf81d958de666196c",
"signature": "rTCI3ZoMz94LDBPsW/zMWQHTolag8sxAabq/Z2O2RmGVNUk9v072EWbuiwRfk/KOcBynZpcUiSTxD+SBXLTQAg==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779324100768
}
@@ -0,0 +1,103 @@
{
"scores": {
"3cbccc09493449bb27a8a955e56f7ff29186e190c212d5e27e1e009571491f4f": {
"score": 75,
"lastUpdated": 1779302241730,
"attestationsCount": 1
},
"dcbf6c43a784c3e0a3c3a0635337eaa80f869129a01c89fa726d66ee9be1921a": {
"score": 75,
"lastUpdated": 1779303143652,
"attestationsCount": 1
},
"029d11aaa421b8cfc9c4323fd4b96869857fdc58b829150818d940a6d81e73aa": {
"score": 75,
"lastUpdated": 1779303254424,
"attestationsCount": 1
},
"92051d06d518ffead6389f965715706489b4cbeda8b6bf3c3d0eab521d302b80": {
"score": 75,
"lastUpdated": 1779303527562,
"attestationsCount": 1
},
"12440be0d2bb002d487d96e804ff9bffb7db7ca45f48aa33cd55de1fb2bc373a": {
"score": 75,
"lastUpdated": 1779303647644,
"attestationsCount": 1
},
"954448ddca7effd83889d263a7df9b629679a7f2fc2e8f1fa2e71f9a0fec09ea": {
"score": 75,
"lastUpdated": 1779303651375,
"attestationsCount": 1
}
},
"history": {
"3cbccc09493449bb27a8a955e56f7ff29186e190c212d5e27e1e009571491f4f": [
{
"ts": 1779302241730,
"delta": 75,
"attester": "94e178455a829d48256f6542e448a757e6b64a7888360efedd14e80820501111",
"signature": "c6k8JaLXHVVTAg+S6GQXTcSY5fQTkvBoqFKEoY8uXd15omQyjceCiPjTzLs8o/GG2eYfDtqaWAfDCV2tqhHtDw==",
"metadata": {
"context": "test"
}
}
],
"dcbf6c43a784c3e0a3c3a0635337eaa80f869129a01c89fa726d66ee9be1921a": [
{
"ts": 1779303143652,
"delta": 75,
"attester": "3959f083e737df2518baaf5e5347e5c1456c13864331c43b421acb1b1b43e606",
"signature": "vRfBm+zbTQO4CbmbITqy7PtRL19cIjbrV3S5TjUq2Ubdz6R7QJ5ND5UzakbglokyQMDevZY5Xw866m30etwUDg==",
"metadata": {
"context": "test"
}
}
],
"029d11aaa421b8cfc9c4323fd4b96869857fdc58b829150818d940a6d81e73aa": [
{
"ts": 1779303254424,
"delta": 75,
"attester": "1fe8863323f9a5e8f5971cd8e6f374b6857bffd76d66cf67121183a54d358a2d",
"signature": "Af5xJ8cIBlH33aTRi7z0eduwYYsOMKd+zHzs2FbSNuICCOkx0Et8SJ8a9WPl1KPdn4MD+m8afKfnmCvBCowmCQ==",
"metadata": {
"context": "test"
}
}
],
"92051d06d518ffead6389f965715706489b4cbeda8b6bf3c3d0eab521d302b80": [
{
"ts": 1779303527562,
"delta": 75,
"attester": "081b1bc76a34e788e2b1159dc240da3b5ef5e9b4a3097de0001c81e4f9f466c3",
"signature": "FaooBhQuWuqMWDP1s7MhdOJsarr3EHv4Z2VAYTZMWLjGvcrpdV69PMYZMmYE2XKP7DluVYvtHhHl3YPzraMeAw==",
"metadata": {
"context": "test"
}
}
],
"12440be0d2bb002d487d96e804ff9bffb7db7ca45f48aa33cd55de1fb2bc373a": [
{
"ts": 1779303647644,
"delta": 75,
"attester": "a79347b7119468356711b8f518079ee60f78e037466a8d9d7857411dc9f66882",
"signature": "ZmALv8BctUuU8zHxqyI2C7NaDUT5mGDr3MHLWi1eFBBSKP7shMndNj6Kyjij1RvSGrw/DiM6iRbJsj8IKTU4Cw==",
"metadata": {
"context": "test"
}
}
],
"954448ddca7effd83889d263a7df9b629679a7f2fc2e8f1fa2e71f9a0fec09ea": [
{
"ts": 1779303651375,
"delta": 75,
"attester": "665f5ebbe89e0325f6b1983ddea9c683cc0e9b5e47e3090ac224681215aa4124",
"signature": "JY1BD0diEDHF2SFi5I0rNgs87XtXqPbmh5kFAWTGsPwV8uUCZMn6Mg5UDLpn8y/XQkZuyLX0nbm6lwwJhO3ICQ==",
"metadata": {
"context": "test"
}
}
]
},
"lastPersist": 1779303651376
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779303685728,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779303685728,
"delta": 100,
"attester": "5ae532f3e8fb257e9a269f9bc2c13a569a478b745d2a909657d2c015dde46502",
"signature": "Q2cwZQb+yaQp+WlMROiFDHtF41HCxx7FLvP/h9WrOkTNFKUavPU3eca+cd+43OdSZwryym89AGXNj4Ogq3B+CA==",
"metadata": {}
}
]
},
"lastPersist": 1779303685728
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779303938612,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779303938612,
"delta": 100,
"attester": "af82ddff7d8b4eb30cffeedcfe07a4faf5bb57dcfaea4a84aedcff0a1d286220",
"signature": "fvlnIkFqj9AT9iIShuIYV7+7kp0v/6UjGAycwaIMgYCiYjB4jiTk2NVohrMK0d75C4L5X//KRyYNnz45Wpf7CA==",
"metadata": {}
}
]
},
"lastPersist": 1779303938612
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779304099656,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779304099656,
"delta": 100,
"attester": "fda7f7a08e7bf4eaaa984ac8568614271d5fb03fafe0e360e368e75d8541ba25",
"signature": "omCwUSWnDY9gJAm9gM8FuaYlR27uwXN2zov8Y2RVyh+ysuLiT3piCJ12KPjsiWY/R1Sb1lrt6rh9+gPhapcOCA==",
"metadata": {}
}
]
},
"lastPersist": 1779304099657
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779311262168,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779311262168,
"delta": 100,
"attester": "acc1bd79e1012b3cfe8877a6de37777a3f10475bc0b1617318cd51a4a815470d",
"signature": "frpcOvYDeN+KxxfqVx0ZCGlAHrtXDmHdfMocO9dXF/ESRnrnSNq3kUSPIod9LrCPR5wU5vxodPAUhaAn+fyiBg==",
"metadata": {}
}
]
},
"lastPersist": 1779311262170
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779311444978,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779311444978,
"delta": 100,
"attester": "e93b0e2376d4ce77721cec927f8a1c5f889d13ba120e54c05db97b089488dba9",
"signature": "p3Wv5sn60MP54tkCH6/qkhfcXm5CSH4qrYiTLB0Q8w2viydtLJQzIEE0tSS+lUzQ5dSKDUrDzypBg4XlUL/gAw==",
"metadata": {}
}
]
},
"lastPersist": 1779311444978
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779311463551,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779311463551,
"delta": 100,
"attester": "a3bd31c7c3ad684093f6fee5b5a43ca8be349015c102ee1fa95d3489f491e629",
"signature": "dtjhePsDwkd+K7cTcsTdLILEDbI4BQil+4K7U+hnH+W1pe8SxFq66QvGzatOwLhxu5YQayg0YCv4z59R7ZIqAw==",
"metadata": {}
}
]
},
"lastPersist": 1779311463552
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779311879894,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779311879894,
"delta": 100,
"attester": "fb4f76b697a0dccf67fff263c148cbc7b380cee42d0ba20df85f81d49fca8775",
"signature": "vI++eMBHEsKxof605RbBMXwCJaS331Om/F48kT5KvYa7uQURafRRGlh7Fm2KtCB5pQx9ws3zySvbSZsZhHyADw==",
"metadata": {}
}
]
},
"lastPersist": 1779311879895
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779313150749,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779313150749,
"delta": 100,
"attester": "7acd28b48a42bdd04a0f3998666195a59f6985159678fea2664a991325924629",
"signature": "NwMPLq/7XFlrlTWvvm7WgKHTGIR0e2qwfbDGCgE+wLSYzTiul4KFZrh0G9H8rNzW93Qofq91qtZLSlkRi66MDQ==",
"metadata": {}
}
]
},
"lastPersist": 1779313150750
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779314988686,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779314988686,
"delta": 100,
"attester": "a25f07e97664f33d97a123e00bba1b6f445b581dc762f10c799dfd9037505a2e",
"signature": "JY0WvtXqMvEugNw3Ju5t4VoNMDMNTe/wcwNd/SHXSWZOs09wkrw91uGQlN7M15+PLk2fQfMve+r3XfOC8ijAAg==",
"metadata": {}
}
]
},
"lastPersist": 1779314988687
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779316215014,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779316215014,
"delta": 100,
"attester": "07d18e902a574224c1c850fa05c57dfbce36471b96752d2e8cdf57e0f1acd5ba",
"signature": "jKTo7h30ClxhbR+xhN/fsXf0cMK03Z6NvBvPlSbzD+rZL1tZhAEPd3lsf9RSBQM+1ZmpNymGGhKEm16PQAHxDQ==",
"metadata": {}
}
]
},
"lastPersist": 1779316215015
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779316798583,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779316798583,
"delta": 100,
"attester": "302f15541845305cb3b66789db8da941f8f448ea0aeb4777459b4e2576cab76d",
"signature": "VI4XsgP593iYDDoNuYeeq5NHhBd8kjwVmbGil5OjHuXFkdS6PXpVYs0vztjr40sMgjkoUsUakj8qwmMUthkDBA==",
"metadata": {}
}
]
},
"lastPersist": 1779316798584
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779317165981,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779317165981,
"delta": 100,
"attester": "67392d4cf6aa1c952d1852b5043fe4815f2aa338d1089a2632ea078489757a84",
"signature": "QlwptGk8CFKe5WKt7YlsQbJk2Xbzeb0vaOM+Yvld+IJvVVNIFMj7GafLFiFLt0FXCeqfegTNUjaI8VfskrLsCg==",
"metadata": {}
}
]
},
"lastPersist": 1779317165982
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779317798102,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779317798102,
"delta": 100,
"attester": "a2b20fd9f0533ef7b2abcfe2200a00d25b29a036839195379d6164d5f4c8d4a8",
"signature": "4/puN1BVkj6Xtl/cy7J6bQFDe//LXncSmvy+T+lkWdFYse/xlbwizFCRfsgI5yPdXyWUlHtEwc4rSQ1wdp5dAQ==",
"metadata": {}
}
]
},
"lastPersist": 1779317798102
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779318295005,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779318295005,
"delta": 100,
"attester": "97ca4649bba82baa2dc2c731af2b5b7bca30899d2d23c0627eee504ff31e8deb",
"signature": "r3cKU21qtgPtvcF9Oz4GbWNWzEpy9zzDJY/YUzC/VxnnOVdZl0ytO4F0MiyULcHino/Az0kYPkBxiTrFfSX3Cw==",
"metadata": {}
}
]
},
"lastPersist": 1779318295006
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779318513302,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779318513302,
"delta": 100,
"attester": "49a2d1d5ad1d66a7a28209b131c9b91fc1587fb46022684de041c2f63ec7c5fe",
"signature": "s8e3zJzPhogdGiFG7fd1ISLZNDMfBSVDzCFi+tt4RdNl5PTo/WdDdQACPM8gXvp87UYpxm9pb4x1vLT+FPTPAA==",
"metadata": {}
}
]
},
"lastPersist": 1779318513302
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779319307620,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779319307620,
"delta": 100,
"attester": "89032bc79cd01ffd4aff842969abecc80ca3f0f146142eb29ed934ad29426101",
"signature": "9dpW8oDAen1wgiJr8VoEp06A+KsAhQ1jgjvuJ8wNK1/L6+JczBRMMMGSx0rUo3A3nE6gLHYig+we6IqmLJgfCQ==",
"metadata": {}
}
]
},
"lastPersist": 1779319307621
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779320035129,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779320035129,
"delta": 100,
"attester": "db9ca1c8e4199d89424d4cc5f275a1c965ab41a7f6797ba77e7dfe8917286cf0",
"signature": "GL2d8ywpehO8XaHPvgmh5TPWPkEXPOoc5iBLcYOKQved7aYysoX92Al8cFdK0XMIfNiIQNbZi9AfyKXWMTn3Cg==",
"metadata": {}
}
]
},
"lastPersist": 1779320035130
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779320328443,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779320328443,
"delta": 100,
"attester": "d86fbb6c50b9cb4df50c146a72c2e7c2ba004bdd50492bbc39f2da9c0087d6e8",
"signature": "su1es3jcsm2ZV8IimeoMIRkFuVqbsU4rc8v3/sV30Z/vmyrOrXZnMRKeLT5GivLzjXJ9tmO2l/oeGGm1Xgc+BQ==",
"metadata": {}
}
]
},
"lastPersist": 1779320328443
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779320795438,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779320795438,
"delta": 100,
"attester": "4e6689e3bf1dd50393339a17cd08ae26de310f3257c323634058eb32765ca724",
"signature": "p5/L/7qBVVH2QTDMmml0z+Vi87MuhEIGTvq4xUOCVZfgU5S7Gbo7e8Fkw4iS6CS2Tus7F3BcXsD+cfbDbRG6Dg==",
"metadata": {}
}
]
},
"lastPersist": 1779320795438
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779321777744,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779321777744,
"delta": 100,
"attester": "2e8eb00705559c88dc9a9ef720fbf54d57ac24a6f87f8b0fd7ca2847378b7166",
"signature": "QyjDh5RTDj0A072MxmyX7ZAeLWDTr9HcGKTC4ihB0dy+jrvYFTMWCjWUCBY6zzIi18GTFEI0dlG9i3pyBuSCAA==",
"metadata": {}
}
]
},
"lastPersist": 1779321777745
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779322222328,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779322222328,
"delta": 100,
"attester": "4a96ce764b6c320988640e32115b0c4093017da5ddff282948e566c08a56f6a5",
"signature": "LrJWGOSIMz99qn1KGNVBGGjiOP2v6FUQl2Fsd7itxzzRCrl9u90A/aVILGL8mMA5hrpoMLilheBqWhWG0ud2Aw==",
"metadata": {}
}
]
},
"lastPersist": 1779322222328
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779322474956,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779322474956,
"delta": 100,
"attester": "1415bb4c67a5f6ac6f7bd76ad7d14f64413b35bce2308a0eb67e8016eb312a77",
"signature": "H5S+qXmzkWwbElwzATPkat0GImjlIBNfNZFGAD8nEtmTFAutglOG07qrQbTf0MIRB3I8AFpg//N7BQkY4VLYCQ==",
"metadata": {}
}
]
},
"lastPersist": 1779322474956
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779323795314,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779323795314,
"delta": 100,
"attester": "e7c620bf3f5c2482b27d9062f334748bdc7737067988a4cb0cb6276d01bd807f",
"signature": "XZNZkx3xu4SRax6i3dzJGqOFipfzrrBQbMPNiNfAHk9lhk0Ack846Spugi8YpC6USKn7s3pNN6twub+q1lE1Aw==",
"metadata": {}
}
]
},
"lastPersist": 1779323795315
}
@@ -0,0 +1,21 @@
{
"scores": {
"decay-peer": {
"score": 90,
"lastUpdated": 1779324100771,
"attestationsCount": 1
}
},
"history": {
"decay-peer": [
{
"ts": 1779324100771,
"delta": 100,
"attester": "7545af40a9bdf951c989a8c51b225bee04c02c3f4076c54d90619df77446f12c",
"signature": "+igg/B4Fnf7GjZ61NDUl4XIgObbSGoy9wPdJNIsLO0mTZm1OLkz0jc/FJuderw3E6dU1ycRPd60F1yafBbe9Cw==",
"metadata": {}
}
]
},
"lastPersist": 1779324100771
}
@@ -0,0 +1,35 @@
{
"scores": {
"decay-peer": {
"score": 243,
"lastUpdated": 1779303651380,
"attestationsCount": 3
}
},
"history": {
"decay-peer": [
{
"ts": 1779303527565,
"delta": 100,
"attester": "e1c020ac2492d5c4ac6cd3c2ef77e22d351251b249516661e54eb45fc34bc5b6",
"signature": "U/y0BB2isI96y1OVNqtWOBKfLqdeLAscNqqG1sm4Y2B2V0obSpqfrdJp1Tjiso7smLu6R0yskVRCpo35acFoAA==",
"metadata": {}
},
{
"ts": 1779303647651,
"delta": 100,
"attester": "aad22efb04e8f1b13202e402bd1c51cd7a54d2f687981de2cc6de8d330ba99aa",
"signature": "yABxwBXDZnQGex5xkr3tcs4dxA7MXHC06ACTyDFkU7OR/g3l+fIH22kB06k3YBeroG22gERxIIBaaIiZqfN/BA==",
"metadata": {}
},
{
"ts": 1779303651380,
"delta": 100,
"attester": "cad63d38777f24ece97946881cbe65fe767e8378edece271eddc5a06e1d1efc5",
"signature": "+cSK+2uSn8s2AFzuJGKba9QUC5zoSR5L8kqGeCqF4dtABeJoVPVkUpuZeaXxptRnWrUo2s+gIrRYp2Uukk6SAQ==",
"metadata": {}
}
]
},
"lastPersist": 1779303651381
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779303685724
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779303938608
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779304099653
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779311249342
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779311444878
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779311463443
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779311879804
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779313150684
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779314988623
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779316214951
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779316798517
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779317165914
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779317798003
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779318294942
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779318513241
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779319307560
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779320035067
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779320328381
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779320795376
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779321777683
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779322222267
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779322474895
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779323795246
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779324100710
}
@@ -0,0 +1,5 @@
{
"scores": {},
"history": {},
"lastPersist": 1779303651374
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779303685729,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779303685729,
"delta": 55,
"attester": "b943aed3691536514541ee33a3e19ed837727e69e775a266340b328ceab1f86e",
"signature": "f7Lye2XPO8m1R3DNMB6WlmzeI9UYT/cmlmk79MvUv1lic5O2nVNUYVGKzuOmlzF12SYKCOCoUy0fzkzEDLsIAA==",
"metadata": {}
}
]
},
"lastPersist": 1779303685729
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779303938613,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779303938613,
"delta": 55,
"attester": "4a68fedc4e364e09599ba3c77616ff7a180ecb027974c4628560b7e16cb4a71a",
"signature": "8CDGO4rHLLUaNhlSFATQg9dC/M2heqFFk55m1qxW/qHwjgMD9qHaNkjJli/VZLHzki/NiFshsqu4qaqivNoUCQ==",
"metadata": {}
}
]
},
"lastPersist": 1779303938613
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779304099657,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779304099657,
"delta": 55,
"attester": "8278b9d06f9038800e76145e6af0296d7a6e53ddf76319757da081c64427da10",
"signature": "rNkh4JgQ1UWoTjLOUyXYZe6k/QzjF6PT3bMMfuIvNurUcCvGFAR1vn6WRYsJfhCa4h4qCT/REffKICcLyZJyCw==",
"metadata": {}
}
]
},
"lastPersist": 1779304099658
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779311264852,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779311264852,
"delta": 55,
"attester": "3535bf9ff43fa083de409c4a36708d72b0496829da7700efcd964cec490bea4b",
"signature": "PV5dsAiEId+IRMafGb00HN7C/A5yQdC18VfgWRkhC0hUCt8PTcqurgfo0Bv3LFj+AgUSLPdnZNrUrZI/H/q+Dg==",
"metadata": {}
}
]
},
"lastPersist": 1779311268197
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779311444979,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779311444979,
"delta": 55,
"attester": "cfd5b0634d8f6cc48fa3bc15e99dc30ce89aa8b05721b3c726775226811aa952",
"signature": "y0Oyww/+wh4uKMCugSsU8ze9ZtiTHmwJkJFdjq61dMptJgirjSq86tGT+d87Pio+L78BYy/8bfAMQBTcZylYCw==",
"metadata": {}
}
]
},
"lastPersist": 1779311444980
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779311463552,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779311463552,
"delta": 55,
"attester": "9cf6e46ee9cfd6df28ded991cae3a8ac4ef12ddd77f9ba43514e3178f17ad6e8",
"signature": "7HDAF7W9R7RtgWM1EJtsR0rahF3CFs7+cJpdc50jYACguAydonAor2/z7wkl4BCtmfP4zBoP25PxpT8xizD+BA==",
"metadata": {}
}
]
},
"lastPersist": 1779311463553
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779311879895,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779311879895,
"delta": 55,
"attester": "12abc4b3614b172743a6413036da61e6201564a9a10cd673a47064415e73aa1e",
"signature": "dyMZCExZiy7iHZ0m4w4v3TeeVfIrnIEpbibi1pFTX43jgbyimYc1w0CnGqJRNO5rsTF5ximR71FKDqMBm91cDA==",
"metadata": {}
}
]
},
"lastPersist": 1779311879896
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779313150750,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779313150750,
"delta": 55,
"attester": "0fdb685f0288995edeab58e47aa89293b53ed542256729cc28f8a4d36a0c09f6",
"signature": "jN/+Z+WZu8D/HNCUfap6i1kXmunAx/ja9y5ZwNKY3Tt30+p8Fu2dD1Cw3ypLPwMqtsTSB0TrZkJCjYxoQiH2Cg==",
"metadata": {}
}
]
},
"lastPersist": 1779313150751
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779314988687,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779314988687,
"delta": 55,
"attester": "dbd358d15af6021800b1e2d0be35d467946677f1191035775688a47c451232af",
"signature": "ZT+iAPrcUpo5vKLVJavv8QhZevzw1oWPpue5Q0dA2TejxqZmzO3ZDYr349gEskosg9nx9QphR3xQCzGmEeGFDQ==",
"metadata": {}
}
]
},
"lastPersist": 1779314988688
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779316215015,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779316215015,
"delta": 55,
"attester": "4de5cdd1c1f6edf48c940d6b726efb5295a4e8affb5cca957f935339b21f7a47",
"signature": "ujWughqRCMNqv8pOnU3aEGJsycBXTPNCFwCzPJmzsZ+Xx04uWjgWIY3jaZnLkudsye8I0aL1fUqv1t1XRtyQDg==",
"metadata": {}
}
]
},
"lastPersist": 1779316215016
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779316798585,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779316798585,
"delta": 55,
"attester": "35fdef1455c8c5f1cac8e6655ff8a958ad636e4114a8b6c1b05f15be3066b338",
"signature": "V89Bo82M6mZTANJEJxtEGRjfur7ThoPje+mkEMmK2X+p7FfJJGtKVLGu8TOxKBwBd3I3hhtX3KvTZToIjXg2Cw==",
"metadata": {}
}
]
},
"lastPersist": 1779316798585
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779317165982,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779317165982,
"delta": 55,
"attester": "7e8c928ed891629b59a3cc1b23dcf7a4de3ea6e68ca7f4fbe7ba94291ffdd376",
"signature": "EISspfoG5vW+WUSa+ffqreGvagaF5t/1re5suuZnBjvRMrlpeCld1yLjhCMGGZEwJKCT1ULbgVZdOKGXiNjZCQ==",
"metadata": {}
}
]
},
"lastPersist": 1779317165983
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779317798103,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779317798103,
"delta": 55,
"attester": "88e68954b7274f299596be577ac459a237784e7c736c800a833e787699d043fd",
"signature": "J/+IeL7h0Fni6HGhM5605aVr/v5dEC6hTu1nZClOCAsm1K+okuLQydp302zxwBTUVSmEe0roDl2CvBSQ08mbBA==",
"metadata": {}
}
]
},
"lastPersist": 1779317798104
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779318295006,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779318295006,
"delta": 55,
"attester": "8700b04f5047f002da9fc98f7ebc9f9cb7b53ea493f9a92b34afcdf480647aa5",
"signature": "2d2YalakREIsW9KA8PoeZ7gEHfgXBF9Bmu55Uq64D8UDFd34nszEe7HWdddXNT1VtxQ+KXN8NHJuQgk+mb93Dw==",
"metadata": {}
}
]
},
"lastPersist": 1779318295007
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779318513303,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779318513303,
"delta": 55,
"attester": "8cb2482bc767e71838ac41b0193550f837138b45911defa14ea1af86578fe71c",
"signature": "llscBHQ+I0qXvv71NzQHYhj/byHMU11h/QVft8t08Ikr36oF/ziPMDUQ95HqiVC1lI8Fl+/zqHMjZqrp909CBQ==",
"metadata": {}
}
]
},
"lastPersist": 1779318513303
}
@@ -0,0 +1,21 @@
{
"scores": {
"persist-peer": {
"score": 55,
"lastUpdated": 1779319307621,
"attestationsCount": 1
}
},
"history": {
"persist-peer": [
{
"ts": 1779319307621,
"delta": 55,
"attester": "140bb698ef74986455027d1448bbf4bad2e98eee10fcbbc988efd3ab28662765",
"signature": "gbUHsgubpfe/YWm8eNqhG7eQ3n+DNYGPkyyaildYtwd/ZknxIIRR5Q6pkRFv5cTVzNLDUeU1F5wkIgRIRSMKAg==",
"metadata": {}
}
]
},
"lastPersist": 1779319307622
}

Some files were not shown because too many files have changed in this diff Show More