From 0175a6138dca2645958e1ab2cfaa5425296770f4 Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Fri, 23 Oct 2026 07:39:33 +0100 Subject: [PATCH 01/11] feat(api): report attestation freshness in readyz (#435) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- cmd/assay/main.go | 51 +++++++++++ cmd/assay/main_test.go | 42 +++++++++ docs/api.md | 43 +++++++++ docs/architecture.md | 6 +- docs/attester.md | 2 +- internal/api/api.go | 9 ++ internal/api/health.go | 174 ++++++++++++++++++++++++++++++++++-- internal/api/health_test.go | 132 ++++++++++++++++++++++++++- openapi.yaml | 45 ++++++++-- 9 files changed, 487 insertions(+), 17 deletions(-) diff --git a/cmd/assay/main.go b/cmd/assay/main.go index 4b3b495..f5af216 100644 --- a/cmd/assay/main.go +++ b/cmd/assay/main.go @@ -18,13 +18,16 @@ import ( "github.com/use-assay/assay/internal/api" "github.com/use-assay/assay/internal/attest" + "github.com/use-assay/assay/internal/attester" "github.com/use-assay/assay/internal/bundle" // Aliased because this file already has a local history() for the CLI's // evidence view; this package is the persisted observation store behind the // HTTP endpoint, a different thing. historystore "github.com/use-assay/assay/internal/history" "github.com/use-assay/assay/internal/mechanics" + "github.com/use-assay/assay/internal/registry" "github.com/use-assay/assay/internal/replay" + "github.com/use-assay/assay/internal/sac" "github.com/use-assay/assay/internal/scan" ) @@ -596,6 +599,7 @@ func runServe(args []string, log *slog.Logger) error { // records them in the observation history like any other evidence. srv := api.NewServer(log) srv.Scanner = newScanner(assetLists()) + configureRegistryStaleness(srv, log) if *historyPath != "" { store, err := historystore.Open(*historyPath) if err != nil { @@ -636,3 +640,50 @@ func runServe(args []string, log *slog.Logger) error { return nil } } + +func configureRegistryStaleness(srv *api.Server, log *slog.Logger) { + configPath := envOr("ASSAY_ATTESTED_SET", "attested.json") + config, err := attester.LoadConfig(configPath) + if err != nil { + srv.RegistryStaleness = &api.RegistryStalenessProber{ + ConfigurationError: fmt.Sprintf("attested-set config unavailable: %v", err), + } + log.Error("registry staleness reporting unavailable", "err", err) + return + } + + window := envOr("ASSAY_REGISTRY_STALE_AFTER", config.Cadence) + if window == "" { + window = "24h" + } + staleAfter, err := time.ParseDuration(window) + if err != nil || staleAfter <= 0 { + if err == nil { + err = fmt.Errorf("duration must be positive") + } + srv.RegistryStaleness = &api.RegistryStalenessProber{ + ConfigurationError: fmt.Sprintf("invalid ASSAY_REGISTRY_STALE_AFTER %q", window), + } + log.Error("registry staleness reporting unavailable", "window", window, "err", err) + return + } + + assets := make([]api.RegistryAsset, 0, len(config.Assets)) + for _, asset := range config.ParsedAssets() { + address, err := sac.Address(asset.Code, asset.Issuer, config.RegistryPassphrase()) + if err != nil { + srv.RegistryStaleness = &api.RegistryStalenessProber{ + ConfigurationError: fmt.Sprintf("derive SAC address for %s: %v", asset.String(), err), + } + log.Error("registry staleness reporting unavailable", "asset", asset.String(), "err", err) + return + } + assets = append(assets, api.RegistryAsset{Asset: asset.String(), SAC: address}) + } + + srv.RegistryStaleness = &api.RegistryStalenessProber{ + Reader: registry.New(os.Getenv("ASSAY_RPC_URL"), envOr("ASSAY_CONTRACT_ID", config.ContractID)), + Assets: assets, + Window: staleAfter, + } +} diff --git a/cmd/assay/main_test.go b/cmd/assay/main_test.go index 26caebf..51b87d8 100644 --- a/cmd/assay/main_test.go +++ b/cmd/assay/main_test.go @@ -6,13 +6,19 @@ import ( "encoding/json" "errors" "fmt" + "io" "log/slog" + "os" + "path/filepath" "strings" "testing" "time" + "github.com/use-assay/assay/internal/api" "github.com/use-assay/assay/internal/attest" "github.com/use-assay/assay/internal/mechanics" + "github.com/use-assay/assay/internal/registry" + "github.com/use-assay/assay/internal/sac" ) const cliIssuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" @@ -63,6 +69,7 @@ func TestDispatch(t *testing.T) { if err := runWith([]string{"scan", asset}, d); err != nil { t.Fatalf("scan: %v", err) } + var got mechanics.Report if err := json.Unmarshal(out.Bytes(), &got); err != nil { t.Fatalf("scan output is not JSON: %v", err) @@ -125,6 +132,41 @@ func TestDispatch(t *testing.T) { }) } +func TestConfigureRegistryStaleness(t *testing.T) { + configPath := filepath.Join(t.TempDir(), "attested.json") + config := fmt.Sprintf(`{ + "network": "testnet", + "contract_id": "%s", + "cadence": "24h", + "assets": [{"asset": "USDC-%s"}] + }`, registry.DefaultContractID, cliIssuer) + if err := os.WriteFile(configPath, []byte(config), 0o600); err != nil { + t.Fatalf("write attested-set config: %v", err) + } + t.Setenv("ASSAY_ATTESTED_SET", configPath) + t.Setenv("ASSAY_REGISTRY_STALE_AFTER", "12h") + t.Setenv("ASSAY_RPC_URL", "http://127.0.0.1:9000") + t.Setenv("ASSAY_CONTRACT_ID", "") + + srv := api.NewServer(slog.New(slog.NewTextHandler(io.Discard, nil))) + configureRegistryStaleness(srv, srv.Log) + + if srv.RegistryStaleness == nil || srv.RegistryStaleness.ConfigurationError != "" { + t.Fatalf("registry config = %+v", srv.RegistryStaleness) + } + if srv.RegistryStaleness.Window != 12*time.Hour { + t.Errorf("window = %s, want 12h", srv.RegistryStaleness.Window) + } + if len(srv.RegistryStaleness.Assets) != 1 || + srv.RegistryStaleness.Assets[0].Asset != "USDC-"+cliIssuer || + !sac.IsContractAddress(srv.RegistryStaleness.Assets[0].SAC) { + t.Fatalf("configured registry assets = %+v", srv.RegistryStaleness.Assets) + } + if srv.RegistryStaleness.Reader == nil { + t.Fatal("registry reader was not configured") + } +} + // TestAttestationRawGolden pins the -raw format. The Makefile parses it // positionally with `cut -f1 -f2 -f3`, so the separators, the field order and // the trailing newline are a contract. diff --git a/docs/api.md b/docs/api.md index 4ccca15..ef5b76e 100644 --- a/docs/api.md +++ b/docs/api.md @@ -144,3 +144,46 @@ undetermined asset says nothing about any other asset on the page. seconds. Exposure is rate-limited per client address because one request runs a full scan per asset; `/api/v1/scan` is not affected. - `502 Bad Gateway`: The account's trustline list could not be fetched. + +## Readiness and registry freshness + +`GET /readyz` continues to report scan-source reachability in `status`, +`reason`, and `upstreams`. It also returns `registry_staleness`, an +informational snapshot of the configured attested set: + +```json +{ + "status": "stale", + "checked_at": "2026-10-23T06:00:00Z", + "window_secs": 86400, + "asset_count": 10, + "attested_count": 10, + "unattested_count": 0, + "stale_count": 2, + "oldest_attestation": { + "asset": "AQUA-GBNZ...", + "attested_at": "2026-10-20T12:00:00Z", + "age_secs": 237600 + } +} +``` + +`status` is `current` when every attestation is within the window, `stale` +when one or more is older than the window, `incomplete` when an asset has no +attestation and none is stale, or `unknown` when the set is not configured or +an RPC read fails. Staleness is strictly older than the configured window; +an attestation exactly at the boundary is current. `oldest_attestation` is the +oldest present record; unattested assets are counted separately. An RPC +failure makes the aggregate `unknown` rather than presenting partial counts. +The registry status never changes the `/readyz` HTTP status or readiness +`status`; readiness remains based on scan-source probes. + +The default set is [`attested.json`](../attested.json). Set +`ASSAY_ATTESTED_SET` to use another attester config. Its `network` and +`contract_id` identify the registry and determine the network-specific SAC +addresses. The staleness window defaults to the config's `cadence` (or `24h` +when cadence is empty) and can be overridden with `ASSAY_REGISTRY_STALE_AFTER` +as a Go duration. `ASSAY_RPC_URL` selects the Soroban RPC endpoint (the +registry reader's testnet endpoint is the default); use an endpoint for the +configured registry network. Results share `/readyz`'s in-memory cache and +are refreshed with readiness rounds, not on every scrape. diff --git a/docs/architecture.md b/docs/architecture.md index 3a608b7..a3416ee 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -45,7 +45,7 @@ Every Go package, its responsibility, and the boundary it must respect. | `cmd/attestfixture` | Derives `attest()` arguments from one labelled fixture for the local-network end-to-end test. | Offline test helper; reads fixtures through `internal/eval` and never fetches a source. | | `cmd/eval` | Records and diffs the labelled eval baseline. | Offline; reads fixtures through `internal/eval`. | | `cmd/refreshfixture` | Re-captures corpus fixtures from recorded live source URLs to detect upstream drift. | Offline maintenance only; never run in CI or live scan. | -| `internal/api` | HTTP API (`/api/v1/scan`, `/api/v1/history`, `/healthz`) and the embedded single-file UI. | Inbound HTTP only. Does not fetch sources; it calls the scanner. Its one `horizon` import is the `ErrNotFound` sentinel, not a fetch. | +| `internal/api` | HTTP API (`/api/v1/scan`, `/api/v1/history`, `/healthz`) and the embedded single-file UI. | Serves inbound HTTP and reports registry freshness through `internal/registry`; scan sources remain delegated to the scanner. | | `internal/attester` | Attested-set config, the dry-run pass and its exit codes, the dry-run diff, and the issuer watcher. | Calls the scanner (or replays fixtures through `internal/eval`) and reads Horizon operations through `internal/horizon`. No key material and no transaction submission. | | `internal/assetlist` | Fetches and parses SEP-0042 Stellar Asset Lists to provide curated asset metadata and claims. | Outbound HTTP. Leaf package; called by `internal/scan`. | | `internal/cache` | Thread-safe in-memory TTL cache for HTTP responses and reputation queries. | No I/O. In-memory storage only; leaf package used by `internal/stellarexpert`. | @@ -94,10 +94,13 @@ Two directions are worth stating explicitly because they are load-bearing: flowchart TD CMDASSAY["cmd/assay"] --> API["internal/api"] CMDASSAY --> ATTEST["internal/attest"] + CMDASSAY --> ATTSTER["internal/attester"] CMDASSAY --> BUNDLE["internal/bundle"] CMDASSAY --> HIST["internal/history"] CMDASSAY --> MECH["internal/mechanics"] + CMDASSAY --> REG["internal/registry"] CMDASSAY --> SCAN["internal/scan"] + CMDASSAY --> SAC["internal/sac"] CMDATTESTFIXTURE["cmd/attestfixture"] --> ATTEST CMDATTESTFIXTURE --> EVAL["internal/eval"] @@ -109,6 +112,7 @@ flowchart TD API --> HIST API --> HZ["internal/horizon"] API --> MECH + API --> REG API --> SCAN API --> TEMP["internal/temporal"] diff --git a/docs/attester.md b/docs/attester.md index a3206c0..51b91e6 100755 --- a/docs/attester.md +++ b/docs/attester.md @@ -33,7 +33,7 @@ go through `make attest`, one asset at a time. | --- | --- | | `network` | The **registry's** network: `testnet`, `pubnet`, `futurenet`, `standalone` or a full passphrase. The SAC address is derived for this network, not the scan's ([why](attestation-writer.md#2-what-is-signed)). | | `contract_id` | The registry contract. Validated as a `C…` address. | -| `cadence` | The re-attestation schedule, as a Go duration. Recorded, not acted on by the dry-run. | +| `cadence` | The re-attestation schedule, as a Go duration. Recorded, not acted on by the dry-run; `/readyz` uses it as the default staleness window for this set. | | `watch_interval` | How often `--watch` polls each issuer. Default `60s`. | | `horizon_url` | The Horizon `--watch` polls. Default pubnet, where the attested assets live. | | `fixtures_dir` | Offline mode: scan from committed fixtures instead of live sources. Each asset must then name its `fixture` subject. | diff --git a/internal/api/api.go b/internal/api/api.go index 0006d4d..14e760d 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -37,6 +37,9 @@ type Server struct { // pointer so a test can wire the prober to a stub upstream; when nil, // handleReadyz builds one from the server's own clients. Health *HealthProber + // RegistryStaleness reads the configured attested set for /readyz. Its + // result is informational and does not affect scan readiness. + RegistryStaleness *RegistryStalenessProber // Metrics holds the scan outcome and per-source failure counters served // at GET /metrics. Nil-safe: the handlers treat a nil Metrics as // "nothing counted", never as a crash. @@ -76,6 +79,12 @@ var Routes = []string{ // per-request logger — the correlation the outcome log line depends on is // installed once, here, rather than remembered per handler. func (s *Server) Handler() http.Handler { + // Build the prober once after callers have had a chance to configure the + // scanner and registry reader. Rebuilding it per request would bypass its + // cache and turn /readyz scrapes into upstream and RPC traffic. + if s.Health == nil { + s.Health = NewHealthProber(s) + } mux := http.NewServeMux() // Exposure is one request to many scans, so it is wrapped in the rate // limit at registration — the bucket is built once per Handler, not per diff --git a/internal/api/health.go b/internal/api/health.go index 321d5e8..0b93d6f 100644 --- a/internal/api/health.go +++ b/internal/api/health.go @@ -2,11 +2,14 @@ package api import ( "context" + "errors" "fmt" "io" "net/http" "sync" "time" + + "github.com/use-assay/assay/internal/registry" ) // Everything in this file answers one question — "can Assay do its job right @@ -143,6 +146,9 @@ type HealthProber struct { // upstreams is the set of upstreams this prober reports on, captured when // the prober is built. upstreams []upstream + // Registry checks the configured attested set. Its result is informational + // and never changes readiness status. + Registry *RegistryStalenessProber mu sync.Mutex last time.Time // start of the most recent real probe round @@ -160,7 +166,10 @@ type probeFlight struct { // NewHealthProber returns a prober wired to the same upstreams the server's // scanner reads from. func NewHealthProber(s *Server) *HealthProber { - return &HealthProber{upstreams: probeEndpoints(s)} + return &HealthProber{ + upstreams: probeEndpoints(s), + Registry: s.RegistryStaleness, + } } // now is the prober's clock, overridable in tests. @@ -191,6 +200,149 @@ type Readiness struct { // Upstreams reports one entry per checkable source, in the fixed order // the prober was built with, so a diff between two answers is stable. Upstreams []UpstreamStatus `json:"upstreams"` + // RegistryStaleness is informational. A stale or unavailable registry + // read never changes the readiness status. + RegistryStaleness RegistryStaleness `json:"registry_staleness"` +} + +// RegistrySafetyReader reads one attestation from the configured registry. +type RegistrySafetyReader interface { + GetSafety(context.Context, string) (*registry.Safety, error) +} + +// RegistryAsset identifies one configured attested-set member and its +// network-specific Stellar Asset Contract address. +type RegistryAsset struct { + Asset string + SAC string +} + +// RegistryStalenessProber reads the configured attested set. The enclosing +// HealthProber caches its result with the rest of the readiness round. +type RegistryStalenessProber struct { + Reader RegistrySafetyReader + Assets []RegistryAsset + Window time.Duration + // ConfigurationError keeps a bad or unavailable local config visible as + // unknown without making the scanner unavailable. + ConfigurationError string +} + +// RegistryStaleness describes freshness of the configured on-chain set. +type RegistryStaleness struct { + Status string `json:"status"` + Reason string `json:"reason,omitempty"` + CheckedAt time.Time `json:"checked_at"` + WindowSecs int64 `json:"window_secs"` + AssetCount int `json:"asset_count"` + AttestedCount int `json:"attested_count"` + UnattestedCount int `json:"unattested_count"` + StaleCount int `json:"stale_count"` + OldestAttestation *OldestAttestation `json:"oldest_attestation,omitempty"` +} + +// OldestAttestation is the oldest present entry in the configured set. +type OldestAttestation struct { + Asset string `json:"asset"` + AttestedAt time.Time `json:"attested_at"` + AgeSecs int64 `json:"age_secs"` +} + +// Check reads every configured set member and compares attested_at with the +// configured window. Any RPC failure makes the aggregate unknown rather than +// presenting partial counts as a complete set. +func (p *RegistryStalenessProber) Check(ctx context.Context, now time.Time) RegistryStaleness { + windowSecs := int64(0) + assetCount := 0 + if p != nil && p.Window > 0 { + windowSecs = int64(p.Window.Seconds()) + if p.Window%time.Second != 0 { + windowSecs++ + } + } + if p != nil { + assetCount = len(p.Assets) + } + unknown := func(reason string) RegistryStaleness { + return RegistryStaleness{ + Status: "unknown", + Reason: reason, + CheckedAt: now, + WindowSecs: windowSecs, + AssetCount: assetCount, + } + } + if p == nil { + return unknown("registry staleness is not configured") + } + if p.ConfigurationError != "" { + return unknown(p.ConfigurationError) + } + if p.Reader == nil || len(p.Assets) == 0 || p.Window <= 0 { + return unknown("registry staleness is not configured") + } + + type result struct { + safety *registry.Safety + err error + } + results := make([]result, len(p.Assets)) + var wg sync.WaitGroup + for i, asset := range p.Assets { + wg.Add(1) + go func(i int, asset RegistryAsset) { + defer wg.Done() + results[i].safety, results[i].err = p.Reader.GetSafety(ctx, asset.SAC) + }(i, asset) + } + wg.Wait() + + status := RegistryStaleness{ + Status: "current", + CheckedAt: now, + WindowSecs: windowSecs, + AssetCount: len(p.Assets), + } + const maxUnixTimestamp = uint64(1<<63 - 1) + for i, res := range results { + switch { + case errors.Is(res.err, registry.ErrNotAttested): + status.UnattestedCount++ + continue + case res.err != nil: + return unknown(fmt.Sprintf("registry RPC read failed for %s", p.Assets[i].Asset)) + case res.safety == nil: + return unknown(fmt.Sprintf("registry returned no attestation result for %s", p.Assets[i].Asset)) + case res.safety.AttestedAt > maxUnixTimestamp: + return unknown(fmt.Sprintf("registry returned an invalid attested_at for %s", p.Assets[i].Asset)) + } + + attestedAt := time.Unix(int64(res.safety.AttestedAt), 0).UTC() + age := now.Sub(attestedAt) + if age < 0 { + age = 0 + } + status.AttestedCount++ + if age > p.Window { + status.StaleCount++ + } + if status.OldestAttestation == nil || + attestedAt.Before(status.OldestAttestation.AttestedAt) { + status.OldestAttestation = &OldestAttestation{ + Asset: p.Assets[i].Asset, + AttestedAt: attestedAt, + AgeSecs: int64(age.Seconds()), + } + } + } + + switch { + case status.StaleCount > 0: + status.Status = "stale" + case status.UnattestedCount > 0: + status.Status = "incomplete" + } + return status } // UpstreamStatus is one source's reachability as the readiness round measured @@ -277,7 +429,7 @@ func (p *HealthProber) Run(ctx context.Context) Readiness { case <-ctx.Done(): // The caller gave up. Nothing is reported — in particular not // healthy. The next caller runs the round. - return Readiness{Status: readyStateUnknown, CheckedAt: now} + return unknownReadiness(now) } } @@ -327,6 +479,7 @@ func stampAge(ans *Readiness, now time.Time) { func (p *HealthProber) probeAll(ctx context.Context, now time.Time) Readiness { ups := p.upstreams results := make([]UpstreamStatus, len(ups)) + var registryStatus RegistryStaleness client := p.HTTP if client == nil { @@ -334,6 +487,11 @@ func (p *HealthProber) probeAll(ctx context.Context, now time.Time) Readiness { } var wg sync.WaitGroup + wg.Add(1) + go func() { + defer wg.Done() + registryStatus = p.Registry.Check(ctx, now) + }() for i, u := range ups { wg.Add(1) go func(i int, u upstream) { @@ -358,8 +516,9 @@ func (p *HealthProber) probeAll(ctx context.Context, now time.Time) Readiness { } ans := Readiness{ - CheckedAt: now, - Upstreams: results, + CheckedAt: now, + Upstreams: results, + RegistryStaleness: registryStatus, } switch { case horizonDown: @@ -422,9 +581,10 @@ func (p *HealthProber) probeOne(ctx context.Context, client *http.Client, u upst // never healthy. func unknownReadiness(now time.Time) Readiness { return Readiness{ - Status: readyStateUnknown, - Reason: "the readiness round could not be observed; reported as unknown rather than as healthy", - CheckedAt: now, + Status: readyStateUnknown, + Reason: "the readiness round could not be observed; reported as unknown rather than as healthy", + CheckedAt: now, + RegistryStaleness: RegistryStaleness{Status: "unknown", Reason: "readiness round could not be observed", CheckedAt: now}, } } diff --git a/internal/api/health_test.go b/internal/api/health_test.go index 109a61a..71ac01d 100644 --- a/internal/api/health_test.go +++ b/internal/api/health_test.go @@ -3,16 +3,19 @@ package api_test import ( "context" "encoding/json" + "errors" "io" "log/slog" "net/http" "net/http/httptest" + "strings" "sync" "sync/atomic" "testing" "time" "github.com/use-assay/assay/internal/api" + "github.com/use-assay/assay/internal/registry" ) // newProbeServer returns a Server whose scanner is wired to the given stub @@ -79,11 +82,52 @@ func (s *upstreamStub) ServeHTTP(w http.ResponseWriter, _ *http.Request) { _, _ = w.Write([]byte("ok")) } +type registryStub struct { + mu sync.Mutex + records map[string]*registry.Safety + errors map[string]error + calls int +} + +func (s *registryStub) GetSafety(_ context.Context, asset string) (*registry.Safety, error) { + s.mu.Lock() + s.calls++ + s.mu.Unlock() + if err := s.errors[asset]; err != nil { + return nil, err + } + record, ok := s.records[asset] + if !ok { + return nil, registry.ErrNotAttested + } + return record, nil +} + +func (s *registryStub) Calls() int { + s.mu.Lock() + defer s.mu.Unlock() + return s.calls +} + // readyBody is the decoded /readyz response. type readyBody struct { - Status string `json:"status"` - Reason string `json:"reason"` - AgeSecs int64 `json:"age_secs"` + Status string `json:"status"` + Reason string `json:"reason"` + AgeSecs int64 `json:"age_secs"` + Registry struct { + Status string `json:"status"` + Reason string `json:"reason"` + WindowSecs int64 `json:"window_secs"` + AssetCount int `json:"asset_count"` + AttestedCount int `json:"attested_count"` + UnattestedCount int `json:"unattested_count"` + StaleCount int `json:"stale_count"` + Oldest *struct { + Asset string `json:"asset"` + AttestedAt time.Time `json:"attested_at"` + AgeSecs int64 `json:"age_secs"` + } `json:"oldest_attestation"` + } `json:"registry_staleness"` Upstreams []struct { Name string `json:"name"` Kind string `json:"kind"` @@ -93,6 +137,88 @@ type readyBody struct { } `json:"upstreams"` } +func TestReadyzReportsAndCachesRegistryStaleness(t *testing.T) { + now := time.Date(2026, 10, 23, 6, 0, 0, 0, time.UTC) + horizon := httptest.NewServer(newUpstreamStub()) + defer horizon.Close() + expert := httptest.NewServer(newUpstreamStub()) + defer expert.Close() + reader := ®istryStub{ + records: map[string]*registry.Safety{ + "sac-fresh": {AttestedAt: uint64(now.Add(-24 * time.Hour).Unix())}, + "sac-stale": {AttestedAt: uint64(now.Add(-25 * time.Hour).Unix())}, + }, + errors: map[string]error{}, + } + srv, _ := newProbeServer(horizon.URL, expert.URL) + srv.RegistryStaleness = &api.RegistryStalenessProber{ + Reader: reader, + Assets: []api.RegistryAsset{ + {Asset: "FRESH-G...", SAC: "sac-fresh"}, + {Asset: "STALE-G...", SAC: "sac-stale"}, + {Asset: "MISSING-G...", SAC: "sac-missing"}, + }, + Window: 24 * time.Hour, + } + srv.Health = api.NewHealthProber(srv) + srv.Health.Now = func() time.Time { return now } + h := srv.Handler() + + _, body := getReadyz(h) + if body.Registry.Status != "stale" { + t.Fatalf("registry status = %q, want stale", body.Registry.Status) + } + if body.Registry.WindowSecs != 24*60*60 || + body.Registry.AssetCount != 3 || + body.Registry.AttestedCount != 2 || + body.Registry.UnattestedCount != 1 || + body.Registry.StaleCount != 1 { + t.Fatalf("unexpected registry counts: %+v", body.Registry) + } + if body.Registry.Oldest == nil || + body.Registry.Oldest.Asset != "STALE-G..." || + body.Registry.Oldest.AgeSecs != 25*60*60 { + t.Fatalf("oldest attestation = %+v", body.Registry.Oldest) + } + + _, cached := getReadyz(h) + if cached.Registry.Status != "stale" || reader.Calls() != 3 { + t.Fatalf("cached registry status = %q; RPC reads = %d, want stale and 3", + cached.Registry.Status, reader.Calls()) + } +} + +func TestReadyzReportsRegistryRPCFailureAsUnknown(t *testing.T) { + horizon := httptest.NewServer(newUpstreamStub()) + defer horizon.Close() + expert := httptest.NewServer(newUpstreamStub()) + defer expert.Close() + reader := ®istryStub{ + records: map[string]*registry.Safety{}, + errors: map[string]error{"sac-fail": errors.New("provider credential must not be exposed")}, + } + srv, _ := newProbeServer(horizon.URL, expert.URL) + srv.RegistryStaleness = &api.RegistryStalenessProber{ + Reader: reader, + Assets: []api.RegistryAsset{{Asset: "USDC-G...", SAC: "sac-fail"}}, + Window: 24 * time.Hour, + } + srv.Health = api.NewHealthProber(srv) + h := srv.Handler() + + rec, body := getReadyz(h) + if rec.Code != http.StatusOK || body.Status != "ready" { + t.Fatalf("readiness = %d %q, want 200 ready despite registry outage", rec.Code, body.Status) + } + if body.Registry.Status != "unknown" || + body.Registry.Reason != "registry RPC read failed for USDC-G..." { + t.Fatalf("registry failure status = %+v", body.Registry) + } + if strings.Contains(rec.Body.String(), "credential") { + t.Fatal("registry error response exposed provider credential detail") + } +} + func getReadyz(h http.Handler) (*httptest.ResponseRecorder, readyBody) { rec := httptest.NewRecorder() h.ServeHTTP(rec, httptest.NewRequest(http.MethodGet, "/readyz", nil)) diff --git a/openapi.yaml b/openapi.yaml index 1a3359a..a063d26 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -247,19 +247,20 @@ paths: example: ok /readyz: get: - summary: Per-upstream readiness check + summary: Upstream readiness and registry freshness check description: >- The HTTP status tracks the body's status: 200 ready; 503 degraded, - unavailable, or unknown. No failing probe reports ready. + unavailable, or unknown. Registry staleness is informational and does + not change readiness. responses: '200': - description: Every checkable upstream is reachable. + description: Every checkable scan upstream is reachable. content: application/json: schema: $ref: '#/components/schemas/Readiness' '503': - description: Degraded, unavailable, or unknown; see status and upstreams. + description: A scan upstream is degraded, unavailable, or unknown; see status and upstreams. content: application/json: schema: @@ -278,7 +279,7 @@ components: schemas: Readiness: type: object - required: [status, checked_at, age_secs, upstreams] + required: [status, checked_at, age_secs, upstreams, registry_staleness] properties: status: type: string @@ -308,3 +309,37 @@ components: type: string probe_url: type: string + registry_staleness: + type: object + description: Informational registry freshness; does not affect readiness status. + required: [status, checked_at, window_secs, asset_count, attested_count, unattested_count, stale_count] + properties: + status: + type: string + enum: [current, stale, incomplete, unknown] + reason: + type: string + checked_at: + type: string + format: date-time + window_secs: + type: integer + asset_count: + type: integer + attested_count: + type: integer + unattested_count: + type: integer + stale_count: + type: integer + oldest_attestation: + type: object + required: [asset, attested_at, age_secs] + properties: + asset: + type: string + attested_at: + type: string + format: date-time + age_secs: + type: integer From 02a4808ab4ee9d202cbeebfb80ef0bed86548373 Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Fri, 23 Oct 2026 08:01:36 +0100 Subject: [PATCH 02/11] fix: reconcile stacked registry changes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- cmd/assay/main.go | 38 ++- cmd/assay/native_asset_test.go | 2 +- cmd/assay/usage_doc_test.go | 2 +- docs/multi-attestor.md | 3 +- internal/api/api_test.go | 1 - internal/api/outcome_test.go | 1 + internal/attest/attest.go | 32 +-- internal/attest/encoding_layout_test.go | 5 + internal/attest/golden_test.go | 3 +- internal/attester/watch_test.go | 7 +- internal/eval/corpus.go | 351 ++++++++++++++---------- internal/horizon/client.go | 61 ---- internal/mechanics/eval_test.go | 1 + internal/scan/scan.go | 57 ++-- internal/sep1/sep1.go | 8 + 15 files changed, 285 insertions(+), 287 deletions(-) diff --git a/cmd/assay/main.go b/cmd/assay/main.go index 8112c24..36c39d1 100644 --- a/cmd/assay/main.go +++ b/cmd/assay/main.go @@ -236,7 +236,7 @@ func runScan(args []string, d commandDeps) error { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - report, err := d.scan(ctx, asset, assetLists()) + report, err := scanFn(ctx, asset) if err != nil { return err } @@ -305,7 +305,9 @@ func wireTransport(s *scan.Scanner, rt http.RoundTripper) { // scanner configured to consult them. func scanFuncFor(lists []string, d commandDeps) func(context.Context, mechanics.Asset) (*mechanics.Report, error) { if len(lists) == 0 { - return d.scan + return func(ctx context.Context, asset mechanics.Asset) (*mechanics.Report, error) { + return d.scan(ctx, asset, lists) + } } return newScanner(lists).Scan } @@ -394,10 +396,37 @@ func runAttestation(args []string, d commandDeps) error { return fmt.Errorf("attestation: %w", err) } + scanFn := scanFuncFor(assetLists(), d) + finish := func() {} + recordingDir := "" + if *bundleOut != "" { + recordingDir, err = os.MkdirTemp("", "assay-bundle-*") + if err != nil { + return fmt.Errorf("create bundle recording directory: %w", err) + } + defer func() { + if err := os.RemoveAll(recordingDir); err != nil { + _, _ = fmt.Fprintln(d.stderr, "assay: bundle recording directory not removed:", err) + } + }() + scanFn, finish, err = scanFuncForRecording(assetLists(), d, recordingDir, "") + if err != nil { + return err + } + } + finished := false + finishRecording := func() { + if !finished { + finish() + finished = true + } + } + defer finishRecording() + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - report, err := d.scan(ctx, asset, assetLists()) + report, err := scanFn(ctx, asset) if err != nil { return err } @@ -413,7 +442,7 @@ func runAttestation(args []string, d commandDeps) error { // Close the recording before packaging: the manifest and bodies are // written by Close, and a bundle built from a still-open recorder would // be missing every response. - finish() + finishRecording() if err := bundle.Write(*bundleOut, report, params, recordingDir); err != nil { return fmt.Errorf("write verification bundle %s: %w", *bundleOut, err) } @@ -576,7 +605,6 @@ func runServe(args []string, log *slog.Logger) error { return fmt.Errorf("serve: %w", err) } - srv := api.NewServer(log) // The server is where a list configuration matters most: every scan it // serves consults the same configured lists, attributed the same way, and // records them in the observation history like any other evidence. diff --git a/cmd/assay/native_asset_test.go b/cmd/assay/native_asset_test.go index 0f349cc..cd44cb5 100644 --- a/cmd/assay/native_asset_test.go +++ b/cmd/assay/native_asset_test.go @@ -26,7 +26,7 @@ func TestNativeAssetIsRefusedBeforeAnyScan(t *testing.T) { d := commandDeps{ stdout: out, stderr: &bytes.Buffer{}, - scan: func(context.Context, mechanics.Asset) (*mechanics.Report, error) { + scan: func(context.Context, mechanics.Asset, []string) (*mechanics.Report, error) { called = true return testReport(), nil }, diff --git a/cmd/assay/usage_doc_test.go b/cmd/assay/usage_doc_test.go index 95a0793..9a97301 100644 --- a/cmd/assay/usage_doc_test.go +++ b/cmd/assay/usage_doc_test.go @@ -25,7 +25,7 @@ func TestDocsUsageBlockMatchesBinary(t *testing.T) { } const startMarker = "```\nusage:\n" - text := string(doc) + text := strings.ReplaceAll(string(doc), "\r\n", "\n") start := strings.Index(text, startMarker) if start < 0 { t.Fatalf("%s has no fenced usage block", docPath) diff --git a/docs/multi-attestor.md b/docs/multi-attestor.md index 442c465..2e28c79 100644 --- a/docs/multi-attestor.md +++ b/docs/multi-attestor.md @@ -318,7 +318,7 @@ The open questions for Scheme C are resolved as follows: - **Deprecation schedule:** Single-attestor admin writes are slated for deprecation once independent scanner operators are online; read functions will remain available for at least two interface versions. ### 3. Recommended default attestor set -- Assay publishes a recommended default set of independent attestors in [deployment.md](deployment.md#recommended-attestor-sets). +- Assay publishes a recommended default set of independent attestors in this section. - Operators must run on separate cloud/hardware infrastructure with different signing keys. - Integrators are explicitly informed in documentation that consumer-chosen quorum requires choosing independent operators; naming multiple endpoints operated by the same party collapses trust back to Scheme A. @@ -327,4 +327,3 @@ The open questions for Scheme C are resolved as follows: - **Contested visibility:** - `quorum()` returns `Quorum::Contested(count)` (where `count >= threshold`) when responding attestors disagree on severity or flags. Observers and the scanner pipeline can monitor quorum evaluation or poll `get_attestation` for active assets to alert when an attestor disagrees with consensus. - Conservative aggregation ensures that during a `Contested` condition, safety is preserved because danger is never lowered. - diff --git a/internal/api/api_test.go b/internal/api/api_test.go index 27cdb03..cfe9795 100644 --- a/internal/api/api_test.go +++ b/internal/api/api_test.go @@ -10,7 +10,6 @@ import ( "testing" "github.com/use-assay/assay/internal/api" - "strings" ) func newTestServer() http.Handler { diff --git a/internal/api/outcome_test.go b/internal/api/outcome_test.go index 1451021..9344a43 100644 --- a/internal/api/outcome_test.go +++ b/internal/api/outcome_test.go @@ -12,6 +12,7 @@ import ( "github.com/use-assay/assay/internal/api" "github.com/use-assay/assay/internal/scan" + "github.com/use-assay/assay/internal/stellarexpert" ) // A valid mainnet asset: USDC. Its issuer has no home_domain dependency in diff --git a/internal/attest/attest.go b/internal/attest/attest.go index 532b42c..85bffbf 100644 --- a/internal/attest/attest.go +++ b/internal/attest/attest.go @@ -43,17 +43,6 @@ import ( // because the attestations it describes were hashed without one (#269). const PreimageVersion = "assay-evidence-v1" -// ScannerIdentity is the module version that produced the report. -var ScannerIdentity = scannerIdentity() - -func scannerIdentity() string { - info, ok := debug.ReadBuildInfo() - if !ok || info.Main.Version == "" || info.Main.Version == "(devel)" { - return "devel" - } - return info.Main.Version -} - // PreimageVersionCheckSet is the encoding used once a report binds its check // set. It adds a `checks` line naming the checks the engine actually ran, so a // report produced by an engine with a check removed cannot hash the same as one @@ -465,15 +454,10 @@ func renderPreimage(rep *mechanics.Report, version string) string { line(&b, "escalated", strconv.FormatBool(rep.Escalated)) line(&b, "mechanics", strconv.FormatUint(uint64(rep.Mechanics), 10)) line(&b, "accountability", string(rep.Accountability)) - // A bound check set is written as its own line so a verifier can name the - // checks a report is missing. Reports with no check set omit it entirely, - // keeping their bytes identical to the v1 encoding. - if len(rep.CheckSet) > 0 { + if rank >= 2 { checks := append([]string(nil), rep.CheckSet...) sort.Strings(checks) line(&b, "checks", strings.Join(checks, ",")) - } else { - line(&b, "checks", "") } if rank >= 3 { line(&b, "network", string(rep.Network)) @@ -502,12 +486,14 @@ func renderPreimage(rep *mechanics.Report, version string) string { func preimageVersion(rep *mechanics.Report) (string, error) { cs, net, sb := len(rep.CheckSet) > 0, rep.Network != "", rep.ScannerBound switch { - case rep.Network != "" || rep.ScannerBound: - return PreimageVersionNetwork - case len(rep.CheckSet) > 0: - return PreimageVersionCheckSet - default: - return PreimageVersion + case !cs && !net && !sb: + return PreimageVersion, nil + case cs && !net && !sb: + return PreimageVersionCheckSet, nil + case cs && net && !sb: + return PreimageVersionNetwork, nil + case cs && net && sb: + return PreimageVersionScanner, nil } return "", fmt.Errorf("%w: check set %t, network %t, scanner %t "+ "(a network needs a check set; a scanner needs both)", ErrUnencodable, cs, net, sb) diff --git a/internal/attest/encoding_layout_test.go b/internal/attest/encoding_layout_test.go index 4067573..ac3a9fc 100644 --- a/internal/attest/encoding_layout_test.go +++ b/internal/attest/encoding_layout_test.go @@ -13,6 +13,11 @@ import ( "github.com/use-assay/assay/internal/mechanics" ) +func firstLine(s string) string { + line, _, _ := strings.Cut(s, "\n") + return line +} + // The layout each tag names, as documented in docs/contract-interface.md: // the keys of the lines between the version line and the evidence lines. var documentedLayouts = map[string][]string{ diff --git a/internal/attest/golden_test.go b/internal/attest/golden_test.go index 2cb8b7f..ca66dba 100644 --- a/internal/attest/golden_test.go +++ b/internal/attest/golden_test.go @@ -136,7 +136,8 @@ func TestGoldenFilesHaveCanonicalLineEndings(t *testing.T) { } version := strings.SplitN(string(raw), "\n", 2)[0] switch version { - case attest.PreimageVersion, attest.PreimageVersionCheckSet, attest.PreimageVersionNetwork: + case attest.PreimageVersion, attest.PreimageVersionCheckSet, attest.PreimageVersionNetwork, + attest.PreimageVersionScanner: default: t.Errorf("%s starts with unsupported version line %q", e, version) } diff --git a/internal/attester/watch_test.go b/internal/attester/watch_test.go index 0c549b6..e756b3c 100755 --- a/internal/attester/watch_test.go +++ b/internal/attester/watch_test.go @@ -89,7 +89,12 @@ func newFixtureHorizon(t *testing.T) (*httptest.Server, *fakeHorizon) { case r.URL.Path == "/accounts/"+watchedIssuer: _ = json.NewEncoder(w).Encode(map[string]any{ "account_id": watchedIssuer, - "flags": map[string]bool{"auth_required": true}, + "flags": map[string]bool{ + "auth_required": true, + "auth_revocable": false, + "auth_immutable": false, + "auth_clawback_enabled": false, + }, }) case r.URL.Path == "/accounts/"+watchedIssuer+"/operations" && q.Get("order") == "desc": _, _ = w.Write([]byte(`{"_embedded":{"records":[{"id":"250000000000000000","paging_token":"250000000000000000","type":"payment","transaction_successful":true}]}}`)) diff --git a/internal/eval/corpus.go b/internal/eval/corpus.go index 18616ab..747f2c8 100644 --- a/internal/eval/corpus.go +++ b/internal/eval/corpus.go @@ -125,157 +125,206 @@ type fileEntry struct { // expected is the labelled verdict. State selects between the two states: // "valid" carries a full verdict, "unknown" refuses to state one. // -// The per-check labels are derived from the same fixtures the aggregate labels -// are, so the two cannot describe different runs: TestEval and TestEvalPerCheck -// both iterate this corpus. -func Corpus() []Label { - return []Label{ - { - Dir: "aqua-clear-verified", - Why: "no auth flags at all: the issuer has no power over holders, and a " + - "reciprocal domain confirms who it is", - Base: mechanics.Clear, - Severity: mechanics.Clear, - Accountability: mechanics.AccountabilityVerified, - Checks: map[string]CheckLabel{ - "capability": {Severity: mechanics.Clear}, - "mutability": {Severity: mechanics.Clear}, - "sep1-domain": {Severity: mechanics.Clear}, - "reputation": {Severity: mechanics.Clear, Escalation: true}, - }, - }, - { - Dir: "shx-clear-flagslocked", - Why: "no auth flags AND auth_immutable: the issuer can never add freeze " + - "or clawback later", - Base: mechanics.Clear, - Severity: mechanics.Clear, - Accountability: mechanics.AccountabilityVerified, - Checks: map[string]CheckLabel{ - "capability": {Severity: mechanics.Clear}, - "mutability": {Severity: mechanics.Clear, Mechanics: mechanics.MechFlagsLocked}, - "sep1-domain": {Severity: mechanics.Clear}, - "reputation": {Severity: mechanics.Clear, Escalation: true}, - }, - }, - { - Dir: "xrp-clear-unlocked", - Why: "the unlocked counterpart to SHX: no auth flags, but auth_immutable " + - "is UNSET. The mutability finding must report that without moving " + - "base severity off clear.", - Base: mechanics.Clear, - Severity: mechanics.Clear, - Accountability: mechanics.AccountabilityVerified, - Checks: map[string]CheckLabel{ - "capability": {Severity: mechanics.Clear}, - "mutability": {Severity: mechanics.Clear}, - "sep1-domain": {Severity: mechanics.Clear}, - "reputation": {Severity: mechanics.Clear, Escalation: true}, - }, - }, - { - Dir: "usdz-clawback-regulated", - Why: "the confirmed-legitimate clawback control asset (docs/eval.md " + - "coverage-gaps). USDZ (Zeam Money, zeam.money) carries both " + - "auth_revocable and auth_clawback_enabled, so capability alone " + - "puts it at high — and it must NOT be escalated: the domain " + - "publishes a reciprocal stellar.toml that names the exact issuer, " + - "the directory tag is 'issuer' (not 'malicious'), and no " + - "blocklist entry exists. The severity model's central claim is " + - "that it treats legitimate clawback fairly; this subject is the " + - "only one in the set that measures that claim.", - Base: mechanics.High, - Severity: mechanics.High, - Escalated: false, - Accountability: mechanics.AccountabilityVerified, - Checks: map[string]CheckLabel{ - "capability": { - Severity: mechanics.High, - Mechanics: mechanics.MechAuthRevocable | mechanics.MechClawbackEnabled, - }, - "mutability": {Severity: mechanics.Clear}, - "sep1-domain": {Severity: mechanics.Clear}, - "reputation": {Severity: mechanics.Clear, Escalation: true}, - }, - }, - { - Dir: "usdc-revocable-regulated", - Why: "a real regulated stablecoin that legitimately uses auth_revocable. It " + - "must report freeze-capable (medium) on the strength of the flag alone.", - Base: mechanics.Medium, - Severity: mechanics.Medium, - Accountability: mechanics.AccountabilityUnverified, - Checks: map[string]CheckLabel{ - "capability": {Severity: mechanics.Medium, Mechanics: mechanics.MechAuthRevocable}, - "mutability": {Severity: mechanics.Clear}, - // circle.com does not serve a stellar.toml, so the reciprocal - // claim genuinely fails and the unverified bit is set. - "sep1-domain": {Severity: mechanics.Clear, Mechanics: mechanics.MechDomainUnverified}, - "reputation": {Severity: mechanics.Clear, Escalation: true}, - }, - }, - { - Dir: "berkshire-clawback-scam", - Why: "impersonation asset with clawback: capability alone puts it at high, " + - "and the curated malicious tag escalates it to critical", - Base: mechanics.High, - Severity: mechanics.Critical, - Escalated: true, - Accountability: mechanics.AccountabilityUnverified, - Checks: map[string]CheckLabel{ - "capability": { - Severity: mechanics.High, - Mechanics: mechanics.MechAuthRevocable | mechanics.MechClawbackEnabled, - }, - "mutability": {Severity: mechanics.Clear}, - "sep1-domain": {Severity: mechanics.Clear, Mechanics: mechanics.MechDomainUnverified}, - "reputation": { - Severity: mechanics.Critical, - Escalation: true, - Mechanics: mechanics.MechBlocklisted, - }, - }, - }, - { - Dir: "doge-noflags-scam", - Why: "the case that justifies keeping reputation as a separate upward-only " + - "axis: a known scam asset carrying NO auth flags. Capability is honestly " + - "clear, and escalation is the only thing that catches it. This is also " + - "the fixture the check-suppression test uses, because it is the case " + - "with the largest consequence.", - Base: mechanics.Clear, - Severity: mechanics.Critical, - Escalated: true, - Accountability: mechanics.AccountabilityUnverified, - Checks: map[string]CheckLabel{ - "capability": {Severity: mechanics.Clear}, - "mutability": {Severity: mechanics.Clear}, - "sep1-domain": {Severity: mechanics.Clear, Mechanics: mechanics.MechDomainUnverified}, - "reputation": { - Severity: mechanics.Critical, - Escalation: true, - Mechanics: mechanics.MechBlocklisted, - }, - }, - }, - { - Dir: "velo-no-home-domain", - Why: "an issuer account that carries no home_domain at all: the domain " + - "claim is absent rather than wrong, so accountability must be unknown " + - "not unverified, and severity must stay clear (#3)", - Base: mechanics.Clear, - Severity: mechanics.Clear, - Accountability: mechanics.AccountabilityUnknown, - Checks: map[string]CheckLabel{ - "capability": {Severity: mechanics.Clear}, - "mutability": {Severity: mechanics.Clear}, - // No domain was ever advertised, so the finding is unknown, not - // a failed verification — and still carries the unverified bit, - // because no identity was published to verify against. - "sep1-domain": {Severity: mechanics.Clear, Mechanics: mechanics.MechDomainUnverified}, - "reputation": {Severity: mechanics.Clear, Escalation: true, Undetermined: true}, - }, - }, +// The verdict fields are pointers so presence can be enforced: a "valid" +// subject that omits, say, accountability fails to load rather than silently +// reading as the empty value, because a label the file never stated must not +// become an expectation the eval enforces. +type expected struct { + State string `json:"state"` + Base *mechanics.Severity `json:"base,omitempty"` + Severity *mechanics.Severity `json:"severity,omitempty"` + Escalated *bool `json:"escalated,omitempty"` + Undetermined *bool `json:"undetermined,omitempty"` + Accountability *mechanics.Accountability `json:"accountability,omitempty"` + Checks map[string]expectedCheck `json:"checks,omitempty"` +} + +// expectedCheck is one per-check expectation. Severity is a pointer for the +// same reason as in expected: a determined check must state one, and an +// undetermined check must state none. +type expectedCheck struct { + Undetermined bool `json:"undetermined,omitempty"` + Severity *mechanics.Severity `json:"severity,omitempty"` + Escalation bool `json:"escalation,omitempty"` + Mechanics []string `json:"mechanics,omitempty"` +} + +// Corpus is the labelled set, loaded from the subjects' metadata.json files +// under fixturesDir. +// +// Every entry of subjectDirs must carry a well-formed metadata.json, or +// Corpus fails: a subject without metadata, or with metadata that does not +// parse, has no expectation to eval against, and the eval refuses to proceed +// on a guessed one (#112). The per-check labels come from the same file as +// the aggregate labels, so the two cannot describe different runs: TestEval +// and TestEvalPerCheck both iterate this corpus. +// +// Fixtures and provenance are under internal/mechanics/testdata; the schema +// and the labelling rationale are in docs/eval.md. +func Corpus(fixturesDir string) ([]Label, error) { + labels := make([]Label, 0, len(subjectDirs)) + for _, dir := range subjectDirs { + l, err := loadLabel(fixturesDir, dir) + if err != nil { + return nil, err + } + labels = append(labels, l) + } + return labels, nil +} + +// loadLabel reads and validates one subject's metadata.json. +// +// The parse is strict in both directions: fields a "valid" verdict must state +// are required rather than defaulted, and fields an "unknown" verdict must +// not state are rejected rather than ignored, so a half-written subject fails +// to load instead of quietly becoming a weaker label. +func loadLabel(fixturesDir, dir string) (Label, error) { + base := filepath.Join(fixturesDir, dir) + b, err := os.ReadFile(filepath.Join(base, "metadata.json")) + if err != nil { + return Label{}, fmt.Errorf("corpus subject %s: read metadata.json: %w", dir, err) + } + var m metadata + if err := json.Unmarshal(b, &m); err != nil { + return Label{}, fmt.Errorf("corpus subject %s: decode metadata.json: %w", dir, err) + } + if m.SchemaVersion != metadataSchemaVersion { + return Label{}, fmt.Errorf("corpus subject %s: metadata schema_version = %d, want %d", + dir, m.SchemaVersion, metadataSchemaVersion) + } + if m.Subject != dir { + return Label{}, fmt.Errorf("corpus subject %s: metadata names subject %q, want the directory name", + dir, m.Subject) + } + if strings.TrimSpace(m.Why) == "" { + return Label{}, fmt.Errorf("corpus subject %s: metadata carries no why", dir) + } + if err := checkFiles(base, m.Files); err != nil { + return Label{}, fmt.Errorf("corpus subject %s: %w", dir, err) + } + + label := Label{Dir: dir, Why: m.Why} + switch m.Expected.State { + case "valid": + v := m.Expected + if v.Base == nil || v.Severity == nil || v.Escalated == nil || + v.Undetermined == nil || v.Accountability == nil { + return Label{}, fmt.Errorf("corpus subject %s: valid verdict must state base, severity, "+ + "escalated, undetermined and accountability", dir) + } + switch *v.Accountability { + case mechanics.AccountabilityUnknown, mechanics.AccountabilityUnverified, + mechanics.AccountabilityVerified: + default: + return Label{}, fmt.Errorf("corpus subject %s: unknown accountability %q", + dir, *v.Accountability) + } + if len(v.Checks) == 0 { + return Label{}, fmt.Errorf("corpus subject %s: valid verdict must state per-check expectations", dir) + } + checks, err := loadChecks(v.Checks) + if err != nil { + return Label{}, fmt.Errorf("corpus subject %s: %w", dir, err) + } + label.Base = *v.Base + label.Severity = *v.Severity + label.Escalated = *v.Escalated + label.Undetermined = *v.Undetermined + label.Accountability = *v.Accountability + label.Checks = checks + case "unknown": + v := m.Expected + if v.Base != nil || v.Severity != nil || v.Escalated != nil || + v.Undetermined != nil || v.Accountability != nil || len(v.Checks) > 0 { + return Label{}, fmt.Errorf("corpus subject %s: unknown verdict must not carry a "+ + "verdict alongside its state", dir) + } + label.Unknown = true + default: + return Label{}, fmt.Errorf("corpus subject %s: expected.state = %q, want %q or %q", + dir, m.Expected.State, "valid", "unknown") + } + return label, nil +} + +// loadChecks converts one subject's per-check expectations. +func loadChecks(in map[string]expectedCheck) (map[string]CheckLabel, error) { + out := make(map[string]CheckLabel, len(in)) + for id, c := range in { + if c.Undetermined { + if c.Severity != nil || c.Escalation || len(c.Mechanics) > 0 { + return nil, fmt.Errorf("check %s: undetermined label must not carry a severity, "+ + "escalation or mechanics — an undetermined finding makes no claim", id) + } + out[id] = CheckLabel{Undetermined: true} + continue + } + if c.Severity == nil { + return nil, fmt.Errorf("check %s: determined label must state a severity", id) + } + mechanicsBits, err := mechanics.ParseMechanicNames(c.Mechanics) + if err != nil { + return nil, fmt.Errorf("check %s: %w", id, err) + } + out[id] = CheckLabel{ + Severity: *c.Severity, + Escalation: c.Escalation, + Mechanics: mechanicsBits, + } + } + return out, nil +} + +// checkFiles pins a subject's file list to its directory contents in both +// directions: every listed file must exist, and every fixture file present +// must be listed. Either direction failing means the fixtures and their +// provenance have drifted apart — a re-capture that renamed a payload, or a +// new file with no URL and no date — and the eval must not proceed on +// provenance it cannot state (#112). +func checkFiles(base string, files []fileEntry) error { + if len(files) == 0 { + return fmt.Errorf("metadata records no files") + } + listed := make(map[string]bool, len(files)) + for _, f := range files { + if f.File == "" { + return fmt.Errorf("metadata lists a file with no name") + } + if f.File != filepath.Base(f.File) { + return fmt.Errorf("metadata lists %q, want a bare file name", f.File) + } + if listed[f.File] { + return fmt.Errorf("metadata lists file %q twice", f.File) + } + listed[f.File] = true + if f.Captured == "" { + return fmt.Errorf("file %s: no capture date", f.File) + } + if _, err := time.Parse("2006-01-02", f.Captured); err != nil { + return fmt.Errorf("file %s: capture date %q, want YYYY-MM-DD", f.File, f.Captured) + } + u, err := url.Parse(f.URL) + if err != nil || u.Scheme == "" || u.Host == "" { + return fmt.Errorf("file %s: url %q is not an absolute URL", f.File, f.URL) + } + if _, err := os.Stat(filepath.Join(base, f.File)); err != nil { + return fmt.Errorf("metadata lists file %s which is not in the fixture directory: %w", + f.File, err) + } + } + entries, err := os.ReadDir(base) + if err != nil { + return fmt.Errorf("read fixture directory: %w", err) + } + for _, e := range entries { + if e.IsDir() || nonFixtureFiles[e.Name()] { + continue + } + if !listed[e.Name()] { + return fmt.Errorf("fixture file %q is not listed in metadata.json with its source "+ + "URL and capture date", e.Name()) + } } return nil } diff --git a/internal/horizon/client.go b/internal/horizon/client.go index e53fe9d..58c2b1e 100644 --- a/internal/horizon/client.go +++ b/internal/horizon/client.go @@ -27,67 +27,6 @@ var ErrNotFound = errors.New("horizon: not found") // Choosing one would be an arbitrary guess, so Assay refuses rather than guesses. var ErrMultipleRecords = errors.New("horizon: multiple records returned for asset") -// ErrUnknownNetwork reports a base URL whose network cannot be determined. -// -// It is an error rather than a fallback for the same reason an unread flag is -// the Unevaluated sentinel rather than Clear: guessing the network would put -// an unverified name into the evidence preimage, and two scans of the same -// code+issuer on different networks would then hash identically (#41). A -// caller pointing at a private or unknown Horizon must name its network -// explicitly instead. -var ErrUnknownNetwork = errors.New("horizon: network cannot be determined from the base URL") - -// Network is the Stellar network a report's facts were read from, named by -// the full network passphrase. -// -// The passphrase rather than a short name ("pubnet", "testnet") for the same -// reason the mechanic bitset uses the ledger's own flag names: the preimage -// commits to the ledger's vocabulary, and the passphrase is the one string -// the ecosystem already treats as network identity. The values are fixed by -// the protocol; they are not configuration and must not be edited. -type Network string - -const ( - // PublicNet is the pubnet mainnet, served by the SDF at - // https://horizon.stellar.org. - PublicNet Network = "Public Global Stellar Network ; September 2015" - // TestNet is the SDF testnet, served at https://horizon-testnet.stellar.org. - TestNet Network = "Test SDF Network ; September 2015" -) - -// NetworkFor names the network a Horizon base URL serves. -// -// Only the SDF-operated hosts are recognized. Any other host — a mirror, a -// local stub, a future third-party instance — returns ErrUnknownNetwork: -// deriving a network name from an unrecognized URL would be a guess, and a -// network name enters the evidence hash. Callers on such a host declare their -// network explicitly (see scan.Scanner.Network) instead of letting the -// derivation invent one. -func NetworkFor(baseURL string) (Network, error) { - if baseURL == "" { - return "", fmt.Errorf("%w: no base URL", ErrUnknownNetwork) - } - u, err := url.Parse(baseURL) - if err != nil { - return "", fmt.Errorf("%w: %q: %w", ErrUnknownNetwork, baseURL, err) - } - switch u.Hostname() { - case "horizon.stellar.org": - return PublicNet, nil - case "horizon-testnet.stellar.org": - return TestNet, nil - default: - return "", fmt.Errorf("%w: %q is not a known Horizon host; declare the network explicitly", ErrUnknownNetwork, u.Hostname()) - } -} - -// Network names the ledger this client reads. The client knows its own base -// URL, so it is the one component positioned to answer; see NetworkFor for -// why an unknown host is an error rather than a default. -func (c *Client) Network() (Network, error) { - return NetworkFor(c.BaseURL) -} - // Version is the tool version that every outbound client reports in its // User-Agent. Bump it alongside any scanner-version release; the API // documents the value in release notes. diff --git a/internal/mechanics/eval_test.go b/internal/mechanics/eval_test.go index c9d30fc..7a0596d 100644 --- a/internal/mechanics/eval_test.go +++ b/internal/mechanics/eval_test.go @@ -2,6 +2,7 @@ package mechanics_test import ( "context" + "encoding/json" "errors" "os" "path/filepath" diff --git a/internal/scan/scan.go b/internal/scan/scan.go index 39c60f0..d87a18f 100644 --- a/internal/scan/scan.go +++ b/internal/scan/scan.go @@ -29,24 +29,6 @@ import ( // at 6s each sum to 30s, matching the outer context budget in main.go and api.go. const DefaultFetchTimeout = 6 * time.Second -// Options configures source caches and per-fetch timeouts for a Scanner. -type Options struct { - ReputationDirectoryTTL time.Duration - ReputationBlocklistTTL time.Duration - FetchTimeout time.Duration - NoReputationCache bool -} - -// DefaultOptions returns the production source-cache and timeout policy. -func DefaultOptions() Options { - cacheOptions := stellarexpert.DefaultOptions() - return Options{ - ReputationDirectoryTTL: cacheOptions.DirectoryTTL, - ReputationBlocklistTTL: cacheOptions.BlocklistTTL, - FetchTimeout: DefaultFetchTimeout, - } -} - // issuerRE matches a Stellar ed25519 public key. var issuerRE = regexp.MustCompile(`^G[A-Z2-7]{55}$`) @@ -206,12 +188,10 @@ func assetFromExplorerURL(u string) string { // Scanner fetches subject state and classifies it. type Scanner struct { - Horizon *horizon.Client - Toml *sep1.Fetcher - Expert *stellarexpert.Client - Engine *mechanics.Engine - FetchTimeout time.Duration - Network horizon.Network + Horizon *horizon.Client + Toml *sep1.Fetcher + Expert *stellarexpert.Client + Engine *mechanics.Engine // Lists fetches the configured SEP-0042 Stellar Asset Lists. Lists *assetlist.Client @@ -275,6 +255,9 @@ type Options struct { // re-fetches both curated sources. Use it when a stale answer would be // unacceptable and the extra requests are affordable. NoReputationCache bool + + // FetchTimeout bounds any single source fetch. Zero uses the default. + FetchTimeout time.Duration } // DefaultOptions returns the production cache policy. @@ -282,6 +265,7 @@ func DefaultOptions() Options { return Options{ ReputationDirectoryTTL: stellarexpert.DefaultDirectoryTTL, ReputationBlocklistTTL: stellarexpert.DefaultBlocklistTTL, + FetchTimeout: DefaultFetchTimeout, } } @@ -369,18 +353,11 @@ func (s *Scanner) fetchTimeout() time.Duration { return DefaultFetchTimeout } -func (s *Scanner) resolveNetwork() (horizon.Network, error) { - detected, err := horizon.NetworkFor(s.Horizon.BaseURL) - if s.Network != "" { - if err == nil && detected != s.Network { - return "", fmt.Errorf("scan: declared network %q but Horizon serves %q", s.Network, detected) - } - return s.Network, nil - } - if err != nil { - return "", err +func (s *Scanner) now() time.Time { + if s.Now != nil { + return s.Now().UTC() } - return detected, nil + return time.Now().UTC() } // Subject fetches everything the checks need for one asset. @@ -396,7 +373,7 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su return nil, err } timeout := s.fetchTimeout() - sub := &mechanics.Subject{Asset: a, ScannedAt: time.Now().UTC(), Network: network} + sub := &mechanics.Subject{Asset: a, ScannedAt: s.now(), Network: network} statCtx, cancelStat := context.WithTimeout(ctx, timeout) stat, err := s.Horizon.Asset(statCtx, a.Code, a.Issuer) @@ -429,13 +406,13 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su tomlAttemptedAt time.Time tomlURL string - blockedVal stellarexpert.Answer[stellarexpert.BlockedDomain] + blockedVal *stellarexpert.BlockedDomain blockedErr string blockedFetchedAt time.Time blockedAttAt time.Time blockedURL string - dirVal stellarexpert.Answer[stellarexpert.DirectoryEntry] + dirVal *stellarexpert.DirectoryEntry dirErr string dirFetchedAt time.Time dirAttAt time.Time @@ -461,7 +438,7 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su tomlAttemptedAt = attempted doc, err := s.Toml.Fetch(tomlCtx, domain) if err != nil { - tomlErr = err.Error() + tomlErr = sep1.CanonicalFailure(err) tomlRefused = errors.Is(err, sep1.ErrNonPublicHost) } else { tomlDoc = doc @@ -498,7 +475,7 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su entry, err := s.Expert.Directory(dirCtx, a.Issuer) dirAttAt = attempted if err != nil { - dirErr = err.Error() + dirErr = sep1.CanonicalFailure(err) } else { dirVal = entry.Value dirFetchedAt = entry.FetchedAt diff --git a/internal/sep1/sep1.go b/internal/sep1/sep1.go index 1778534..e8deaeb 100644 --- a/internal/sep1/sep1.go +++ b/internal/sep1/sep1.go @@ -37,6 +37,14 @@ const version = "v0.1.0" // asked for more than this, rather than assuming it. const MaxBody = 1 << 20 // 1 MiB +const ( + FailureConnectionRefused = "connection-refused" + FailureDNS = "dns-failure" + FailureTimeout = "timeout" + FailureHostRefused = "host-refused" + FailureFetch = "fetch-failure" +) + // MaxRedirects bounds how many redirects a stellar.toml fetch may follow. const MaxRedirects = 5 From c3d338e7b75b0ba2ce735d07568dc64024589ae2 Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Sat, 24 Oct 2026 04:29:13 +0100 Subject: [PATCH 03/11] lint: fix gofmt, wrapcheck, and ShellCheck issues - internal/horizon/network.go: run gofmt -w (adds comments, newline at EOF) - internal/sep1/redirect_test.go: fix wrapcheck (return nil after error check) - scripts/undetermined-rate.sh: fix CRLF line endings (SC1017) Logic fixes already present in working tree: - SC2188: use ': >' instead of bare redirection - SC2034: use INTERVAL variable instead of hardcoded 21600 --- internal/horizon/network.go | 8 ++++++-- internal/sep1/redirect_test.go | 6 +++++- scripts/undetermined-rate.sh | 19 +++++++++---------- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/internal/horizon/network.go b/internal/horizon/network.go index 954f1a4..9d77e81 100644 --- a/internal/horizon/network.go +++ b/internal/horizon/network.go @@ -11,10 +11,14 @@ import ( type Network string const ( + // PublicNet is the SDF pubnet network passphrase. PublicNet Network = "Public Global Stellar Network ; September 2015" - TestNet Network = "Test SDF Network ; September 2015" + // TestNet is the SDF testnet network passphrase. + TestNet Network = "Test SDF Network ; September 2015" ) +// ErrUnknownNetwork reports that the Horizon URL does not identify a known +// Stellar network. var ErrUnknownNetwork = errors.New("horizon: unknown network") // NetworkFor identifies the network only for the canonical Horizon hosts. @@ -37,4 +41,4 @@ func NetworkFor(rawURL string) (Network, error) { // Network reports the network for this client's Horizon endpoint. func (c *Client) Network() (Network, error) { return NetworkFor(c.BaseURL) -} \ No newline at end of file +} diff --git a/internal/sep1/redirect_test.go b/internal/sep1/redirect_test.go index c92687a..a85e1aa 100644 --- a/internal/sep1/redirect_test.go +++ b/internal/sep1/redirect_test.go @@ -2,6 +2,7 @@ package sep1_test import ( "context" + "fmt" "io" "net/http" "net/http/httptest" @@ -49,10 +50,13 @@ func (t redirectTestTransport) RoundTrip(req *http.Request) (*http.Response, err rewritten.URL.Host = t.target.Host rewritten.Host = t.target.Host resp, err := t.base.RoundTrip(rewritten) + if err != nil { + return resp, fmt.Errorf("redirect test transport: %w", err) + } if resp != nil { resp.Request = req } - return resp, err + return resp, nil } // TestRedirectWithinBound follows two same-site hops and expects the document diff --git a/scripts/undetermined-rate.sh b/scripts/undetermined-rate.sh index 1de1ab3..ad89107 100755 --- a/scripts/undetermined-rate.sh +++ b/scripts/undetermined-rate.sh @@ -49,8 +49,14 @@ fi mkdir -p "$OUTPUT_DIR" +if [ -z "$DELAY" ]; then + INTERVAL=21600 +else + INTERVAL=$DELAY +fi + ASSET_COUNT="$(wc -l < "$ASSETS_FILE" | tr -d ' ')" -echo "scanning $ASSET_COUNT assets over $RUNS runs (6h intervals)" >&2 +echo "scanning $ASSET_COUNT assets over $RUNS runs (${INTERVAL}s intervals)" >&2 echo "output directory: $OUTPUT_DIR" >&2 # Create assets list for the loop @@ -58,18 +64,11 @@ ASSETS_LIST="$(cat "$ASSETS_FILE")" # Track source counts using a simple approach: accumulate raw JSON SOURCE_TRACKING="$OUTPUT_DIR/.source-tracking.jsonl" -> "$SOURCE_TRACKING" +: > "$SOURCE_TRACKING" run_num=1 start_time="$(date -u +%s)" -# If --delay not set, default to 6h = 21600s -if [ -z "$DELAY" ]; then - INTERVAL=21600 -else - INTERVAL=$DELAY -fi - while [ "$run_num" -le "$RUNS" ]; do run_start="$(date -u +%s)" run_label="$(printf 'run-%03d' "$run_num")" @@ -124,7 +123,7 @@ print(json.dumps({ # Calculate when the next run should start (6h after this one started) if [ "$run_num" -lt "$RUNS" ]; then - desired_next="$((run_start + 21600))" + desired_next="$((run_start + INTERVAL))" now="$(date -u +%s)" sleep_time=$((desired_next - now)) if [ "$sleep_time" -gt 0 ]; then From 13253e76a7f2b03856510dc3e390cbd498ebaa88 Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Sat, 24 Oct 2026 04:29:54 +0100 Subject: [PATCH 04/11] style: wrap errors with context in test helpers and client code - doclinks_test.go: wrap file read/walk errors - internal/attest/golden_test.go: simplify version check with hasAnyPreimageVersion - internal/horizon/client.go: wrap JSON unmarshal errors with context - internal/registry/registry_test.go: check Write() return value - internal/sep1/sep1.go: add comment for failure label constants - internal/sep1/redirect_test.go: (already committed with wrapcheck fix) --- doclinks_test.go | 9 ++++++--- internal/attest/golden_test.go | 5 +---- internal/horizon/client.go | 6 +++--- internal/registry/registry_test.go | 4 +++- internal/sep1/sep1.go | 1 + 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/doclinks_test.go b/doclinks_test.go index 9ff3ded..28720e3 100644 --- a/doclinks_test.go +++ b/doclinks_test.go @@ -104,7 +104,7 @@ func docLinkFailures(repoRoot string) ([]string, error) { } b, err := os.ReadFile(path) if err != nil { - return nil, err + return nil, fmt.Errorf("read %s: %w", path, err) } set := markdownAnchors(string(b)) anchors[path] = set @@ -180,14 +180,17 @@ func markdownFiles(repoRoot string) ([]string, error) { files := []string{filepath.Join(repoRoot, "README.md")} err := filepath.WalkDir(filepath.Join(repoRoot, "docs"), func(path string, d fs.DirEntry, err error) error { if err != nil { - return err + return fmt.Errorf("walk %s: %w", path, err) } if !d.IsDir() && strings.EqualFold(filepath.Ext(path), ".md") { files = append(files, path) } return nil }) - return files, err + if err != nil { + return nil, fmt.Errorf("walk docs: %w", err) + } + return files, nil } func relPath(root, path string) string { diff --git a/internal/attest/golden_test.go b/internal/attest/golden_test.go index ca66dba..9a373f7 100644 --- a/internal/attest/golden_test.go +++ b/internal/attest/golden_test.go @@ -135,10 +135,7 @@ func TestGoldenFilesHaveCanonicalLineEndings(t *testing.T) { t.Errorf("%s ends with a blank line: the canonical encoding terminates the last line exactly once", e) } version := strings.SplitN(string(raw), "\n", 2)[0] - switch version { - case attest.PreimageVersion, attest.PreimageVersionCheckSet, attest.PreimageVersionNetwork, - attest.PreimageVersionScanner: - default: + if !hasAnyPreimageVersion(string(raw)) { t.Errorf("%s starts with unsupported version line %q", e, version) } } diff --git a/internal/horizon/client.go b/internal/horizon/client.go index 58c2b1e..f9d9378 100644 --- a/internal/horizon/client.go +++ b/internal/horizon/client.go @@ -97,7 +97,7 @@ func requireFlagsObject(b []byte) error { Flags json.RawMessage `json:"flags"` } if err := json.Unmarshal(b, &probe); err != nil { - return err + return fmt.Errorf("horizon: inspect record flags: %w", err) } if probe.Flags == nil { return errors.New("horizon: record carries no flags object") @@ -130,7 +130,7 @@ func (s *AssetStat) UnmarshalJSON(b []byte) error { type wire AssetStat var w wire if err := json.Unmarshal(b, &w); err != nil { - return err + return fmt.Errorf("horizon: decode asset record: %w", err) } if err := requireFlagsObject(b); err != nil { return err @@ -153,7 +153,7 @@ func (a *Account) UnmarshalJSON(b []byte) error { type wire Account var w wire if err := json.Unmarshal(b, &w); err != nil { - return err + return fmt.Errorf("horizon: decode account record: %w", err) } if err := requireFlagsObject(b); err != nil { return err diff --git a/internal/registry/registry_test.go b/internal/registry/registry_test.go index 81dcb91..f0bbf8e 100644 --- a/internal/registry/registry_test.go +++ b/internal/registry/registry_test.go @@ -88,7 +88,9 @@ func fixtureServer(t *testing.T, body string) *httptest.Server { t.Helper() return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") - w.Write([]byte(body)) + if _, err := w.Write([]byte(body)); err != nil { + t.Errorf("write fixture response: %v", err) + } })) } diff --git a/internal/sep1/sep1.go b/internal/sep1/sep1.go index e8deaeb..bb39377 100644 --- a/internal/sep1/sep1.go +++ b/internal/sep1/sep1.go @@ -37,6 +37,7 @@ const version = "v0.1.0" // asked for more than this, rather than assuming it. const MaxBody = 1 << 20 // 1 MiB +// Failure labels are stable, host-independent categories for source errors. const ( FailureConnectionRefused = "connection-refused" FailureDNS = "dns-failure" From 78d95ab392d805d064015fd212ac416dfc68b182 Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Sat, 24 Oct 2026 05:53:45 +0100 Subject: [PATCH 05/11] Merge upstream main into feat/435-readyz-staleness-on-499 --- ...admission_returns_attestation_stale.1.json | 8 + ...dmission_returns_issuer_can_take_it.1.json | 8 + ...ssion_returns_ok_for_admitted_asset.1.json | 8 + ...admission_returns_severity_too_high.1.json | 8 + ...eshness_boundary_exact_and_plus_one.1.json | 8 + ...lean_asset_is_admitted_and_credited.1.json | 8 + ...nfiscation_capable_asset_is_refused.1.json | 8 + ..._without_capability_bits_is_refused.1.json | 8 + ...nly_and_increments_internal_balance.1.json | 8 + .../deposit_refuses_negative_amount.1.json | 8 + ...uses_overflow_rather_than_panicking.1.json | 8 + .../test/deposit_refuses_zero_amount.1.json | 8 + ...ive_state_refused_without_freshness.1.json | 32 + ...used_even_though_severity_is_medium.1.json | 8 + ...re_attestation_can_revoke_admission.1.json | 8 + .../severity_above_ceiling_is_refused.1.json | 8 + .../test/stale_attestation_is_refused.1.json | 8 + .../safety-registry/cost-baseline.json | 35 + ...caller_other_than_the_pending_admin.1.json | 8 + ...ed_entry_auto_restored_and_readable.1.json | 8 + .../test/attest_emits_event_on_success.1.json | 8 + .../attest_extends_ttl_to_network_max.1.json | 8 + .../test/attest_then_read_roundtrips.1.json | 8 + ..._from_the_future_does_not_underflow.1.json | 8 + ...n_transfer_and_follow_the_new_admin.1.json | 8 + ...ccepts_what_the_single_path_accepts.1.json | 8 + .../batch_elements_share_one_timestamp.1.json | 16 + .../batch_emits_one_event_per_element.1.json | 16 + .../batch_extends_ttl_to_network_max.1.json | 16 + ...atch_of_exactly_the_cap_is_accepted.1.json | 400 + ...batch_reads_match_single_write_path.1.json | 16 + ...ound_is_measured_and_holds_headroom.1.json | 400 + ...fiscation_below_high_even_if_stored.1.json | 8 + ...en_the_write_time_check_is_bypassed.1.json | 8 + ...d_writes_leave_the_asset_unattested.1.json | 8 + ...ed_stale_refused_at_every_threshold.1.json | 8 + ...s_within_threshold_and_blocks_above.1.json | 8 + ...s_confiscation_below_high_threshold.1.json | 8 + ...afety_many_at_the_bound_is_accepted.1.json | 400 + .../get_safety_many_cost_at_the_bound.1.json | 400 + ...reserves_order_and_none_for_missing.1.json | 16 + .../test/is_safe_property_exhaustive.1.json | 20028 +++++++++++----- ...admits_when_no_forbidden_bit_is_set.1.json | 8 + ...e_all_bits_blocks_any_attested_flag.1.json | 16 + ...e_blocks_confiscation_capable_asset.1.json | 8 + ...gate_stale_attestation_fails_closed.1.json | 8 + ..._honest_attestor_prevents_admission.1.json | 264 + ...m_conservative_aggregation_property.1.json | 570 + ...ilable_are_distinguishable_on_chain.1.json | 264 + .../test/quorum_cost_at_the_bound.1.json | 1227 + ...estors_and_cannot_inflate_threshold.1.json | 192 + ...tical_evidence_moves_only_timestamp.1.json | 8 + ...chival_returns_original_attestation.1.json | 8 + .../test/reads_do_not_extend_ttl.1.json | 8 + .../test/reattest_renews_ttl.1.json | 8 + ...revoke_leaves_other_assets_attested.1.json | 8 + .../revoke_rejects_unauthorized_caller.1.json | 8 + .../test/revoke_then_reattest.1.json | 8 + ...min_nomination_supersedes_the_first.1.json | 8 + .../stale_attestation_fails_closed.1.json | 8 + ...ints_extend_instance_to_network_max.1.json | 229 + assay-contracts/wasm-size-baseline.json | 8 + cmd/assay/diff.go | 4 +- cmd/assay/exit_test.go | 162 +- cmd/assay/exitcode.go | 110 + cmd/assay/main.go | 133 +- cmd/assay/main_test.go | 2 +- cmd/assay/native_asset_test.go | 2 +- cmd/assay/registry_history.go | 6 +- cmd/assay/verify.go | 22 +- cmd/assay/version.go | 131 + cmd/assay/version_test.go | 125 + docs/api.md | 224 +- docs/architecture.md | 2 + docs/attestation-correction.md | 107 + docs/multi-attestor.md | 2 +- docs_test.go | 80 + internal/api/openapi_schema_test.go | 172 + internal/api/outcome_test.go | 5 +- internal/attest/attest.go | 17 +- internal/attest/encoding_layout_test.go | 5 - internal/attest/golden_test.go | 2 +- internal/attest/testdata/vectors/vectors.json | 17 + internal/attester/watch_test.go | 2 + internal/docindex/docindex_test.go | 165 + internal/horizon/client.go | 63 +- internal/horizon/network.go | 44 - internal/mechanics/abi_drift_test.go | 5 +- internal/mechanics/check_domain.go | 15 +- internal/mechanics/check_domain_test.go | 124 + internal/mechanics/check_reputation.go | 139 +- internal/mechanics/degraded_test.go | 22 + internal/mechanics/eval_test.go | 34 + internal/mechanics/mechanics.go | 82 +- internal/mechanics/severity.go | 33 + internal/mechanics/stale_test.go | 4 +- internal/mechanics/testdata/PROVENANCE.md | 1 + .../usdc-revocable-regulated/metadata.json | 3 +- .../stellar-expert-asset.json | 45 + internal/scan/fuzz_test.go | 124 + internal/scan/scan.go | 133 +- internal/sep1/fuzz_test.go | 116 + internal/sep1/redirect_test.go | 48 +- internal/sep1/sep1.go | 31 +- internal/stellarexpert/client.go | 101 +- internal/stellarexpert/client_test.go | 130 + openapi.yaml | 524 +- scripts/check-secret-seeds.sh | 19 + scripts/check-wasm-size.sh | 116 + scripts/secretscan/main.go | 185 + scripts/secretscan/main_test.go | 108 + .../secretscan/testdata/public-address.diff | 6 + .../secretscan/testdata/valid-seed.diff.tmpl | 5 + scripts/undetermined-rate.sh | 13 +- 114 files changed, 22738 insertions(+), 5913 deletions(-) create mode 100644 assay-contracts/contracts/safety-registry/cost-baseline.json create mode 100644 assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_one_honest_attestor_prevents_admission.1.json create mode 100644 assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_property.1.json create mode 100644 assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_contested_and_unavailable_are_distinguishable_on_chain.1.json create mode 100644 assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_cost_at_the_bound.1.json create mode 100644 assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_deduplicates_attestors_and_cannot_inflate_threshold.1.json create mode 100644 assay-contracts/contracts/safety-registry/test_snapshots/test/ttl_admin_transfer_entrypoints_extend_instance_to_network_max.1.json create mode 100644 assay-contracts/wasm-size-baseline.json create mode 100644 cmd/assay/exitcode.go create mode 100644 cmd/assay/version.go create mode 100644 cmd/assay/version_test.go create mode 100644 docs/attestation-correction.md create mode 100644 docs_test.go create mode 100644 internal/api/openapi_schema_test.go create mode 100644 internal/attest/testdata/vectors/vectors.json create mode 100644 internal/docindex/docindex_test.go delete mode 100644 internal/horizon/network.go create mode 100644 internal/mechanics/testdata/usdc-revocable-regulated/stellar-expert-asset.json create mode 100644 internal/scan/fuzz_test.go create mode 100644 internal/sep1/fuzz_test.go create mode 100755 scripts/check-secret-seeds.sh create mode 100755 scripts/check-wasm-size.sh create mode 100644 scripts/secretscan/main.go create mode 100644 scripts/secretscan/main_test.go create mode 100644 scripts/secretscan/testdata/public-address.diff create mode 100644 scripts/secretscan/testdata/valid-seed.diff.tmpl diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_attestation_stale.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_attestation_stale.1.json index 2c05767..f1a102c 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_attestation_stale.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_attestation_stale.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_issuer_can_take_it.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_issuer_can_take_it.1.json index 3e4d2cb..6e1f9d7 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_issuer_can_take_it.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_issuer_can_take_it.1.json @@ -93,6 +93,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_ok_for_admitted_asset.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_ok_for_admitted_asset.1.json index 5a9f5f7..6e8f72f 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_ok_for_admitted_asset.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_ok_for_admitted_asset.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_severity_too_high.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_severity_too_high.1.json index 1b638dc..8140980 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_severity_too_high.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/admission_returns_severity_too_high.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/attestation_freshness_boundary_exact_and_plus_one.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/attestation_freshness_boundary_exact_and_plus_one.1.json index ebbc026..b485d8b 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/attestation_freshness_boundary_exact_and_plus_one.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/attestation_freshness_boundary_exact_and_plus_one.1.json @@ -121,6 +121,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/clean_asset_is_admitted_and_credited.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/clean_asset_is_admitted_and_credited.1.json index b7fcb3d..1a50b75 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/clean_asset_is_admitted_and_credited.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/clean_asset_is_admitted_and_credited.1.json @@ -118,6 +118,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/confiscation_capable_asset_is_refused.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/confiscation_capable_asset_is_refused.1.json index c627a98..0e673bc 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/confiscation_capable_asset_is_refused.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/confiscation_capable_asset_is_refused.1.json @@ -93,6 +93,14 @@ "u32": 6 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/critical_by_reputation_without_capability_bits_is_refused.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/critical_by_reputation_without_capability_bits_is_refused.1.json index 5ad6e4b..652c842 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/critical_by_reputation_without_capability_bits_is_refused.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/critical_by_reputation_without_capability_bits_is_refused.1.json @@ -93,6 +93,14 @@ "u32": 48 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_is_bookkeeping_only_and_increments_internal_balance.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_is_bookkeeping_only_and_increments_internal_balance.1.json index 3e614b1..0816211 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_is_bookkeeping_only_and_increments_internal_balance.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_is_bookkeeping_only_and_increments_internal_balance.1.json @@ -144,6 +144,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_negative_amount.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_negative_amount.1.json index 29363a0..456503d 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_negative_amount.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_negative_amount.1.json @@ -94,6 +94,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_overflow_rather_than_panicking.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_overflow_rather_than_panicking.1.json index e631610..19a628d 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_overflow_rather_than_panicking.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_overflow_rather_than_panicking.1.json @@ -147,6 +147,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_zero_amount.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_zero_amount.1.json index fecd8d3..cc69ce9 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_zero_amount.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/deposit_refuses_zero_amount.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/fail_closed_every_non_affirmative_state_refused_without_freshness.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/fail_closed_every_non_affirmative_state_refused_without_freshness.1.json index 33d5050..e337547 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/fail_closed_every_non_affirmative_state_refused_without_freshness.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/fail_closed_every_non_affirmative_state_refused_without_freshness.1.json @@ -185,6 +185,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -245,6 +253,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -305,6 +321,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -365,6 +389,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/freeze_capable_asset_is_refused_even_though_severity_is_medium.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/freeze_capable_asset_is_refused_even_though_severity_is_medium.1.json index 3e4d2cb..6e1f9d7 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/freeze_capable_asset_is_refused_even_though_severity_is_medium.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/freeze_capable_asset_is_refused_even_though_severity_is_medium.1.json @@ -93,6 +93,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/re_attestation_can_revoke_admission.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/re_attestation_can_revoke_admission.1.json index 8c1f12b..3e3d4b0 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/re_attestation_can_revoke_admission.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/re_attestation_can_revoke_admission.1.json @@ -121,6 +121,14 @@ "u32": 6 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/severity_above_ceiling_is_refused.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/severity_above_ceiling_is_refused.1.json index 4581181..77c6ff6 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/severity_above_ceiling_is_refused.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/severity_above_ceiling_is_refused.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/example-gate/test_snapshots/test/stale_attestation_is_refused.1.json b/assay-contracts/contracts/example-gate/test_snapshots/test/stale_attestation_is_refused.1.json index 5e783bd..6e0cbb9 100644 --- a/assay-contracts/contracts/example-gate/test_snapshots/test/stale_attestation_is_refused.1.json +++ b/assay-contracts/contracts/example-gate/test_snapshots/test/stale_attestation_is_refused.1.json @@ -94,6 +94,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/cost-baseline.json b/assay-contracts/contracts/safety-registry/cost-baseline.json new file mode 100644 index 0000000..e6fe821 --- /dev/null +++ b/assay-contracts/contracts/safety-registry/cost-baseline.json @@ -0,0 +1,35 @@ +{ + "entrypoints": { + "attest": { + "disk_read_bytes": 0, + "instructions": 64024, + "mem_bytes": 9753, + "write_bytes": 384 + }, + "attest_many_50": { + "disk_read_bytes": 0, + "instructions": 3669695, + "mem_bytes": 583226, + "write_bytes": 15672 + }, + "get_safety": { + "disk_read_bytes": 0, + "instructions": 28228, + "mem_bytes": 3796, + "write_bytes": 0 + }, + "is_safe": { + "disk_read_bytes": 0, + "instructions": 22869, + "mem_bytes": 3284, + "write_bytes": 0 + }, + "is_safe_masked": { + "disk_read_bytes": 0, + "instructions": 23315, + "mem_bytes": 3284, + "write_bytes": 0 + } + }, + "tolerance_percent": 10 +} diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/accept_admin_rejects_a_caller_other_than_the_pending_admin.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/accept_admin_rejects_a_caller_other_than_the_pending_admin.1.json index 7509001..d48d868 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/accept_admin_rejects_a_caller_other_than_the_pending_admin.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/accept_admin_rejects_a_caller_other_than_the_pending_admin.1.json @@ -130,6 +130,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/archived_entry_auto_restored_and_readable.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/archived_entry_auto_restored_and_readable.1.json index 4c21f78..1786484 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/archived_entry_auto_restored_and_readable.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/archived_entry_auto_restored_and_readable.1.json @@ -92,6 +92,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_emits_event_on_success.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_emits_event_on_success.1.json index 3f21db3..e6a2313 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_emits_event_on_success.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_emits_event_on_success.1.json @@ -90,6 +90,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_extends_ttl_to_network_max.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_extends_ttl_to_network_max.1.json index c19123c..e8b337f 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_extends_ttl_to_network_max.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_extends_ttl_to_network_max.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_then_read_roundtrips.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_then_read_roundtrips.1.json index de010e3..a8014f3 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_then_read_roundtrips.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/attest_then_read_roundtrips.1.json @@ -91,6 +91,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/attestation_from_the_future_does_not_underflow.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/attestation_from_the_future_does_not_underflow.1.json index ce345cb..e5efcbf 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/attestation_from_the_future_does_not_underflow.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/attestation_from_the_future_does_not_underflow.1.json @@ -91,6 +91,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/attestations_survive_admin_transfer_and_follow_the_new_admin.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/attestations_survive_admin_transfer_and_follow_the_new_admin.1.json index a83b737..a4c7037 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/attestations_survive_admin_transfer_and_follow_the_new_admin.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/attestations_survive_admin_transfer_and_follow_the_new_admin.1.json @@ -216,6 +216,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_accepts_what_the_single_path_accepts.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_accepts_what_the_single_path_accepts.1.json index 4b1a0dc..16c0f6e 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_accepts_what_the_single_path_accepts.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_accepts_what_the_single_path_accepts.1.json @@ -119,6 +119,14 @@ "u32": 6 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_elements_share_one_timestamp.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_elements_share_one_timestamp.1.json index 3eacf37..3bb07cf 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_elements_share_one_timestamp.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_elements_share_one_timestamp.1.json @@ -156,6 +156,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -216,6 +224,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_emits_one_event_per_element.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_emits_one_event_per_element.1.json index 93c1518..6fafa61 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_emits_one_event_per_element.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_emits_one_event_per_element.1.json @@ -154,6 +154,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -214,6 +222,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_extends_ttl_to_network_max.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_extends_ttl_to_network_max.1.json index 6edc8d8..a21459d 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_extends_ttl_to_network_max.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_extends_ttl_to_network_max.1.json @@ -158,6 +158,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -218,6 +226,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_of_exactly_the_cap_is_accepted.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_of_exactly_the_cap_is_accepted.1.json index d286e89..e841b9e 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_of_exactly_the_cap_is_accepted.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_of_exactly_the_cap_is_accepted.1.json @@ -1932,6 +1932,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -1992,6 +2000,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2052,6 +2068,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2112,6 +2136,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2172,6 +2204,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2232,6 +2272,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2292,6 +2340,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2352,6 +2408,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2412,6 +2476,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2472,6 +2544,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2532,6 +2612,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2592,6 +2680,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2652,6 +2748,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2712,6 +2816,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2772,6 +2884,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2832,6 +2952,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2892,6 +3020,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2952,6 +3088,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3012,6 +3156,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3072,6 +3224,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3132,6 +3292,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3192,6 +3360,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3252,6 +3428,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3312,6 +3496,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3372,6 +3564,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3432,6 +3632,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3492,6 +3700,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3552,6 +3768,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3612,6 +3836,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3672,6 +3904,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3732,6 +3972,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3792,6 +4040,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3852,6 +4108,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3912,6 +4176,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3972,6 +4244,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4032,6 +4312,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4092,6 +4380,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4152,6 +4448,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4212,6 +4516,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4272,6 +4584,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4332,6 +4652,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4392,6 +4720,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4452,6 +4788,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4512,6 +4856,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4572,6 +4924,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4632,6 +4992,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4692,6 +5060,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4752,6 +5128,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4812,6 +5196,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4872,6 +5264,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_reads_match_single_write_path.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_reads_match_single_write_path.1.json index ad1fdf8..79f5b11 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_reads_match_single_write_path.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_reads_match_single_write_path.1.json @@ -162,6 +162,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -222,6 +230,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_size_bound_is_measured_and_holds_headroom.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_size_bound_is_measured_and_holds_headroom.1.json index 417ef6d..0f05ea3 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_size_bound_is_measured_and_holds_headroom.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/batch_size_bound_is_measured_and_holds_headroom.1.json @@ -1882,6 +1882,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -1942,6 +1950,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2002,6 +2018,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2062,6 +2086,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2122,6 +2154,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2182,6 +2222,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2242,6 +2290,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2302,6 +2358,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2362,6 +2426,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2422,6 +2494,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2482,6 +2562,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2542,6 +2630,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2602,6 +2698,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2662,6 +2766,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2722,6 +2834,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2782,6 +2902,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2842,6 +2970,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2902,6 +3038,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2962,6 +3106,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3022,6 +3174,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3082,6 +3242,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3142,6 +3310,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3202,6 +3378,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3262,6 +3446,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3322,6 +3514,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3382,6 +3582,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3442,6 +3650,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3502,6 +3718,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3562,6 +3786,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3622,6 +3854,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3682,6 +3922,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3742,6 +3990,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3802,6 +4058,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3862,6 +4126,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3922,6 +4194,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3982,6 +4262,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4042,6 +4330,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4102,6 +4398,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4162,6 +4466,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4222,6 +4534,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4282,6 +4602,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4342,6 +4670,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4402,6 +4738,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4462,6 +4806,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4522,6 +4874,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4582,6 +4942,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4642,6 +5010,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4702,6 +5078,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4762,6 +5146,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4822,6 +5214,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_below_high_even_if_stored.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_below_high_even_if_stored.1.json index 7293822..0b47144 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_below_high_even_if_stored.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_below_high_even_if_stored.1.json @@ -93,6 +93,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_when_the_write_time_check_is_bypassed.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_when_the_write_time_check_is_bypassed.1.json index 9bbbbec..8987144 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_when_the_write_time_check_is_bypassed.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_gate_refuses_confiscation_when_the_write_time_check_is_bypassed.1.json @@ -67,6 +67,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 0 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_rejected_writes_leave_the_asset_unattested.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_rejected_writes_leave_the_asset_unattested.1.json index c41c63e..aef8577 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_rejected_writes_leave_the_asset_unattested.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_rejected_writes_leave_the_asset_unattested.1.json @@ -98,6 +98,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_stale_refused_at_every_threshold.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_stale_refused_at_every_threshold.1.json index 4156b35..cbb5b7f 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_stale_refused_at_every_threshold.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/fail_closed/fail_closed_stale_refused_at_every_threshold.1.json @@ -97,6 +97,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_admits_within_threshold_and_blocks_above.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_admits_within_threshold_and_blocks_above.1.json index 9544623..b58c883 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_admits_within_threshold_and_blocks_above.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_admits_within_threshold_and_blocks_above.1.json @@ -94,6 +94,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_blocks_confiscation_below_high_threshold.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_blocks_confiscation_below_high_threshold.1.json index 4cd193d..c22cc17 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_blocks_confiscation_below_high_threshold.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/gate_blocks_confiscation_below_high_threshold.1.json @@ -92,6 +92,14 @@ "u32": 6 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_at_the_bound_is_accepted.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_at_the_bound_is_accepted.1.json index 0d26b19..5fe829c 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_at_the_bound_is_accepted.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_at_the_bound_is_accepted.1.json @@ -1933,6 +1933,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -1993,6 +2001,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2053,6 +2069,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2113,6 +2137,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2173,6 +2205,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2233,6 +2273,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2293,6 +2341,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2353,6 +2409,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2413,6 +2477,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2473,6 +2545,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2533,6 +2613,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2593,6 +2681,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2653,6 +2749,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2713,6 +2817,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2773,6 +2885,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2833,6 +2953,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2893,6 +3021,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2953,6 +3089,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3013,6 +3157,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3073,6 +3225,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3133,6 +3293,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3193,6 +3361,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3253,6 +3429,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3313,6 +3497,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3373,6 +3565,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3433,6 +3633,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3493,6 +3701,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3553,6 +3769,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3613,6 +3837,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3673,6 +3905,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3733,6 +3973,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3793,6 +4041,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3853,6 +4109,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3913,6 +4177,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3973,6 +4245,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4033,6 +4313,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4093,6 +4381,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4153,6 +4449,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4213,6 +4517,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4273,6 +4585,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4333,6 +4653,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4393,6 +4721,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4453,6 +4789,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4513,6 +4857,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4573,6 +4925,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4633,6 +4993,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4693,6 +5061,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4753,6 +5129,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4813,6 +5197,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4873,6 +5265,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_cost_at_the_bound.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_cost_at_the_bound.1.json index abd919b..69496d6 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_cost_at_the_bound.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_cost_at_the_bound.1.json @@ -1883,6 +1883,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -1943,6 +1951,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2003,6 +2019,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2063,6 +2087,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2123,6 +2155,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2183,6 +2223,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2243,6 +2291,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2303,6 +2359,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2363,6 +2427,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2423,6 +2495,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2483,6 +2563,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2543,6 +2631,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2603,6 +2699,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2663,6 +2767,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2723,6 +2835,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2783,6 +2903,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2843,6 +2971,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2903,6 +3039,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -2963,6 +3107,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3023,6 +3175,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3083,6 +3243,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3143,6 +3311,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3203,6 +3379,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3263,6 +3447,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3323,6 +3515,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3383,6 +3583,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3443,6 +3651,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3503,6 +3719,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3563,6 +3787,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3623,6 +3855,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3683,6 +3923,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3743,6 +3991,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3803,6 +4059,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3863,6 +4127,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3923,6 +4195,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -3983,6 +4263,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4043,6 +4331,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4103,6 +4399,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4163,6 +4467,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4223,6 +4535,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4283,6 +4603,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4343,6 +4671,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4403,6 +4739,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4463,6 +4807,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4523,6 +4875,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4583,6 +4943,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4643,6 +5011,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4703,6 +5079,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4763,6 +5147,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -4823,6 +5215,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_preserves_order_and_none_for_missing.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_preserves_order_and_none_for_missing.1.json index e5aa575..da05b80 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_preserves_order_and_none_for_missing.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/get_safety_many_preserves_order_and_none_for_missing.1.json @@ -121,6 +121,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -181,6 +189,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/is_safe_property_exhaustive.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/is_safe_property_exhaustive.1.json index 2cf68e7..de4ee36 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/is_safe_property_exhaustive.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/is_safe_property_exhaustive.1.json @@ -33470,6 +33470,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33530,6 +33538,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33590,6 +33606,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33650,6 +33674,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33710,6 +33742,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33770,6 +33810,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33830,6 +33878,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33890,6 +33946,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -33950,6 +34014,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34010,6 +34082,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34070,6 +34150,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34130,6 +34218,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34190,6 +34286,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34250,6 +34354,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34310,6 +34422,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34370,6 +34490,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34430,6 +34558,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34490,6 +34626,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34550,6 +34694,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34610,6 +34762,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34670,6 +34830,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34730,6 +34898,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34790,6 +34966,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34850,6 +35034,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34910,6 +35102,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -34970,6 +35170,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35030,6 +35238,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35090,6 +35306,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35150,6 +35374,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35212,62 +35444,10 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 0 + "u32": 4 } }, { @@ -35299,7 +35479,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDC3I" } ] }, @@ -35332,62 +35512,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -35419,7 +35547,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2CY" } ] }, @@ -35450,6 +35578,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35479,7 +35615,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHSKI" } ] }, @@ -35510,6 +35646,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35539,7 +35683,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACILRY" } ] }, @@ -35570,6 +35714,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35599,7 +35751,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDZI" } ] }, @@ -35630,6 +35782,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35659,7 +35819,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM3AY" } ] }, @@ -35690,6 +35850,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35719,7 +35887,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOTII" } ] }, @@ -35750,6 +35918,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35779,7 +35955,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRIXZ" } ] }, @@ -35810,6 +35986,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35839,7 +36023,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA7J" } ] }, @@ -35870,6 +36054,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35899,7 +36091,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYGZ" } ] }, @@ -35930,6 +36122,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -35959,7 +36159,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXQOJ" } ] }, @@ -35990,6 +36190,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36019,7 +36227,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYJVZ" } ] }, @@ -36050,6 +36258,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36079,7 +36295,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2B5J" } ] }, @@ -36110,6 +36326,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36139,7 +36363,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4ZEZ" } ] }, @@ -36170,6 +36394,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36199,7 +36431,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6RMJ" } ] }, @@ -36230,6 +36462,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36259,7 +36499,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBG3K" } ] }, @@ -36290,6 +36530,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36319,7 +36567,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDOT2" } ] }, @@ -36350,6 +36598,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36379,7 +36635,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFWKK" } ] }, @@ -36410,6 +36666,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36439,7 +36703,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6C2" } ] }, @@ -36470,6 +36734,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36499,7 +36771,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHZK" } ] }, @@ -36530,6 +36802,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36559,7 +36839,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKPR2" } ] }, @@ -36590,6 +36870,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36619,7 +36907,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMXIK" } ] }, @@ -36650,6 +36938,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36679,7 +36975,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7A2" } ] }, @@ -36710,6 +37006,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36739,7 +37043,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRE7L" } ] }, @@ -36770,6 +37074,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36799,7 +37111,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTMX3" } ] }, @@ -36830,6 +37142,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36859,7 +37179,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVUOL" } ] }, @@ -36890,6 +37210,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36919,7 +37247,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADX4G3" } ] }, @@ -36950,6 +37278,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -36979,7 +37315,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYF5L" } ] }, @@ -37010,6 +37346,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37039,7 +37383,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2NV3" } ] }, @@ -37070,6 +37414,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37099,7 +37451,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4VML" } ] }, @@ -37130,6 +37482,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37159,7 +37519,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD65E3" } ] }, @@ -37190,6 +37550,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37219,7 +37587,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADAU" } ] }, @@ -37250,6 +37618,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37279,7 +37655,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAECLIE" } ] }, @@ -37310,6 +37686,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37339,7 +37723,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEETRU" } ] }, @@ -37370,6 +37754,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37399,7 +37791,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEG3ZE" } ] }, @@ -37430,6 +37822,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37459,7 +37859,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEJCCU" } ] }, @@ -37490,6 +37890,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37519,7 +37927,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELKKE" } ] }, @@ -37550,6 +37958,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37579,7 +37995,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAENSTU" } ] }, @@ -37610,6 +38026,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37639,7 +38063,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEP23E" } ] }, @@ -37670,6 +38094,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37699,7 +38131,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQBEV" } ] }, @@ -37730,6 +38162,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37759,7 +38199,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESJMF" } ] }, @@ -37786,68 +38226,16 @@ "key": { "symbol": "flags" }, - "val": { - "u32": 1 - } - }, - { - "key": { - "symbol": "severity" - }, "val": { "u32": 0 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 1 + "u32": 4 } }, { @@ -37879,7 +38267,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEURVV" } ] }, @@ -37907,7 +38295,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -37939,7 +38335,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWZ5F" } ] }, @@ -37970,6 +38366,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -37999,7 +38403,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZAGV" } ] }, @@ -38030,6 +38434,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38059,7 +38471,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE3IOF" } ] }, @@ -38090,6 +38502,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38119,7 +38539,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5QXV" } ] }, @@ -38150,6 +38570,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38179,7 +38607,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE7Y7F" } ] }, @@ -38212,62 +38640,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -38299,7 +38675,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAPIG" } ] }, @@ -38332,62 +38708,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -38419,7 +38743,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCHAW" } ] }, @@ -38450,6 +38774,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38479,7 +38811,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFE7ZG" } ] }, @@ -38510,6 +38842,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38539,7 +38879,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGXRW" } ] }, @@ -38570,6 +38910,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38599,7 +38947,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJOKG" } ] }, @@ -38630,6 +38978,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38659,7 +39015,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFLGCW" } ] }, @@ -38690,6 +39046,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38719,7 +39083,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFN63G" } ] }, @@ -38750,6 +39114,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38779,7 +39151,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFPWTW" } ] }, @@ -38810,6 +39182,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38839,7 +39219,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQNMH" } ] }, @@ -38870,6 +39250,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38899,7 +39287,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSFEX" } ] }, @@ -38930,6 +39318,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -38959,7 +39355,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFU55H" } ] }, @@ -38990,6 +39386,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39019,7 +39423,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWVVX" } ] }, @@ -39050,6 +39454,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39079,7 +39491,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZMOH" } ] }, @@ -39110,6 +39522,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39139,7 +39559,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF3EGX" } ] }, @@ -39170,6 +39590,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39199,7 +39627,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF547H" } ] }, @@ -39230,6 +39658,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39259,7 +39695,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF7UXX" } ] }, @@ -39290,6 +39726,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39319,7 +39763,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA3RQ" } ] }, @@ -39350,6 +39794,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39379,7 +39831,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGCTZA" } ] }, @@ -39412,62 +39864,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -39499,7 +39899,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQZVR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGELAQ" } ] }, @@ -39532,62 +39932,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSR5B" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -39619,7 +39967,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUJER" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGDIA" } ] }, @@ -39650,6 +39998,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39679,7 +40035,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGWBMB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJ2TQ" } ] }, @@ -39710,6 +40066,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39739,7 +40103,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZYXR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGLS3A" } ] }, @@ -39770,6 +40134,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39799,7 +40171,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG3Q7B" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGNKCQ" } ] }, @@ -39830,6 +40202,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39859,7 +40239,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG5IGR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGPCKA" } ] }, @@ -39890,6 +40270,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39919,7 +40307,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7AOB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQZVR" } ] }, @@ -39950,6 +40338,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -39979,7 +40375,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAXZC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSR5B" } ] }, @@ -40010,6 +40406,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40039,7 +40443,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHC7RS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGUJER" } ] }, @@ -40070,6 +40474,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40099,7 +40511,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEHIC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGWBMB" } ] }, @@ -40130,6 +40542,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40159,7 +40579,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHGPAS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZYXR" } ] }, @@ -40190,6 +40610,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40219,7 +40647,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJW3C" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG3Q7B" } ] }, @@ -40250,6 +40678,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40279,7 +40715,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL6TS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG5IGR" } ] }, @@ -40310,6 +40746,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40339,7 +40783,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNGKC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG7AOB" } ] }, @@ -40370,6 +40814,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40399,7 +40851,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHPOCS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAXZC" } ] }, @@ -40430,6 +40882,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40459,7 +40919,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQV5D" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHC7RS" } ] }, @@ -40490,6 +40950,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40519,7 +40987,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHS5VT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEHIC" } ] }, @@ -40550,6 +41018,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40579,7 +41055,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHUFMD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHGPAS" } ] }, @@ -40612,62 +41088,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHWNET" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -40699,7 +41123,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZU7D" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJW3C" } ] }, @@ -40732,62 +41156,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 0 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH34XT" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -40819,7 +41191,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5EOD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHL6TS" } ] }, @@ -40850,6 +41222,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40879,7 +41259,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH7MGT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNGKC" } ] }, @@ -40910,6 +41290,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40939,7 +41327,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAQGN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHPOCS" } ] }, @@ -40970,6 +41358,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -40999,7 +41395,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICYO5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQV5D" } ] }, @@ -41030,6 +41426,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41059,7 +41463,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAXN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHS5VT" } ] }, @@ -41090,6 +41494,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41119,7 +41531,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGI75" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHUFMD" } ] }, @@ -41150,6 +41562,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41179,7 +41599,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJREN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHWNET" } ] }, @@ -41210,6 +41630,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41239,7 +41667,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILZM5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZU7D" } ] }, @@ -41270,6 +41698,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41299,7 +41735,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAINBVN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH34XT" } ] }, @@ -41330,6 +41766,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41359,7 +41803,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPJ55" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5EOD" } ] }, @@ -41390,6 +41834,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41419,7 +41871,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQSCM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH7MGT" } ] }, @@ -41450,6 +41902,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41479,7 +41939,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIS2K4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAQGN" } ] }, @@ -41510,6 +41970,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41539,7 +42007,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUCTM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICYO5" } ] }, @@ -41570,6 +42038,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41599,7 +42075,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIWK34" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAXN" } ] }, @@ -41630,6 +42106,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41659,7 +42143,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIZTAM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIGI75" } ] }, @@ -41690,6 +42174,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41719,7 +42211,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI33I4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJREN" } ] }, @@ -41750,6 +42242,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41779,7 +42279,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5DRM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAILZM5" } ] }, @@ -41810,6 +42310,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41839,7 +42347,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI7LZ4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAINBVN" } ] }, @@ -41870,6 +42378,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41899,7 +42415,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJA4O7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPJ55" } ] }, @@ -41930,6 +42446,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -41959,7 +42483,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCUGP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQSCM" } ] }, @@ -41990,6 +42514,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -42019,7 +42551,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEM77" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIS2K4" } ] }, @@ -42050,6 +42582,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -42079,7 +42619,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWWNFS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIUCTM" } ] }, @@ -42107,7 +42647,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -42115,7 +42663,7 @@ "symbol": "severity" }, "val": { - "u32": 1 + "u32": 0 } } ] @@ -42139,7 +42687,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWZU6C" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIWK34" } ] }, @@ -42167,7 +42715,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -42175,7 +42731,7 @@ "symbol": "severity" }, "val": { - "u32": 1 + "u32": 0 } } ] @@ -42199,7 +42755,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW34WS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIZTAM" } ] }, @@ -42227,7 +42783,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -42235,7 +42799,7 @@ "symbol": "severity" }, "val": { - "u32": 1 + "u32": 0 } } ] @@ -42259,7 +42823,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW5EPC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI33I4" } ] }, @@ -42287,7 +42851,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -42295,7 +42867,7 @@ "symbol": "severity" }, "val": { - "u32": 1 + "u32": 0 } } ] @@ -42319,7 +42891,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW7MHS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI5DRM" } ] }, @@ -42347,7 +42919,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -42355,7 +42935,7 @@ "symbol": "severity" }, "val": { - "u32": 1 + "u32": 0 } } ] @@ -42379,7 +42959,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXA3QR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI7LZ4" } ] }, @@ -42407,7 +42987,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -42415,7 +43003,7 @@ "symbol": "severity" }, "val": { - "u32": 1 + "u32": 0 } } ] @@ -42439,7 +43027,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXCTYB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJA4O7" } ] }, @@ -42467,7 +43055,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -42475,7 +43071,7 @@ "symbol": "severity" }, "val": { - "u32": 1 + "u32": 0 } } ] @@ -42499,7 +43095,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXELBR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCUGP" } ] }, @@ -42527,16 +43123,92 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { "key": { "symbol": "severity" }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJEM77" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, "val": { "u32": 1 } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } } ] } @@ -42559,7 +43231,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXGDJB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWWNFS" } ] }, @@ -42590,6 +43262,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -42619,7 +43299,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXJ2SR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWZU6C" } ] }, @@ -42650,6 +43330,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -42679,7 +43367,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXLS2B" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW34WS" } ] }, @@ -42710,6 +43398,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -42739,7 +43435,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXNKDR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW5EPC" } ] }, @@ -42770,6 +43466,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -42799,7 +43503,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXPCLB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW7MHS" } ] }, @@ -42830,6 +43534,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -42859,7 +43571,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQZUQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXA3QR" } ] }, @@ -42892,62 +43604,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXSR4A" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -42979,7 +43639,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXUJFQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXCTYB" } ] }, @@ -43010,6 +43670,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43039,7 +43707,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXWBNA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXELBR" } ] }, @@ -43070,6 +43738,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43099,7 +43775,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXZYWQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXGDJB" } ] }, @@ -43130,6 +43806,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43159,7 +43843,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX3Q6A" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXJ2SR" } ] }, @@ -43190,6 +43874,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43219,7 +43911,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX5IHQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXLS2B" } ] }, @@ -43250,6 +43942,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43279,7 +43979,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX7APA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXNKDR" } ] }, @@ -43310,6 +44010,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43339,7 +44047,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYA4P6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXPCLB" } ] }, @@ -43370,6 +44078,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43399,7 +44115,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYCUHO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQZUQ" } ] }, @@ -43430,6 +44146,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43459,7 +44183,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYEM66" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXSR4A" } ] }, @@ -43490,6 +44214,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43519,7 +44251,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGEWO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXUJFQ" } ] }, @@ -43550,6 +44282,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43579,7 +44319,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYJ5N6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXWBNA" } ] }, @@ -43610,6 +44350,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43639,7 +44387,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYLVFO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXZYWQ" } ] }, @@ -43670,6 +44418,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43699,7 +44455,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNN46" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX3Q6A" } ] }, @@ -43730,6 +44486,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43759,7 +44523,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYPFUO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX5IHQ" } ] }, @@ -43790,6 +44554,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43819,7 +44591,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQ6L7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX7APA" } ] }, @@ -43850,6 +44622,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43879,7 +44659,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYSWDP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYA4P6" } ] }, @@ -43910,6 +44690,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43939,7 +44727,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYUO27" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYCUHO" } ] }, @@ -43970,6 +44758,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -43999,7 +44795,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYWGSP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYEM66" } ] }, @@ -44030,6 +44826,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44059,7 +44863,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYZ7J7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGEWO" } ] }, @@ -44090,6 +44894,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44119,7 +44931,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY3XBP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYJ5N6" } ] }, @@ -44150,6 +44962,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44179,7 +44999,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5PY7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYLVFO" } ] }, @@ -44210,6 +45030,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44239,7 +45067,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY7HQP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYNN46" } ] }, @@ -44270,6 +45098,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44299,7 +45135,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAQHM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYPFUO" } ] }, @@ -44332,62 +45168,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZCYP4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -44419,7 +45203,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZEAWM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYQ6L7" } ] }, @@ -44452,62 +45236,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGI64" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -44539,7 +45271,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZJRFM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYSWDP" } ] }, @@ -44570,6 +45302,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44599,7 +45339,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZLZN4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYUO27" } ] }, @@ -44630,6 +45370,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44659,7 +45407,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZNBUM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYWGSP" } ] }, @@ -44690,6 +45438,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44719,7 +45475,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZPJ44" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYZ7J7" } ] }, @@ -44750,6 +45506,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44779,7 +45543,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQSDN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY3XBP" } ] }, @@ -44810,6 +45574,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44839,7 +45611,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZS2L5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY5PY7" } ] }, @@ -44870,6 +45642,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44899,7 +45679,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZUCSN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY7HQP" } ] }, @@ -44930,6 +45710,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -44959,7 +45747,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWK25" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAQHM" } ] }, @@ -44990,6 +45778,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45019,7 +45815,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZZTBN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZCYP4" } ] }, @@ -45050,6 +45846,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45079,7 +45883,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ33J5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZEAWM" } ] }, @@ -45110,6 +45914,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45139,7 +45951,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ5DQN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGI64" } ] }, @@ -45170,6 +45982,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45199,7 +46019,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ7LY5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZJRFM" } ] }, @@ -45230,6 +46050,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45259,7 +46087,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AE62" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZLZN4" } ] }, @@ -45290,6 +46118,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45319,7 +46155,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2CMWK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZNBUM" } ] }, @@ -45350,6 +46186,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45379,7 +46223,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2EUP2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZPJ44" } ] }, @@ -45410,6 +46254,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45439,7 +46291,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2G4HK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZQSDN" } ] }, @@ -45470,6 +46322,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45499,7 +46359,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2JF42" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZS2L5" } ] }, @@ -45530,6 +46390,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45559,7 +46427,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2LNUK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZUCSN" } ] }, @@ -45590,6 +46458,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45619,7 +46495,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2NVN2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWK25" } ] }, @@ -45650,6 +46526,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45679,7 +46563,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2P5FK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZZTBN" } ] }, @@ -45710,6 +46594,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45739,7 +46631,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2QG23" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ33J5" } ] }, @@ -45770,6 +46662,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45799,7 +46699,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2SOSL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ5DQN" } ] }, @@ -45830,6 +46730,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45859,7 +46767,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2UWL3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ7LY5" } ] }, @@ -45890,6 +46798,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45919,7 +46835,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2W6DL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AE62" } ] }, @@ -45950,6 +46866,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -45979,7 +46903,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZHY3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2CMWK" } ] }, @@ -46010,6 +46934,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -46039,7 +46971,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA23PQL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2EUP2" } ] }, @@ -46070,6 +47002,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -46099,7 +47039,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA25XJ3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2G4HK" } ] }, @@ -46130,6 +47070,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -46159,7 +47107,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA277BL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2JF42" } ] }, @@ -46190,6 +47138,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -46219,7 +47175,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AIWI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2LNUK" } ] }, @@ -46250,6 +47206,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -46279,7 +47243,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3CA6Y" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2NVN2" } ] }, @@ -46310,6 +47274,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -46339,7 +47311,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3EYHI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2P5FK" } ] }, @@ -46372,62 +47344,10 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3GQPY" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 1 + "u32": 4 } }, { @@ -46459,7 +47379,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3JJUI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2QG23" } ] }, @@ -46487,7 +47407,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -46519,7 +47447,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3LB4Y" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2SOSL" } ] }, @@ -46547,7 +47475,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -46579,7 +47515,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3NZFI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2UWL3" } ] }, @@ -46607,7 +47543,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -46639,7 +47583,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3PRNY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2W6DL" } ] }, @@ -46667,7 +47611,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -46699,7 +47651,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3QKSJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZHY3" } ] }, @@ -46727,7 +47679,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -46759,7 +47719,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3SC2Z" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA23PQL" } ] }, @@ -46787,7 +47747,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -46819,7 +47787,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3U2DJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA25XJ3" } ] }, @@ -46847,7 +47815,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -46879,7 +47855,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3WSLZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA277BL" } ] }, @@ -46907,67 +47883,15 @@ "symbol": "flags" }, "val": { - "u32": 1 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ZLQJ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 0 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 1 + "u32": 4 } }, { @@ -46999,7 +47923,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA33DYZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AIWI" } ] }, @@ -47027,67 +47951,15 @@ "symbol": "flags" }, "val": { - "u32": 1 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA353BJ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 0 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 1 + "u32": 4 } }, { @@ -47119,7 +47991,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA37TJZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3CA6Y" } ] }, @@ -47147,7 +48019,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -47179,7 +48059,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BNNW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3EYHI" } ] }, @@ -47207,7 +48087,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -47239,7 +48127,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4DFFG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3GQPY" } ] }, @@ -47270,6 +48158,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47299,7 +48195,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4F54W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3JJUI" } ] }, @@ -47330,6 +48226,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47359,7 +48263,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4HVUG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3LB4Y" } ] }, @@ -47390,6 +48294,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47419,7 +48331,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IMPW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3NZFI" } ] }, @@ -47450,6 +48362,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47479,7 +48399,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4KEHG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3PRNY" } ] }, @@ -47510,6 +48430,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47539,7 +48467,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4M46W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3QKSJ" } ] }, @@ -47570,6 +48498,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47599,7 +48535,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4OUWG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3SC2Z" } ] }, @@ -47630,6 +48566,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47659,7 +48603,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4RPJX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3U2DJ" } ] }, @@ -47690,6 +48634,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47719,7 +48671,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4THBH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3WSLZ" } ] }, @@ -47750,6 +48702,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47779,7 +48739,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4V7YX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3ZLQJ" } ] }, @@ -47810,6 +48770,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47839,7 +48807,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4XXQH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA33DYZ" } ] }, @@ -47870,6 +48838,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47899,7 +48875,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4YOLX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA353BJ" } ] }, @@ -47930,6 +48906,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -47959,7 +48943,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA42GDH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA37TJZ" } ] }, @@ -47990,6 +48974,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48019,7 +49011,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4462X" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BNNW" } ] }, @@ -48052,62 +49044,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA46WSH" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -48139,7 +49079,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5BBFE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4DFFG" } ] }, @@ -48170,6 +49110,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48199,7 +49147,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5DJNU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4F54W" } ] }, @@ -48230,6 +49178,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48259,7 +49215,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5FRUE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4HVUG" } ] }, @@ -48290,6 +49246,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48319,7 +49283,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5HZ4U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4IMPW" } ] }, @@ -48350,6 +49314,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48379,7 +49351,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5IAHE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4KEHG" } ] }, @@ -48410,6 +49382,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48439,7 +49419,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5KIPU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4M46W" } ] }, @@ -48470,6 +49450,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48499,7 +49487,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5MQWE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4OUWG" } ] }, @@ -48530,6 +49518,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48559,7 +49555,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5OY6U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4RPJX" } ] }, @@ -48590,6 +49586,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48619,7 +49623,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5RDBF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4THBH" } ] }, @@ -48650,6 +49654,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48679,7 +49691,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5TLJV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4V7YX" } ] }, @@ -48710,6 +49722,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48739,7 +49759,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5VTQF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4XXQH" } ] }, @@ -48770,6 +49790,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48799,7 +49827,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5X3YV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4YOLX" } ] }, @@ -48830,6 +49858,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48859,7 +49895,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5YCDF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA42GDH" } ] }, @@ -48890,6 +49926,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48919,7 +49963,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA52KLV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4462X" } ] }, @@ -48950,6 +49994,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -48979,7 +50031,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA54SSF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA46WSH" } ] }, @@ -49010,6 +50062,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49039,7 +50099,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5622V" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5BBFE" } ] }, @@ -49070,6 +50130,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49099,7 +50167,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6BV4S" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5DJNU" } ] }, @@ -49130,6 +50198,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49159,7 +50235,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6D5UC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5FRUE" } ] }, @@ -49190,6 +50266,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49219,7 +50303,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6FFNS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5HZ4U" } ] }, @@ -49250,6 +50334,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49279,7 +50371,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6HNFC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5IAHE" } ] }, @@ -49310,6 +50402,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49339,7 +50439,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6IU6S" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5KIPU" } ] }, @@ -49370,6 +50470,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49399,7 +50507,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6K4WC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5MQWE" } ] }, @@ -49430,6 +50538,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49459,7 +50575,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6MEPS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5OY6U" } ] }, @@ -49492,62 +50608,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6OMHC" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -49579,7 +50643,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6RXYT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5RDBF" } ] }, @@ -49612,62 +50676,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 1 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6T7QD" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -49699,7 +50711,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6VHJT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5TLJV" } ] }, @@ -49730,6 +50742,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49759,7 +50779,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6XPBD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5VTQF" } ] }, @@ -49790,6 +50810,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49819,7 +50847,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6YW2T" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5X3YV" } ] }, @@ -49850,6 +50878,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49879,7 +50915,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA626SD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5YCDF" } ] }, @@ -49910,6 +50946,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49939,7 +50983,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA64GLT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA52KLV" } ] }, @@ -49970,6 +51014,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -49999,7 +51051,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA66ODD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA54SSF" } ] }, @@ -50030,6 +51082,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50059,7 +51119,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7BZUA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5622V" } ] }, @@ -50090,6 +51150,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50119,7 +51187,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7DR4Q" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6BV4S" } ] }, @@ -50150,6 +51218,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50179,7 +51255,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7FJFA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6D5UC" } ] }, @@ -50210,6 +51286,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50239,7 +51323,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7HBNQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6FFNS" } ] }, @@ -50270,6 +51354,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50299,7 +51391,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7IYWA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6HNFC" } ] }, @@ -50330,6 +51422,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50359,7 +51459,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7KQ6Q" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6IU6S" } ] }, @@ -50390,6 +51490,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50419,7 +51527,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7MIHA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6K4WC" } ] }, @@ -50450,6 +51558,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50479,7 +51595,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7OAPQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6MEPS" } ] }, @@ -50510,6 +51626,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50539,7 +51663,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7R3QB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6OMHC" } ] }, @@ -50570,6 +51694,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50599,7 +51731,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7TTYR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6RXYT" } ] }, @@ -50630,6 +51762,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50659,7 +51799,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7VLBB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6T7QD" } ] }, @@ -50690,6 +51830,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -50719,7 +51867,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNHNGB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6VHJT" } ] }, @@ -50747,7 +51895,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -50755,7 +51911,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -50779,7 +51935,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNIU5R" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6XPBD" } ] }, @@ -50807,7 +51963,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -50815,7 +51979,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -50839,7 +52003,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNK4VB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6YW2T" } ] }, @@ -50867,7 +52031,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -50875,7 +52047,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -50899,7 +52071,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNMEMR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA626SD" } ] }, @@ -50927,7 +52099,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -50935,7 +52115,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -50959,7 +52139,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNOMEB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA64GLT" } ] }, @@ -50987,7 +52167,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -50995,7 +52183,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51019,7 +52207,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNRX3Q" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA66ODD" } ] }, @@ -51047,7 +52235,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51055,7 +52251,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51079,7 +52275,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNT7TA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7BZUA" } ] }, @@ -51107,7 +52303,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51115,7 +52319,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51139,7 +52343,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNVHKQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7DR4Q" } ] }, @@ -51167,7 +52371,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51175,7 +52387,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51199,7 +52411,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNXPCA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7FJFA" } ] }, @@ -51227,7 +52439,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51235,7 +52455,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51259,7 +52479,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNYWZQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7HBNQ" } ] }, @@ -51287,7 +52507,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51295,7 +52523,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51319,7 +52547,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABN26RA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7IYWA" } ] }, @@ -51347,7 +52575,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51355,7 +52591,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51379,7 +52615,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABN4GIQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7KQ6Q" } ] }, @@ -51407,7 +52643,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51415,7 +52659,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51439,7 +52683,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABN6OAA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7MIHA" } ] }, @@ -51467,7 +52711,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51475,7 +52727,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51499,7 +52751,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOBBGH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7OAPQ" } ] }, @@ -51527,7 +52779,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51535,7 +52795,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51559,7 +52819,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABODJOX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7R3QB" } ] }, @@ -51587,7 +52847,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51595,7 +52863,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51619,7 +52887,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOFRXH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7TTYR" } ] }, @@ -51647,7 +52915,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51655,7 +52931,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51679,7 +52955,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHZ7X" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7VLBB" } ] }, @@ -51707,7 +52983,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -51715,7 +52999,7 @@ "symbol": "severity" }, "val": { - "u32": 2 + "u32": 1 } } ] @@ -51739,7 +53023,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOIAEH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNHNGB" } ] }, @@ -51770,6 +53054,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -51799,7 +53091,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOKIMX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNIU5R" } ] }, @@ -51830,6 +53122,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -51859,7 +53159,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOMQVH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNK4VB" } ] }, @@ -51890,6 +53190,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -51919,7 +53227,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOOY5X" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNMEMR" } ] }, @@ -51952,62 +53260,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 2 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABORDCG" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -52039,7 +53295,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOTLKW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNOMEB" } ] }, @@ -52072,62 +53328,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 2 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOVTTG" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -52159,7 +53363,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOX33W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNRX3Q" } ] }, @@ -52190,6 +53394,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52219,7 +53431,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOYCAG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNT7TA" } ] }, @@ -52250,6 +53462,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52279,7 +53499,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABO2KIW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNVHKQ" } ] }, @@ -52310,6 +53530,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52339,7 +53567,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABO4SRG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNXPCA" } ] }, @@ -52370,6 +53598,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52399,7 +53635,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABO62ZW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNYWZQ" } ] }, @@ -52430,6 +53666,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52459,7 +53703,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPBNOV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABN26RA" } ] }, @@ -52490,6 +53734,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52519,7 +53771,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPDFGF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABN4GIQ" } ] }, @@ -52550,6 +53802,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52579,7 +53839,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPF57V" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABN6OAA" } ] }, @@ -52610,6 +53870,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52639,7 +53907,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPHVXF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOBBGH" } ] }, @@ -52670,6 +53938,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52699,7 +53975,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPIMMV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABODJOX" } ] }, @@ -52730,6 +54006,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52759,7 +54043,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPKEEF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOFRXH" } ] }, @@ -52790,6 +54074,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52819,7 +54111,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPM45V" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOHZ7X" } ] }, @@ -52850,6 +54142,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52879,7 +54179,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPOUVF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOIAEH" } ] }, @@ -52910,6 +54210,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52939,7 +54247,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPRPKU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOKIMX" } ] }, @@ -52970,6 +54278,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -52999,7 +54315,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPTHCE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOMQVH" } ] }, @@ -53030,6 +54346,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53059,7 +54383,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPV73U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOOY5X" } ] }, @@ -53090,6 +54414,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53119,7 +54451,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPXXTE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABORDCG" } ] }, @@ -53152,62 +54484,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 2 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPYOIU" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -53239,7 +54519,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP2GAE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOTLKW" } ] }, @@ -53272,62 +54552,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 2 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP46ZU" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -53359,7 +54587,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP6WRE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOVTTG" } ] }, @@ -53390,6 +54618,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53419,7 +54655,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQBGYJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOX33W" } ] }, @@ -53450,6 +54686,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53479,7 +54723,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQDOQZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOYCAG" } ] }, @@ -53510,6 +54754,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53539,7 +54791,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQFWJJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABO2KIW" } ] }, @@ -53570,6 +54822,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53599,7 +54859,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQH6BZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABO4SRG" } ] }, @@ -53630,6 +54890,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53659,7 +54927,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQIH2J" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABO62ZW" } ] }, @@ -53690,6 +54958,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53719,7 +54995,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQKPSZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPBNOV" } ] }, @@ -53750,6 +55026,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53779,7 +55063,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQMXLJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPDFGF" } ] }, @@ -53810,6 +55094,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53839,7 +55131,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQO7DZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPF57V" } ] }, @@ -53870,6 +55162,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53899,7 +55199,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQRE4I" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPHVXF" } ] }, @@ -53930,6 +55230,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -53959,7 +55267,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQTMUY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPIMMV" } ] }, @@ -53990,6 +55298,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54019,7 +55335,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQVUNI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPKEEF" } ] }, @@ -54050,6 +55366,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54079,7 +55403,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQX4FY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPM45V" } ] }, @@ -54110,6 +55434,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54139,7 +55471,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQYF6I" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPOUVF" } ] }, @@ -54170,6 +55502,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54199,7 +55539,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ2NWY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPRPKU" } ] }, @@ -54230,6 +55570,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54259,7 +55607,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ4VPI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPTHCE" } ] }, @@ -54290,6 +55638,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54319,7 +55675,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ65HY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPV73U" } ] }, @@ -54350,6 +55706,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54379,7 +55743,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRBKQ3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPXXTE" } ] }, @@ -54410,6 +55774,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54439,7 +55811,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRDCYL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPYOIU" } ] }, @@ -54470,6 +55842,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54499,7 +55879,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRF2B3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP2GAE" } ] }, @@ -54530,6 +55910,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54559,7 +55947,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRHSJL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP46ZU" } ] }, @@ -54590,6 +55978,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54619,7 +56015,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRILS3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABP6WRE" } ] }, @@ -54650,6 +56046,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54679,7 +56083,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRKD2L" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQBGYJ" } ] }, @@ -54710,6 +56114,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54739,7 +56151,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRM3D3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQDOQZ" } ] }, @@ -54770,6 +56182,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54799,7 +56219,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABROTLL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQFWJJ" } ] }, @@ -54830,6 +56250,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54859,7 +56287,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRRIU2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQH6BZ" } ] }, @@ -54890,6 +56318,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54919,7 +56355,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRTA4K" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQIH2J" } ] }, @@ -54950,6 +56386,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -54979,7 +56423,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRVYF2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQKPSZ" } ] }, @@ -55012,62 +56456,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 2 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRXQNK" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -55099,7 +56491,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRYJW2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQMXLJ" } ] }, @@ -55127,67 +56519,15 @@ "symbol": "flags" }, "val": { - "u32": 1 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 2 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR2B6K" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 0 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 1 + "u32": 4 } }, { @@ -55219,7 +56559,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4ZH2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQO7DZ" } ] }, @@ -55247,7 +56587,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55279,7 +56627,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR6RPK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQRE4I" } ] }, @@ -55307,7 +56655,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55339,7 +56695,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSB6JN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQTMUY" } ] }, @@ -55367,7 +56723,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55399,7 +56763,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSDWB5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQVUNI" } ] }, @@ -55427,7 +56791,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55459,7 +56831,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSFOYN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQX4FY" } ] }, @@ -55487,7 +56859,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55519,7 +56899,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSHGQ5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQYF6I" } ] }, @@ -55547,7 +56927,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55579,7 +56967,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSI7LN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ2NWY" } ] }, @@ -55607,7 +56995,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55639,7 +57035,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSKXD5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ4VPI" } ] }, @@ -55667,7 +57063,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55699,7 +57103,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSMP2N" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ65HY" } ] }, @@ -55727,7 +57131,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55759,7 +57171,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSOHS5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRBKQ3" } ] }, @@ -55787,7 +57199,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55819,7 +57239,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSR4NM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRDCYL" } ] }, @@ -55847,7 +57267,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55879,7 +57307,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSTUF4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRF2B3" } ] }, @@ -55907,7 +57335,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55939,7 +57375,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSVM4M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRHSJL" } ] }, @@ -55967,7 +57403,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -55999,7 +57443,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSXEU4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRILS3" } ] }, @@ -56027,7 +57471,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -56059,7 +57511,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSY5PM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRKD2L" } ] }, @@ -56087,7 +57539,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -56119,7 +57579,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABS2VH4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRM3D3" } ] }, @@ -56147,7 +57607,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -56179,7 +57647,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABS4N6M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABROTLL" } ] }, @@ -56207,7 +57675,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -56239,7 +57715,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABS6FW4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRRIU2" } ] }, @@ -56267,7 +57743,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -56299,7 +57783,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTBSB7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRTA4K" } ] }, @@ -56327,7 +57811,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -56359,7 +57851,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTD2JP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRVYF2" } ] }, @@ -56387,7 +57879,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -56419,7 +57919,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTFCQ7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRXQNK" } ] }, @@ -56450,6 +57950,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56479,7 +57987,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTHKYP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABRYJW2" } ] }, @@ -56510,6 +58018,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56539,7 +58055,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTITD7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR2B6K" } ] }, @@ -56570,6 +58086,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56599,7 +58123,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTK3LP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR4ZH2" } ] }, @@ -56630,6 +58154,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56659,7 +58191,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTMDS7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR6RPK" } ] }, @@ -56690,6 +58222,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56719,7 +58259,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTOL2P" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSB6JN" } ] }, @@ -56750,6 +58290,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56779,7 +58327,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTRQF6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSDWB5" } ] }, @@ -56810,6 +58358,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56839,7 +58395,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTTYNO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSFOYN" } ] }, @@ -56870,6 +58426,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56899,7 +58463,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTVAU6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSHGQ5" } ] }, @@ -56930,6 +58494,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -56959,7 +58531,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTXI4O" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSI7LN" } ] }, @@ -56992,62 +58564,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 2 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTYRH6" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -57079,7 +58599,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABT2ZPO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSKXD5" } ] }, @@ -57110,6 +58630,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57139,7 +58667,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABT4BW6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSMP2N" } ] }, @@ -57170,6 +58698,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57199,7 +58735,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABT6J6O" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSOHS5" } ] }, @@ -57230,6 +58766,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57259,7 +58803,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAX2B" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSR4NM" } ] }, @@ -57290,6 +58834,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57319,7 +58871,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUC7SR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSTUF4" } ] }, @@ -57350,6 +58902,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57379,7 +58939,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUEHLB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSVM4M" } ] }, @@ -57410,6 +58970,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57439,7 +59007,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUGPDR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSXEU4" } ] }, @@ -57470,6 +59038,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57499,7 +59075,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUJWYB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSY5PM" } ] }, @@ -57530,6 +59106,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57559,7 +59143,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUL6QR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABS2VH4" } ] }, @@ -57590,6 +59174,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57619,7 +59211,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNGJB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABS4N6M" } ] }, @@ -57650,6 +59242,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57679,7 +59279,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUPOBR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABS6FW4" } ] }, @@ -57710,6 +59310,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57739,7 +59347,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUQV6A" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTBSB7" } ] }, @@ -57770,6 +59378,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57799,7 +59415,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUS5WQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTD2JP" } ] }, @@ -57830,6 +59446,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57859,7 +59483,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUUFPA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTFCQ7" } ] }, @@ -57890,6 +59514,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57919,7 +59551,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUWNHQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTHKYP" } ] }, @@ -57950,6 +59582,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -57979,7 +59619,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUZU4A" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTITD7" } ] }, @@ -58010,6 +59650,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58039,7 +59687,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU34UQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTK3LP" } ] }, @@ -58070,6 +59718,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58099,7 +59755,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU5ENA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTMDS7" } ] }, @@ -58130,6 +59786,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58159,7 +59823,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU7MFQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTOL2P" } ] }, @@ -58190,6 +59854,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58219,7 +59891,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVA3ST" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTRQF6" } ] }, @@ -58250,6 +59922,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58279,7 +59959,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVCT2D" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTTYNO" } ] }, @@ -58310,6 +59990,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58339,7 +60027,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVELDT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTVAU6" } ] }, @@ -58370,6 +60058,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58399,7 +60095,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVGDLD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTXI4O" } ] }, @@ -58430,6 +60126,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58459,7 +60163,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVJ2QT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTYRH6" } ] }, @@ -58490,6 +60194,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58519,7 +60231,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVLSYD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABT2ZPO" } ] }, @@ -58550,6 +60262,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58579,7 +60299,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVNKBT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABT4BW6" } ] }, @@ -58610,6 +60330,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58639,7 +60367,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVPCJD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABT6J6O" } ] }, @@ -58670,6 +60398,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58699,7 +60435,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVQZWS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAX2B" } ] }, @@ -58730,6 +60466,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58759,7 +60503,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVSR6C" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUC7SR" } ] }, @@ -58790,6 +60534,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58819,7 +60571,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVUJHS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUEHLB" } ] }, @@ -58850,6 +60602,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58879,7 +60639,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVWBPC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUGPDR" } ] }, @@ -58910,6 +60670,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58939,7 +60707,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVZYUS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUJWYB" } ] }, @@ -58970,6 +60738,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -58999,7 +60775,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV3Q4C" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUL6QR" } ] }, @@ -59030,6 +60806,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -59059,7 +60843,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV5IFS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUNGJB" } ] }, @@ -59090,6 +60874,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -59119,7 +60911,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV7ANC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUPOBR" } ] }, @@ -59150,6 +60942,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -59179,7 +60979,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWAPLF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUQV6A" } ] }, @@ -59210,6 +61010,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -59239,7 +61047,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWCHDV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUS5WQ" } ] }, @@ -59270,6 +61078,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -59299,7 +61115,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWE72F" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUUFPA" } ] }, @@ -59330,6 +61146,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -59359,7 +61183,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDWNAX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUWNHQ" } ] }, @@ -59387,67 +61211,15 @@ "symbol": "flags" }, "val": { - "u32": 0 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDZU3H" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 1 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 0 + "u32": 4 } }, { @@ -59455,7 +61227,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -59479,7 +61251,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACD34TX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUZU4A" } ] }, @@ -59507,7 +61279,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -59515,7 +61295,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -59539,7 +61319,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACD5EKH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU34UQ" } ] }, @@ -59567,7 +61347,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -59575,7 +61363,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -59599,7 +61387,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACD7MCX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU5ENA" } ] }, @@ -59627,7 +61415,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -59635,7 +61431,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -59659,7 +61455,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEBSGY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABU7MFQ" } ] }, @@ -59687,7 +61483,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -59695,7 +61499,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -59719,7 +61523,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACED2OI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVA3ST" } ] }, @@ -59747,67 +61551,15 @@ "symbol": "flags" }, "val": { - "u32": 0 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEFCXY" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 1 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 0 + "u32": 4 } }, { @@ -59815,7 +61567,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -59839,7 +61591,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEHK7I" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVCT2D" } ] }, @@ -59867,67 +61619,15 @@ "symbol": "flags" }, "val": { - "u32": 0 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEITEY" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 1 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 0 + "u32": 4 } }, { @@ -59935,7 +61635,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -59959,7 +61659,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEK3MI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVELDT" } ] }, @@ -59987,67 +61687,15 @@ "symbol": "flags" }, "val": { - "u32": 0 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEMDVY" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 1 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 0 + "u32": 4 } }, { @@ -60055,7 +61703,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60079,7 +61727,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEOL5I" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVGDLD" } ] }, @@ -60107,7 +61755,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60115,7 +61771,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60139,7 +61795,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACERQCZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVJ2QT" } ] }, @@ -60167,7 +61823,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60175,7 +61839,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60199,7 +61863,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACETYKJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVLSYD" } ] }, @@ -60227,7 +61891,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60235,7 +61907,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60259,7 +61931,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEVATZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVNKBT" } ] }, @@ -60287,7 +61959,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60295,7 +61975,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60319,7 +61999,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEXI3J" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVPCJD" } ] }, @@ -60347,7 +62027,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60355,7 +62043,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60379,7 +62067,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEYRAZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVQZWS" } ] }, @@ -60407,7 +62095,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60415,7 +62111,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60439,7 +62135,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE2ZIJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVSR6C" } ] }, @@ -60467,7 +62163,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60475,7 +62179,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60499,7 +62203,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE4BRZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVUJHS" } ] }, @@ -60527,7 +62231,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60535,7 +62247,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60559,7 +62271,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE6JZJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVWBPC" } ] }, @@ -60587,7 +62299,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60595,7 +62315,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60619,7 +62339,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFB6OK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVZYUS" } ] }, @@ -60647,7 +62367,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60655,7 +62383,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60679,7 +62407,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFDWG2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV3Q4C" } ] }, @@ -60707,7 +62435,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60715,7 +62451,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60739,7 +62475,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFFO7K" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV5IFS" } ] }, @@ -60767,7 +62503,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60775,7 +62519,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60799,7 +62543,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFHGX2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABV7ANC" } ] }, @@ -60827,7 +62571,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60835,7 +62587,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60859,7 +62611,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFI7MK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWAPLF" } ] }, @@ -60887,7 +62639,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60895,7 +62655,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60919,7 +62679,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFKXE2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWCHDV" } ] }, @@ -60947,7 +62707,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -60955,7 +62723,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -60979,7 +62747,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFMP5K" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWE72F" } ] }, @@ -61007,7 +62775,15 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -61015,7 +62791,7 @@ "symbol": "severity" }, "val": { - "u32": 3 + "u32": 2 } } ] @@ -61039,7 +62815,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFOHV2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDWNAX" } ] }, @@ -61070,6 +62846,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61099,7 +62883,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFR4KL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDZU3H" } ] }, @@ -61130,6 +62914,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61159,7 +62951,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFTUC3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACD34TX" } ] }, @@ -61190,6 +62982,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61219,7 +63019,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFVM3L" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACD5EKH" } ] }, @@ -61250,6 +63050,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61279,7 +63087,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFXET3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACD7MCX" } ] }, @@ -61310,6 +63118,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61339,7 +63155,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFY5IL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEBSGY" } ] }, @@ -61370,6 +63186,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61399,7 +63223,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2VA3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACED2OI" } ] }, @@ -61430,6 +63254,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61459,7 +63291,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF4NZL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEFCXY" } ] }, @@ -61490,6 +63322,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61519,7 +63359,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF6FR3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEHK7I" } ] }, @@ -61550,6 +63390,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61579,7 +63427,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGBKX4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEITEY" } ] }, @@ -61610,6 +63458,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61639,7 +63495,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGDC7M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEK3MI" } ] }, @@ -61670,6 +63526,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61699,7 +63563,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGF2G4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEMDVY" } ] }, @@ -61730,6 +63594,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61759,7 +63631,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGHSOM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEOL5I" } ] }, @@ -61790,6 +63662,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61819,7 +63699,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGILV4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACERQCZ" } ] }, @@ -61850,6 +63730,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -61879,7 +63767,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGKD5M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACETYKJ" } ] }, @@ -61912,62 +63800,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGM3E4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -61999,7 +63835,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGOTMM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEVATZ" } ] }, @@ -62032,62 +63868,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGRIT5" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 + "u32": 4 } }, { @@ -62119,7 +63903,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGTA3N" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEXI3J" } ] }, @@ -62150,6 +63934,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62179,7 +63971,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGVYC5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEYRAZ" } ] }, @@ -62210,6 +64002,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62239,7 +64039,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGXQKN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE2ZIJ" } ] }, @@ -62270,6 +64070,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62299,7 +64107,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGYJR5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE4BRZ" } ] }, @@ -62330,6 +64138,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62359,7 +64175,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG2BZN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACE6JZJ" } ] }, @@ -62390,6 +64206,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62419,7 +64243,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG4ZA5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFB6OK" } ] }, @@ -62450,6 +64274,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62479,7 +64311,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG6RIN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFDWG2" } ] }, @@ -62510,6 +64342,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62539,7 +64379,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHBG7O" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFFO7K" } ] }, @@ -62570,6 +64410,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62599,7 +64447,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHDOX6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFHGX2" } ] }, @@ -62630,6 +64478,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62659,7 +64515,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHFWOO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFI7MK" } ] }, @@ -62690,6 +64546,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62719,7 +64583,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHH6G6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFKXE2" } ] }, @@ -62750,6 +64614,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62779,7 +64651,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHIH5O" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFMP5K" } ] }, @@ -62810,6 +64682,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62839,7 +64719,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHKPV6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFOHV2" } ] }, @@ -62870,6 +64750,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62899,7 +64787,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHMXMO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFR4KL" } ] }, @@ -62930,6 +64818,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -62959,7 +64855,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHO7E6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFTUC3" } ] }, @@ -62990,6 +64886,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63019,7 +64923,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHRE3P" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFVM3L" } ] }, @@ -63050,6 +64954,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63079,7 +64991,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHTMT7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFXET3" } ] }, @@ -63110,6 +65022,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63139,7 +65059,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHVUKP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFY5IL" } ] }, @@ -63170,6 +65090,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63199,7 +65127,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHX4C7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF2VA3" } ] }, @@ -63230,6 +65158,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63259,7 +65195,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHYFZP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF4NZL" } ] }, @@ -63290,6 +65226,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63319,7 +65263,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH2NR7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACF6FR3" } ] }, @@ -63350,6 +65294,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63379,7 +65331,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH4VIP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGBKX4" } ] }, @@ -63410,6 +65362,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63439,7 +65399,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH65A7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGDC7M" } ] }, @@ -63470,6 +65430,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63499,7 +65467,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIBBAB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGF2G4" } ] }, @@ -63530,6 +65498,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63559,7 +65535,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIDJIR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGHSOM" } ] }, @@ -63590,6 +65566,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -63619,7 +65603,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIFRRB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGILV4" } ] }, @@ -63652,62 +65636,10 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIHZZR" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" + "symbol": "preimage_version" }, "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -63739,7 +65671,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIIACB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGKD5M" } ] }, @@ -63767,7 +65699,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -63799,7 +65739,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIKIKR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGM3E4" } ] }, @@ -63827,7 +65767,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -63859,7 +65807,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIMQTB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGOTMM" } ] }, @@ -63887,7 +65835,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -63919,7 +65875,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIOY3R" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGRIT5" } ] }, @@ -63947,7 +65903,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -63979,7 +65943,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIRDEA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGTA3N" } ] }, @@ -64007,7 +65971,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64039,7 +66011,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACITLMQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGVYC5" } ] }, @@ -64067,7 +66039,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64099,7 +66079,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVTVA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGXQKN" } ] }, @@ -64127,7 +66107,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64159,7 +66147,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIX35Q" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGYJR5" } ] }, @@ -64187,7 +66175,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64219,7 +66215,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIYCGA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG2BZN" } ] }, @@ -64247,7 +66243,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64279,7 +66283,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI2KOQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG4ZA5" } ] }, @@ -64307,7 +66311,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64339,7 +66351,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI4SXA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACG6RIN" } ] }, @@ -64367,7 +66379,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64399,7 +66419,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI627Q" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHBG7O" } ] }, @@ -64427,67 +66447,15 @@ "symbol": "flags" }, "val": { - "u32": 1 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJBNIT" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 0 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 1 + "u32": 4 } }, { @@ -64519,7 +66487,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJDFAD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHDOX6" } ] }, @@ -64547,7 +66515,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64579,7 +66555,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJF5ZT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHFWOO" } ] }, @@ -64607,7 +66583,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64639,7 +66623,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJHVRD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHH6G6" } ] }, @@ -64667,7 +66651,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64699,7 +66691,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJIMKT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHIH5O" } ] }, @@ -64727,7 +66719,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64759,7 +66759,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJKECD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHKPV6" } ] }, @@ -64787,7 +66787,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64819,7 +66827,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJM43T" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHMXMO" } ] }, @@ -64847,7 +66855,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64879,7 +66895,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJOUTD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHO7E6" } ] }, @@ -64907,7 +66923,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64939,7 +66963,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJRPMS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHRE3P" } ] }, @@ -64967,7 +66991,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -64999,7 +67031,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJTHEC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHTMT7" } ] }, @@ -65027,7 +67059,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65059,7 +67099,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJV75S" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHVUKP" } ] }, @@ -65087,7 +67127,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65119,7 +67167,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJXXVC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHX4C7" } ] }, @@ -65147,7 +67195,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65179,7 +67235,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJYOOS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHYFZP" } ] }, @@ -65207,7 +67263,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65239,7 +67303,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJ2GGC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH2NR7" } ] }, @@ -65267,7 +67331,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65299,7 +67371,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJ467S" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH4VIP" } ] }, @@ -65327,7 +67399,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65359,7 +67439,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJ6WXC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH65A7" } ] }, @@ -65387,7 +67467,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65419,7 +67507,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKBZRF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIBBAB" } ] }, @@ -65447,7 +67535,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65479,7 +67575,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDRZV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIDJIR" } ] }, @@ -65507,7 +67603,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65539,7 +67643,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKFJAF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIFRRB" } ] }, @@ -65567,7 +67671,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -65599,7 +67711,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKHBIV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIHZZR" } ] }, @@ -65632,62 +67744,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKIYTF" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 + "u32": 4 } }, { @@ -65719,7 +67779,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKKQ3V" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIIACB" } ] }, @@ -65750,6 +67810,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -65779,7 +67847,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKMICF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIKIKR" } ] }, @@ -65810,6 +67878,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -65839,7 +67915,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKOAKV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIMQTB" } ] }, @@ -65870,6 +67946,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -65899,7 +67983,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKR3VE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIOY3R" } ] }, @@ -65930,6 +68014,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -65959,7 +68051,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKTT5U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIRDEA" } ] }, @@ -65990,6 +68082,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66019,7 +68119,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKVLEE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACITLMQ" } ] }, @@ -66050,6 +68150,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66079,7 +68187,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKXDMU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIVTVA" } ] }, @@ -66110,6 +68218,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66139,7 +68255,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKY2XE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIX35Q" } ] }, @@ -66170,6 +68286,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66199,7 +68323,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK2S7U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIYCGA" } ] }, @@ -66230,6 +68354,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66259,7 +68391,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK4KGE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI2KOQ" } ] }, @@ -66290,6 +68422,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66319,7 +68459,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK6COU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI4SXA" } ] }, @@ -66350,6 +68490,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66379,7 +68527,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLBVZX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI627Q" } ] }, @@ -66410,6 +68558,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66439,7 +68595,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLD5RH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJBNIT" } ] }, @@ -66470,6 +68626,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66499,7 +68663,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLFFIX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJDFAD" } ] }, @@ -66530,6 +68694,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66559,7 +68731,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLHNAH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJF5ZT" } ] }, @@ -66590,6 +68762,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66619,7 +68799,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLIU3X" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJHVRD" } ] }, @@ -66650,6 +68830,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66679,7 +68867,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLK4TH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJIMKT" } ] }, @@ -66710,6 +68898,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66739,7 +68935,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLMEKX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJKECD" } ] }, @@ -66770,6 +68966,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66799,7 +69003,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLOMCH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJM43T" } ] }, @@ -66830,6 +69034,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66859,7 +69071,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLRX5W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJOUTD" } ] }, @@ -66890,6 +69102,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66919,7 +69139,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLT7VG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJRPMS" } ] }, @@ -66950,6 +69170,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -66979,7 +69207,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLVHMW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJTHEC" } ] }, @@ -67010,6 +69238,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67039,7 +69275,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLXPEG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJV75S" } ] }, @@ -67070,6 +69306,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67099,7 +69343,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLYW7W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJXXVC" } ] }, @@ -67130,6 +69374,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67159,7 +69411,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL26XG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJYOOS" } ] }, @@ -67190,6 +69442,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67219,7 +69479,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL4GOW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJ2GGC" } ] }, @@ -67250,6 +69510,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67279,7 +69547,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL6OGG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJ467S" } ] }, @@ -67310,6 +69578,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67339,7 +69615,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAQCJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACJ6WXC" } ] }, @@ -67370,6 +69646,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67399,7 +69683,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMCYKZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKBZRF" } ] }, @@ -67430,6 +69714,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67459,7 +69751,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMEATJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKDRZV" } ] }, @@ -67490,6 +69782,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67519,7 +69819,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMGI3Z" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKFJAF" } ] }, @@ -67550,6 +69850,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67579,7 +69887,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMJRAJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKHBIV" } ] }, @@ -67610,6 +69918,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67639,7 +69955,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMLZIZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKIYTF" } ] }, @@ -67670,6 +69986,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67699,7 +70023,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMNBRJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKKQ3V" } ] }, @@ -67730,6 +70054,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67759,7 +70091,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMPJZZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKMICF" } ] }, @@ -67790,6 +70122,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67819,7 +70159,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMQSGI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKOAKV" } ] }, @@ -67850,6 +70190,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67879,7 +70227,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMS2OY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKR3VE" } ] }, @@ -67910,6 +70258,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67939,7 +70295,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMUCXI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKTT5U" } ] }, @@ -67970,6 +70326,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -67999,7 +70363,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMWK7Y" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKVLEE" } ] }, @@ -68026,6 +70390,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68059,7 +70431,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMZTEI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKXDMU" } ] }, @@ -68086,6 +70458,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68119,7 +70499,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM33MY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKY2XE" } ] }, @@ -68146,6 +70526,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68179,7 +70567,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM5DVI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK2S7U" } ] }, @@ -68206,6 +70594,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68239,7 +70635,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM7L5Y" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK4KGE" } ] }, @@ -68266,6 +70662,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68299,7 +70703,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNA4K3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACK6COU" } ] }, @@ -68326,6 +70730,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68359,7 +70771,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNCUCL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLBVZX" } ] }, @@ -68386,6 +70798,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68419,7 +70839,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNEM33" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLD5RH" } ] }, @@ -68446,6 +70866,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68479,7 +70907,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNGETL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLFFIX" } ] }, @@ -68506,6 +70934,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68539,7 +70975,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNJ5I3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLHNAH" } ] }, @@ -68566,6 +71002,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68599,7 +71043,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNLVAL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLIU3X" } ] }, @@ -68626,6 +71070,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68659,7 +71111,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNNNZ3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLK4TH" } ] }, @@ -68686,6 +71138,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68719,7 +71179,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNPFRL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLMEKX" } ] }, @@ -68746,6 +71206,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -68779,7 +71247,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNQ6O2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLOMCH" } ] }, @@ -68807,64 +71275,12 @@ "symbol": "flags" }, "val": { - "u32": 4 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNSWGK" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 1 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -68899,7 +71315,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNUO72" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLRX5W" } ] }, @@ -68927,64 +71343,12 @@ "symbol": "flags" }, "val": { - "u32": 4 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNWGXK" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 1 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -69019,7 +71383,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNZ7M2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLT7VG" } ] }, @@ -69046,6 +71410,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69079,7 +71451,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACN3XEK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLVHMW" } ] }, @@ -69106,6 +71478,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69139,7 +71519,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACN5P52" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLXPEG" } ] }, @@ -69166,6 +71546,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69199,7 +71587,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACN7HVK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACLYW7W" } ] }, @@ -69226,6 +71614,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69259,7 +71655,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOAITN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL26XG" } ] }, @@ -69286,6 +71682,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69319,7 +71723,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOCA35" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL4GOW" } ] }, @@ -69346,6 +71750,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69379,7 +71791,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOEYCN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACL6OGG" } ] }, @@ -69406,6 +71818,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69439,7 +71859,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOGQK5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAQCJ" } ] }, @@ -69466,6 +71886,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69499,7 +71927,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOJJRN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMCYKZ" } ] }, @@ -69526,6 +71954,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69559,7 +71995,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOLBZ5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMEATJ" } ] }, @@ -69586,6 +72022,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69619,7 +72063,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACONZAN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMGI3Z" } ] }, @@ -69646,6 +72090,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69679,7 +72131,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOPRI5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMJRAJ" } ] }, @@ -69706,6 +72158,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69739,7 +72199,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOQKXM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMLZIZ" } ] }, @@ -69766,6 +72226,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69799,7 +72267,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOSC74" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMNBRJ" } ] }, @@ -69826,6 +72294,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69859,7 +72335,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOU2GM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMPJZZ" } ] }, @@ -69886,6 +72362,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69919,7 +72403,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOWSO4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMQSGI" } ] }, @@ -69946,6 +72430,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -69979,7 +72471,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOZLVM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMS2OY" } ] }, @@ -70006,6 +72498,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -70039,7 +72539,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACO3D54" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMUCXI" } ] }, @@ -70066,6 +72566,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -70099,7 +72607,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACO53EM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMWK7Y" } ] }, @@ -70132,59 +72640,7 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACO7TM4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -70219,7 +72675,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPAE37" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMZTEI" } ] }, @@ -70252,59 +72708,7 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPCMTP" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -70339,7 +72743,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPEUK7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM33MY" } ] }, @@ -70372,59 +72776,7 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPG4CP" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -70459,7 +72811,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPJFZ7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM5DVI" } ] }, @@ -70490,6 +72842,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70519,7 +72879,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPLNRP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACM7L5Y" } ] }, @@ -70550,6 +72910,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70579,7 +72947,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPNVI7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNA4K3" } ] }, @@ -70610,6 +72978,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70639,7 +73015,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPP5AP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNCUCL" } ] }, @@ -70670,6 +73046,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70699,7 +73083,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPQG76" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNEM33" } ] }, @@ -70730,6 +73114,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70759,7 +73151,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPSOXO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNGETL" } ] }, @@ -70790,6 +73182,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70819,7 +73219,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPUWO6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNJ5I3" } ] }, @@ -70850,6 +73250,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70879,7 +73287,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPW6GO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNLVAL" } ] }, @@ -70910,6 +73318,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70939,7 +73355,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPZH56" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNNNZ3" } ] }, @@ -70970,6 +73386,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -70999,7 +73423,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP3PVO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNPFRL" } ] }, @@ -71030,6 +73454,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71059,7 +73491,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP5XM6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNQ6O2" } ] }, @@ -71090,6 +73522,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71119,7 +73559,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP77EO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNSWGK" } ] }, @@ -71150,6 +73590,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71179,7 +73627,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAPND" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNUO72" } ] }, @@ -71210,6 +73658,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71239,7 +73695,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQCHFT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNWGXK" } ] }, @@ -71270,6 +73726,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71299,7 +73763,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQE74D" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNZ7M2" } ] }, @@ -71330,6 +73794,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71359,7 +73831,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQGXUT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACN3XEK" } ] }, @@ -71390,6 +73862,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71419,7 +73899,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQJOPD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACN5P52" } ] }, @@ -71450,6 +73930,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71479,7 +73967,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQLGHT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACN7HVK" } ] }, @@ -71510,6 +73998,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71539,7 +74035,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQN66D" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOAITN" } ] }, @@ -71570,6 +74066,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71599,7 +74103,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQPWWT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOCA35" } ] }, @@ -71630,6 +74134,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71659,7 +74171,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQQNJC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOEYCN" } ] }, @@ -71690,6 +74202,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71719,7 +74239,75 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQSFBS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOGQK5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOJJRN" } ] }, @@ -71750,6 +74338,82 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOLBZ5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71779,7 +74443,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQU5YC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACONZAN" } ] }, @@ -71810,6 +74474,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71839,7 +74511,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQWVQS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOPRI5" } ] }, @@ -71870,6 +74542,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71899,7 +74579,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQZMLC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOQKXM" } ] }, @@ -71930,6 +74610,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -71959,7 +74647,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ3EDS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOSC74" } ] }, @@ -71990,6 +74678,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -72019,7 +74715,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ542C" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOU2GM" } ] }, @@ -72050,6 +74746,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -72079,7 +74783,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ7USS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOWSO4" } ] }, @@ -72110,6 +74814,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -72139,7 +74851,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADFR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACOZLVM" } ] }, @@ -72170,6 +74882,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -72199,7 +74919,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRCLNB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACO3D54" } ] }, @@ -72230,6 +74950,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -72259,7 +74987,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRETUR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACO53EM" } ] }, @@ -72290,6 +75018,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -72319,7 +75055,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRG34B" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACO7TM4" } ] }, @@ -72347,7 +75083,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72379,7 +75123,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRJCHR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPAE37" } ] }, @@ -72407,7 +75151,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72439,7 +75191,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRLKPB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPCMTP" } ] }, @@ -72467,7 +75219,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72499,7 +75259,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRNSWR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPEUK7" } ] }, @@ -72527,7 +75287,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72559,7 +75327,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRP26B" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPG4CP" } ] }, @@ -72587,7 +75355,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72619,7 +75395,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRQBBQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPJFZ7" } ] }, @@ -72647,7 +75423,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72679,7 +75463,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRSJJA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPLNRP" } ] }, @@ -72707,7 +75491,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72739,7 +75531,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRURQQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPNVI7" } ] }, @@ -72767,7 +75559,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72799,7 +75599,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRWZYA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPP5AP" } ] }, @@ -72827,7 +75627,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72859,7 +75667,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRZADQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPQG76" } ] }, @@ -72887,7 +75695,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72919,7 +75735,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR3ILA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPSOXO" } ] }, @@ -72947,7 +75763,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -72979,7 +75803,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR5QSQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPUWO6" } ] }, @@ -73007,7 +75831,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73039,7 +75871,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR7Y2A" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPW6GO" } ] }, @@ -73067,7 +75899,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73099,7 +75939,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAX4H" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACPZH56" } ] }, @@ -73127,7 +75967,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73159,7 +76007,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSC7UX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP3PVO" } ] }, @@ -73187,7 +76035,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73219,7 +76075,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSEHNH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP5XM6" } ] }, @@ -73247,7 +76103,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73279,7 +76143,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSGPFX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP77EO" } ] }, @@ -73307,67 +76171,15 @@ "symbol": "flags" }, "val": { - "u32": 5 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSJW6H" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 4 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 5 + "u32": 4 } }, { @@ -73399,7 +76211,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSL6WX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAPND" } ] }, @@ -73427,7 +76239,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73459,7 +76279,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSNGPH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQCHFT" } ] }, @@ -73487,7 +76307,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73519,7 +76347,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSPOHX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQE74D" } ] }, @@ -73547,7 +76375,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73579,7 +76415,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSQVYG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQGXUT" } ] }, @@ -73607,7 +76443,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73639,7 +76483,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSS5QW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQJOPD" } ] }, @@ -73667,7 +76511,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73699,7 +76551,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSUFJG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQLGHT" } ] }, @@ -73727,7 +76579,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73759,7 +76619,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSWNBW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQN66D" } ] }, @@ -73787,7 +76647,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73819,7 +76687,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSZU2G" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQPWWT" } ] }, @@ -73847,7 +76715,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73879,7 +76755,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS34SW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQQNJC" } ] }, @@ -73907,7 +76783,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73939,7 +76823,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS5ELG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQSFBS" } ] }, @@ -73967,7 +76851,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -73999,7 +76891,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS7MDW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQU5YC" } ] }, @@ -74027,7 +76919,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74059,7 +76959,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA3UV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQWVQS" } ] }, @@ -74087,7 +76987,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74119,7 +77027,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTCT4F" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQZMLC" } ] }, @@ -74147,7 +77055,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74179,7 +77095,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTELFV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ3EDS" } ] }, @@ -74207,7 +77123,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74239,7 +77163,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTGDNF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ542C" } ] }, @@ -74267,7 +77191,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74299,7 +77231,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTJ2WV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ7USS" } ] }, @@ -74327,7 +77259,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74359,7 +77299,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTLS6F" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRADFR" } ] }, @@ -74387,7 +77327,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74419,7 +77367,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTNKHV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRCLNB" } ] }, @@ -74447,7 +77395,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -74479,7 +77435,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTPCPF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRETUR" } ] }, @@ -74507,67 +77463,15 @@ "symbol": "flags" }, "val": { - "u32": 5 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTQZQU" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 4 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 5 + "u32": 4 } }, { @@ -74599,7 +77503,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTSRYE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRG34B" } ] }, @@ -74630,6 +77534,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -74659,7 +77571,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTUJBU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRJCHR" } ] }, @@ -74690,6 +77602,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -74719,7 +77639,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTWBJE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRLKPB" } ] }, @@ -74750,6 +77670,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -74779,7 +77707,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTZYSU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRNSWR" } ] }, @@ -74810,6 +77738,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -74839,7 +77775,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT3Q2E" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRP26B" } ] }, @@ -74870,6 +77806,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -74899,7 +77843,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT5IDU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRQBBQ" } ] }, @@ -74930,6 +77874,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -74959,7 +77911,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT7ALE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRSJJA" } ] }, @@ -74990,6 +77942,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75019,7 +77979,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUB6PL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRURQQ" } ] }, @@ -75050,6 +78010,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75079,7 +78047,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUDWH3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRWZYA" } ] }, @@ -75110,6 +78078,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75139,7 +78115,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUFO6L" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRZADQ" } ] }, @@ -75170,6 +78146,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75199,7 +78183,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUHGW3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR3ILA" } ] }, @@ -75230,6 +78214,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75259,7 +78251,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUI7NL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR5QSQ" } ] }, @@ -75290,6 +78282,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75319,7 +78319,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUKXF3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACR7Y2A" } ] }, @@ -75350,6 +78350,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75379,7 +78387,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUMP4L" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSAX4H" } ] }, @@ -75410,6 +78418,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75439,7 +78455,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUOHU3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSC7UX" } ] }, @@ -75470,6 +78486,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75499,7 +78523,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUR4LK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSEHNH" } ] }, @@ -75530,6 +78554,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75559,7 +78591,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUTUD2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSGPFX" } ] }, @@ -75590,6 +78622,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75619,7 +78659,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVM2K" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSJW6H" } ] }, @@ -75650,6 +78690,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75679,7 +78727,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUXES2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSL6WX" } ] }, @@ -75710,6 +78758,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75739,7 +78795,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUY5JK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSNGPH" } ] }, @@ -75770,6 +78826,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75799,7 +78863,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU2VB2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSPOHX" } ] }, @@ -75830,6 +78894,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75859,7 +78931,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU4NYK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSQVYG" } ] }, @@ -75890,6 +78962,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75919,7 +78999,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU6FQ2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSS5QW" } ] }, @@ -75950,6 +79030,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -75979,7 +79067,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVBSHZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSUFJG" } ] }, @@ -76010,6 +79098,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76039,7 +79135,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVD2PJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSWNBW" } ] }, @@ -76070,6 +79166,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76099,7 +79203,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVFCWZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSZU2G" } ] }, @@ -76130,6 +79234,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76159,7 +79271,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVHK6J" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS34SW" } ] }, @@ -76190,6 +79302,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76219,7 +79339,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVITFZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS5ELG" } ] }, @@ -76250,6 +79370,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76279,7 +79407,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVK3NJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACS7MDW" } ] }, @@ -76310,6 +79438,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76339,7 +79475,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVMDUZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTA3UV" } ] }, @@ -76370,6 +79506,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76399,7 +79543,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVOL4J" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTCT4F" } ] }, @@ -76430,6 +79574,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76459,7 +79611,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVRQDY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTELFV" } ] }, @@ -76490,6 +79642,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76519,7 +79679,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVTYLI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTGDNF" } ] }, @@ -76550,6 +79710,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -76579,7 +79747,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVVASY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTJ2WV" } ] }, @@ -76612,62 +79780,10 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVXI2I" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 63 + "u32": 4 } }, { @@ -76699,7 +79815,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYRBY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTLS6F" } ] }, @@ -76727,7 +79843,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -76759,7 +79883,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV2ZJI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTNKHV" } ] }, @@ -76787,7 +79911,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -76819,7 +79951,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV4BQY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTPCPF" } ] }, @@ -76847,7 +79979,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -76879,7 +80019,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV6JYI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTQZQU" } ] }, @@ -76907,7 +80047,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -76939,7 +80087,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWBG6P" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTSRYE" } ] }, @@ -76967,7 +80115,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -76999,7 +80155,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWDOW7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTUJBU" } ] }, @@ -77027,7 +80183,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77059,7 +80223,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWFWPP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTWBJE" } ] }, @@ -77087,7 +80251,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77119,7 +80291,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWH6H7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTZYSU" } ] }, @@ -77147,7 +80319,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77179,7 +80359,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWIH4P" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT3Q2E" } ] }, @@ -77207,7 +80387,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77239,7 +80427,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWKPU7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT5IDU" } ] }, @@ -77267,67 +80455,15 @@ "symbol": "flags" }, "val": { - "u32": 63 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWMXNP" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 5 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 63 + "u32": 4 } }, { @@ -77359,7 +80495,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWO7F7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACT7ALE" } ] }, @@ -77387,7 +80523,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77419,7 +80563,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWRE2O" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUB6PL" } ] }, @@ -77447,7 +80591,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77479,7 +80631,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWTMS6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUDWH3" } ] }, @@ -77507,7 +80659,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77539,7 +80699,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWVULO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUFO6L" } ] }, @@ -77567,7 +80727,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77599,7 +80767,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWX4D6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUHGW3" } ] }, @@ -77627,7 +80795,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77659,7 +80835,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWYFYO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUI7NL" } ] }, @@ -77687,7 +80863,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77719,7 +80903,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW2NQ6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUKXF3" } ] }, @@ -77747,7 +80931,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77779,7 +80971,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW4VJO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUMP4L" } ] }, @@ -77807,7 +80999,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77839,7 +81039,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW65B6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUOHU3" } ] }, @@ -77867,7 +81067,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77899,7 +81107,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXBKW5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUR4LK" } ] }, @@ -77927,7 +81135,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -77959,7 +81175,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXDC6N" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUTUD2" } ] }, @@ -77987,7 +81203,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78019,7 +81243,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXF2H5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUVM2K" } ] }, @@ -78047,7 +81271,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78079,7 +81311,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXHSPN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUXES2" } ] }, @@ -78107,7 +81339,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78139,7 +81379,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXILU5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUY5JK" } ] }, @@ -78167,7 +81407,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78199,7 +81447,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXKD4N" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU2VB2" } ] }, @@ -78227,7 +81475,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78259,7 +81515,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXM3F5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU4NYK" } ] }, @@ -78287,7 +81543,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78319,7 +81583,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXOTNN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACU6FQ2" } ] }, @@ -78347,7 +81611,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78379,7 +81651,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXRIS4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVBSHZ" } ] }, @@ -78407,7 +81679,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78439,7 +81719,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXTA2M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVD2PJ" } ] }, @@ -78467,67 +81747,15 @@ "symbol": "flags" }, "val": { - "u32": 63 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 3 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXVYD4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 5 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { - "u32": 63 + "u32": 4 } }, { @@ -78559,7 +81787,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXXQLM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVFCWZ" } ] }, @@ -78587,7 +81815,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78619,7 +81855,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXYJQ4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVHK6J" } ] }, @@ -78647,7 +81883,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78679,7 +81923,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX2BYM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVITFZ" } ] }, @@ -78707,7 +81951,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78739,7 +81991,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX4ZB4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVK3NJ" } ] }, @@ -78767,7 +82019,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78799,7 +82059,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX6RJM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVMDUZ" } ] }, @@ -78827,7 +82087,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78859,7 +82127,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYBNJS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVOL4J" } ] }, @@ -78887,7 +82155,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78919,7 +82195,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYDFBC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVRQDY" } ] }, @@ -78947,7 +82223,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -78979,7 +82263,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYF5YS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVTYLI" } ] }, @@ -79007,7 +82291,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -79039,7 +82331,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYHVQC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVVASY" } ] }, @@ -79067,7 +82359,15 @@ "symbol": "flags" }, "val": { - "u32": 63 + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -79099,7 +82399,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYIMLS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVXI2I" } ] }, @@ -79130,6 +82430,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79159,7 +82467,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYKEDC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVYRBY" } ] }, @@ -79190,6 +82498,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79219,7 +82535,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYM42S" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV2ZJI" } ] }, @@ -79250,6 +82566,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79279,7 +82603,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYOUSC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV4BQY" } ] }, @@ -79310,6 +82634,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79339,7 +82671,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYRPNT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACV6JYI" } ] }, @@ -79370,6 +82702,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79399,7 +82739,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYTHFD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWBG6P" } ] }, @@ -79430,6 +82770,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79459,7 +82807,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYV74T" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWDOW7" } ] }, @@ -79490,6 +82838,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79519,7 +82875,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYXXUD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWFWPP" } ] }, @@ -79550,6 +82906,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79579,7 +82943,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYYOPT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWH6H7" } ] }, @@ -79610,6 +82974,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79639,7 +83011,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY2GHD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWIH4P" } ] }, @@ -79670,6 +83042,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79699,7 +83079,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY466T" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWKPU7" } ] }, @@ -79730,6 +83110,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79759,7 +83147,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY6WWD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWMXNP" } ] }, @@ -79790,6 +83178,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79819,7 +83215,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZBBBA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWO7F7" } ] }, @@ -79850,6 +83246,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79879,7 +83283,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZDJJQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWRE2O" } ] }, @@ -79910,6 +83314,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79939,7 +83351,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZFRQA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWTMS6" } ] }, @@ -79970,6 +83382,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -79999,7 +83419,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZHZYQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWVULO" } ] }, @@ -80030,6 +83450,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80059,7 +83487,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZIADA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWX4D6" } ] }, @@ -80090,6 +83518,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80119,7 +83555,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZKILQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWYFYO" } ] }, @@ -80150,6 +83586,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80179,7 +83623,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZMQSA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW2NQ6" } ] }, @@ -80210,6 +83654,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80239,7 +83691,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZOY2Q" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW4VJO" } ] }, @@ -80270,6 +83722,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80299,7 +83759,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZRDFB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW65B6" } ] }, @@ -80330,6 +83790,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80359,7 +83827,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZTLNR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXBKW5" } ] }, @@ -80390,6 +83858,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80419,7 +83895,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZVTUB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXDC6N" } ] }, @@ -80450,6 +83926,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80479,7 +83963,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZX34R" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXF2H5" } ] }, @@ -80510,6 +83994,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80539,7 +84031,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZYCHB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXHSPN" } ] }, @@ -80570,6 +84062,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80599,7 +84099,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2KPR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXILU5" } ] }, @@ -80630,6 +84130,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80659,7 +84167,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ4SWB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXKD4N" } ] }, @@ -80690,6 +84198,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80719,7 +84235,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ626R" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXM3F5" } ] }, @@ -80750,6 +84266,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80779,7 +84303,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2BVYW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXOTNN" } ] }, @@ -80810,6 +84334,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80839,7 +84371,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2D5QG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXRIS4" } ] }, @@ -80870,6 +84402,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80899,7 +84439,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2FFJW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXTA2M" } ] }, @@ -80930,6 +84470,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -80959,7 +84507,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2HNBG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXVYD4" } ] }, @@ -80987,16 +84535,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81019,7 +84575,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2IU2W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXXQLM" } ] }, @@ -81047,16 +84603,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81079,7 +84643,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2K4SG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXYJQ4" } ] }, @@ -81107,16 +84671,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81139,7 +84711,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2MELW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX2BYM" } ] }, @@ -81167,16 +84739,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81199,7 +84779,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2OMDG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX4ZB4" } ] }, @@ -81227,16 +84807,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81259,7 +84847,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2RX4X" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX6RJM" } ] }, @@ -81287,16 +84875,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81319,7 +84915,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2T7UH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYBNJS" } ] }, @@ -81347,16 +84943,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81379,7 +84983,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2VHNX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYDFBC" } ] }, @@ -81407,16 +85011,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81439,7 +85051,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2XPFH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYF5YS" } ] }, @@ -81467,16 +85079,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81499,7 +85119,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2YW6X" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYHVQC" } ] }, @@ -81527,16 +85147,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81559,7 +85187,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC226WH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYIMLS" } ] }, @@ -81587,16 +85215,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81619,7 +85255,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC24GPX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYKEDC" } ] }, @@ -81647,16 +85283,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81679,7 +85323,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC26OHH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYM42S" } ] }, @@ -81707,16 +85351,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81739,7 +85391,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3BZQE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYOUSC" } ] }, @@ -81767,16 +85419,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81799,7 +85459,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3DRYU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYRPNT" } ] }, @@ -81827,16 +85487,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81859,7 +85527,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3FJBE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYTHFD" } ] }, @@ -81887,16 +85555,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81919,7 +85595,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3HBJU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYV74T" } ] }, @@ -81947,16 +85623,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -81979,7 +85663,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3IYSE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYXXUD" } ] }, @@ -82007,16 +85691,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82039,7 +85731,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3KQ2U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYYOPT" } ] }, @@ -82067,16 +85759,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82099,7 +85799,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3MIDE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY2GHD" } ] }, @@ -82127,16 +85827,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82159,7 +85867,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3OALU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY466T" } ] }, @@ -82187,16 +85895,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82219,7 +85935,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3R3UF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY6WWD" } ] }, @@ -82247,16 +85963,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82279,7 +86003,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3TT4V" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZBBBA" } ] }, @@ -82307,16 +86031,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82339,7 +86071,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3VLFF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZDJJQ" } ] }, @@ -82367,16 +86099,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82399,7 +86139,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3XDNV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZFRQA" } ] }, @@ -82427,16 +86167,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82459,7 +86207,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3Y2WF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZHZYQ" } ] }, @@ -82487,16 +86235,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82519,7 +86275,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC32S6V" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZIADA" } ] }, @@ -82547,75 +86303,23 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC34KHF" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 - } }, { "key": { "symbol": "severity" }, "val": { - "u32": 4 + "u32": 3 } } ] @@ -82639,7 +86343,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC36CPV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZKILQ" } ] }, @@ -82667,75 +86371,23 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4A4L2" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 - } }, { "key": { "symbol": "severity" }, "val": { - "u32": 4 + "u32": 3 } } ] @@ -82759,7 +86411,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4CUDK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZMQSA" } ] }, @@ -82787,75 +86439,23 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4EM22" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 - } }, { "key": { "symbol": "severity" }, "val": { - "u32": 4 + "u32": 3 } } ] @@ -82879,7 +86479,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4GESK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZOY2Q" } ] }, @@ -82907,16 +86507,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82939,7 +86547,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4J5J2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZRDFB" } ] }, @@ -82967,16 +86575,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -82999,7 +86615,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4LVBK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZTLNR" } ] }, @@ -83027,16 +86643,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83059,7 +86683,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4NNY2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZVTUB" } ] }, @@ -83087,16 +86711,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83119,7 +86751,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4PFQK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZX34R" } ] }, @@ -83147,16 +86779,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83179,7 +86819,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4Q6P3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZYCHB" } ] }, @@ -83207,16 +86847,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83239,7 +86887,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4SWHL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2KPR" } ] }, @@ -83267,75 +86915,23 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4UO63" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 0 - } }, { "key": { "symbol": "severity" }, "val": { - "u32": 4 + "u32": 3 } } ] @@ -83359,7 +86955,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4WGWL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ4SWB" } ] }, @@ -83387,16 +86983,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83419,7 +87023,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4Z7N3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ626R" } ] }, @@ -83447,16 +87051,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83479,7 +87091,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC43XFL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2BVYW" } ] }, @@ -83507,16 +87119,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83539,7 +87159,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC45P43" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2D5QG" } ] }, @@ -83567,16 +87187,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83599,7 +87227,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC47HUL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2FFJW" } ] }, @@ -83627,16 +87255,24 @@ "symbol": "flags" }, "val": { - "u32": 0 + "u32": 63 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } } ] } @@ -83659,7 +87295,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5AQDI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2HNBG" } ] }, @@ -83690,6 +87326,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -83719,7 +87363,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5CYLY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2IU2W" } ] }, @@ -83750,6 +87394,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -83779,7 +87431,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5EASI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2K4SG" } ] }, @@ -83810,6 +87462,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -83839,7 +87499,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5GI2Y" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2MELW" } ] }, @@ -83870,6 +87530,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -83899,7 +87567,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5JRBI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2OMDG" } ] }, @@ -83930,6 +87598,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -83959,7 +87635,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5LZJY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2RX4X" } ] }, @@ -83990,6 +87666,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84019,7 +87703,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5NBQI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2T7UH" } ] }, @@ -84050,6 +87734,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84079,7 +87771,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5PJYY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2VHNX" } ] }, @@ -84110,6 +87802,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84139,7 +87839,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5QSHJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2XPFH" } ] }, @@ -84170,6 +87870,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84199,7 +87907,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5S2PZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2YW6X" } ] }, @@ -84230,6 +87938,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84259,7 +87975,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5UCWJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC226WH" } ] }, @@ -84290,6 +88006,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84319,7 +88043,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5WK6Z" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC24GPX" } ] }, @@ -84350,6 +88074,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84379,7 +88111,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5ZTFJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC26OHH" } ] }, @@ -84410,6 +88142,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84439,7 +88179,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC533NZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3BZQE" } ] }, @@ -84470,6 +88210,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84499,7 +88247,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC55DUJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3DRYU" } ] }, @@ -84530,6 +88278,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84559,7 +88315,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC57L4Z" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3FJBE" } ] }, @@ -84590,6 +88346,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84619,7 +88383,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6AE26" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3HBJU" } ] }, @@ -84650,6 +88414,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84679,7 +88451,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6CMSO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3IYSE" } ] }, @@ -84710,6 +88482,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84739,7 +88519,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6EUL6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3KQ2U" } ] }, @@ -84770,6 +88550,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84799,7 +88587,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6G4DO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3MIDE" } ] }, @@ -84830,6 +88618,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84859,7 +88655,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6JFY6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3OALU" } ] }, @@ -84890,6 +88686,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84919,7 +88723,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6LNQO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3R3UF" } ] }, @@ -84950,6 +88754,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -84979,7 +88791,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6NVJ6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3TT4V" } ] }, @@ -85010,6 +88822,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -85039,7 +88859,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6P5BO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3VLFF" } ] }, @@ -85070,6 +88890,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -85099,7 +88927,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6QG67" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3XDNV" } ] }, @@ -85130,6 +88958,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -85159,7 +88995,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6SOWP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC3Y2WF" } ] }, @@ -85190,6 +89026,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -85219,7 +89063,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6UWP7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC32S6V" } ] }, @@ -85252,63 +89096,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6W6HP" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -85339,7 +89131,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6ZH47" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC34KHF" } ] }, @@ -85367,68 +89159,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC63PUP" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -85459,7 +89199,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC65XN7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC36CPV" } ] }, @@ -85487,7 +89227,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -85519,7 +89267,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC677FP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4A4L2" } ] }, @@ -85547,7 +89295,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -85579,7 +89335,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7AISM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4CUDK" } ] }, @@ -85607,7 +89363,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -85639,7 +89403,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7CA24" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4EM22" } ] }, @@ -85667,7 +89431,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -85699,7 +89471,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7EYDM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4GESK" } ] }, @@ -85727,68 +89499,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7GQL4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -85819,7 +89539,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7JJQM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4J5J2" } ] }, @@ -85847,68 +89567,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7LBY4" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -85939,7 +89607,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7NZBM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4LVBK" } ] }, @@ -85967,7 +89635,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -85999,7 +89675,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7PRJ4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4NNY2" } ] }, @@ -86027,7 +89703,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86059,7 +89743,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7QKWN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4PFQK" } ] }, @@ -86087,7 +89771,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86119,7 +89811,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7SC65" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4Q6P3" } ] }, @@ -86147,7 +89839,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86179,7 +89879,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7U2HN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4SWHL" } ] }, @@ -86207,7 +89907,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86239,7 +89947,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7WSP5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4UO63" } ] }, @@ -86267,7 +89975,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86299,7 +90015,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ZLUN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4WGWL" } ] }, @@ -86327,7 +90043,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86359,7 +90083,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC73D45" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4Z7N3" } ] }, @@ -86387,7 +90111,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86419,7 +90151,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC753FN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC43XFL" } ] }, @@ -86447,7 +90179,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86479,7 +90219,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC77TN5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC45P43" } ] }, @@ -86507,7 +90247,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86539,7 +90287,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAA3XW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC47HUL" } ] }, @@ -86567,7 +90315,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86599,7 +90355,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADACT7G" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5AQDI" } ] }, @@ -86627,7 +90383,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86659,7 +90423,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAELGW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5CYLY" } ] }, @@ -86687,7 +90451,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -86719,7 +90491,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAGDOG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5EASI" } ] }, @@ -86747,68 +90519,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAJ2VW" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -86839,7 +90559,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADALS5G" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5GI2Y" } ] }, @@ -86867,68 +90587,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADANKEW" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -86959,7 +90627,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAPCMG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5JRBI" } ] }, @@ -86987,7 +90655,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87019,7 +90695,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQZTX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5LZJY" } ] }, @@ -87047,7 +90723,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87079,7 +90763,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADASR3H" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5NBQI" } ] }, @@ -87107,7 +90791,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87139,7 +90831,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAUJCX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5PJYY" } ] }, @@ -87167,7 +90859,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87199,7 +90899,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAWBKH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5QSHJ" } ] }, @@ -87227,7 +90927,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87259,7 +90967,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAZYRX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5S2PZ" } ] }, @@ -87287,7 +90995,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87319,7 +91035,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA3QZH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5UCWJ" } ] }, @@ -87347,7 +91063,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87379,7 +91103,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA5IAX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5WK6Z" } ] }, @@ -87407,7 +91131,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87439,7 +91171,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA7AIH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5ZTFJ" } ] }, @@ -87467,7 +91199,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87499,7 +91239,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBAX7E" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC533NZ" } ] }, @@ -87527,7 +91267,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87559,7 +91307,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBC7XU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC55DUJ" } ] }, @@ -87587,7 +91335,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87619,7 +91375,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBEHOE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC57L4Z" } ] }, @@ -87647,7 +91403,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87679,7 +91443,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBGPGU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6AE26" } ] }, @@ -87707,7 +91471,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -87739,7 +91511,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBJW5E" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6CMSO" } ] }, @@ -87767,68 +91539,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBL6VU" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -87859,7 +91579,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBNGME" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6EUL6" } ] }, @@ -87887,68 +91607,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBPOEU" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -87979,7 +91647,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBQV3F" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6G4DO" } ] }, @@ -88007,68 +91675,16 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 } }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBS5TV" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -88099,7 +91715,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBUFKF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6JFY6" } ] }, @@ -88127,7 +91743,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -88159,7 +91783,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBWNCV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6LNQO" } ] }, @@ -88187,7 +91811,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -88219,7 +91851,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBZUZF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6NVJ6" } ] }, @@ -88247,7 +91879,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -88279,7 +91919,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADB34RV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6P5BO" } ] }, @@ -88307,7 +91947,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -88339,7 +91987,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADB5EIF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6QG67" } ] }, @@ -88367,7 +92015,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -88399,7 +92055,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADB7MAV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6SOWP" } ] }, @@ -88427,7 +92083,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -88459,7 +92123,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCADGS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6UWP7" } ] }, @@ -88487,7 +92151,15 @@ "symbol": "flags" }, "val": { - "u32": 1 + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -88519,7 +92191,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCCLOC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6W6HP" } ] }, @@ -88550,6 +92222,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88579,7 +92259,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCETXS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC6ZH47" } ] }, @@ -88610,6 +92290,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88639,7 +92327,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCG37C" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC63PUP" } ] }, @@ -88670,6 +92358,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88699,7 +92395,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCJCES" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC65XN7" } ] }, @@ -88730,6 +92426,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88759,7 +92463,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCLKMC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC677FP" } ] }, @@ -88790,6 +92494,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88819,7 +92531,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCNSVS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7AISM" } ] }, @@ -88850,6 +92562,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88879,7 +92599,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCP25C" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7CA24" } ] }, @@ -88910,6 +92630,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88939,7 +92667,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCQBCT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7EYDM" } ] }, @@ -88970,6 +92698,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -88999,7 +92735,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCSJKD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7GQL4" } ] }, @@ -89030,6 +92766,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -89059,7 +92803,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCURTT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7JJQM" } ] }, @@ -89090,6 +92834,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -89119,7 +92871,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCWZ3D" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7LBY4" } ] }, @@ -89150,6 +92902,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -89179,7 +92939,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCZAAT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7NZBM" } ] }, @@ -89210,6 +92970,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -89239,7 +93007,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADC3IID" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7PRJ4" } ] }, @@ -89270,6 +93038,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -89299,7 +93075,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADC5QRT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7QKWN" } ] }, @@ -89330,6 +93106,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -89359,7 +93143,75 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADC7YZD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7SC65" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7U2HN" } ] }, @@ -89390,6 +93242,82 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7WSP5" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -89419,7 +93347,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDAPOA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC7ZLUN" } ] }, @@ -89452,63 +93380,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDCHGQ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 1 - } }, { "key": { @@ -89539,7 +93415,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDE77A" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC73D45" } ] }, @@ -89572,59 +93448,7 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 4 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDGXXQ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -89659,7 +93483,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDJOMA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC753FN" } ] }, @@ -89687,64 +93511,12 @@ "symbol": "flags" }, "val": { - "u32": 4 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 4 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDLGEQ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 1 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -89779,7 +93551,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDN65A" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC77TN5" } ] }, @@ -89806,6 +93578,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -89839,7 +93619,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDPWVQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAA3XW" } ] }, @@ -89866,6 +93646,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -89899,7 +93687,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDQNKB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADACT7G" } ] }, @@ -89926,6 +93714,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -89959,7 +93755,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDSFCR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAELGW" } ] }, @@ -89986,6 +93782,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -90019,7 +93823,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDU53B" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAGDOG" } ] }, @@ -90046,6 +93850,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -90079,7 +93891,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDWVTR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAJ2VW" } ] }, @@ -90106,6 +93918,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -90139,7 +93959,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDZMIB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADALS5G" } ] }, @@ -90166,6 +93986,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -90199,7 +94027,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD3EAR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADANKEW" } ] }, @@ -90226,6 +94054,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -90259,7 +94095,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD54ZB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAPCMG" } ] }, @@ -90286,6 +94122,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -90319,7 +94163,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD7URR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQZTX" } ] }, @@ -90346,6 +94190,3754 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADASR3H" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAUJCX" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAWBKH" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAZYRX" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA3QZH" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA5IAX" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA7AIH" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBAX7E" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBC7XU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBEHOE" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBGPGU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBJW5E" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBL6VU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBNGME" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBPOEU" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBQV3F" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBS5TV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBUFKF" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBWNCV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBZUZF" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADB34RV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADB5EIF" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADB7MAV" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCADGS" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCCLOC" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCETXS" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCG37C" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCJCES" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCLKMC" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCNSVS" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCP25C" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCQBCT" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCSJKD" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCURTT" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCWZ3D" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADCZAAT" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADC3IID" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADC5QRT" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADC7YZD" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDAPOA" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDCHGQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDE77A" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 1 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDGXXQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDJOMA" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDLGEQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDN65A" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDPWVQ" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDQNKB" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDSFCR" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDU53B" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDWVTR" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDZMIB" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD3EAR" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD54ZB" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADD7URR" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -90410,6 +98002,558 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEDC5O" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEF2E6" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEHSMO" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEILX6" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEKD7O" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEM3G6" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEOTOO" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADERIR7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -90439,7 +98583,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEDC5O" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADETAZP" } ] }, @@ -90470,6 +98614,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -90499,7 +98651,483 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEF2E6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEVYA7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEXQIP" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYJT7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE2B3P" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE4ZC7" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE6RKP" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFBG5M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "1000" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 4 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFDOV4" } ] }, @@ -90530,6 +99158,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -90559,7 +99195,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEHSMO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFFWMM" } ] }, @@ -90592,59 +99228,7 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 4 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEILX6" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -90679,7 +99263,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEKD7O" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFH6E4" } ] }, @@ -90712,59 +99296,7 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 4 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEM3G6" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -90799,7 +99331,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEOTOO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFIH7M" } ] }, @@ -90832,59 +99364,7 @@ }, { "key": { - "symbol": "severity" - }, - "val": { - "u32": 4 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADERIR7" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -90919,7 +99399,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADETAZP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFKPX4" } ] }, @@ -90950,6 +99430,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -90979,7 +99467,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEVYA7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFMXOM" } ] }, @@ -91010,6 +99498,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91039,7 +99535,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEXQIP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFO7G4" } ] }, @@ -91070,6 +99566,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91099,7 +99603,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADEYJT7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFREZN" } ] }, @@ -91130,6 +99634,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91159,7 +99671,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE2B3P" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFTMR5" } ] }, @@ -91190,6 +99702,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91219,7 +99739,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE4ZC7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFVUIN" } ] }, @@ -91250,6 +99770,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91279,7 +99807,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE6RKP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFX4A5" } ] }, @@ -91310,6 +99838,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91339,7 +99875,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFBG5M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFYF3N" } ] }, @@ -91370,6 +99906,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91399,7 +99943,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFDOV4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF2NT5" } ] }, @@ -91430,6 +99974,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91459,7 +100011,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFFWMM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF4VKN" } ] }, @@ -91490,6 +100042,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91519,7 +100079,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFH6E4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF65C5" } ] }, @@ -91550,6 +100110,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91579,7 +100147,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFIH7M" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGBSE2" } ] }, @@ -91610,6 +100178,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91639,7 +100215,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFKPX4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGD2MK" } ] }, @@ -91670,6 +100246,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91699,7 +100283,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFMXOM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGFCV2" } ] }, @@ -91730,6 +100314,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91759,7 +100351,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFO7G4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGHK5K" } ] }, @@ -91790,6 +100382,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91819,7 +100419,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFREZN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGITG2" } ] }, @@ -91850,6 +100450,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91879,7 +100487,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFTMR5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGK3OK" } ] }, @@ -91910,6 +100518,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91939,7 +100555,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFVUIN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGMDX2" } ] }, @@ -91970,6 +100586,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -91999,7 +100623,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFX4A5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGOL7K" } ] }, @@ -92030,6 +100654,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92059,7 +100691,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFYF3N" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGRQA3" } ] }, @@ -92090,6 +100722,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92119,7 +100759,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF2NT5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGTYIL" } ] }, @@ -92150,6 +100790,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92179,7 +100827,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF4VKN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGVAR3" } ] }, @@ -92210,6 +100858,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92239,7 +100895,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADF65C5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGXIZL" } ] }, @@ -92270,6 +100926,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92299,7 +100963,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGBSE2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGYRC3" } ] }, @@ -92330,6 +100994,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92359,7 +101031,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGD2MK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADG2ZKL" } ] }, @@ -92390,6 +101062,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92419,7 +101099,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGFCV2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADG4BT3" } ] }, @@ -92450,6 +101130,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92479,7 +101167,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGHK5K" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADG6J3L" } ] }, @@ -92510,6 +101198,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92539,7 +101235,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGITG2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHB6MI" } ] }, @@ -92570,6 +101266,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92599,7 +101303,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGK3OK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHDWEY" } ] }, @@ -92630,6 +101334,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92659,7 +101371,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGMDX2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHFO5I" } ] }, @@ -92690,6 +101402,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92719,7 +101439,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGOL7K" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHHGVY" } ] }, @@ -92750,6 +101470,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92779,7 +101507,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGRQA3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHI7OI" } ] }, @@ -92810,6 +101538,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92839,7 +101575,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGTYIL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHKXGY" } ] }, @@ -92870,6 +101606,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92899,7 +101643,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGVAR3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHMP7I" } ] }, @@ -92930,6 +101674,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -92959,7 +101711,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGXIZL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHOHXY" } ] }, @@ -92990,6 +101742,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -93019,7 +101779,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADGYRC3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHR4IJ" } ] }, @@ -93050,6 +101810,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -93079,7 +101847,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADG2ZKL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHTUAZ" } ] }, @@ -93110,6 +101878,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -93139,7 +101915,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADG4BT3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHVMZJ" } ] }, @@ -93170,6 +101946,14 @@ "u32": 4 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -93199,7 +101983,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADG6J3L" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHXERZ" } ] }, @@ -93226,6 +102010,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93259,7 +102051,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHB6MI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHY5KJ" } ] }, @@ -93287,64 +102079,12 @@ "symbol": "flags" }, "val": { - "u32": 4 - } - }, - { - "key": { - "symbol": "severity" - }, - "val": { - "u32": 4 - } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHDWEY" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + "u32": 5 } }, { "key": { - "symbol": "flags" + "symbol": "preimage_version" }, "val": { "u32": 4 @@ -93379,7 +102119,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHFO5I" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH2VCZ" } ] }, @@ -93406,6 +102146,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93439,7 +102187,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHHGVY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH4N3J" } ] }, @@ -93466,6 +102214,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93499,7 +102255,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHI7OI" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6FTZ" } ] }, @@ -93526,6 +102282,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93559,7 +102323,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHKXGY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIBZTH" } ] }, @@ -93586,6 +102350,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93619,7 +102391,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHMP7I" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIDR3X" } ] }, @@ -93646,6 +102418,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93679,7 +102459,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHOHXY" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIFJCH" } ] }, @@ -93706,6 +102486,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93739,7 +102527,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHR4IJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHBKX" } ] }, @@ -93766,6 +102554,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93799,7 +102595,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHTUAZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIIYRH" } ] }, @@ -93826,6 +102622,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93859,7 +102663,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHVMZJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIKQZX" } ] }, @@ -93886,6 +102690,14 @@ "key": { "symbol": "flags" }, + "val": { + "u32": 5 + } + }, + { + "key": { + "symbol": "preimage_version" + }, "val": { "u32": 4 } @@ -93919,7 +102731,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHXERZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIMIAH" } ] }, @@ -93952,63 +102764,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADHY5KJ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -94039,7 +102799,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH2VCZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIOAIX" } ] }, @@ -94072,63 +102832,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH4N3J" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -94159,7 +102867,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADH6FTZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIR3XG" } ] }, @@ -94190,6 +102898,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94219,7 +102935,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIBZTH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADITT7W" } ] }, @@ -94252,63 +102968,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIDR3X" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -94339,7 +103003,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIFJCH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIVLGG" } ] }, @@ -94372,63 +103036,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIHBKX" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -94459,7 +103071,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIIYRH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIXDOW" } ] }, @@ -94492,63 +103104,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIKQZX" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -94579,7 +103139,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIMIAH" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIY2VG" } ] }, @@ -94610,6 +103170,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94639,7 +103207,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIOAIX" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI2S5W" } ] }, @@ -94670,6 +103238,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94699,7 +103275,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIR3XG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI4KEG" } ] }, @@ -94730,6 +103306,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94759,7 +103343,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADITT7W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI6CMW" } ] }, @@ -94790,6 +103374,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94819,7 +103411,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIVLGG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJBV3V" } ] }, @@ -94850,6 +103442,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94879,7 +103479,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIXDOW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJD5TF" } ] }, @@ -94910,6 +103510,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94939,7 +103547,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIY2VG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJFFKV" } ] }, @@ -94970,6 +103578,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -94999,7 +103615,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI2S5W" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJHNCF" } ] }, @@ -95030,6 +103646,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95059,7 +103683,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI4KEG" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJIUZV" } ] }, @@ -95090,6 +103714,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95119,7 +103751,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI6CMW" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJK4RF" } ] }, @@ -95150,6 +103782,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95179,7 +103819,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJBV3V" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJMEIV" } ] }, @@ -95210,6 +103850,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95239,7 +103887,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJD5TF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJOMAF" } ] }, @@ -95270,6 +103918,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95299,7 +103955,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJFFKV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJRX7U" } ] }, @@ -95330,6 +103986,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95359,7 +104023,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJHNCF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJT7XE" } ] }, @@ -95390,6 +104054,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95419,7 +104091,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJIUZV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJVHOU" } ] }, @@ -95450,6 +104122,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95479,7 +104159,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJK4RF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJXPGE" } ] }, @@ -95510,6 +104190,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95539,7 +104227,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJMEIV" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJYW5U" } ] }, @@ -95570,6 +104258,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95599,7 +104295,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJOMAF" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJ26VE" } ] }, @@ -95630,6 +104326,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95659,7 +104363,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJRX7U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJ4GMU" } ] }, @@ -95690,6 +104394,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95719,7 +104431,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJT7XE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJ6OEE" } ] }, @@ -95750,6 +104462,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95779,7 +104499,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJVHOU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKBBCD" } ] }, @@ -95810,6 +104530,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95839,7 +104567,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJXPGE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKDJKT" } ] }, @@ -95870,6 +104598,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95899,7 +104635,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJYW5U" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKFRTD" } ] }, @@ -95930,6 +104666,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -95959,7 +104703,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJ26VE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKHZ3T" } ] }, @@ -95990,6 +104734,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96019,7 +104771,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJ4GMU" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKIAAD" } ] }, @@ -96050,6 +104802,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96079,7 +104839,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJ6OEE" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKKIIT" } ] }, @@ -96110,6 +104870,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96139,7 +104907,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKBBCD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKMQRD" } ] }, @@ -96170,6 +104938,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96199,7 +104975,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKDJKT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKOYZT" } ] }, @@ -96230,6 +105006,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96259,7 +105043,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKFRTD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKRDGC" } ] }, @@ -96290,6 +105074,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96319,7 +105111,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKHZ3T" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKTLOS" } ] }, @@ -96350,6 +105142,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96379,7 +105179,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKIAAD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKVTXC" } ] }, @@ -96410,6 +105210,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96439,7 +105247,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKKIIT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKX37S" } ] }, @@ -96470,6 +105278,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96499,7 +105315,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKMQRD" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKYCEC" } ] }, @@ -96530,6 +105346,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96559,7 +105383,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKOYZT" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK2KMS" } ] }, @@ -96590,6 +105414,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96619,7 +105451,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKRDGC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK4SVC" } ] }, @@ -96650,6 +105482,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96679,7 +105519,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKTLOS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK625S" } ] }, @@ -96710,6 +105550,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96739,7 +105587,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKVTXC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLBNKR" } ] }, @@ -96770,6 +105618,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96799,7 +105655,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKX37S" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLDFCB" } ] }, @@ -96830,6 +105686,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96859,7 +105723,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADKYCEC" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLF53R" } ] }, @@ -96890,6 +105754,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -96919,7 +105791,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK2KMS" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLHVTB" } ] }, @@ -96952,63 +105824,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK4SVC" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -97039,7 +105859,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADK625S" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLIMIR" } ] }, @@ -97072,63 +105892,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLBNKR" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -97159,7 +105927,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLDFCB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLKEAB" } ] }, @@ -97192,63 +105960,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLF53R" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -97279,7 +105995,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLHVTB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLM4ZR" } ] }, @@ -97310,6 +106026,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97339,7 +106063,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLIMIR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLOURB" } ] }, @@ -97370,6 +106094,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97399,7 +106131,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLKEAB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLRPOQ" } ] }, @@ -97430,6 +106162,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97459,7 +106199,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLM4ZR" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLTHGA" } ] }, @@ -97490,6 +106230,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97519,7 +106267,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLOURB" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLV77Q" } ] }, @@ -97550,6 +106298,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97579,7 +106335,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLRPOQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLXXXA" } ] }, @@ -97610,6 +106366,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97639,7 +106403,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLTHGA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLYOMQ" } ] }, @@ -97670,6 +106434,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97699,7 +106471,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLV77Q" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL2GEA" } ] }, @@ -97730,6 +106502,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97759,7 +106539,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLXXXA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL465Q" } ] }, @@ -97790,6 +106570,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97819,7 +106607,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADLYOMQ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL6WVA" } ] }, @@ -97850,6 +106638,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -97879,7 +106675,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL2GEA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAIRP" } ] }, @@ -97912,63 +106708,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL465Q" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 5 - } }, { "key": { @@ -97999,7 +106743,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADL6WVA" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMCAZ7" } ] }, @@ -98030,6 +106774,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98059,7 +106811,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAIRP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMEYAP" } ] }, @@ -98090,6 +106842,14 @@ "u32": 5 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98119,7 +106879,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMCAZ7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMGQI7" } ] }, @@ -98147,7 +106907,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 63 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -98179,7 +106947,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMEYAP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMJJTP" } ] }, @@ -98207,7 +106975,15 @@ "symbol": "flags" }, "val": { - "u32": 5 + "u32": 63 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 } }, { @@ -98239,7 +107015,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMGQI7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMLB37" } ] }, @@ -98270,6 +107046,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98299,7 +107083,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMJJTP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMNZCP" } ] }, @@ -98330,6 +107114,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98359,7 +107151,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMLB37" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMPRK7" } ] }, @@ -98390,6 +107182,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98419,7 +107219,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMNZCP" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMQKVO" } ] }, @@ -98450,6 +107250,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98479,7 +107287,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMPRK7" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMSC56" } ] }, @@ -98510,6 +107318,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98539,7 +107355,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMQKVO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMU2EO" } ] }, @@ -98570,6 +107386,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98599,7 +107423,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMSC56" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMWSM6" } ] }, @@ -98630,6 +107454,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98659,7 +107491,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMU2EO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMZLXO" } ] }, @@ -98690,6 +107522,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98719,7 +107559,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMWSM6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM3D76" } ] }, @@ -98750,6 +107590,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98779,7 +107627,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMZLXO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM53GO" } ] }, @@ -98810,6 +107658,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98839,7 +107695,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM3D76" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM7TO6" } ] }, @@ -98870,6 +107726,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98899,7 +107763,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM53GO" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNAEZ5" } ] }, @@ -98930,6 +107794,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -98959,7 +107831,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM7TO6" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNCMRN" } ] }, @@ -98990,6 +107862,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99019,7 +107899,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNAEZ5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNEUI5" } ] }, @@ -99050,6 +107930,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99079,7 +107967,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNCMRN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNG4AN" } ] }, @@ -99110,6 +107998,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99139,7 +108035,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNEUI5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNJF35" } ] }, @@ -99170,6 +108066,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99199,7 +108103,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNG4AN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNLNTN" } ] }, @@ -99230,6 +108134,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99259,7 +108171,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNJF35" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNNVK5" } ] }, @@ -99290,6 +108202,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99319,7 +108239,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNLNTN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNP5CN" } ] }, @@ -99350,6 +108270,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99379,7 +108307,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNNVK5" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNQG54" } ] }, @@ -99410,6 +108338,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99439,7 +108375,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNP5CN" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNSOVM" } ] }, @@ -99470,6 +108406,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99499,7 +108443,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNQG54" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNUWM4" } ] }, @@ -99530,6 +108474,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99559,7 +108511,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNSOVM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNW6EM" } ] }, @@ -99590,6 +108542,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99619,7 +108579,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNUWM4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNZH74" } ] }, @@ -99650,6 +108610,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99679,7 +108647,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNW6EM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADN3PXM" } ] }, @@ -99710,6 +108678,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99739,7 +108715,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADNZH74" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADN5XO4" } ] }, @@ -99770,6 +108746,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99799,7 +108783,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADN3PXM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADN77GM" } ] }, @@ -99830,6 +108814,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99859,7 +108851,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADN5XO4" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOAQAL" } ] }, @@ -99890,6 +108882,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99919,7 +108919,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADN77GM" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOCYI3" } ] }, @@ -99950,6 +108950,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -99979,7 +108987,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOAQAL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOEARL" } ] }, @@ -100010,6 +109018,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100039,7 +109055,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOCYI3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOGIZ3" } ] }, @@ -100070,6 +109086,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100099,7 +109123,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOEARL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOJRCL" } ] }, @@ -100130,6 +109154,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100159,7 +109191,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOGIZ3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOLZK3" } ] }, @@ -100190,6 +109222,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100219,7 +109259,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOJRCL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADONBTL" } ] }, @@ -100250,6 +109290,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100279,7 +109327,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOLZK3" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOPJ33" } ] }, @@ -100310,6 +109358,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100339,7 +109395,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADONBTL" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOQSEK" } ] }, @@ -100370,6 +109426,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100399,7 +109463,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOPJ33" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOS2M2" } ] }, @@ -100430,6 +109494,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100459,7 +109531,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOQSEK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOUCVK" } ] }, @@ -100490,6 +109562,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100519,7 +109599,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOS2M2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOWK52" } ] }, @@ -100550,6 +109630,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100579,7 +109667,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOUCVK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOZTGK" } ] }, @@ -100610,6 +109698,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100639,7 +109735,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOWK52" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO33O2" } ] }, @@ -100670,6 +109766,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100699,7 +109803,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADOZTGK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO5DXK" } ] }, @@ -100730,6 +109834,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100759,7 +109871,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO33O2" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7L72" } ] }, @@ -100790,6 +109902,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100819,7 +109939,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO5DXK" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPA4IZ" } ] }, @@ -100850,6 +109970,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100879,7 +110007,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO7L72" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPCUAJ" } ] }, @@ -100910,6 +110038,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100939,7 +110075,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPA4IZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPEMZZ" } ] }, @@ -100970,6 +110106,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -100999,7 +110143,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPCUAJ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPGERJ" } ] }, @@ -101030,6 +110174,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101059,7 +110211,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPEMZZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPJ5KZ" } ] }, @@ -101092,63 +110244,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPGERJ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 63 - } }, { "key": { @@ -101179,7 +110279,7 @@ "symbol": "Safety" }, { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPJ5KZ" + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPLVCJ" } ] }, @@ -101212,63 +110312,11 @@ }, { "key": { - "symbol": "severity" + "symbol": "preimage_version" }, "val": { "u32": 4 } - } - ] - } - } - }, - "ext": "v0" - }, - "live_until": 6311999 - }, - { - "entry": { - "last_modified_ledger_seq": 0, - "data": { - "contract_data": { - "ext": "v0", - "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", - "key": { - "vec": [ - { - "symbol": "Safety" - }, - { - "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADPLVCJ" - } - ] - }, - "durability": "persistent", - "val": { - "map": [ - { - "key": { - "symbol": "attested_at" - }, - "val": { - "u64": "1000" - } - }, - { - "key": { - "symbol": "evidence_hash" - }, - "val": { - "bytes": "0707070707070707070707070707070707070707070707070707070707070707" - } - }, - { - "key": { - "symbol": "flags" - }, - "val": { - "u32": 63 - } }, { "key": { @@ -101330,6 +110378,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101390,6 +110446,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101450,6 +110514,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101510,6 +110582,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101570,6 +110650,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101630,6 +110718,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101690,6 +110786,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101750,6 +110854,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101810,6 +110922,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101870,6 +110990,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101930,6 +111058,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -101990,6 +111126,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102050,6 +111194,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102110,6 +111262,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102170,6 +111330,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102230,6 +111398,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102290,6 +111466,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102350,6 +111534,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102410,6 +111602,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102470,6 +111670,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -102530,6 +111738,14 @@ "u32": 63 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_admits_when_no_forbidden_bit_is_set.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_admits_when_no_forbidden_bit_is_set.1.json index 0bc5765..68f8e7c 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_admits_when_no_forbidden_bit_is_set.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_admits_when_no_forbidden_bit_is_set.1.json @@ -92,6 +92,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_all_bits_blocks_any_attested_flag.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_all_bits_blocks_any_attested_flag.1.json index 7af5662..98aa958 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_all_bits_blocks_any_attested_flag.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_all_bits_blocks_any_attested_flag.1.json @@ -120,6 +120,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" @@ -180,6 +188,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_blocks_confiscation_capable_asset.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_blocks_confiscation_capable_asset.1.json index 4cd193d..c22cc17 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_blocks_confiscation_capable_asset.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_blocks_confiscation_capable_asset.1.json @@ -92,6 +92,14 @@ "u32": 6 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_stale_attestation_fails_closed.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_stale_attestation_fails_closed.1.json index 0d74269..223fb03 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_stale_attestation_fails_closed.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/masked_gate_stale_attestation_fails_closed.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_one_honest_attestor_prevents_admission.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_one_honest_attestor_prevents_admission.1.json new file mode 100644 index 0000000..c09580e --- /dev/null +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_one_honest_attestor_prevents_admission.1.json @@ -0,0 +1,264 @@ +{ + "generators": { + "address": 4, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "attest", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 3 + }, + { + "u32": 4 + }, + { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 28, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f4341414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414144324b4d" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_property.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_property.1.json new file mode 100644 index 0000000..326c12a --- /dev/null +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_conservative_aggregation_property.1.json @@ -0,0 +1,570 @@ +{ + "generators": { + "address": 8, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "attest", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 3 + }, + { + "u32": 0 + }, + { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [] + ], + "ledger": { + "protocol_version": 28, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 2 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 1 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f4341414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414144324b4d" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_contested_and_unavailable_are_distinguishable_on_chain.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_contested_and_unavailable_are_distinguishable_on_chain.1.json new file mode 100644 index 0000000..e7e0247 --- /dev/null +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_contested_and_unavailable_are_distinguishable_on_chain.1.json @@ -0,0 +1,264 @@ +{ + "generators": { + "address": 5, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "attest", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 0 + }, + { + "u32": 0 + }, + { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [] + ], + "ledger": { + "protocol_version": 28, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 3 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f4341414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414144324b4d" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_cost_at_the_bound.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_cost_at_the_bound.1.json new file mode 100644 index 0000000..c58eb8d --- /dev/null +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_cost_at_the_bound.1.json @@ -0,0 +1,1227 @@ +{ + "generators": { + "address": 19, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [] + ], + "ledger": { + "protocol_version": 28, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITA4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK3IM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDR4" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOLZM" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQG5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATYON" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAX5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXI7N" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYRE5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2ZMN" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4BV5" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6J5N" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABB6KO" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDWC6" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFO3O" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Attestation" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHGT6" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 4095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f4341414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414144324b4d" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_deduplicates_attestors_and_cannot_inflate_threshold.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_deduplicates_attestors_and_cannot_inflate_threshold.1.json new file mode 100644 index 0000000..b4d7157 --- /dev/null +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/quorum_deduplicates_attestors_and_cannot_inflate_threshold.1.json @@ -0,0 +1,192 @@ +{ + "generators": { + "address": 3, + "nonce": 0, + "mux_id": 0 + }, + "auth": [ + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "attest", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + }, + { + "u32": 0 + }, + { + "u32": 0 + }, + { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [] + ], + "ledger": { + "protocol_version": 28, + "sequence_number": 0, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": { + "vec": [ + { + "symbol": "Safety" + }, + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + }, + "durability": "persistent", + "val": { + "map": [ + { + "key": { + "symbol": "attested_at" + }, + "val": { + "u64": "0" + } + }, + { + "key": { + "symbol": "evidence_hash" + }, + "val": { + "bytes": "0707070707070707070707070707070707070707070707070707070707070707" + } + }, + { + "key": { + "symbol": "flags" + }, + "val": { + "u32": 0 + } + }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, + { + "key": { + "symbol": "severity" + }, + "val": { + "u32": 0 + } + } + ] + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "801925984706572462" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f4341414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414144324b4d" + } + }, + "ext": "v0" + }, + "live_until": 6311999 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/re_attestation_identical_evidence_moves_only_timestamp.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/re_attestation_identical_evidence_moves_only_timestamp.1.json index 202e3bf..c788330 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/re_attestation_identical_evidence_moves_only_timestamp.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/re_attestation_identical_evidence_moves_only_timestamp.1.json @@ -120,6 +120,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/read_after_archival_returns_original_attestation.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/read_after_archival_returns_original_attestation.1.json index b026602..05b0da0 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/read_after_archival_returns_original_attestation.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/read_after_archival_returns_original_attestation.1.json @@ -96,6 +96,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/reads_do_not_extend_ttl.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/reads_do_not_extend_ttl.1.json index 8829b96..0737a61 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/reads_do_not_extend_ttl.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/reads_do_not_extend_ttl.1.json @@ -95,6 +95,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/reattest_renews_ttl.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/reattest_renews_ttl.1.json index 6e3c839..6e04009 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/reattest_renews_ttl.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/reattest_renews_ttl.1.json @@ -121,6 +121,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_leaves_other_assets_attested.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_leaves_other_assets_attested.1.json index e68bb75..a23792c 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_leaves_other_assets_attested.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_leaves_other_assets_attested.1.json @@ -139,6 +139,14 @@ "u32": 1 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_rejects_unauthorized_caller.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_rejects_unauthorized_caller.1.json index 013bf77..dd0a697 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_rejects_unauthorized_caller.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_rejects_unauthorized_caller.1.json @@ -95,6 +95,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_then_reattest.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_then_reattest.1.json index d29754e..ae3c7ee 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_then_reattest.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/revoke_then_reattest.1.json @@ -138,6 +138,14 @@ "u32": 2 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/second_transfer_admin_nomination_supersedes_the_first.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/second_transfer_admin_nomination_supersedes_the_first.1.json index bfc2173..9c52c8e 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/second_transfer_admin_nomination_supersedes_the_first.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/second_transfer_admin_nomination_supersedes_the_first.1.json @@ -150,6 +150,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/stale_attestation_fails_closed.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/stale_attestation_fails_closed.1.json index 0d74269..223fb03 100644 --- a/assay-contracts/contracts/safety-registry/test_snapshots/test/stale_attestation_fails_closed.1.json +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/stale_attestation_fails_closed.1.json @@ -93,6 +93,14 @@ "u32": 0 } }, + { + "key": { + "symbol": "preimage_version" + }, + "val": { + "u32": 4 + } + }, { "key": { "symbol": "severity" diff --git a/assay-contracts/contracts/safety-registry/test_snapshots/test/ttl_admin_transfer_entrypoints_extend_instance_to_network_max.1.json b/assay-contracts/contracts/safety-registry/test_snapshots/test/ttl_admin_transfer_entrypoints_extend_instance_to_network_max.1.json new file mode 100644 index 0000000..71f489f --- /dev/null +++ b/assay-contracts/contracts/safety-registry/test_snapshots/test/ttl_admin_transfer_entrypoints_extend_instance_to_network_max.1.json @@ -0,0 +1,229 @@ +{ + "generators": { + "address": 3, + "nonce": 2, + "mux_id": 0 + }, + "auth": [ + [], + [], + [], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "transfer_admin", + "args": [ + { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + ] + } + }, + "sub_invocations": [] + } + ] + ], + [], + [], + [], + [ + [ + "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + { + "function": { + "contract_fn": { + "contract_address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "function_name": "accept_admin", + "args": [] + } + }, + "sub_invocations": [] + } + ] + ], + [] + ], + "ledger": { + "protocol_version": 28, + "sequence_number": 20000, + "timestamp": 0, + "network_id": "0000000000000000000000000000000000000000000000000000000000000000", + "base_reserve": 0, + "min_persistent_entry_ttl": 4096, + "min_temp_entry_ttl": 16, + "max_entry_ttl": 6312000, + "ledger_entries": [ + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d" + }, + "storage": [ + { + "key": { + "vec": [ + { + "symbol": "Admin" + } + ] + }, + "val": { + "address": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M" + } + } + ] + } + } + } + }, + "ext": "v0" + }, + "live_until": 6331999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "74beb3d1766e5455fda0dc427f938b1490e614db4e1af37a884e05f94d87a7d6" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 14095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFCT4", + "key": { + "ledger_key_nonce": { + "nonce": "1" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6321999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": "ledger_key_contract_instance", + "durability": "persistent", + "val": { + "contract_instance": { + "executable": { + "wasm": "36cb30a16206e339600b3e02e18c499ee8ebafd6221bb78473568e1fe0c2db8b" + }, + "storage": null + } + } + } + }, + "ext": "v0" + }, + "live_until": 24095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_data": { + "ext": "v0", + "contract": "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHK3M", + "key": { + "ledger_key_nonce": { + "nonce": "2" + } + }, + "durability": "temporary", + "val": "void" + } + }, + "ext": "v0" + }, + "live_until": 6331999 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "36cb30a16206e339600b3e02e18c499ee8ebafd6221bb78473568e1fe0c2db8b", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f43414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141484b334d" + } + }, + "ext": "v0" + }, + "live_until": 24095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "74beb3d1766e5455fda0dc427f938b1490e614db4e1af37a884e05f94d87a7d6", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f4341414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414146435434" + } + }, + "ext": "v0" + }, + "live_until": 14095 + }, + { + "entry": { + "last_modified_ledger_seq": 0, + "data": { + "contract_code": { + "ext": "v0", + "hash": "a41146d7d116b29faf18d228425fa97194e16df1d4f3e5d4f51c58ca557fcc6d", + "code": "746573745f636f6e74726163745f666f725f636f6e74726163745f69645f4341414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414144324b4d" + } + }, + "ext": "v0" + }, + "live_until": 6331999 + } + ] + }, + "events": [] +} \ No newline at end of file diff --git a/assay-contracts/wasm-size-baseline.json b/assay-contracts/wasm-size-baseline.json new file mode 100644 index 0000000..df3979f --- /dev/null +++ b/assay-contracts/wasm-size-baseline.json @@ -0,0 +1,8 @@ +{ + "contracts": { + "assay_example_gate": 5822, + "assay_safety_registry": 18596 + }, + "stellar_cli": "28.1.0", + "tolerance_percent": 10 +} diff --git a/cmd/assay/diff.go b/cmd/assay/diff.go index 45ebaee..22dcad8 100644 --- a/cmd/assay/diff.go +++ b/cmd/assay/diff.go @@ -78,8 +78,8 @@ type diffSide struct { func runDiff(args []string, d commandDeps) error { fs := flag.NewFlagSet("diff", flag.ContinueOnError) asJSON := fs.Bool("json", false, "print the comparison as JSON for scripting") - if err := fs.Parse(args); err != nil { - return fmt.Errorf("diff: %w", err) + if err := parseFlags(fs, args); err != nil { + return err } if fs.NArg() != 2 { return fmt.Errorf("diff takes exactly two saved reports (A.json B.json)") diff --git a/cmd/assay/exit_test.go b/cmd/assay/exit_test.go index b276eb2..f0c8c64 100644 --- a/cmd/assay/exit_test.go +++ b/cmd/assay/exit_test.go @@ -1,31 +1,41 @@ package main import ( + "context" "errors" + "flag" "fmt" + "net/url" "testing" + "github.com/use-assay/assay/internal/attest" + "github.com/use-assay/assay/internal/horizon" "github.com/use-assay/assay/internal/scan" ) +// The cliIssuer value is a real-shaped issuer account ID; the classification +// tests wrap errors with it so the messages carry the same issuer-controlled +// text production errors carry. +const cliTestIssuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + func TestExitCodesDefined(t *testing.T) { if exitCodeForError(nil) != exitSuccess { t.Errorf("nil error should give success (0), got %d", exitCodeForError(nil)) } - if exitCodeForError(errors.New("unknown command foo")) != exitUsage { - t.Errorf("usage error should give %d, got %d", exitUsage, exitCodeForError(errors.New("unknown command foo"))) + if exitCodeForError(usagef("unknown command %q", "foo")) != exitUsage { + t.Errorf("usage error should give %d", exitUsage) } - if exitCodeForError(errors.New("not found asset")) != exitMissing { - t.Errorf("missing error should give %d, got %d", exitMissing, exitCodeForError(errors.New("not found asset"))) + if exitCodeForError(fmt.Errorf("%w: asset %s", horizon.ErrNotFound, cliTestIssuer)) != exitMissing { + t.Errorf("not-found error should give %d", exitMissing) } - if exitCodeForError(errors.New("upstream timeout")) != exitUnavailable { - t.Errorf("unavailable error should give %d, got %d", exitUnavailable, exitCodeForError(errors.New("upstream timeout"))) + if exitCodeForError(&url.Error{Op: "Get", URL: "https://horizon.stellar.org", Err: errors.New("connection refused")}) != exitUnavailable { + t.Errorf("network error should give %d", exitUnavailable) } - if exitCodeForError(errors.New("scan is undetermined")) != exitUnknown { - t.Errorf("unknown error should give %d, got %d", exitUnknown, exitCodeForError(errors.New("scan is undetermined"))) + if exitCodeForError(fmt.Errorf("attestation: %w", attest.ErrUndetermined)) != exitUnknown { + t.Errorf("undetermined error should give %d", exitUnknown) } - if exitCodeForError(errors.New("random failure")) != exitGeneric { - t.Errorf("generic error should give %d, got %d", exitGeneric, exitCodeForError(errors.New("random failure"))) + if exitCodeForError(errors.New("disk full")) != exitGeneric { + t.Errorf("generic error should give %d", exitGeneric) } } @@ -36,23 +46,39 @@ func TestExitCodePathsComprehensive(t *testing.T) { want int }{ {"Success nil", nil, exitSuccess}, - {"Usage no command", errors.New("no command given"), exitUsage}, - {"Usage unknown command", errors.New("unknown command foo"), exitUsage}, - {"Usage takes exactly one asset", errors.New("scan takes exactly one asset (CODE-ISSUER)"), exitUsage}, - {"Usage invalid asset", errors.New("invalid asset format"), exitUsage}, + + {"Usage no command", usagef("no command given"), exitUsage}, + {"Usage unknown command", usagef("unknown command %q", "foo"), exitUsage}, + {"Usage takes exactly one asset", usagef("scan takes exactly one asset (CODE-ISSUER)"), exitUsage}, + {"Usage wrapped usageError", fmt.Errorf("scan: %w", usagef("scan: %w", flag.ErrHelp)), exitUsage}, + + {"Usage invalid asset", fmt.Errorf("scan: %w", scan.ErrBadAsset), exitUsage}, + {"Usage invalid holder", fmt.Errorf("scan: %w", scan.ErrBadHolder), exitUsage}, // The native asset is an understood refusal rather than a malformed // input, but it is still an argument these commands refuse before any // scan, so it carries the same exit code. docs/cli.md documents it. {"Usage native asset", fmt.Errorf("%w: %q cannot be scanned or attested", scan.ErrNativeAsset, "XLM"), exitUsage}, - {"Missing not found", errors.New("resource not found"), exitMissing}, - {"Missing does not exist", errors.New("asset does not exist on ledger"), exitMissing}, - {"Unavailable timeout", errors.New("connection timeout"), exitUnavailable}, - {"Unavailable connection refused", errors.New("connection refused by peer"), exitUnavailable}, - {"Unavailable upstream error", errors.New("upstream server failure"), exitUnavailable}, - {"Unknown undetermined", errors.New("attest: scan is undetermined"), exitUnknown}, - {"Unknown unevaluated", errors.New("attest: unevaluated report"), exitUnknown}, - {"Unknown inconsistent", errors.New("attest: inconsistent state"), exitUnknown}, + {"Usage unknown preimage version", fmt.Errorf("attestation: %w", attest.ErrUnknownPreimageVersion), exitUsage}, + + {"Missing not found", fmt.Errorf("horizon: get /assets: %w", horizon.ErrNotFound), exitMissing}, + + {"Unavailable url error", &url.Error{Op: "Get", URL: "https://horizon.stellar.org", Err: errors.New("connection refused")}, exitUnavailable}, + {"Unavailable wrapped url error", fmt.Errorf("horizon: get /assets: %w", + &url.Error{Op: "Get", URL: "https://horizon.stellar.org", Err: errors.New("dial tcp: no route to host")}), exitUnavailable}, + {"Unavailable deadline", fmt.Errorf("scan: %w", context.DeadlineExceeded), exitUnavailable}, + + {"Unknown undetermined", fmt.Errorf("attestation: %w", attest.ErrUndetermined), exitUnknown}, + {"Unknown unevaluated", fmt.Errorf("attestation: %w", attest.ErrUnevaluated), exitUnknown}, + {"Unknown inconsistent", fmt.Errorf("attestation: %w", attest.ErrInconsistent), exitUnknown}, + {"Generic unexpected", errors.New("disk full"), exitGeneric}, + // An error nothing typed wraps stays generic whatever its words: + // text is issuer- and upstream-controlled and classifies nothing. + {"Generic keyword soup", errors.New("parse: http upstream network not found timeout undetermined"), exitGeneric}, + // A missing helper binary used to read as "not found" because its + // message contained the words; it is a generic failure, not an + // asset that does not exist. + {"Generic missing binary", errors.New(`exec: "stellar": executable file not found in $PATH`), exitGeneric}, } for _, tt := range tests { @@ -63,3 +89,95 @@ func TestExitCodePathsComprehensive(t *testing.T) { }) } } + +// TestExitCodeAssetKeywordCannotStealTheCode pins the failure mode that +// motivated typed classification (issue #298): a not-found error whose text +// contains words the old substring table matched — "parse", "http", +// "network", "upstream" — must still exit exitMissing. The asset code, the +// issuer's home domain and the upstream's own message are all +// issuer-/upstream-controlled text; none of them may pick the exit code. +func TestExitCodeAssetKeywordCannotStealTheCode(t *testing.T) { + tests := []struct { + name string + err error + want int + }{ + { + // An asset whose CODE is a word the usage rules matched. + name: "not-found asset coded parse", + err: fmt.Errorf("%w: asset parse-%s", horizon.ErrNotFound, cliTestIssuer), + want: exitMissing, + }, + { + // An asset whose CODE is a word the unavailable rules matched. + name: "not-found asset coded http", + err: fmt.Errorf("%w: asset http-%s", horizon.ErrNotFound, cliTestIssuer), + want: exitMissing, + }, + { + // An issuer whose HOME DOMAIN contains "network". + name: "not-found asset on network.example", + err: fmt.Errorf("%w: asset USDC-%s home domain network.example", horizon.ErrNotFound, cliTestIssuer), + want: exitMissing, + }, + { + // The upstream's own message repeats every old keyword. + name: "upstream error echoing all keywords", + err: fmt.Errorf("scan: %w", errors.New("upstream parse of network http not found timeout")), + want: exitGeneric, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := exitCodeForError(tt.err); got != tt.want { + t.Errorf("exitCodeForError(%v) = %d, want %d", tt.err, got, tt.want) + } + }) + } +} + +// TestExitCodeFromDispatch drives the real commands, so the classification is +// pinned where it is used: what run() returns is what main() maps to $?. +func TestExitCodeFromDispatch(t *testing.T) { + t.Run("no command is a usage error", func(t *testing.T) { + d, _, _, _ := deps(testReport(), nil) + err := runWith(nil, d) + if got := exitCodeForError(err); got != exitUsage { + t.Errorf("runWith(nil) exit = %d, want %d", got, exitUsage) + } + }) + + t.Run("unknown command is a usage error", func(t *testing.T) { + d, _, _, _ := deps(testReport(), nil) + err := runWith([]string{"frobnicate"}, d) + if got := exitCodeForError(err); got != exitUsage { + t.Errorf("runWith(frobnicate) exit = %d, want %d", got, exitUsage) + } + }) + + t.Run("wrong argument count is a usage error", func(t *testing.T) { + d, _, _, _ := deps(testReport(), nil) + err := runWith([]string{"scan"}, d) + if got := exitCodeForError(err); got != exitUsage { + t.Errorf("runWith(scan) exit = %d, want %d", got, exitUsage) + } + }) + + t.Run("undefined flag is a usage error", func(t *testing.T) { + d, _, _, _ := deps(testReport(), nil) + err := runWith([]string{"scan", "-not-a-flag", "USDC-" + cliIssuer}, d) + if got := exitCodeForError(err); got != exitUsage { + t.Errorf("undefined flag exit = %d, want %d", got, exitUsage) + } + }) + + t.Run("scan failure keeps its typed code end to end", func(t *testing.T) { + notFound := fmt.Errorf("%w: asset http-%s", horizon.ErrNotFound, cliIssuer) + d, _, _, _ := deps(nil, notFound) + err := runWith([]string{"scan", "http-" + cliIssuer}, d) + if got := exitCodeForError(err); got != exitMissing { + t.Errorf("not-found scan exit = %d, want %d", got, exitMissing) + } + }) +} diff --git a/cmd/assay/exitcode.go b/cmd/assay/exitcode.go new file mode 100644 index 0000000..273bc14 --- /dev/null +++ b/cmd/assay/exitcode.go @@ -0,0 +1,110 @@ +package main + +import ( + "context" + "errors" + "flag" + "fmt" + "net" + + "github.com/use-assay/assay/internal/attest" + "github.com/use-assay/assay/internal/horizon" + "github.com/use-assay/assay/internal/scan" +) + +// Exit codes, documented in docs/cli.md. Scripts and the reproducibility job +// branch on these numbers, so a code's meaning must never change. +const ( + exitSuccess = 0 + exitGeneric = 1 + exitUsage = 2 + exitMissing = 3 + exitUnavailable = 4 + exitUnknown = 5 +) + +// usageError marks an error caused by how the command was invoked rather than +// by what it found: an unknown subcommand, the wrong number of arguments, an +// undefined flag. It carries the exit-code classification structurally, so +// exitCodeForError never has to read the message text — the failure mode this +// replaces was an issuer-controlled or upstream-controlled string deciding +// the exit code by containing a word like "parse" or "not found". +type usageError struct{ err error } + +func (e *usageError) Error() string { return e.err.Error() } +func (e *usageError) Unwrap() error { return e.err } + +// usagef builds a usage error the way fmt.Errorf builds a plain one. +func usagef(format string, a ...any) error { + return &usageError{err: fmt.Errorf(format, a...)} +} + +// parseFlags parses args and classifies a flag error as a usage error. It is +// the one place flag-set parsing happens, so every command classifies an +// undefined flag or an invalid flag value the same way (exit 2). +// +// flag.ErrHelp is passed through unchanged: the flags package already printed +// the usage text, and asking for help is not a malformed invocation, so it +// keeps the generic-failure classification it has always had. +func parseFlags(fs *flag.FlagSet, args []string) error { + if err := fs.Parse(args); err != nil { + if errors.Is(err, flag.ErrHelp) { + return err + } + return usagef("%s: %w", fs.Name(), err) + } + return nil +} + +// exitCodeForError maps an error to the process exit code, per docs/cli.md. +// +// Every classification is structural: a sentinel matched with errors.Is, a +// typed error matched with errors.As, or the usageError wrapper. No exit code +// may depend on err.Error() text — error text includes issuer-controlled +// strings (an asset code, a home domain) and upstream messages, so a +// substring rule lets a not-found asset whose code is "PARSE" or "HTTP" exit +// with the usage or unavailable code instead of exitMissing, and a script +// that branches on $? is silently wrong. +func exitCodeForError(err error) int { + if err == nil { + return exitSuccess + } + var uerr *usageError + switch { + case errors.As(err, &uerr): + return exitUsage + // Inputs the commands refuse before any scan: a malformed CODE-ISSUER + // (ErrBadAsset), a malformed holder (ErrBadHolder), the native asset + // (ErrNativeAsset — an understood refusal rather than a parse error, but + // still an argument these commands refuse, so it carries the same code; + // documented in docs/cli.md), and a mistyped -preimage-version. + case errors.Is(err, scan.ErrBadAsset), + errors.Is(err, scan.ErrBadHolder), + errors.Is(err, scan.ErrNativeAsset), + errors.Is(err, attest.ErrUnknownPreimageVersion): + return exitUsage + case errors.Is(err, horizon.ErrNotFound): + return exitMissing + case isUpstreamUnavailable(err): + return exitUnavailable + case errors.Is(err, attest.ErrUndetermined), + errors.Is(err, attest.ErrUnevaluated), + errors.Is(err, attest.ErrInconsistent): + return exitUnknown + } + return exitGeneric +} + +// isUpstreamUnavailable reports whether err is a transport-level failure — a +// dial, DNS, or timeout failure reaching a source the scan depends on. Those +// errors are typed (net.Error covers *net.OpError, *url.Error and +// *net.DNSError; a bounded scan or request context reports +// context.DeadlineExceeded), so the classification never inspects message +// text the way the deleted substring table did. +func isUpstreamUnavailable(err error) bool { + if errors.Is(err, context.DeadlineExceeded) { + return true + } + var netErr net.Error + return errors.As(err, &netErr) +} diff --git a/cmd/assay/main.go b/cmd/assay/main.go index 36c39d1..c44a10b 100644 --- a/cmd/assay/main.go +++ b/cmd/assay/main.go @@ -4,7 +4,6 @@ package main import ( "context" "encoding/json" - "errors" "flag" "fmt" "io" @@ -31,15 +30,6 @@ import ( "github.com/use-assay/assay/internal/scan" ) -const ( - exitSuccess = 0 - exitGeneric = 1 - exitUsage = 2 - exitMissing = 3 - exitUnavailable = 4 - exitUnknown = 5 -) - func main() { if err := run(os.Args[1:]); err != nil { fmt.Fprintln(os.Stderr, "assay:", err) @@ -47,57 +37,6 @@ func main() { } } -func exitCodeForError(err error) int { - if err == nil { - return exitSuccess - } - // The native asset ("native" or "XLM", any case) is an input Assay - // understands and deliberately refuses, not one it fails to parse: the - // ledger gives it no issuer account, so there are no authorization flags - // to read and nothing to scan or attest. It is grouped with the other - // arguments these commands refuse (exit 2) so a script can tell "this - // identifier will never scan" from a transient failure without parsing - // stderr. Matched with errors.Is rather than the message text below, so - // wrapping or rewording cannot silently move it to another code. - // Documented in docs/cli.md. - if errors.Is(err, scan.ErrNativeAsset) { - return exitUsage - } - s := err.Error() - if strings.Contains(s, "unknown command") || - strings.Contains(s, "no command given") || - strings.Contains(s, "takes exactly one asset") || - strings.Contains(s, "invalid asset") || - strings.Contains(s, "expected asset") || - strings.Contains(s, "bad request") || - strings.Contains(s, "parse") || - strings.Contains(s, "unknown preimage version") || - strings.Contains(s, "flag provided but not defined") || - strings.Contains(s, "invalid value") { - return exitUsage - } - if strings.Contains(s, "not found") || - strings.Contains(s, "no such asset") || - strings.Contains(s, "does not exist") { - return exitMissing - } - if strings.Contains(s, "timeout") || - strings.Contains(s, "connection refused") || - strings.Contains(s, "no route to host") || - strings.Contains(s, "upstream") || - strings.Contains(s, "network") || - strings.Contains(s, "http") || - strings.Contains(s, "exhausted") { - return exitUnavailable - } - if strings.Contains(s, "undetermined") || - strings.Contains(s, "unevaluated") || - strings.Contains(s, "inconsistent") { - return exitUnknown - } - return exitGeneric -} - // commandDeps are the process-level dependencies the subcommands use. They are // grouped so dispatch, flag handling and output formatting can be tested // without a network or a real server. The CLI is how the attestation pipeline @@ -109,7 +48,7 @@ type commandDeps struct { stderr io.Writer // scan fetches and classifies one asset. It is injected so tests never // touch the network. - scan func(context.Context, mechanics.Asset, []string) (*mechanics.Report, error) + scan func(context.Context, mechanics.Asset) (*mechanics.Report, error) // serve starts the HTTP API. It is injected so dispatch can be tested // without binding a port. serve func([]string, *slog.Logger) error @@ -120,8 +59,8 @@ func defaultDeps() commandDeps { return commandDeps{ stdout: os.Stdout, stderr: os.Stderr, - scan: func(ctx context.Context, a mechanics.Asset, lists []string) (*mechanics.Report, error) { - return newScanner(lists).Scan(ctx, a) + scan: func(ctx context.Context, a mechanics.Asset) (*mechanics.Report, error) { + return scan.New().Scan(ctx, a) }, serve: runServe, } @@ -145,6 +84,8 @@ func usage(w io.Writer) { (CODE-ISSUER or SAC address), bounded by RPC event retention assay serve [-addr] [-history PATH] serve the HTTP API and UI + assay version print scanner identity, preimage encodings + and build (VCS, Go) information Commands that scan also accept: -cache-directory-ttl D reuse a curated directory answer for D (0 disables) @@ -178,7 +119,7 @@ func run(args []string) error { return runWith(args, defaultDeps()) } func runWith(args []string, d commandDeps) error { if len(args) == 0 { usage(d.stderr) - return fmt.Errorf("no command given") + return usagef("no command given") } log := slog.New(slog.NewTextHandler(d.stderr, nil)) @@ -198,9 +139,14 @@ func runWith(args []string, d commandDeps) error { return runRegistryHistory(args[1:], d) case "serve": return d.serve(args[1:], log) + case "version", "-version", "--version": + // The identity form works both as a subcommand and as the + // conventional top-level flag, so `assay version`, `assay -version` + // and `assay --version` all answer the same thing. + return runVersion(args[1:], d) default: usage(d.stderr) - return fmt.Errorf("unknown command %q", args[0]) + return usagef("unknown command %q", args[0]) } } @@ -211,11 +157,11 @@ func runScan(args []string, d commandDeps) error { "save every upstream response into DIR for later -replay") replayDir := fs.String("replay", "", "serve every upstream response from a recording made with -record") - if err := fs.Parse(args); err != nil { - return fmt.Errorf("scan: %w", err) + if err := parseFlags(fs, args); err != nil { + return err } if fs.NArg() != 1 { - return fmt.Errorf("scan takes exactly one asset (CODE-ISSUER)") + return usagef("scan takes exactly one asset (CODE-ISSUER)") } asset, err := scan.ParseAsset(fs.Arg(0)) if err != nil { @@ -305,9 +251,7 @@ func wireTransport(s *scan.Scanner, rt http.RoundTripper) { // scanner configured to consult them. func scanFuncFor(lists []string, d commandDeps) func(context.Context, mechanics.Asset) (*mechanics.Report, error) { if len(lists) == 0 { - return func(ctx context.Context, asset mechanics.Asset) (*mechanics.Report, error) { - return d.scan(ctx, asset, lists) - } + return d.scan } return newScanner(lists).Scan } @@ -377,11 +321,11 @@ func runAttestation(args []string, d commandDeps) error { "render the preimage under this encoding: v1, v2, v3, v4 or a full assay-evidence-vN line (default: the one the report binds)") bundleOut := fs.String("bundle", "", "also write an offline verification bundle (raw source bytes, report, preimage, digest) to this path") - if err := fs.Parse(args); err != nil { - return fmt.Errorf("attestation: %w", err) + if err := parseFlags(fs, args); err != nil { + return err } if fs.NArg() != 1 { - return fmt.Errorf("attestation takes exactly one asset (CODE-ISSUER)") + return usagef("attestation takes exactly one asset (CODE-ISSUER)") } // The encoding is validated before the live scan: a mistyped version is a // usage error, and discovering it after a 30-second fetch would waste the @@ -396,35 +340,26 @@ func runAttestation(args []string, d commandDeps) error { return fmt.Errorf("attestation: %w", err) } + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) + defer cancel() + scanFn := scanFuncFor(assetLists(), d) finish := func() {} recordingDir := "" if *bundleOut != "" { - recordingDir, err = os.MkdirTemp("", "assay-bundle-*") + dir, err := os.MkdirTemp("", "assay-bundle-*") if err != nil { return fmt.Errorf("create bundle recording directory: %w", err) } - defer func() { - if err := os.RemoveAll(recordingDir); err != nil { - _, _ = fmt.Fprintln(d.stderr, "assay: bundle recording directory not removed:", err) - } - }() + defer func() { _ = os.RemoveAll(dir) }() + recordingDir = dir + // Record into a private directory first; the archive is written only + // after the report is derived, so a failed scan leaves no half bundle. scanFn, finish, err = scanFuncForRecording(assetLists(), d, recordingDir, "") if err != nil { return err } } - finished := false - finishRecording := func() { - if !finished { - finish() - finished = true - } - } - defer finishRecording() - - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() report, err := scanFn(ctx, asset) if err != nil { @@ -442,7 +377,7 @@ func runAttestation(args []string, d commandDeps) error { // Close the recording before packaging: the manifest and bodies are // written by Close, and a bundle built from a still-open recorder would // be missing every response. - finishRecording() + finish() if err := bundle.Write(*bundleOut, report, params, recordingDir); err != nil { return fmt.Errorf("write verification bundle %s: %w", *bundleOut, err) } @@ -489,11 +424,11 @@ func runHistory(args []string, d commandDeps) error { assetLists := assetListFlags(fs) guarantee := fs.Bool("guarantee", false, "exit non-zero when there is no history") raw := fs.Bool("raw", false, "print only the history, tab-separated, for scripting") - if err := fs.Parse(args); err != nil { - return fmt.Errorf("history: %w", err) + if err := parseFlags(fs, args); err != nil { + return err } if fs.NArg() != 1 { - return fmt.Errorf("history takes exactly one asset (CODE-ISSUER)") + return usagef("history takes exactly one asset (CODE-ISSUER)") } asset, err := scan.ParseAsset(fs.Arg(0)) @@ -504,7 +439,7 @@ func runHistory(args []string, d commandDeps) error { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - report, err := d.scan(ctx, asset, assetLists()) + report, err := scanFuncFor(assetLists(), d)(ctx, asset) if err != nil { return err } @@ -601,8 +536,8 @@ func runServe(args []string, log *slog.Logger) error { addr := fs.String("addr", ":8080", "listen address") historyPath := fs.String("history", "", "path to the observation history log (JSON Lines); empty keeps history in memory only") - if err := fs.Parse(args); err != nil { - return fmt.Errorf("serve: %w", err) + if err := parseFlags(fs, args); err != nil { + return err } // The server is where a list configuration matters most: every scan it diff --git a/cmd/assay/main_test.go b/cmd/assay/main_test.go index 017a86c..51b87d8 100644 --- a/cmd/assay/main_test.go +++ b/cmd/assay/main_test.go @@ -49,7 +49,7 @@ func deps(rep *mechanics.Report, scanErr error) (commandDeps, *bytes.Buffer, *by return commandDeps{ stdout: out, stderr: errOut, - scan: func(context.Context, mechanics.Asset, []string) (*mechanics.Report, error) { + scan: func(context.Context, mechanics.Asset) (*mechanics.Report, error) { return rep, scanErr }, serve: func(args []string, _ *slog.Logger) error { diff --git a/cmd/assay/native_asset_test.go b/cmd/assay/native_asset_test.go index cd44cb5..0f349cc 100644 --- a/cmd/assay/native_asset_test.go +++ b/cmd/assay/native_asset_test.go @@ -26,7 +26,7 @@ func TestNativeAssetIsRefusedBeforeAnyScan(t *testing.T) { d := commandDeps{ stdout: out, stderr: &bytes.Buffer{}, - scan: func(context.Context, mechanics.Asset, []string) (*mechanics.Report, error) { + scan: func(context.Context, mechanics.Asset) (*mechanics.Report, error) { called = true return testReport(), nil }, diff --git a/cmd/assay/registry_history.go b/cmd/assay/registry_history.go index 751b25a..52b8528 100644 --- a/cmd/assay/registry_history.go +++ b/cmd/assay/registry_history.go @@ -327,11 +327,11 @@ func runRegistryHistory(args []string, d commandDeps) error { registry := fs.String("contract", envOr("ASSAY_CONTRACT_ID", defaultRegistry), "registry contract id (env ASSAY_CONTRACT_ID)") network := fs.String("network", envOr("ASSAY_NETWORK", "testnet"), "network used to derive the SAC id (env ASSAY_NETWORK)") asJSON := fs.Bool("json", false, "print the history as JSON") - if err := fs.Parse(args); err != nil { - return fmt.Errorf("registry-history: %w", err) + if err := parseFlags(fs, args); err != nil { + return err } if fs.NArg() != 1 { - return fmt.Errorf("registry-history takes exactly one asset (CODE-ISSUER or a C... SAC address)") + return usagef("registry-history takes exactly one asset (CODE-ISSUER or a C... SAC address)") } sac := fs.Arg(0) diff --git a/cmd/assay/verify.go b/cmd/assay/verify.go index 04f3b96..c5f27f8 100644 --- a/cmd/assay/verify.go +++ b/cmd/assay/verify.go @@ -61,12 +61,14 @@ const ( ) // OnChainSafety mirrors the registry's get_safety return: the stored -// attestation for one asset. +// attestation for one asset, now including the preimage version so a +// verifier does not have to guess which encoding produced the hash. type OnChainSafety struct { - Severity uint32 `json:"severity"` - Flags uint32 `json:"flags"` - EvidenceHash string `json:"evidence_hash"` - AttestedAt int64 `json:"attested_at"` + Severity uint32 `json:"severity"` + Flags uint32 `json:"flags"` + EvidenceHash string `json:"evidence_hash"` + AttestedAt int64 `json:"attested_at"` + PreimageVersion uint32 `json:"preimage_version"` } // registryReader reads the on-chain attestation for one asset. It is an @@ -361,8 +363,8 @@ func writeVerifyResult(w io.Writer, res *VerifyResult, asJSON bool) error { res.Local.Severity, res.Local.Flags, res.Local.EvidenceHash) } if res.Chain != nil { - _, _ = fmt.Fprintf(w, "chain: severity=%d flags=%d evidence_hash=%s attested_at=%d\n", - res.Chain.Severity, res.Chain.Flags, res.Chain.EvidenceHash, res.Chain.AttestedAt) + _, _ = fmt.Fprintf(w, "chain: severity=%d flags=%d evidence_hash=%s attested_at=%d preimage_version=%d\n", + res.Chain.Severity, res.Chain.Flags, res.Chain.EvidenceHash, res.Chain.AttestedAt, res.Chain.PreimageVersion) } } if res.Differential != nil { @@ -442,8 +444,8 @@ func runVerify(args []string) error { "also re-read the issuer's flags through Soroban RPC; disagreement fails verification") rpcURL := fs.String("rpc", differential.DefaultURL, "Soroban RPC URL used by -differential") - if err := fs.Parse(args); err != nil { - return fmt.Errorf("verify: %w", err) + if err := parseFlags(fs, args); err != nil { + return err } if *bundlePath != "" { if fs.NArg() != 0 { @@ -470,7 +472,7 @@ func runVerify(args []string) error { return nil } if fs.NArg() != 1 { - return fmt.Errorf("verify takes exactly one asset (CODE-ISSUER)") + return usagef("verify takes exactly one asset (CODE-ISSUER)") } asset, err := scan.ParseAsset(fs.Arg(0)) if err != nil { diff --git a/cmd/assay/version.go b/cmd/assay/version.go new file mode 100644 index 0000000..3fdbc81 --- /dev/null +++ b/cmd/assay/version.go @@ -0,0 +1,131 @@ +package main + +import ( + "flag" + "fmt" + "io" + "runtime/debug" + "strings" + + "github.com/use-assay/assay/internal/attest" +) + +// This file implements `assay version` (issue #299): print the scanner +// identity, the preimage encodings, and the build facts a verifier needs +// before it compares hashes. Two runs are only comparable if each records +// which scanner and which encoding produced it — that is the same rule that +// binds attest.ScannerIdentity into the v4 preimage, exposed as a command so +// a verifier can read it out of the binary instead of parsing `go version -m` +// output by hand. + +// buildSettings is everything `assay version` prints about the binary itself. +type buildSettings struct { + // Scanner is attest.ScannerIdentity: the identity the v4 preimage's + // `scanner` line binds. "devel" for unstamped builds. + Scanner string + // Preimage is the newest preimage encoding this build writes. Older + // encodings are still recognized, for verification. + Preimage string + // Encodings lists every preimage encoding this build understands, + // oldest first. + Encodings []string + // Module is the main module path, e.g. github.com/use-assay/assay. + Module string + // ModuleVersion is the version the Go toolchain stamped on the main + // module: a release tag, or "devel"/"(devel)" for an unstamped build. + ModuleVersion string + // GoVersion is the toolchain that built the binary. + GoVersion string + // VCSRevision is the commit the binary was built from, or "unknown" + // when the build carried no VCS stamp. + VCSRevision string + // VCSModified is "true" or "false" when the tree's state at build time + // was stamped, "unknown" otherwise. + VCSModified string +} + +// preimageEncodings lists the encodings oldest first. It is derived from the +// attest package's own constants, so a new encoding appears here (and in the +// version output) the moment it exists rather than being remembered twice. +var preimageEncodings = []string{ + attest.PreimageVersion, + attest.PreimageVersionCheckSet, + attest.PreimageVersionNetwork, + attest.PreimageVersionScanner, +} + +// readBuildSettings reads the binary's own build info. The scanner identity +// comes from attest.ScannerIdentity (which is internal/version.Version); the +// rest comes from debug.ReadBuildInfo, which the Go toolchain stamps into +// every binary. +func readBuildSettings() buildSettings { + s := buildSettings{ + Scanner: attest.ScannerIdentity, + Preimage: preimageEncodings[len(preimageEncodings)-1], + Encodings: append([]string(nil), preimageEncodings...), + Module: "unknown", + ModuleVersion: "unknown", + GoVersion: "unknown", + VCSRevision: "unknown", + VCSModified: "unknown", + } + + info, ok := debug.ReadBuildInfo() + if !ok { + return s + } + if info.Main.Path != "" { + s.Module = info.Main.Path + } + if info.Main.Version != "" { + s.ModuleVersion = info.Main.Version + } + if info.GoVersion != "" { + s.GoVersion = info.GoVersion + } + for _, setting := range info.Settings { + switch setting.Key { + case "vcs.revision": + s.VCSRevision = setting.Value + case "vcs.modified": + s.VCSModified = setting.Value + } + } + return s +} + +// writeVersion renders the build settings as aligned `key: value` lines, one +// fact per line, so the output is diffable and greppable in scripts. +func writeVersion(w io.Writer, s buildSettings) error { + _, err := fmt.Fprintf(w, "scanner: %s\n"+ + "preimage: %s\n"+ + "encodings: %s\n"+ + "module: %s %s\n"+ + "go: %s\n"+ + "vcs.revision: %s\n"+ + "vcs.modified: %s\n", + s.Scanner, + s.Preimage, + strings.Join(s.Encodings, " "), + s.Module, + s.ModuleVersion, + s.GoVersion, + s.VCSRevision, + s.VCSModified, + ) + return err +} + +// runVersion implements the version subcommand. It takes no flags of its +// own beyond the standard -h; everything it prints is a fact about the +// binary, not a choice of the caller. +func runVersion(args []string, d commandDeps) error { + fs := flag.NewFlagSet("version", flag.ContinueOnError) + if err := parseFlags(fs, args); err != nil { + return err + } + if fs.NArg() != 0 { + return usagef("version takes no arguments (got %q)", fs.Arg(0)) + } + return writeVersion(d.stdout, readBuildSettings()) +} diff --git a/cmd/assay/version_test.go b/cmd/assay/version_test.go new file mode 100644 index 0000000..985ea6b --- /dev/null +++ b/cmd/assay/version_test.go @@ -0,0 +1,125 @@ +package main + +import ( + "bytes" + "runtime" + "strings" + "testing" + + "github.com/use-assay/assay/internal/attest" +) + +// TestVersionOutputFormat pins the exact rendering: a verifier's script may +// grep these lines, so the labels and their order are a contract. +func TestVersionOutputFormat(t *testing.T) { + s := buildSettings{ + Scanner: "v1.2.3", + Preimage: attest.PreimageVersionScanner, + Encodings: []string{attest.PreimageVersion, attest.PreimageVersionScanner}, + Module: "github.com/use-assay/assay", + ModuleVersion: "v1.2.3", + GoVersion: "go1.26.9", + VCSRevision: "abc123", + VCSModified: "false", + } + want := "scanner: v1.2.3\n" + + "preimage: " + attest.PreimageVersionScanner + "\n" + + "encodings: " + attest.PreimageVersion + " " + attest.PreimageVersionScanner + "\n" + + "module: github.com/use-assay/assay v1.2.3\n" + + "go: go1.26.9\n" + + "vcs.revision: abc123\n" + + "vcs.modified: false\n" + + out := &bytes.Buffer{} + if err := writeVersion(out, s); err != nil { + t.Fatalf("writeVersion: %v", err) + } + if out.String() != want { + t.Errorf("writeVersion output =\n%s\nwant\n%s", out.String(), want) + } +} + +// TestVersionReadBuildSettings checks what the reader derives from the +// attestation package and from this binary's own build info. Values stamped +// by the toolchain vary by how the test binary was built, so the assertions +// are on identity and presence rather than on a specific revision. +func TestVersionReadBuildSettings(t *testing.T) { + s := readBuildSettings() + + if s.Scanner != attest.ScannerIdentity { + t.Errorf("Scanner = %q, want attest.ScannerIdentity %q", s.Scanner, attest.ScannerIdentity) + } + if s.Preimage != attest.PreimageVersionScanner { + t.Errorf("Preimage = %q, want the newest encoding %q", s.Preimage, attest.PreimageVersionScanner) + } + // Every PreimageVersion* constant the attest package exports must be + // listed; a verifier comparing hashes has to know whether the binary + // understands the encoding the on-chain hash was made under. + for _, enc := range []string{ + attest.PreimageVersion, + attest.PreimageVersionCheckSet, + attest.PreimageVersionNetwork, + attest.PreimageVersionScanner, + } { + found := false + for _, e := range s.Encodings { + if e == enc { + found = true + break + } + } + if !found { + t.Errorf("Encodings %v does not list %q", s.Encodings, enc) + } + } + if s.GoVersion != runtime.Version() { + t.Errorf("GoVersion = %q, want %q", s.GoVersion, runtime.Version()) + } + if s.VCSRevision == "" || s.VCSModified == "" { + t.Error("VCSRevision and VCSModified must never be empty; use \"unknown\" instead") + } +} + +// TestVersionDispatch covers the subcommand and both flag spellings: all +// three must print the same identity and exit successfully. +func TestVersionDispatch(t *testing.T) { + for _, args := range [][]string{ + {"version"}, + {"-version"}, + {"--version"}, + } { + t.Run(strings.Join(args, " "), func(t *testing.T) { + d, out, _, _ := deps(nil, nil) + if err := runWith(args, d); err != nil { + t.Fatalf("runWith(%v): %v", args, err) + } + got := out.String() + for _, want := range []string{ + "scanner: " + attest.ScannerIdentity, + "preimage: " + attest.PreimageVersionScanner, + "encodings: ", + "module: ", + "go: ", + "vcs.revision: ", + "vcs.modified: ", + } { + if !strings.Contains(got, want) { + t.Errorf("output missing %q:\n%s", want, got) + } + } + }) + } +} + +// TestVersionTakesNoArguments keeps the subcommand strict: an argument is a +// usage error, not something to ignore. +func TestVersionTakesNoArguments(t *testing.T) { + d, _, _, _ := deps(nil, nil) + err := runWith([]string{"version", "extra"}, d) + if err == nil { + t.Fatal("version with an argument should fail") + } + if got := exitCodeForError(err); got != exitUsage { + t.Errorf("version extra: exit = %d, want %d (usage)", got, exitUsage) + } +} diff --git a/docs/api.md b/docs/api.md index 1e5a8d9..ff8bd56 100644 --- a/docs/api.md +++ b/docs/api.md @@ -1,29 +1,34 @@ -# Assay API Contract - -All API endpoints return JSON. All responses are utf-8 encoded. - -## Scan Endpoint - -`GET /api/v1/scan?asset=CODE-ISSUER` - -Scans an asset and returns its capability report. - -The parameter accepts the same three spellings as the CLI — `CODE-ISSUER`, -`CODE:ISSUER`, and a stellar.expert asset URL (percent-encoded) — and every -response names the asset in its canonical `CODE-ISSUER` form, so evidence and -preimage bytes do not depend on which form was sent. See -[cli.md](cli.md#asset-identifiers). - -### Response Headers - -- `X-Assay-Undetermined`: Set to `true` when a scan is degraded due to an upstream source outage (such as failure to reach StellarExpert). When present, the response body contains `undetermined: true` and `undetermined_checks`, indicating that the source data was incomplete and the severity should be treated with caution. - -### Status Codes - -- `200 OK`: Successful scan (check `X-Assay-Undetermined` header or `undetermined` field for source degradation). -- `400 Bad Request`: Invalid asset code or issuer, or missing `?asset=` parameter. Also returned for an identifier naming the network's native asset — see below. -- `404 Not Found`: Asset not found on the ledger. -- `502 Bad Gateway`: Scan failed due to an underlying network or upstream error. +# Assay HTTP API + +`assay serve` exposes one HTTP surface: the scan API, the observation history, +the exposure page, the operational probes, and a single-file UI. + +**Two references exist, with one job each:** + +- [`openapi.yaml`](../openapi.yaml) at the repository root is the **schema + source**. It is machine-readable, it is held to the routes the server + actually registers by `TestOpenAPICoversAllRegisteredRoutes`, and its + component schemas are held to the fields the handlers actually emit by + `TestOpenAPISchemasMatchHandlerEmittedFields`. Generate clients from it. +- **This page** is the human reference for the same surface: what each + endpoint is for, what it answers, and what it refuses. It documents every + endpoint below; when the two disagree about a field name or a status code, + the OpenAPI document wins and this page is the bug. + +## Conventions + +- Every response body is JSON, utf-8 encoded, except `GET /` (HTML) and + `GET /healthz` (plain text). +- Errors are `{"error": ""}` with the status code doing the + classification; no endpoint signals failure with `200` and a message. +- The scan response **is** the report, unwrapped. It carries `schema_version`, + the payload contract version, which is independent of the `/api/v1` route + version: a CLI consumer never sees the route, so the report carries its own + contract. [api-versioning.md](api-versioning.md) states what each version + promises. +- A field missing from a response is absent, not `null` and not an error; + consumers must not require fields the additive-change policy is allowed to + add later. ### The native asset @@ -42,7 +47,47 @@ so it stays exactly what [integrating.md](integrating.md) already uses it as — a never-attested asset the on-chain gate refuses. `GET /api/v1/history?asset=XLM` returns the same `400` and message. A credit asset whose code merely happens to be XLM (`XLM-G…`) is an ordinary asset and scans normally. -### Checking one holder's exposure: `holder=` + +## Endpoints + +### `GET /api/v1/scan?asset=CODE-ISSUER` + +Scans an asset and returns its capability report. Each successful scan also +records one observation into the history store (see +[history.md](history.md)). + +Parameters: + +- `asset` (required): asset code and issuer, e.g. `USDC-GA5Z...`. +- `holder` (optional): a holder's `G...` address. Adds the holder-trustline + finding — whether the issuer can freeze or confiscate *this holder's* + balance — to the report. + +The parameter accepts the same three spellings as the CLI — `CODE-ISSUER`, +`CODE:ISSUER`, and a stellar.expert asset URL (percent-encoded) — and every +response names the asset in its canonical `CODE-ISSUER` form, so evidence and +preimage bytes do not depend on which form was sent. See +[cli.md](cli.md#asset-identifiers). + +Response headers: + +- `X-Assay-Undetermined`: set to `true` when the scan is degraded by an + upstream source outage (such as a failure to reach StellarExpert). When + `true`, the body contains `undetermined: true` and `undetermined_checks`, + meaning the source data was incomplete and the severity should be treated + with caution. Always present; `false` on a complete scan. + +Status codes: + +- `200 OK`: the scan report. Check `X-Assay-Undetermined` or the body's + `undetermined` field for source degradation. +- `400 Bad Request`: invalid asset code or issuer, missing `?asset=`, or an + identifier naming the native asset — see above. +- `404 Not Found`: asset not found on the ledger. +- `502 Bad Gateway`: the scan failed on an underlying network or upstream + error; the message names the failing source. + +#### Checking one holder's exposure: `holder=` `GET /api/v1/scan?asset=CODE-ISSUER&holder=G...` @@ -111,19 +156,44 @@ curl -s 'http://localhost:8080/api/v1/scan?asset=USDZ-GAKTLPC4ZV37SSCITQ5IS5AQ4W (Abridged: the report's other fields and findings are unchanged by `holder`.) To check every trustline an account holds at once, use the -[exposure endpoint](#exposure-endpoint) below. +exposure endpoint (`GET /api/v1/exposure`, below). + +### `GET /api/v1/history?asset=CODE-ISSUER` + +Returns an asset's recorded observations in time order, oldest first, with +the transitions derived between each consecutive pair. It reads only what +scans have recorded; it never scans. The full semantics — retention, what an +empty history means, and why an undetermined observation is returned marked +rather than dropped — are in [history.md](history.md). + +Parameters: + +- `asset` (required): asset code and issuer. + +Response: + +- `asset`, `state` (`valid`, `unknown`, or `missing` — the completeness of + the history, not of the request), a plain-language `reason` whenever the + state is not `valid`, `count`, `observations[]`, `transitions[]`, + `latest_at` and `latest_age_secs` (so a consumer applies its own staleness + policy), and `retention` (the per-asset cap the results were read against). -## Exposure Endpoint +Status codes: -`GET /api/v1/exposure?account=G...&limit=10&cursor=0` +- `200 OK`: history returned — including an empty one. An asset with no + observations is a successful result with `state: "missing"`, never a 404: + "we have never looked" and "the request failed" are different answers. +- `400 Bad Request`: missing or invalid asset, or the network's native asset. + +### `GET /api/v1/exposure?account=G...&limit=10&cursor=0` Lists the trustlines an account holds and answers, per asset, with the asset's -issuer-level severity and its holder-trustline finding — the per-wallet form of -`?holder=` on the scan endpoint. **There is no aggregate or portfolio score:** -every asset carries its own severity and its own undetermined flag, and an -undetermined asset says nothing about any other asset on the page. +issuer-level severity and its holder-trustline finding — the per-wallet form +of `?holder=` on the scan endpoint. **There is no aggregate or portfolio +score:** every asset carries its own severity and its own undetermined flag, +and an undetermined asset says nothing about any other asset on the page. -### Parameters +Parameters: - `account` (required): the holder's `G...` address. - `limit` (optional): page size, default `10`, clamped to a maximum of `50`. @@ -131,7 +201,7 @@ undetermined asset says nothing about any other asset on the page. - `cursor` (optional): index of the first trustline to return, for the next page. `0` starts; a cursor at or past the end returns an empty page. -### Response +Response: - `account`, `total` (trustlines on the account), `limit` (page size applied), `count` (assets in this page), and `next_cursor` — absent on the last page. @@ -140,16 +210,65 @@ undetermined asset says nothing about any other asset on the page. trustline check, and `reason` when that asset's scan failed outright (the `finding` is then absent rather than rendered as a clear answer). -### Status Codes +Status codes: -- `200 OK`: Page returned. Individual assets may be undetermined — see each +- `200 OK`: page returned. Individual assets may be undetermined — see each entry's `undetermined` field; there is no header equivalent for a page. -- `400 Bad Request`: Missing or invalid `account`, `limit`, or `cursor`. -- `404 Not Found`: Account not found on the ledger. -- `429 Too Many Requests`: Rate limited. `Retry-After` gives the wait in +- `400 Bad Request`: missing or invalid `account`, `limit`, or `cursor`. +- `404 Not Found`: account not found on the ledger. +- `429 Too Many Requests`: rate limited. `Retry-After` gives the wait in seconds. Exposure is rate-limited per client address because one request runs a full scan per asset; `/api/v1/scan` is not affected. -- `502 Bad Gateway`: The account's trustline list could not be fetched. +- `502 Bad Gateway`: the account's trustline list could not be fetched. + +### `GET /metrics` + +Scan outcome and per-source failure counters accumulated since process start: +`scan_outcomes` (counts per class: `complete`, `undetermined`, `not_found`, +`upstream_failure`) and `source_failures` (counts per upstream source that +did not answer). The counters are monotonically increasing; a scraper derives +rates from consecutive reads. + +Status codes: + +- `200 OK`: a snapshot of the counters. Both objects are present and may be + empty on a fresh process. + +### `GET /healthz` + +Liveness. Reports only that the process is up; it checks no upstream, and a +failing probe must never take it down — a dying process must still be able to +answer. + +Status codes: + +- `200 OK`: the process is running. Body: plain text `ok`. + +### `GET /readyz` + +Per-upstream readiness. It asks each checkable upstream (Horizon, and the +consumed sources) whether it is reachable, and reports the answer per source +so an operator can read *why* from the body. The HTTP status tracks the +body's `status`: `200` when ready, `503` otherwise. No failing probe ever +reports ready. + +Response: + +- `status`: `ready`, `degraded` (a consumed source is unreachable — scans are + still served, but the reputation axis may be undetermined), `unavailable` + (Horizon is unreachable — scans cannot succeed at all), or `unknown`. +- `reason`: present when the status is not `ready`. +- `checked_at` and `age_secs`: when the reported probe round actually ran and + how old it is; the answer is cached, so it may predate this request. +- `upstreams[]`: per source, `name`, `kind` (`horizon` or `consumed`), + `reachable`, `probe_error` (the failure verbatim, when unreachable), and + `probe_url` (so the probe is reproducible from the report alone). + +Status codes: + +- `200 OK`: every checkable upstream is reachable. +- `503 Service Unavailable`: degraded, unavailable, or unknown; see `status` + and `upstreams` for which and why. ## Readiness and registry freshness @@ -193,3 +312,24 @@ as a Go duration. `ASSAY_RPC_URL` selects the Soroban RPC endpoint (the registry reader's testnet endpoint is the default); use an endpoint for the configured registry network. Results share `/readyz`'s in-memory cache and are refreshed with readiness rounds, not on every scrape. + +### `GET /` + +Serves the single-file UI: one embedded HTML page over the same API, for a +human with a browser. It is not a client-generator target and carries no +contract beyond being HTML; the API endpoints above are the interface. + +Status codes: + +- `200 OK`: the HTML page. Any other path is a `404`. + +## Related documents + +- [`openapi.yaml`](../openapi.yaml) — the schema source for this surface. +- [api-versioning.md](api-versioning.md) — what `/api/v1` and + `schema_version` each promise, and the additive-change rule. +- [history.md](history.md) — observation history semantics, retention, and + the meaning of every state. +- [integrating.md](integrating.md) — how a consumer reads reports out of this + API and gates on them. +- [cli.md](cli.md) — the same reports from the command line. \ No newline at end of file diff --git a/docs/architecture.md b/docs/architecture.md index e28b249..7f92c8a 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -45,11 +45,13 @@ Every Go package, its responsibility, and the boundary it must respect. | `cmd/attestfixture` | Derives `attest()` arguments from one labelled fixture for the local-network end-to-end test. | Offline test helper; reads fixtures through `internal/eval` and never fetches a source. | | `cmd/eval` | Records and diffs the labelled eval baseline. | Offline; reads fixtures through `internal/eval`. | | `cmd/refreshfixture` | Re-captures corpus fixtures from recorded live source URLs to detect upstream drift. | Offline maintenance only; never run in CI or live scan. | +| `scripts/secretscan` | Scans diffs for Stellar secret seeds and validates the strkey checksum. | CI helper only; reads text and performs no I/O beyond stdin or named files. | | `internal/api` | HTTP API (`/api/v1/scan`, `/api/v1/history`, `/healthz`) and the embedded single-file UI. | Serves inbound HTTP and reports registry freshness through `internal/registry`; scan sources remain delegated to the scanner. | | `internal/attester` | Attested-set config, the dry-run pass and its exit codes, the dry-run diff, and the issuer watcher. | Calls the scanner (or replays fixtures through `internal/eval`) and reads Horizon operations through `internal/horizon`. No key material and no transaction submission. | | `internal/assetlist` | Fetches and parses SEP-0042 Stellar Asset Lists to provide curated asset metadata and claims. | Outbound HTTP. Leaf package; called by `internal/scan`. | | `internal/cache` | Thread-safe in-memory TTL cache for HTTP responses and reputation queries. | No I/O. In-memory storage only; leaf package used by `internal/stellarexpert`. | | `internal/differential` | Compares Assay scanner reports against stellar-core XDR ledger state. | Test and verification utility; reads XDR and ledger state, no production dependencies. | +| `internal/docindex` | Test-only check that the README docs tables stay in sync with `docs/`: every document is linked from the README, and every README link into `docs/` resolves. | Test-only; no production code, no I/O beyond reading the repository's own markdown. | | `internal/fixtures` | Utilities to read, diff, refresh, and validate test fixture manifests and provenance. | Filesystem I/O for fixtures; outbound HTTP when re-capturing. Offline and test only. | | `internal/sac` | Derives a classic asset's Stellar Asset Contract address for a network, exactly as `stellar contract id asset` does. | **No I/O.** A pure function of asset and network passphrase. | | `internal/scan` | The network edge for a scan: fetches every source once, assembles `mechanics.Subject` (and an optional holder trustline), then runs the engine. | **The only package that performs network I/O for a scan.** | diff --git a/docs/attestation-correction.md b/docs/attestation-correction.md new file mode 100644 index 0000000..e1ac3b1 --- /dev/null +++ b/docs/attestation-correction.md @@ -0,0 +1,107 @@ +# Correcting a wrong attestation + +An attestation is a claim consumers may use to admit an asset. If its claim is +wrong, treat it as an incident: stop relying on the affected result, correct the +current registry state when a verified replacement is available, and preserve +the record of both the original claim and its correction. Never quietly replace +the only public account of what happened. + +This runbook covers scanner or evidence errors, incorrect attester submissions, +and later findings that an attestation was unsupported. A change in issuer +capabilities after a correct point-in-time scan is not itself an incorrect +attestation; follow [freshness guidance](freshness.md) and +[capability transitions](transitions.md) for that case. + +## Detection and decision + +A discrepancy may be raised by any scanner maintainer, attester, verifier, or +consumer. The reporter should identify the asset and network, the registry +address, the attestation transaction (if known), what appears wrong, and the +evidence or reproduction that supports the concern. A verifier can compare the +stored values and `evidence_hash` with a fresh scan using +[`assay attestation`](attestation-run.md), but a matching hash only shows that +the scanner produced those bytes. It does not establish that the scanner +interpreted its sources correctly. + +The maintainers responsible for the scanner and attestation decide whether the +claim is valid, invalid, or still unknown. The admin/attester executes the +on-chain correction; it does not decide correctness by virtue of holding the +key. Base the decision on the source data and its provenance, the scanner +version and code path, a reproducible scan, and an independent review of the +interpretation. Add a regression test when the failure is in scanner logic. +Seek a second maintainer's review for consequential or disputed cases; record +the evidence and rationale either way. + +- **Valid:** the original claim is supported. Make no correction. Record the + finding and why it was closed if it was reported publicly. +- **Invalid:** the claim is demonstrably wrong or unsupported. Follow the + corrective procedure below. +- **Unknown:** evidence is incomplete or reviewers disagree. Do not describe + the claim as verified or silently choose a replacement. Notify consumers + promptly that correctness is disputed and advise them to fail closed for the + affected asset until a decision and verified replacement are available. The + maintainers make and document the final determination from the evidence + above; if the evidence cannot resolve it, leave the incident marked unknown. + +## Corrective action + +On discovery, stop submissions from the affected scanner version or check path +until the cause is understood. Identify every asset and attestation that could +have been affected; do not assume the first reported asset is the only one. + +Today, the deployed registry has no usable `revoke` entrypoint. The contract's +`attest` call replaces the stored values for an asset, so the immediate on-chain +correction is to submit a new attestation derived from a fixed scanner and a +reviewed, complete live scan: + +1. Fix the scanner or evidence-handling defect and reproduce the corrected + result. Do not hand-edit severity, flags, or the evidence hash. +2. Record the original attestation's severity, flags, evidence hash, + `attested_at`, network, registry address, and transaction ID before + overwriting it. Also capture the affected scanner version and assets. +3. Review the corrected scan and submit it through the normal `make attest` + path. Read it back with `make read` and record the correction transaction + and resulting values. +4. Repeat for every affected asset and verify that no affected attestation was + missed. + +If a trustworthy replacement is not yet available, do not invent one to clear +the old claim. The current registry cannot withdraw that claim: alert +consumers immediately, recommend they block the affected asset or disable the +dependent gate, and state plainly that the on-chain value remains present until +a correction can be written. A consumer that reads the registry alone cannot +discover this incident. + +The registry source now defines `revoke`, which withdraws the stored claim so +gates fail closed. It is not available at the deployed registry because that +contract cannot be upgraded in place. After migration to a registry with +`revoke` (see [deployment migration](deployment.md#migrating-to-a-registry-with-revoke)), +revoke an invalid attestation when no verified replacement is ready; then +attest the corrected result once it is reviewed. Revocation makes the current +read return `None`; it does not preserve a tombstone in contract storage, so +record the revoke transaction in the incident record. Do not imply revocation +has happened until the deployed registry and transaction confirm it. + +## Consumers and historical record + +For every confirmed invalid attestation, publish a correction notice in the +public issue or security advisory used to track the incident. Include the +affected asset(s), network and registry, original values and transaction, +what was wrong, affected scanner versions, the corrected or revoked values and +transaction, and the dates of discovery and correction. Link the original +notice to the correction; do not edit away the original claim or make the +correction look like an ordinary refresh. Keep the notice available as the +incident record. + +Notify known integrators directly using their established contact channel, as +well as publishing the notice. State whether the old claim is still readable +on-chain and what consumers should do in the meantime. For an unknown +correctness finding, send the same warning before the final determination and +update it when the state changes. A chain event or overwritten value does not +by itself notify consumers. + +For a potentially exploitable under-reporting error, use the private reporting +and coordinated disclosure process in [SECURITY.md](../SECURITY.md) before +publishing technical details. Notify known affected consumers promptly with +the mitigation they need; publish the correction notice once disclosure is +safe and the immediate risk is addressed. diff --git a/docs/multi-attestor.md b/docs/multi-attestor.md index 2e28c79..5b3a792 100644 --- a/docs/multi-attestor.md +++ b/docs/multi-attestor.md @@ -318,7 +318,7 @@ The open questions for Scheme C are resolved as follows: - **Deprecation schedule:** Single-attestor admin writes are slated for deprecation once independent scanner operators are online; read functions will remain available for at least two interface versions. ### 3. Recommended default attestor set -- Assay publishes a recommended default set of independent attestors in this section. +- Assay will publish a recommended default set of independent attestors in [deployment.md](deployment.md) once independent operators are online; no such set is published yet. - Operators must run on separate cloud/hardware infrastructure with different signing keys. - Integrators are explicitly informed in documentation that consumer-chosen quorum requires choosing independent operators; naming multiple endpoints operated by the same party collapses trust back to Scheme A. diff --git a/docs_test.go b/docs_test.go new file mode 100644 index 0000000..b8ed144 --- /dev/null +++ b/docs_test.go @@ -0,0 +1,80 @@ +package main_test + +import ( + "os" + "path/filepath" + "strings" + "testing" + + "github.com/use-assay/assay/internal/api" +) + +// TestDocsAPIEndpointCoverage holds docs/api.md to issue #297: it must remain +// the human reference for every endpoint `assay serve` registers — the route +// list in api.Routes is the same list the OpenAPI coverage test pins, so a +// new route turns this test red until the page documents it — and it must +// name openapi.yaml as the schema source. The README docs table must link +// the page, so a reader arriving at the repository finds it. +func TestDocsAPIEndpointCoverage(t *testing.T) { + doc := readRepoFile(t, "docs", "api.md") + readme := readRepoFile(t, "README.md") + + // The section heading each route must have in docs/api.md. A route + // registered by the server that is missing here fails with instructions + // rather than being silently tolerated. + headings := map[string]string{ + "GET /api/v1/scan": "### `GET /api/v1/scan", + "GET /api/v1/history": "### `GET /api/v1/history", + "GET /api/v1/exposure": "### `GET /api/v1/exposure", + "GET /metrics": "### `GET /metrics`", + "GET /healthz": "### `GET /healthz`", + "GET /readyz": "### `GET /readyz`", + "GET /": "### `GET /`", + } + + for _, route := range api.Routes { + want, ok := headings[route] + if !ok { + t.Errorf("api.Server registers %s, which docs/api.md has no section for; "+ + "document it in docs/api.md and add its heading here", route) + continue + } + if !contains(doc, want) { + t.Errorf("docs/api.md does not document %s: no %q section", route, want) + } + } + for route := range headings { + known := false + for _, registered := range api.Routes { + if registered == route { + known = true + break + } + } + if !known { + t.Errorf("docs/api.md documents %s, but api.Server does not register it", route) + } + } + + if !contains(doc, "[`openapi.yaml`](../openapi.yaml)") { + t.Error("docs/api.md does not point at openapi.yaml as the schema source") + } + if !contains(readme, "[docs/api.md](") { + t.Error("README does not link docs/api.md from its docs table") + } +} + +// readRepoFile reads a file from the repository root. +func readRepoFile(t *testing.T, parts ...string) string { + t.Helper() + path := filepath.Join(append([]string{getRepoRoot(t)}, parts...)...) + b, err := os.ReadFile(path) + if err != nil { + t.Fatalf("read %s: %v", path, err) + } + return string(b) +} + +func contains(haystack, needle string) bool { + return strings.Contains(haystack, needle) +} diff --git a/internal/api/openapi_schema_test.go b/internal/api/openapi_schema_test.go new file mode 100644 index 0000000..9a12257 --- /dev/null +++ b/internal/api/openapi_schema_test.go @@ -0,0 +1,172 @@ +package api + +import ( + "bufio" + "os" + "path/filepath" + "reflect" + "runtime" + "strings" + "testing" + + "github.com/use-assay/assay/internal/mechanics" + "github.com/use-assay/assay/internal/temporal" +) + +// TestOpenAPISchemasMatchHandlerEmittedFields holds openapi.yaml's component +// schemas to the Go types the handlers actually marshal. Every JSON field a +// type can emit must be documented, and every documented property must exist +// on the type — a schema that names a field the handler never emits is drift +// of the same kind as a missing route, and a generated client built from it +// would be wrong in both directions. +// +// The comparison is field-name level: types and nesting are checked by the +// document itself being reviewed against the handler, but the names are what +// a consumer's generated code binds to, so they are pinned here. +func TestOpenAPISchemasMatchHandlerEmittedFields(t *testing.T) { + doc := readOpenAPIDoc(t) + + for _, tc := range []struct { + schema string + rt reflect.Type + }{ + // The scan response is the report itself; the API returns it + // unwrapped, so Report is the contract. + {"Report", reflect.TypeOf(mechanics.Report{})}, + {"Asset", reflect.TypeOf(mechanics.Asset{})}, + {"Evidence", reflect.TypeOf(mechanics.Evidence{})}, + {"Finding", reflect.TypeOf(mechanics.Finding{})}, + // The history response and its observation/transition entries. + {"Observation", reflect.TypeOf(temporal.Observation{})}, + {"Transition", reflect.TypeOf(temporal.Transition{})}, + {"History", reflect.TypeOf(historyResponse{})}, + // The exposure response and its per-asset entries. + {"Exposure", reflect.TypeOf(exposureResponse{})}, + {"ExposureAsset", reflect.TypeOf(exposureAsset{})}, + // The readiness response, per upstream. + {"Readiness", reflect.TypeOf(Readiness{})}, + {"UpstreamStatus", reflect.TypeOf(UpstreamStatus{})}, + // The metrics counters. + {"Metrics", reflect.TypeOf(metricsBody{})}, + } { + t.Run(tc.schema, func(t *testing.T) { + documented := schemaProperties(t, doc, tc.schema) + if len(documented) == 0 { + t.Fatalf("schema %s has no documented properties", tc.schema) + } + emitted := jsonFieldNames(tc.rt) + + for name := range emitted { + if !documented[name] { + t.Errorf("field %q is emitted by %s but not documented in the %s schema", + name, tc.rt.Name(), tc.schema) + } + } + for name := range documented { + if !emitted[name] { + t.Errorf("property %q is documented in the %s schema but %s never emits it", + name, tc.schema, tc.rt.Name()) + } + } + }) + } +} + +// readOpenAPIDoc returns openapi.yaml from the repository root, located +// relative to this test file so it works regardless of the directory go test +// runs in. It duplicates api_test's readOpenAPI because the two helpers live +// in different packages. +func readOpenAPIDoc(t *testing.T) string { + t.Helper() + _, thisFile, _, ok := runtime.Caller(0) + if !ok { + t.Fatal("runtime.Caller failed") + } + path := filepath.Join(filepath.Dir(thisFile), "..", "..", "openapi.yaml") + b, err := os.ReadFile(path) + if err != nil { + t.Fatalf("read %s: %v", path, err) + } + return string(b) +} + +// schemaProperties extracts the top-level property names of one named schema +// under components.schemas. The document's indentation is fixed (schema at 4 +// spaces, properties at 6, keys at 8), so a line scan is enough; nested keys +// are deeper and are deliberately not collected. +func schemaProperties(t *testing.T, doc, schema string) map[string]bool { + t.Helper() + + props := map[string]bool{} + inSchema := false + inProperties := false + header := " " + schema + ":" + + scanner := bufio.NewScanner(strings.NewReader(doc)) + for scanner.Scan() { + line := scanner.Text() + + if !inSchema { + if line == header { + inSchema = true + } + continue + } + // A key at or below the schema's own indentation ends the block. + if strings.TrimSpace(line) != "" && len(line)-len(strings.TrimLeft(line, " ")) <= 4 { + break + } + switch { + case line == " properties:": + inProperties = true + case inProperties && len(line)-len(strings.TrimLeft(line, " ")) > 8: + // Nested keys and required-list items live deeper; skip them. + case inProperties: + name, ok := cutYAMLKey(line, 8) + if ok { + props[name] = true + } + } + } + if err := scanner.Err(); err != nil { + t.Fatalf("scan openapi.yaml: %v", err) + } + return props +} + +// cutYAMLKey returns the key of a " name:" line indented exactly +// indent spaces. A line with any other indentation, or any content after the +// colon, is not a plain property key and yields ok=false. +func cutYAMLKey(line string, indent int) (string, bool) { + if len(line)-len(strings.TrimLeft(line, " ")) != indent { + return "", false + } + key, rest, found := strings.Cut(strings.TrimLeft(line, " "), ":") + if !found || strings.TrimSpace(rest) != "" || key == "" || strings.ContainsAny(key, " #-") { + return "", false + } + return key, true +} + +// jsonFieldNames returns the JSON object keys a struct type can emit, +// including keys behind omitempty, which a marshal of the zero value would +// omit and therefore could not be used to pin the schema against. +func jsonFieldNames(rt reflect.Type) map[string]bool { + names := map[string]bool{} + for i := 0; i < rt.NumField(); i++ { + f := rt.Field(i) + if f.PkgPath != "" { + continue // unexported + } + tag := f.Tag.Get("json") + name, _, _ := strings.Cut(tag, ",") + if name == "-" { + continue + } + if name == "" { + name = strings.ToLower(f.Name) + } + names[name] = true + } + return names +} diff --git a/internal/api/outcome_test.go b/internal/api/outcome_test.go index 9344a43..0cd2ce9 100644 --- a/internal/api/outcome_test.go +++ b/internal/api/outcome_test.go @@ -11,7 +11,6 @@ import ( "testing" "github.com/use-assay/assay/internal/api" - "github.com/use-assay/assay/internal/scan" "github.com/use-assay/assay/internal/stellarexpert" ) @@ -80,7 +79,7 @@ func newLogServer(t *testing.T) *logServer { t.Helper() buf := newLogBuffer() log := slog.New(slog.NewJSONHandler(buf, nil)) - srv := api.NewServerWithScanner(scan.NewWithOptions(scan.Options{NoReputationCache: true}), log) + srv := api.NewServer(log) // horizonStub serves the /assets and /accounts endpoints the scanner // needs, always answering with a well-formed record. @@ -151,7 +150,7 @@ func (h *horizonStub) ServeHTTP(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte(`{"_embedded":{"records":[{"asset_type":"credit_alphanum4","asset_code":"` + code + `","asset_issuer":"` + issuer + `","flags":{"auth_required":false,"auth_revocable":false,"auth_immutable":true,"auth_clawback_enabled":false},"accounts":{"authorized":1,"unauthorized":0}}]}}`)) case strings.HasPrefix(r.URL.Path, "/accounts/"): w.Header().Set("Content-Type", "application/json") - _, _ = w.Write([]byte(`{"account_id":"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN","home_domain":"127.0.0.1","flags":{"auth_required":false,"auth_revocable":false,"auth_immutable":true,"auth_clawback_enabled":false}}`)) + _, _ = w.Write([]byte(`{"account_id":"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN","home_domain":"example.com","flags":{"auth_required":false,"auth_revocable":false,"auth_immutable":true,"auth_clawback_enabled":false}}`)) default: w.WriteHeader(http.StatusNotFound) } diff --git a/internal/attest/attest.go b/internal/attest/attest.go index 85bffbf..cdf864f 100644 --- a/internal/attest/attest.go +++ b/internal/attest/attest.go @@ -43,10 +43,9 @@ import ( // because the attestations it describes were hashed without one (#269). const PreimageVersion = "assay-evidence-v1" -// PreimageVersionCheckSet is the encoding used once a report binds its check -// set. It adds a `checks` line naming the checks the engine actually ran, so a -// report produced by an engine with a check removed cannot hash the same as one -// produced by the full engine. +// PreimageVersionCheckSet adds a `checks` line naming the checks the engine +// actually ran, so a report produced by an engine with a check removed cannot +// hash the same as one produced by the full engine. // // It is a v2 rather than an edit to v1 for the same reason the version line // exists: every attestation already on-chain was hashed under v1, and must @@ -182,9 +181,12 @@ type ProvenanceStatus string // outcomes of evaluating a report's bound scanner version against the caller's // minimum. const ( - ProvenanceValid ProvenanceStatus = "valid" // ProvenanceValid means the scanner version meets the caller's minimum. - ProvenanceInvalid ProvenanceStatus = "invalid" // Version below caller's minimum - ProvenanceUnknown ProvenanceStatus = "unknown" // No version recorded (pre-v2 attestation) + // ProvenanceValid means the scanner version meets the caller's minimum. + ProvenanceValid ProvenanceStatus = "valid" + // ProvenanceInvalid means the recorded version is below the caller's minimum. + ProvenanceInvalid ProvenanceStatus = "invalid" + // ProvenanceUnknown means no scanner version was recorded. + ProvenanceUnknown ProvenanceStatus = "unknown" ) // ErrUnknownProvenance reports an attestation produced without version binding (pre-v2). @@ -454,6 +456,7 @@ func renderPreimage(rep *mechanics.Report, version string) string { line(&b, "escalated", strconv.FormatBool(rep.Escalated)) line(&b, "mechanics", strconv.FormatUint(uint64(rep.Mechanics), 10)) line(&b, "accountability", string(rep.Accountability)) + if rank >= 2 { checks := append([]string(nil), rep.CheckSet...) sort.Strings(checks) diff --git a/internal/attest/encoding_layout_test.go b/internal/attest/encoding_layout_test.go index ac3a9fc..4067573 100644 --- a/internal/attest/encoding_layout_test.go +++ b/internal/attest/encoding_layout_test.go @@ -13,11 +13,6 @@ import ( "github.com/use-assay/assay/internal/mechanics" ) -func firstLine(s string) string { - line, _, _ := strings.Cut(s, "\n") - return line -} - // The layout each tag names, as documented in docs/contract-interface.md: // the keys of the lines between the version line and the evidence lines. var documentedLayouts = map[string][]string{ diff --git a/internal/attest/golden_test.go b/internal/attest/golden_test.go index 9a373f7..acaedb5 100644 --- a/internal/attest/golden_test.go +++ b/internal/attest/golden_test.go @@ -134,8 +134,8 @@ func TestGoldenFilesHaveCanonicalLineEndings(t *testing.T) { if bytes.HasSuffix(raw, []byte("\n\n")) { t.Errorf("%s ends with a blank line: the canonical encoding terminates the last line exactly once", e) } - version := strings.SplitN(string(raw), "\n", 2)[0] if !hasAnyPreimageVersion(string(raw)) { + version := strings.SplitN(string(raw), "\n", 2)[0] t.Errorf("%s starts with unsupported version line %q", e, version) } } diff --git a/internal/attest/testdata/vectors/vectors.json b/internal/attest/testdata/vectors/vectors.json new file mode 100644 index 0000000..ecb200d --- /dev/null +++ b/internal/attest/testdata/vectors/vectors.json @@ -0,0 +1,17 @@ +{ + "aqua-mainnet-onchain": { + "expected_digest": "688453bd22e9b694b9c70659d37526bdae18944645542642008e9d961461a4a9", + "transaction": "1b6bafc1226570b2415299f5531256716f4d8dc489a9784fcd6ea347d0f63f5f", + "deployment_asset": "AQUA" + }, + "usdc-mainnet-onchain": { + "expected_digest": "e7fc765d396de672a85c1b7fe76f67b05a17ad0798167748b285df020ed790bd", + "transaction": "9869957e510ac6cb9ba4e5ffaff66ad0286e420e824efc0095d9e578be37564e", + "deployment_asset": "USDC" + }, + "usdz-mainnet-onchain": { + "expected_digest": "ca9b13a66f3a0a4b43d66dea29a505658447e08eee200d2bdb5e66aa1065fb4d", + "transaction": "069d519fa20c472bbc3756291307fb30719219903c1e62a27b4967c0b07ecfd6", + "deployment_asset": "USDZ" + } +} diff --git a/internal/attester/watch_test.go b/internal/attester/watch_test.go index e756b3c..f62c659 100755 --- a/internal/attester/watch_test.go +++ b/internal/attester/watch_test.go @@ -89,6 +89,8 @@ func newFixtureHorizon(t *testing.T) (*httptest.Server, *fakeHorizon) { case r.URL.Path == "/accounts/"+watchedIssuer: _ = json.NewEncoder(w).Encode(map[string]any{ "account_id": watchedIssuer, + // Horizon always publishes all four flags, and the decoder + // refuses a partial set (#530), so the fixture does too. "flags": map[string]bool{ "auth_required": true, "auth_revocable": false, diff --git a/internal/docindex/docindex_test.go b/internal/docindex/docindex_test.go new file mode 100644 index 0000000..b85e34b --- /dev/null +++ b/internal/docindex/docindex_test.go @@ -0,0 +1,165 @@ +// Package docindex holds the check that the README docs tables stay in sync +// with the files under docs/. A document that nobody can find from the front +// page does not exist for a reader, so CI fails when a doc is added without a +// README row or when a row links a file that is not there. +package docindex + +import ( + "fmt" + "os" + "path/filepath" + "regexp" + "sort" + "strings" + "testing" +) + +// linkRe matches markdown inline links: [text](target). +var linkRe = regexp.MustCompile(`\[[^\]]*\]\(([^)]+)\)`) + +// repoRoot walks up from the package directory until it finds a directory +// that contains both README.md and docs/. +func repoRoot(t *testing.T) string { + t.Helper() + dir, err := os.Getwd() + if err != nil { + t.Fatalf("getwd: %v", err) + } + for { + if _, err := os.Stat(filepath.Join(dir, "README.md")); err == nil { + if _, err := os.Stat(filepath.Join(dir, "docs")); err == nil { + return dir + } + } + parent := filepath.Dir(dir) + if parent == dir { + t.Fatal("could not find repo root (a directory containing README.md and docs/)") + } + dir = parent + } +} + +// readDocsMarkdown returns every .md file under docs/, slash-separated and +// relative to the repo root (e.g. "docs/i18n/es/glossary.md"). +func readDocsMarkdown(t *testing.T, root string) []string { + t.Helper() + var files []string + err := filepath.Walk(filepath.Join(root, "docs"), func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if info.IsDir() || !strings.HasSuffix(path, ".md") { + return nil + } + rel, err := filepath.Rel(root, path) + if err != nil { + return fmt.Errorf("rel %s to %s: %w", root, path, err) + } + files = append(files, filepath.ToSlash(rel)) + return nil + }) + if err != nil { + t.Fatalf("walk docs/: %v", err) + } + sort.Strings(files) + return files +} + +// readDocsLinks extracts every link target in README.md that points into +// docs/, normalized to a repo-root-relative path with any anchor and any +// trailing slash stripped. +func readDocsLinks(t *testing.T, root string) []string { + t.Helper() + data, err := os.ReadFile(filepath.Join(root, "README.md")) + if err != nil { + t.Fatalf("read README.md: %v", err) + } + var links []string + for _, m := range linkRe.FindAllStringSubmatch(string(data), -1) { + target := m[1] + if strings.HasPrefix(target, "http://") || strings.HasPrefix(target, "https://") { + continue + } + target = strings.TrimPrefix(target, "./") + if !strings.HasPrefix(target, "docs/") { + continue + } + if i := strings.IndexAny(target, "#?"); i >= 0 { + target = target[:i] + } + target = strings.TrimSuffix(target, "/") + links = append(links, target) + } + return links +} + +// TestREADMEDocsLinksResolve fails when a README link into docs/ points at +// nothing. +func TestREADMEDocsLinksResolve(t *testing.T) { + root := repoRoot(t) + for _, link := range readDocsLinks(t, root) { + if _, err := os.Stat(filepath.Join(root, link)); err != nil { + t.Errorf("README.md links %s, which does not exist", link) + } + } +} + +// TestEveryDocReachableFromREADME fails when a .md file under docs/ is not +// linked from README.md. A file inside a subdirectory may instead be linked +// from that subdirectory's README.md, provided README.md links the index. +// docs/i18n/ is handled that way: one row in the README points at the index, +// and the index links every translation. +func TestEveryDocReachableFromREADME(t *testing.T) { + root := repoRoot(t) + readme := readDocsLinks(t, root) + linked := make(map[string]bool, len(readme)) + for _, link := range readme { + linked[link] = true + } + + // readFile returns the content of a repo-root-relative path. + readFile := func(rel string) string { + data, err := os.ReadFile(filepath.Join(root, filepath.FromSlash(rel))) + if err != nil { + return "" + } + return string(data) + } + + var orphans []string + for _, doc := range readDocsMarkdown(t, root) { + if linked[doc] { + continue + } + // A subdirectory file counts as reachable when its nearest ancestor + // directory index links it and README.md links that index. + if coveredByIndex(doc, linked, readFile) { + continue + } + orphans = append(orphans, doc) + } + if len(orphans) > 0 { + t.Errorf("%d orphan document(s), linked from no README table:\n %s", + len(orphans), strings.Join(orphans, "\n ")) + } +} + +// coveredByIndex reports whether doc is linked from a docs//README.md +// index that README.md itself links. The child is matched by its path +// relative to the index directory (e.g. "es/glossary.md"). +func coveredByIndex(doc string, linked map[string]bool, readFile func(string) string) bool { + dir := filepath.ToSlash(filepath.Dir(doc)) + for dir != "docs" && dir != "." { + index := dir + "/README.md" + if linked[index] { + content := readFile(index) + // Children may be linked relative to the index ("es/glossary.md"). + if strings.Contains(content, "](./"+strings.TrimPrefix(doc, dir+"/")+")") || + strings.Contains(content, "]("+strings.TrimPrefix(doc, dir+"/")+")") { + return true + } + } + dir = filepath.ToSlash(filepath.Dir(dir)) + } + return false +} diff --git a/internal/horizon/client.go b/internal/horizon/client.go index f9d9378..0d465b5 100644 --- a/internal/horizon/client.go +++ b/internal/horizon/client.go @@ -27,6 +27,67 @@ var ErrNotFound = errors.New("horizon: not found") // Choosing one would be an arbitrary guess, so Assay refuses rather than guesses. var ErrMultipleRecords = errors.New("horizon: multiple records returned for asset") +// ErrUnknownNetwork reports a base URL whose network cannot be determined. +// +// It is an error rather than a fallback for the same reason an unread flag is +// the Unevaluated sentinel rather than Clear: guessing the network would put +// an unverified name into the evidence preimage, and two scans of the same +// code+issuer on different networks would then hash identically (#41). A +// caller pointing at a private or unknown Horizon must name its network +// explicitly instead. +var ErrUnknownNetwork = errors.New("horizon: network cannot be determined from the base URL") + +// Network is the Stellar network a report's facts were read from, named by +// the full network passphrase. +// +// The passphrase rather than a short name ("pubnet", "testnet") for the same +// reason the mechanic bitset uses the ledger's own flag names: the preimage +// commits to the ledger's vocabulary, and the passphrase is the one string +// the ecosystem already treats as network identity. The values are fixed by +// the protocol; they are not configuration and must not be edited. +type Network string + +const ( + // PublicNet is the pubnet mainnet, served by the SDF at + // https://horizon.stellar.org. + PublicNet Network = "Public Global Stellar Network ; September 2015" + // TestNet is the SDF testnet, served at https://horizon-testnet.stellar.org. + TestNet Network = "Test SDF Network ; September 2015" +) + +// NetworkFor names the network a Horizon base URL serves. +// +// Only the SDF-operated hosts are recognized. Any other host — a mirror, a +// local stub, a future third-party instance — returns ErrUnknownNetwork: +// deriving a network name from an unrecognized URL would be a guess, and a +// network name enters the evidence hash. Callers on such a host declare their +// network explicitly (see scan.Scanner.Network) instead of letting the +// derivation invent one. +func NetworkFor(baseURL string) (Network, error) { + if baseURL == "" { + return "", fmt.Errorf("%w: no base URL", ErrUnknownNetwork) + } + u, err := url.Parse(baseURL) + if err != nil { + return "", fmt.Errorf("%w: %q: %w", ErrUnknownNetwork, baseURL, err) + } + switch u.Hostname() { + case "horizon.stellar.org": + return PublicNet, nil + case "horizon-testnet.stellar.org": + return TestNet, nil + default: + return "", fmt.Errorf("%w: %q is not a known Horizon host; declare the network explicitly", ErrUnknownNetwork, u.Hostname()) + } +} + +// Network names the ledger this client reads. The client knows its own base +// URL, so it is the one component positioned to answer; see NetworkFor for +// why an unknown host is an error rather than a default. +func (c *Client) Network() (Network, error) { + return NetworkFor(c.BaseURL) +} + // Version is the tool version that every outbound client reports in its // User-Agent. Bump it alongside any scanner-version release; the API // documents the value in release notes. @@ -324,4 +385,4 @@ func (c *Client) get(ctx context.Context, path string, out any) error { return fmt.Errorf("horizon: decode %s: %w", path, err) } return nil -} +} \ No newline at end of file diff --git a/internal/horizon/network.go b/internal/horizon/network.go deleted file mode 100644 index 9d77e81..0000000 --- a/internal/horizon/network.go +++ /dev/null @@ -1,44 +0,0 @@ -package horizon - -import ( - "errors" - "fmt" - "net/url" - "strings" -) - -// Network identifies a Stellar network by its protocol passphrase. -type Network string - -const ( - // PublicNet is the SDF pubnet network passphrase. - PublicNet Network = "Public Global Stellar Network ; September 2015" - // TestNet is the SDF testnet network passphrase. - TestNet Network = "Test SDF Network ; September 2015" -) - -// ErrUnknownNetwork reports that the Horizon URL does not identify a known -// Stellar network. -var ErrUnknownNetwork = errors.New("horizon: unknown network") - -// NetworkFor identifies the network only for the canonical Horizon hosts. -func NetworkFor(rawURL string) (Network, error) { - u, err := url.Parse(rawURL) - if err != nil || u.Hostname() == "" { - return "", fmt.Errorf("%w: %q", ErrUnknownNetwork, rawURL) - } - - switch strings.ToLower(u.Hostname()) { - case "horizon.stellar.org": - return PublicNet, nil - case "horizon-testnet.stellar.org": - return TestNet, nil - default: - return "", fmt.Errorf("%w: %q", ErrUnknownNetwork, rawURL) - } -} - -// Network reports the network for this client's Horizon endpoint. -func (c *Client) Network() (Network, error) { - return NetworkFor(c.BaseURL) -} diff --git a/internal/mechanics/abi_drift_test.go b/internal/mechanics/abi_drift_test.go index 13d05b7..7e83a05 100644 --- a/internal/mechanics/abi_drift_test.go +++ b/internal/mechanics/abi_drift_test.go @@ -259,8 +259,8 @@ func TestABIDriftInterfaceVersion(t *testing.T) { if !ok { t.Fatal("rust INTERFACE_VERSION missing") } - if got != 2 { - t.Errorf("INTERFACE_VERSION drift: got %d, want 2", got) + if got != 3 { + t.Errorf("INTERFACE_VERSION drift: got %d, want 3", got) } } @@ -302,6 +302,7 @@ func TestABIDriftSafetyStructShape(t *testing.T) { {"flags", "u32"}, {"evidence_hash", "BytesN<32>"}, {"attested_at", "u64"}, + {"preimage_version", "u32"}, } if len(gotFields) != len(wantFields) { diff --git a/internal/mechanics/check_domain.go b/internal/mechanics/check_domain.go index 0768096..a7b6317 100644 --- a/internal/mechanics/check_domain.go +++ b/internal/mechanics/check_domain.go @@ -51,6 +51,8 @@ func (c DomainCheck) Run(_ context.Context, s *Subject) (Finding, error) { domain := s.HomeDomain() if domain == "" { + reason := AccountabilityReasonNoHomeDomain + f.AccountabilityReason = &reason f.Mechanics = MechDomainUnverified f.Reasoning = "The issuer account advertises no home_domain, so there is no " + "published identity to verify against. Nobody has publicly claimed this " + @@ -67,6 +69,8 @@ func (c DomainCheck) Run(_ context.Context, s *Subject) (Finding, error) { f.Mechanics = MechDomainUnverified acc = AccountabilityUnverified f.Accountability = &acc + reason := AccountabilityReasonMismatch + f.AccountabilityReason = &reason f.Reasoning = fmt.Sprintf( "The issuer advertises home_domain %q, but the curated directory lists the "+ "same issuer under %q. The two sources disagree about who claims this "+ @@ -91,6 +95,8 @@ func (c DomainCheck) Run(_ context.Context, s *Subject) (Finding, error) { if s.Toml == nil { acc = AccountabilityUnverified f.Mechanics = MechDomainUnverified + reason := AccountabilityReasonFetchFailed + f.AccountabilityReason = &reason if s.TomlRefused { // A host-policy refusal is a decision Assay made, not a source that // failed. It is reported as attributed evidence, the same way a @@ -136,9 +142,6 @@ func (c DomainCheck) Run(_ context.Context, s *Subject) (Finding, error) { } if !s.Toml.Claims(s.Asset.Code, s.Asset.Issuer) { - if s.TomlLinked != nil { - return c.resolveLinked(f, s, domain, s.TomlLinked), nil - } acc = AccountabilityUnverified f.Mechanics = MechDomainUnverified if s.TomlLinked != nil { @@ -173,6 +176,8 @@ func (c DomainCheck) Run(_ context.Context, s *Subject) (Finding, error) { // Overstating a negative is the same class of error as overstating a // positive. if linked := s.Toml.LinkedCurrencies(s.Asset.Code, s.Asset.Issuer); linked > 0 { + reason := AccountabilityReasonNotClaimed + f.AccountabilityReason = &reason f.Reasoning = fmt.Sprintf( "The issuer advertises home_domain %q and that domain publishes a "+ "stellar.toml, but this asset (%s) is not declared inline in its "+ @@ -200,6 +205,8 @@ func (c DomainCheck) Run(_ context.Context, s *Subject) (Finding, error) { acc = AccountabilityUnverified f.Mechanics = MechDomainUnverified + reason := AccountabilityReasonNotClaimed + f.AccountabilityReason = &reason f.Reasoning = fmt.Sprintf( "The issuer advertises home_domain %q and that domain publishes a "+ "stellar.toml, but the toml does not list this asset (%s) in its "+ @@ -384,6 +391,8 @@ func (DomainCheck) resolveLinked(f Finding, s *Subject, domain string, res *sep1 acc := AccountabilityUnverified f.Accountability = &acc f.Mechanics = MechDomainUnverified + reason := AccountabilityReasonNotClaimed + f.AccountabilityReason = &reason // The bound was reached before every link could be read. The documents // past the bound may have claimed the asset, so this is unresolved, not a diff --git a/internal/mechanics/check_domain_test.go b/internal/mechanics/check_domain_test.go index f73aea3..84fe632 100644 --- a/internal/mechanics/check_domain_test.go +++ b/internal/mechanics/check_domain_test.go @@ -504,3 +504,127 @@ func findNetworkEvidence(t *testing.T, f mechanics.Finding) mechanics.Evidence { t.Fatalf("no NETWORK_PASSPHRASE evidence, got %d entries: %+v", len(f.Evidence), f.Evidence) return mechanics.Evidence{} } + +// TestDomainCheckFetchFailedIsFetchFailed pins that a stellar.toml that could +// not be read (HTTP 404 here; DNS failure and host-policy refusal take the +// same path) reports accountability unverified with reason fetch_failed, so a +// consumer switching on JSON can tell a broken web server from a refused claim. +func TestDomainCheckFetchFailedIsFetchFailed(t *testing.T) { + s := &mechanics.Subject{ + Asset: mechanics.Asset{Code: "USDC", Issuer: domainIssuer}, + Issuer: &horizon.Account{AccountID: domainIssuer, HomeDomain: "circle.com"}, + Toml: nil, + TomlURL: sep1.URLFor("circle.com"), + TomlAttemptedAt: time.Date(2026, 9, 25, 0, 0, 0, 0, time.UTC), + TomlErr: "status 404", + Directory: nil, + ScannedAt: time.Date(2026, 9, 25, 0, 0, 0, 0, time.UTC), + } + f := runDomain(t, s) + + if f.Accountability == nil || *f.Accountability != mechanics.AccountabilityUnverified { + t.Fatalf("accountability = %v, want unverified", f.Accountability) + } + if f.AccountabilityReason == nil || *f.AccountabilityReason != mechanics.AccountabilityReasonFetchFailed { + t.Fatalf("accountability_reason = %v, want fetch_failed", f.AccountabilityReason) + } + if f.Mechanics&mechanics.MechDomainUnverified == 0 { + t.Error("the unverified bit must be set") + } + // Negative: a fetch failure is not a "not claimed" verdict. + if strings.Contains(f.Reasoning, "has not claimed this asset") { + t.Error("fetch failure reported the flat negative 'has not claimed this asset'") + } + if !strings.Contains(f.Reasoning, "could not be read") { + t.Error("fetch failure reasoning must say the toml could not be read") + } +} + +// TestDomainCheckNotClaimedIsNotClaimed pins that a stellar.toml that resolved +// but does not list this asset reports accountability unverified with reason +// not_claimed — distinguishable from a fetch failure from JSON alone. +func TestDomainCheckNotClaimedIsNotClaimed(t *testing.T) { + toml := "[[CURRENCIES]]\ncode = \"EURC\"\nissuer = \"" + otherIssuer + "\"\n" + f := runDomain(t, domainSubject(t, toml)) + + if f.Accountability == nil || *f.Accountability != mechanics.AccountabilityUnverified { + t.Fatalf("accountability = %v, want unverified", f.Accountability) + } + if f.AccountabilityReason == nil || *f.AccountabilityReason != mechanics.AccountabilityReasonNotClaimed { + t.Fatalf("accountability_reason = %v, want not_claimed", f.AccountabilityReason) + } + // Negative: a fetched-but-not-claimed toml is not a fetch failure. + if strings.Contains(f.Reasoning, "could not be read") { + t.Error("not-claimed reasoning described the toml as unreadable") + } + if !strings.Contains(f.Reasoning, "has not claimed this asset") { + t.Error("not-claimed reasoning must state the domain did not claim the asset") + } +} + +// TestDomainCheckMismatchIsMismatch pins that a home_domain that disagrees +// with the curated directory's domain reports accountability unverified with +// reason mismatch. +func TestDomainCheckMismatchIsMismatch(t *testing.T) { + toml := "[[CURRENCIES]]\ncode = \"USDC\"\nissuer = \"" + domainIssuer + "\"\n" + s := domainSubject(t, toml) + s.Directory = &stellarexpert.DirectoryEntry{ + Address: otherIssuer, + Name: "Someone Else", + Domain: "other.example", + } + + f := runDomain(t, s) + + if f.Accountability == nil || *f.Accountability != mechanics.AccountabilityUnverified { + t.Fatalf("accountability = %v, want unverified", f.Accountability) + } + if f.AccountabilityReason == nil || *f.AccountabilityReason != mechanics.AccountabilityReasonMismatch { + t.Fatalf("accountability_reason = %v, want mismatch", f.AccountabilityReason) + } + if !strings.Contains(f.Reasoning, "disagree") { + t.Error("mismatch reasoning must state the two sources disagree") + } +} + +// TestDomainCheckNoHomeDomainIsUnknownNoHomeDomain pins that an issuer with no +// home_domain reports accountability unknown with reason no_home_domain, and +// never unverified: there was no claim to fail. +func TestDomainCheckNoHomeDomainIsUnknownNoHomeDomain(t *testing.T) { + s := &mechanics.Subject{ + Asset: mechanics.Asset{Code: "USDC", Issuer: domainIssuer}, + Issuer: &horizon.Account{AccountID: domainIssuer}, // no home_domain + Toml: nil, + ScannedAt: time.Date(2026, 9, 25, 0, 0, 0, 0, time.UTC), + } + f := runDomain(t, s) + + if f.Accountability == nil || *f.Accountability != mechanics.AccountabilityUnknown { + t.Fatalf("accountability = %v, want unknown", f.Accountability) + } + if f.AccountabilityReason == nil || *f.AccountabilityReason != mechanics.AccountabilityReasonNoHomeDomain { + t.Fatalf("accountability_reason = %v, want no_home_domain", f.AccountabilityReason) + } + // Negative: no claim is not a failed claim. + if strings.Contains(f.Reasoning, "could not be read") { + t.Error("no-home_domain reasoning described the toml as unreadable") + } + if strings.Contains(f.Reasoning, "has not claimed this asset") { + t.Error("no-home_domain reasoning reported the flat negative 'has not claimed this asset'") + } +} + +// TestDomainCheckVerifiedHasNoReason pins that a reciprocal claim reports +// accountability verified with no sub-reason: a verified claim needs no +// further classification. +func TestDomainCheckVerifiedHasNoReason(t *testing.T) { + toml := "[[CURRENCIES]]\ncode = \"USDC\"\nissuer = \"" + domainIssuer + "\"\n" + f := runDomain(t, domainSubject(t, toml)) + + if f.Accountability == nil || *f.Accountability != mechanics.AccountabilityVerified { + t.Fatalf("accountability = %v, want verified", f.Accountability) + } + if f.AccountabilityReason != nil { + t.Errorf("accountability_reason = %v, want nil for a verified claim", f.AccountabilityReason) + } +} diff --git a/internal/mechanics/check_reputation.go b/internal/mechanics/check_reputation.go index ea626a4..0e83de5 100644 --- a/internal/mechanics/check_reputation.go +++ b/internal/mechanics/check_reputation.go @@ -7,21 +7,77 @@ import ( "strings" ) -// AdverseDirectoryTags are the StellarExpert tags that escalate severity. +// AdverseDirectoryTags is the set of StellarExpert directory tags that +// escalate severity to critical. A listing carrying any of them is an +// affirmative adverse determination about the issuer, so it raises the level. +// +// It is a named, explicit set rather than an inline literal so the vocabulary +// is a reviewed artifact. A tag outside this set is never silently ignored: +// run records unrecognised tags as attributed evidence, which is what turns a +// newly introduced adverse tag into something visible rather than a false +// negative that never announces itself. +// +// Source and capture date. The vocabulary is StellarExpert's own published +// list, read on 2026-09-27 from both: +// - GET https://api.stellar.expert/explorer/directory/tags (the API's "All +// Directory tags" response), and +// - github.com/stellar-expert/public-directory, "Standard account tags". +// +// Of those tags only two have a description asserting abuse or danger — +// "malicious" ("Account involved in theft/scam/spam/phishing") and "unsafe" +// ("Obsolete or potentially dangerous account"). Every other tag classifies +// what the account is (exchange, anchor, issuer, wallet, custodian, personal, +// sdf, memo-required, airdrop, obsolete-inflation-pool) without asserting it is +// malicious, so those stay non-escalating. See docs/checks.md. var AdverseDirectoryTags = []string{"malicious", "unsafe"} +// descriptiveDirectoryTags is the remainder of StellarExpert's published +// directory vocabulary: tags that describe what an account is without +// asserting it is dangerous. They are listed explicitly so an unrecognised tag +// can be told apart from a known-descriptive one: a known-descriptive tag is +// expected and needs no report, while an unrecognised tag is surfaced as +// evidence. Same source and capture date as AdverseDirectoryTags. +// +// "obsolete-inflation-pool" appears in the maintainers' repository list; the +// API response sample omits it, so it is kept here as part of the vocabulary. var descriptiveDirectoryTags = []string{ - "issuer", "anchor", "exchange", "wallet", "custodian", - "personal", "sdf", "memo-required", "airdrop", "obsolete-inflation-pool", + "exchange", + "anchor", + "issuer", + "wallet", + "custodian", + "personal", + "sdf", + "memo-required", + "airdrop", + "obsolete-inflation-pool", } -const directoryTagUnknown = 0 +// directoryTagKind is how a directory tag bears on severity. +type directoryTagKind int -func classifyDirectoryTag(tag string) int { - if slices.Contains(AdverseDirectoryTags, tag) || slices.Contains(descriptiveDirectoryTags, tag) { - return 1 +const ( + // directoryTagDescriptive classifies an account without asserting abuse. + directoryTagDescriptive directoryTagKind = iota + // directoryTagAdverse asserts the account is involved in abuse or is + // dangerous, so a listing carrying it escalates. + directoryTagAdverse + // directoryTagUnknown is outside the documented vocabulary. It never + // escalates and is recorded as evidence, so the vocabulary can be updated + // deliberately instead of the tag being dropped silently. + directoryTagUnknown +) + +// classifyDirectoryTag maps a tag to its kind using the documented vocabulary. +func classifyDirectoryTag(tag string) directoryTagKind { + switch { + case slices.Contains(AdverseDirectoryTags, tag): + return directoryTagAdverse + case slices.Contains(descriptiveDirectoryTags, tag): + return directoryTagDescriptive + default: + return directoryTagUnknown } - return directoryTagUnknown } // ReputationCheck folds in StellarExpert's curated reputation data and any @@ -68,6 +124,9 @@ func (c ReputationCheck) Run(_ context.Context, s *Subject) (Finding, error) { // separate from "answered, not listed" because collapsing the two is // exactly how a scanner reports an outage as a clean bill of health. var unreachable []string + // unasked names sources that were skipped because the question could not + // be put at all — currently the blocklist, when there is no home_domain to + // key it on. A skipped source leaves the same gap as an unreachable one. var unasked []string // unrecognised names directory tags outside Assay's documented vocabulary. // They never escalate, but they are recorded so the vocabulary can be @@ -107,6 +166,33 @@ func (c ReputationCheck) Run(_ context.Context, s *Subject) (Finding, error) { }) } + if s.ExpertAssetErr != "" { + unreachable = append(unreachable, "the asset metadata") + f.Evidence = append(f.Evidence, Evidence{ + Source: "StellarExpert", + URL: s.ExpertAssetURL, + Claim: "not retrievable: " + s.ExpertAssetErr, + // The source never answered, so this is the attempt time — marked + // as such, because an attempt is not an answer. + RetrievedAt: NewCanonicalTime(s.ExpertAssetAttemptedAt), + Attempted: true, + }) + } + + if s.ExpertAsset != nil { + rating := s.ExpertAsset.Rating + counts := s.ExpertAsset.Trustlines + f.Evidence = append(f.Evidence, Evidence{ + Source: "StellarExpert", + URL: s.ExpertAssetURL, + Claim: fmt.Sprintf("asset metadata: supply=%s, trustlines(total=%d, authorized=%d, funded=%d), rating(age=%d, activity=%d, trustlines=%d, liquidity=%d, volume7d=%d, interop=%d, average=%d)", + s.ExpertAsset.Supply, counts.Total, counts.Authorized, counts.Funded, + rating.Age, rating.Activity, rating.Trustlines, rating.Liquidity, + rating.Volume7d, rating.Interop, rating.Average), + RetrievedAt: NewCanonicalTime(s.ExpertAssetFetchedAt), + }) + } + if s.Directory != nil { tags := strings.Join(s.Directory.Tags, ", ") f.Evidence = append(f.Evidence, Evidence{ @@ -233,10 +319,23 @@ func (c ReputationCheck) Run(_ context.Context, s *Subject) (Finding, error) { f.Reasoning = "Escalated to critical because " + joinPowers(flagged) + ". This is StellarExpert's determination, reported here as their claim " + "and not re-derived by Assay. It raises the level regardless of what the " + - "issuer's flags allow." + listNote - if s.HomeDomain() != "" && !s.DomainVerified() { - f.Reasoning += fmt.Sprintf(" The issuer's home_domain %q is not verified by a reciprocal stellar.toml claim.", s.HomeDomain()) + "issuer's flags allow." + // A blocklist hit is keyed on a domain, and the only domain Assay has is + // the issuer's self-asserted home_domain. When that domain has not + // reciprocally claimed this asset, the link between the domain and the + // asset is asserted by the issuer alone. The escalation still stands — + // a curated listing is positive evidence, and suppressing it would + // under-report — but the report says the link is unverified rather than + // presenting it as confirmed. + if blocklistHit && !s.DomainVerified() { + f.Reasoning += fmt.Sprintf(" The blocklist hit is on %q, the issuer's "+ + "advertised home_domain. That domain does not reciprocally claim this "+ + "asset — its stellar.toml is missing or does not list this code and "+ + "issuer — so the association is asserted by the issuer alone and is "+ + "not verified. The escalation is reported with that caveat rather "+ + "than as a confirmed link.", s.Blocked.Domain) } + f.Reasoning += listNote return f, nil } @@ -253,17 +352,19 @@ func (c ReputationCheck) Run(_ context.Context, s *Subject) (Finding, error) { f.Undetermined = true var gaps []string if len(unreachable) > 0 { - gaps = append(gaps, joinPowers(unreachable)+" did not answer") + gaps = append(gaps, joinPowers(unreachable)+ + " did not answer, and the failure is recorded above verbatim") } if len(unasked) > 0 { - gaps = append(gaps, joinPowers(unasked)+" could not be checked") + gaps = append(gaps, joinPowers(unasked)+ + " could not be checked, because there was no domain to key the lookup on") } - f.Reasoning = "Reputation could not be determined: " + joinPowers(gaps) + - ". The failure is recorded above verbatim where a request was made. This is " + - "not a clean result. Absence of a malicious listing is only meaningful " + - "when the list was actually read, and an asset whose only adverse signal " + - "is a curated listing would look clear here. Treat the severity below as " + - "a floor rather than an answer." + listNote + f.Reasoning = "Reputation could not be determined: " + strings.Join(gaps, "; ") + + ". This is not a clean result. Absence of a malicious listing is only " + + "meaningful when the list was actually read, and an asset whose only " + + "adverse signal is a curated listing or a blocklisted domain would " + + "look clear here. Treat the severity below as a floor rather than an " + + "answer." + listNote return f, nil } diff --git a/internal/mechanics/degraded_test.go b/internal/mechanics/degraded_test.go index 0645b6f..fb01bd3 100644 --- a/internal/mechanics/degraded_test.go +++ b/internal/mechanics/degraded_test.go @@ -126,6 +126,10 @@ func TestEitherSourceFailingIsEnough(t *testing.T) { s.BlockedURL = "https://api.stellar.expert/explorer/directory/blocked-domains/example.test" s.BlockedErr = "context deadline exceeded" }}, + {"asset", func(s *mechanics.Subject) { + s.ExpertAssetURL = "https://api.stellar.expert/explorer/public/asset/DOGE-" + testIssuer + s.ExpertAssetErr = "context deadline exceeded" + }}, } { t.Run(tc.name, func(t *testing.T) { if !run(t, subject(tc.mut)).Undetermined { @@ -135,6 +139,24 @@ func TestEitherSourceFailingIsEnough(t *testing.T) { } } +func TestUnreachableAssetIsRecordedAsStellarExpertEvidence(t *testing.T) { + const url = "https://api.stellar.expert/explorer/public/asset/DOGE-" + testIssuer + rep := run(t, subject(func(s *mechanics.Subject) { + s.ExpertAssetURL = url + s.ExpertAssetErr = "status 503" + })) + + for _, evidence := range rep.Evidence { + if evidence.Source == "StellarExpert" && evidence.URL == url { + if !strings.Contains(evidence.Claim, "not retrievable") || !strings.Contains(evidence.Claim, "503") { + t.Fatalf("asset failure evidence = %q", evidence.Claim) + } + return + } + } + t.Fatalf("no attributed evidence for unreachable asset endpoint: %+v", rep.Evidence) +} + // Severity must not be inflated to cover the gap. Inventing a level Assay did // not measure would be the same class of dishonesty as the bug being fixed, // pointed the other way. diff --git a/internal/mechanics/eval_test.go b/internal/mechanics/eval_test.go index 7a0596d..5ce5ae6 100644 --- a/internal/mechanics/eval_test.go +++ b/internal/mechanics/eval_test.go @@ -12,6 +12,7 @@ import ( "github.com/use-assay/assay/internal/attest" "github.com/use-assay/assay/internal/eval" "github.com/use-assay/assay/internal/mechanics" + "github.com/use-assay/assay/internal/stellarexpert" ) // loadSubject rebuilds a Subject from captured fixtures, using the same @@ -201,6 +202,39 @@ func TestAccountabilityNeverChangesSeverity(t *testing.T) { } } +func TestAssetSignalsAreAttributedAndDoNotChangeSeverity(t *testing.T) { + s := loadSubject(t, "usdc-revocable-regulated") + s.ExpertAsset = &stellarexpert.Asset{ + Supply: "3675875656477148", + Trustlines: stellarexpert.TrustlineCounts{Total: 2431888, Authorized: 2431888, Funded: 703330}, + Rating: stellarexpert.AssetRating{Age: 10, Activity: 10, Trustlines: 10, Liquidity: 10, Volume7d: 10, Interop: 4, Average: 9}, + } + s.ExpertAssetURL = "https://api.stellar.expert/explorer/public/asset/USDC-" + s.Asset.Issuer + + rep, err := mechanics.NewEngine().Run(context.Background(), s) + if err != nil { + t.Fatal(err) + } + if rep.Base != mechanics.Medium || rep.Severity != mechanics.Medium { + t.Fatalf("asset metadata changed severity: base=%v severity=%v", rep.Base, rep.Severity) + } + var found bool + for _, evidence := range rep.Evidence { + if evidence.URL == s.ExpertAssetURL { + found = true + if evidence.Source != "StellarExpert" { + t.Errorf("asset evidence source = %q, want StellarExpert", evidence.Source) + } + if !strings.Contains(evidence.Claim, "average=9") || !strings.Contains(evidence.Claim, "supply=3675875656477148") { + t.Errorf("asset evidence omitted raw metadata: %q", evidence.Claim) + } + } + } + if !found { + t.Fatal("asset metadata was not surfaced as evidence") + } +} + // TestNoHomeDomainIsUnknownNotUnverified is the distinction issue #3 asks for, // asserted against a real capture rather than a stripped copy: VELO's issuer // account carries no home_domain at all (Horizon omits the field entirely), so diff --git a/internal/mechanics/mechanics.go b/internal/mechanics/mechanics.go index 7259241..cc932a9 100644 --- a/internal/mechanics/mechanics.go +++ b/internal/mechanics/mechanics.go @@ -47,7 +47,7 @@ func (c CanonicalTime) Time() time.Time { return time.Time(c) } // Equal reports whether c and t represent the same instant. func (c CanonicalTime) Equal(t time.Time) bool { return c.Time().Equal(t) } -// Format returns the formatted representation of the underlying instant. +// Format renders the underlying time with the requested layout. func (c CanonicalTime) Format(layout string) string { return c.Time().Format(layout) } // IsZero reports whether the instant is the zero time, mirroring @@ -93,12 +93,27 @@ func (a Asset) String() string { return a.Code + "-" + a.Issuer } // outside claim by constructing an Evidence with its source and URL, there is // no code path that renders someone else's data as an Assay conclusion. type Evidence struct { - Source string `json:"source"` - URL string `json:"url"` + Source string `json:"source"` + // URL is the location the claim is attributed to. It keeps its original + // per-path meaning so that no attestation already on chain moves: on a + // successful fetch it is the FINAL location, after redirects; on a failed + // fetch it is the REQUESTED location, because no final document existed. + // RequestedURL carries the other half. + URL string `json:"url"` + // RequestedURL is the SEP-1 well-known location derived from home_domain — + // the URL Assay asked for. It is recorded alongside URL so an auditor can + // see whether a claim came from the requested host or from somewhere a + // redirect moved it to, which URL alone cannot express. On a failed fetch + // it equals URL (the request never produced a final location). + // + // It is deliberately OUTSIDE the evidence_hash preimage, which renders only + // Source/URL/Claim: adding it must not change the hash of a report whose + // claim did not change, or every existing attestation would stop + // reproducing. A future encoding may bind it; that would be a version bump. RequestedURL string `json:"requested_url,omitempty"` Claim string `json:"claim"` - // RetrievedAt is when this specific fact was observed from the source - // (or when the attempt was made, if the fetch failed). + // RetrievedAt is when this specific fact was observed from the source (or + // when the attempt was made, if the fetch failed). // // Clock source: scanner host wall clock (time.Now().UTC()). // Precision: nanoseconds in memory (time.Time); on the wire it marshals @@ -164,7 +179,12 @@ type Finding struct { MechanicNames []string `json:"mechanics"` // Accountability is set only by the check that establishes it. Accountability *Accountability `json:"accountability,omitempty"` - Evidence []Evidence `json:"evidence"` + // AccountabilityReason classifies why the accountability verdict was + // reached, so consumers can distinguish "could not fetch" from "fetched + // but not claimed" from JSON alone. Absent when the check did not + // classify the verdict (for example a verified claim). + AccountabilityReason *AccountabilityReason `json:"accountability_reason,omitempty"` + Evidence []Evidence `json:"evidence"` } // Subject is the pre-fetched state a check reasons over. Checks must not reach @@ -235,6 +255,23 @@ type Subject struct { // that ran it and found nothing. BlockedSkipped string + // ExpertAsset is StellarExpert's asset-level metadata (supply, trustline + // counters and the published rating) when it could be retrieved. + // ExpertAssetErr records why it could not, and ExpertAssetURL attributes + // either statement to the exact endpoint that made it. It is best-effort: + // an outage leaves ExpertAsset nil with a non-empty Err, the reputation + // check reports the gap as undetermined, and the scan itself still + // succeeds. The values are descriptive source data, never an Assay score, + // so they are evidence only and are not consulted by the severity rules. + // + // FetchedAt is when the endpoint answered; AttemptedAt is when it was + // asked, for failure evidence, which has no completion time to carry. + ExpertAsset *stellarexpert.Asset + ExpertAssetURL string + ExpertAssetErr string + ExpertAssetFetchedAt time.Time + ExpertAssetAttemptedAt time.Time + // AssetLists are the SEP-0042 curated lists consulted for this asset, one // entry per configured list, in configuration order. Empty when no list is // configured — which is the default, because shipping a default list would @@ -398,6 +435,10 @@ type Report struct { // Accountability is reported alongside severity, never folded into it. Accountability Accountability `json:"accountability"` + // AccountabilityReason classifies why the accountability verdict was + // reached. It is report metadata, not part of the hashed evidence + // preimage; see docs/contract-interface.md for the encoding decision. + AccountabilityReason *AccountabilityReason `json:"accountability_reason,omitempty"` // State is the overall verdict state of the report: // - "valid": a fresh, complete verdict. @@ -470,16 +511,26 @@ type Report struct { // carry the fact that it was produced under identity binding. ScannerBound bool `json:"scanner_bound,omitempty"` - Mechanics Mechanic `json:"-"` - MechanicNames []string `json:"mechanics"` - Findings []Finding `json:"findings"` - Evidence []Evidence `json:"evidence"` - ScannedAt CanonicalTime `json:"scanned_at"` + Mechanics Mechanic `json:"-"` + MechanicNames []string `json:"mechanics"` + Findings []Finding `json:"findings"` + Evidence []Evidence `json:"evidence"` // ObservationWindowStart is the start of the observation window for this report. ObservationWindowStart time.Time `json:"observation_window_start,omitempty"` // ObservationWindowEnd is the end of the observation window for this report. ObservationWindowEnd time.Time `json:"observation_window_end,omitempty"` + // ScannedAt is when the scan run started (the Subject.ScannedAt timestamp). + // It is the report-level timestamp. + // + // Clock source: scanner host wall clock (time.Now().UTC()). + // Precision: nanoseconds in memory (time.Time), formatted as RFC 3339 in JSON. + // + // Because individual sources are fetched sequentially over an outer context + // timeout of up to 30 seconds, ScannedAt is an approximation across the + // sequential fetch window; individual Evidence items carry their own + // RetrievedAt completion times. See docs/timestamps.md. + ScannedAt CanonicalTime `json:"scanned_at"` } // Engine runs a set of checks over a Subject. @@ -542,14 +593,14 @@ func (e *Engine) Run(ctx context.Context, s *Subject) (*Report, error) { rep := &Report{ SchemaVersion: ReportSchemaVersion, Asset: s.Asset, - Network: s.Network, Accountability: AccountabilityUnknown, - ScannedAt: NewCanonicalTime(scannedAt), + ScannedAt: CanonicalTime(scannedAt), + Network: s.Network, CheckSet: e.CheckIDs(), Findings: []Finding{}, Evidence: []Evidence{}, UndeterminedChecks: []string{}, - UndeterminedBySource: map[string]int{}, + UndeterminedBySource: make(map[string]int), } totalChecks := len(e.Checks) @@ -587,6 +638,9 @@ func (e *Engine) Run(ctx context.Context, s *Subject) (*Report, error) { if f.Accountability != nil { rep.Accountability = *f.Accountability } + if f.AccountabilityReason != nil { + rep.AccountabilityReason = f.AccountabilityReason + } // The escalation invariant, enforced here rather than left as // convention: a finding marked Escalation may raise the level and set // non-capability bits (blocklisted), but must never set a capability diff --git a/internal/mechanics/severity.go b/internal/mechanics/severity.go index df2232f..3c4405d 100644 --- a/internal/mechanics/severity.go +++ b/internal/mechanics/severity.go @@ -240,3 +240,36 @@ const ( // stellar.toml that names this exact code and issuer. AccountabilityVerified Accountability = "verified" ) + +// AccountabilityReason classifies why an accountability verdict was reached, so +// a consumer can tell "the stellar.toml could not be fetched" from "the +// stellar.toml was fetched and does not claim this asset" from JSON alone, +// without reading the reasoning text. +// +// It is report metadata, not part of the hashed evidence preimage: the +// evidence claim text already carries the distinction (for example +// "not retrievable: status 404" versus "CURRENCIES lists ... none matching"), +// and adding it to the preimage would re-hash every existing attestation +// without new evidentiary content. See docs/contract-interface.md. +// +// NoHomeDomain pairs with AccountabilityUnknown; the other three pair with +// AccountabilityUnverified. AccountabilityVerified carries no reason: a +// reciprocal claim needs no further classification. +type AccountabilityReason string + +const ( + // AccountabilityReasonFetchFailed means the issuer advertises a home_domain + // but its stellar.toml could not be read — HTTP failure, DNS failure, or a + // host-policy refusal — so no reciprocal claim could be tested. + AccountabilityReasonFetchFailed AccountabilityReason = "fetch_failed" + // AccountabilityReasonNotClaimed means the stellar.toml resolved but does + // not list this code and issuer, so the domain has not claimed this asset. + AccountabilityReasonNotClaimed AccountabilityReason = "not_claimed" + // AccountabilityReasonMismatch means the advertised home_domain and the + // curated directory's domain disagree about who claims the asset. + AccountabilityReasonMismatch AccountabilityReason = "mismatch" + // AccountabilityReasonNoHomeDomain means the issuer advertises no + // home_domain at all, so there was no claim to verify — accountability is + // unknown, not unverified. + AccountabilityReasonNoHomeDomain AccountabilityReason = "no_home_domain" +) diff --git a/internal/mechanics/stale_test.go b/internal/mechanics/stale_test.go index 4e5dd7a..fb38dfd 100644 --- a/internal/mechanics/stale_test.go +++ b/internal/mechanics/stale_test.go @@ -10,7 +10,6 @@ import ( "github.com/use-assay/assay/internal/attest" "github.com/use-assay/assay/internal/horizon" "github.com/use-assay/assay/internal/mechanics" - "github.com/use-assay/assay/internal/stellarexpert" ) // These tests cover issue #57: Represent stale state distinctly from unknown and clear. @@ -239,8 +238,7 @@ func TestStaleEngineRunSetsInitialValidState(t *testing.T) { s := &mechanics.Subject{ Asset: mechanics.Asset{Code: "TEST", Issuer: testIssuer}, Stat: &horizon.AssetStat{AssetCode: "TEST", AssetIssuer: testIssuer}, - Issuer: &horizon.Account{AccountID: testIssuer, HomeDomain: "issuer.example"}, - Blocked: &stellarexpert.BlockedDomain{Domain: "issuer.example", Blocked: false}, + Issuer: &horizon.Account{AccountID: testIssuer, HomeDomain: "test.example"}, StatFetchedAt: time.Date(2026, 9, 25, 0, 0, 0, 0, time.UTC), IssuerFetchedAt: time.Date(2026, 9, 25, 0, 0, 0, 0, time.UTC), ScannedAt: time.Date(2026, 9, 25, 0, 0, 0, 0, time.UTC), diff --git a/internal/mechanics/testdata/PROVENANCE.md b/internal/mechanics/testdata/PROVENANCE.md index be7637a..e191be0 100644 --- a/internal/mechanics/testdata/PROVENANCE.md +++ b/internal/mechanics/testdata/PROVENANCE.md @@ -23,6 +23,7 @@ and the expected verdict. | `usdc-revocable-regulated/stellar.toml.status` | https://circle.com/.well-known/stellar.toml (HTTP 404) | | `usdc-revocable-regulated/blocked.json` | https://api.stellar.expert/explorer/directory/blocked-domains/circle.com | | `usdc-revocable-regulated/directory.json` | https://api.stellar.expert/explorer/directory/GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN | +| `usdc-revocable-regulated/stellar-expert-asset.json` | https://api.stellar.expert/explorer/public/asset/USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN (captured 2026-09-25) | | `berkshire-clawback-scam/asset.json` | https://horizon.stellar.org/assets?asset_code=BERKSHIRE&asset_issuer=GA22QHSHQEHDJS2ZOINSC77XPPQ24G5EFRJGVEIZLKC5FAW3PQ5XNSDQ | | `berkshire-clawback-scam/account.json` | https://horizon.stellar.org/accounts/GA22QHSHQEHDJS2ZOINSC77XPPQ24G5EFRJGVEIZLKC5FAW3PQ5XNSDQ | | `berkshire-clawback-scam/stellar.toml.status` | https://nasdaq.finance/.well-known/stellar.toml (HTTP 000) | diff --git a/internal/mechanics/testdata/usdc-revocable-regulated/metadata.json b/internal/mechanics/testdata/usdc-revocable-regulated/metadata.json index 9575ce9..25316c5 100644 --- a/internal/mechanics/testdata/usdc-revocable-regulated/metadata.json +++ b/internal/mechanics/testdata/usdc-revocable-regulated/metadata.json @@ -7,7 +7,8 @@ {"file": "account.json", "url": "https://horizon.stellar.org/accounts/GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", "captured": "2026-08-10"}, {"file": "stellar.toml.status", "url": "https://circle.com/.well-known/stellar.toml", "captured": "2026-08-10", "note": "the endpoint did not answer 200 at capture time (HTTP 404), so reciprocal SEP-1 verification fails by the letter of the spec"}, {"file": "blocked.json", "url": "https://api.stellar.expert/explorer/directory/blocked-domains/circle.com", "captured": "2026-08-10"}, - {"file": "directory.json", "url": "https://api.stellar.expert/explorer/directory/GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", "captured": "2026-08-10"} + {"file": "directory.json", "url": "https://api.stellar.expert/explorer/directory/GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", "captured": "2026-08-10"}, + {"file": "stellar-expert-asset.json", "url": "https://api.stellar.expert/explorer/public/asset/USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", "captured": "2026-09-25"} ], "expected": { "state": "valid", diff --git a/internal/mechanics/testdata/usdc-revocable-regulated/stellar-expert-asset.json b/internal/mechanics/testdata/usdc-revocable-regulated/stellar-expert-asset.json new file mode 100644 index 0000000..6b28bf7 --- /dev/null +++ b/internal/mechanics/testdata/usdc-revocable-regulated/stellar-expert-asset.json @@ -0,0 +1,45 @@ +{ + "asset": "USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN-1", + "code": "USDC", + "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", + "created": 1611161688, + "volume7d": 3388231779053673, + "price7d": [[1789689600, 1], [1789776000, 0.9997094], [1789862400, 1], [1789948800, 0.9983318], [1790035200, 1], [1790121600, 1.000284], [1790208000, 0.9973281], [1790294400, 1]], + "supply": "3675875656477148", + "trades": 199174797, + "payments": 118110151, + "trustlines": { + "total": 2431901, + "authorized": 2431901, + "funded": 703318 + }, + "price": 0.999755, + "toml_info": { + "code": "USDC", + "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", + "name": "USD Coin", + "anchorAssetType": "fiat", + "anchorAsset": "USD", + "orgName": "Centre Consortium LLC dba Centre Consortium" + }, + "toml": { + "code": "USDC", + "issuer": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", + "name": "USD Coin", + "anchorAssetType": "fiat", + "anchorAsset": "USD", + "orgName": "Centre Consortium LLC dba Centre Consortium" + }, + "domain": "centre.io", + "rating": { + "age": 10, + "activity": 10, + "trustlines": 10, + "liquidity": 10, + "volume7d": 10, + "interop": 4, + "average": 9 + }, + "decimals": 7, + "contract": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75" +} diff --git a/internal/scan/fuzz_test.go b/internal/scan/fuzz_test.go new file mode 100644 index 0000000..0ca1930 --- /dev/null +++ b/internal/scan/fuzz_test.go @@ -0,0 +1,124 @@ +package scan_test + +// ParseAsset takes untrusted input: the CLI and the HTTP API hand it a raw +// CODE-ISSUER string straight from a user. The fuzz target below drives it +// with generated bytes so that a panic, a rejection that still returns a +// half-built asset, or an accepted identifier that does not round-trip is +// found by the fuzzer rather than by a caller. + +import ( + "encoding/json" + "errors" + "os" + "path/filepath" + "runtime" + "strings" + "testing" + + "github.com/use-assay/assay/internal/mechanics" + "github.com/use-assay/assay/internal/scan" +) + +// mechanicsTestdataDir resolves internal/mechanics/testdata relative to this +// test file, so the seeds load whether `go test` runs from the repo root or +// from the package directory. +func mechanicsTestdataDir(tb testing.TB) string { + tb.Helper() + _, thisFile, _, ok := runtime.Caller(0) + if !ok { + tb.Fatal("runtime.Caller failed") + } + // internal/scan/fuzz_test.go -> internal/mechanics/testdata + return filepath.Join(filepath.Dir(thisFile), "..", "mechanics", "testdata") +} + +// fixtureAssets renders the canonical CODE-ISSUER form of every captured +// subject asset under internal/mechanics/testdata. Those fixtures are the +// scanner's own trusted evidence, so they make a realistic seed corpus for the +// identifier parser. Failing when none are found keeps the corpus from +// silently going empty after a fixture move. +func fixtureAssets(tb testing.TB) []string { + tb.Helper() + matches, err := filepath.Glob(filepath.Join(mechanicsTestdataDir(tb), "*", "asset.json")) + if err != nil { + tb.Fatalf("glob fixture assets: %v", err) + } + if len(matches) == 0 { + tb.Fatal("no fixture asset.json files found; the seed corpus would be empty") + } + var out []string + for _, path := range matches { + raw, err := os.ReadFile(path) + if err != nil { + tb.Fatalf("read %s: %v", path, err) + } + var a struct { + Code string `json:"asset_code"` + Issuer string `json:"asset_issuer"` + } + if err := json.Unmarshal(raw, &a); err != nil { + tb.Fatalf("decode %s: %v", path, err) + } + if a.Code == "" || a.Issuer == "" { + continue + } + out = append(out, a.Code+"-"+a.Issuer) + } + return out +} + +// FuzzParseAsset asserts the two states ParseAsset can be in. An accepted +// input is fully populated and round-trips through its canonical rendering; a +// rejected one returns ErrBadAsset and the zero asset, never a partially +// populated result. +func FuzzParseAsset(f *testing.F) { + const issuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + + // Seed corpus: every case from TestParseAsset, accepted and rejected, plus + // the captured subject assets. + for _, in := range []string{ + "USDC-" + issuer, + " USDC-" + issuer + " ", + "USDC-" + issuer + "-1", + "", + "USDC", + "-" + issuer, + "USDC-NOTAKEY", + "USDC-" + strings.ToLower(issuer), + "TOOLONGASSETCODE-" + issuer, + "US DC-" + issuer, + } { + f.Add(in) + } + for _, in := range fixtureAssets(f) { + f.Add(in) + } + + f.Fuzz(func(t *testing.T, in string) { + a, err := scan.ParseAsset(in) + if err != nil { + // A rejected input must report ErrBadAsset and must not leave a + // half-built asset for a caller to use by mistake. + if !errors.Is(err, scan.ErrBadAsset) { + t.Fatalf("ParseAsset(%q) error = %v, want ErrBadAsset", in, err) + } + if a != (mechanics.Asset{}) { + t.Fatalf("ParseAsset(%q) rejected the input but returned %+v", in, a) + } + return + } + + // An accepted input is fully populated and survives the canonical + // CODE-ISSUER rendering unchanged. + if a.Code == "" || a.Issuer == "" { + t.Fatalf("ParseAsset(%q) accepted with an empty field: %+v", in, a) + } + rt, err := scan.ParseAsset(a.String()) + if err != nil { + t.Fatalf("ParseAsset(%q) accepted as %q, which it then rejects: %v", in, a.String(), err) + } + if rt != a { + t.Fatalf("ParseAsset(%q) = %+v; round-trip through %q gave %+v", in, a, a.String(), rt) + } + }) +} diff --git a/internal/scan/scan.go b/internal/scan/scan.go index d87a18f..cba207a 100644 --- a/internal/scan/scan.go +++ b/internal/scan/scan.go @@ -25,8 +25,10 @@ import ( ) // DefaultFetchTimeout is the maximum duration allocated to any single source fetch. -// Five total fetches (two sequential ledger fetches and three concurrent post-account fetches) -// at 6s each sum to 30s, matching the outer context budget in main.go and api.go. +// Six fetches run in total: two sequential ledger fetches, then four concurrent +// post-account fetches. At 6s each the worst case is two sequential windows +// plus one concurrent window, staying inside the outer 30-second context budget +// in main.go and api.go. const DefaultFetchTimeout = 6 * time.Second // issuerRE matches a Stellar ed25519 public key. @@ -301,13 +303,12 @@ func New() *Scanner { // docs/caching.md. func NewWithOptions(opts Options) *Scanner { return &Scanner{ - Horizon: horizon.New(os.Getenv("ASSAY_HORIZON_URL")), - Toml: sep1.NewFetcher(), - Expert: stellarexpert.NewWithOptions(os.Getenv("ASSAY_STELLAREXPERT_URL"), expertOptions(opts)), - Engine: mechanics.NewEngine(), - Lists: assetlist.New(), - FetchTimeout: opts.FetchTimeout, - Network: horizon.PublicNet, + Horizon: horizon.New(os.Getenv("ASSAY_HORIZON_URL")), + Toml: sep1.NewFetcher(), + Expert: stellarexpert.NewWithOptions(os.Getenv("ASSAY_STELLAREXPERT_URL"), expertOptions(opts)), + Engine: mechanics.NewEngine(), + Lists: assetlist.New(), + Network: horizon.PublicNet, } } @@ -353,6 +354,11 @@ func (s *Scanner) fetchTimeout() time.Duration { return DefaultFetchTimeout } +// now is the scanner's clock: the pinned one when a test installs Scanner.Now, +// the host wall clock otherwise. Every timestamp the scanner itself records +// during subject assembly goes through it, so one override fixes the whole +// set — the only other time sources a golden render sees are the ones a source +// client stamps on its own answers, which the golden test pins on the client. func (s *Scanner) now() time.Time { if s.Now != nil { return s.Now().UTC() @@ -372,8 +378,8 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su if err != nil { return nil, err } - timeout := s.fetchTimeout() sub := &mechanics.Subject{Asset: a, ScannedAt: s.now(), Network: network} + timeout := s.fetchTimeout() statCtx, cancelStat := context.WithTimeout(ctx, timeout) stat, err := s.Horizon.Asset(statCtx, a.Code, a.Issuer) @@ -400,19 +406,32 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su var ( wg sync.WaitGroup + // StellarExpert's asset metadata is fetched best-effort alongside the + // other post-account lookups. A network drop is recorded on the subject + // as an undetermined fetch — the scan itself never fails, and the + // reputation check reports the gap as undetermined rather than as a + // clean source. The rating is attributed evidence only: it can add a + // statement to the report but is never consulted by the upward-only + // severity rules. + expertAssetURL string + expertAssetVal *stellarexpert.Asset + expertAssetErr string + expertAssetAttemptedAt time.Time + expertAssetFetchedAt time.Time + tomlDoc *sep1.Doc tomlErr string tomlRefused bool tomlAttemptedAt time.Time tomlURL string - blockedVal *stellarexpert.BlockedDomain + blockedVal stellarexpert.Answer[stellarexpert.BlockedDomain] blockedErr string blockedFetchedAt time.Time blockedAttAt time.Time blockedURL string - dirVal *stellarexpert.DirectoryEntry + dirVal stellarexpert.Answer[stellarexpert.DirectoryEntry] dirErr string dirFetchedAt time.Time dirAttAt time.Time @@ -434,12 +453,18 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su defer wg.Done() tomlCtx, cancel := context.WithTimeout(ctx, timeout) defer cancel() - attempted := time.Now().UTC() - tomlAttemptedAt = attempted + attempted := s.now() doc, err := s.Toml.Fetch(tomlCtx, domain) if err != nil { tomlErr = sep1.CanonicalFailure(err) +// A host-policy refusal is a decision, not an outage. It is + // recorded as such so the domain check can report a refusal + // rather than a source that failed to answer. tomlRefused = errors.Is(err, sep1.ErrNonPublicHost) + // A failed fetch has no completion time, so the attempt time is + // what failure evidence carries — explicitly labelled as an attempt + // by Evidence.Attempted. + tomlAttemptedAt = attempted } else { tomlDoc = doc } @@ -457,12 +482,16 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su if err != nil { blockedErr = sep1.CanonicalFailure(err) } else { - blockedVal = blocked.Value + blockedVal = blocked + // The source's OWN completion time, which on a cache hit is + // the instant the answer was originally fetched. Stamping the + // lookup time here instead is the one thing the cache must + // never cause: Evidence.RetrievedAt would then claim a + // freshness the data does not have, in the report and in the + // preimage a verifier re-derives. blockedFetchedAt = blocked.FetchedAt } }() - } else { - sub.BlockedSkipped = "the issuer advertises no home_domain to key the lookup on" } dirURL = s.Expert.DirectoryURL(a.Issuer) @@ -477,34 +506,78 @@ func (s *Scanner) Subject(ctx context.Context, a mechanics.Asset) (*mechanics.Su if err != nil { dirErr = sep1.CanonicalFailure(err) } else { - dirVal = entry.Value + dirVal = entry + // As above: the directory answer's own fetch time, not this scan's. dirFetchedAt = entry.FetchedAt } }() + // The asset endpoint is keyed on the asset itself, so it is always asked — + // unlike the domain-keyed lookups above, which need a home_domain. It runs + // with the rest of the concurrent group so that a slow or dead + // StellarExpert cannot serialise another fetch's timeout onto the scan. + expertAssetURL = s.Expert.AssetURL(a.Code, a.Issuer) + wg.Add(1) + go func() { + defer wg.Done() + expertAssetAttemptedAt = time.Now().UTC() + expertCtx, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + expertAsset, err := s.Expert.Asset(expertCtx, a.Code, a.Issuer) + if err != nil { + // The drop is recorded and the scan moves on: this source is + // best-effort evidence, never a reason to fail a scan. + expertAssetErr = err.Error() + return + } + expertAssetVal = expertAsset + expertAssetFetchedAt = time.Now().UTC() + }() + wg.Wait() + + sub.ExpertAssetURL = expertAssetURL + sub.ExpertAsset = expertAssetVal + sub.ExpertAssetErr = expertAssetErr + sub.ExpertAssetAttemptedAt = expertAssetAttemptedAt + sub.ExpertAssetFetchedAt = expertAssetFetchedAt + sub.TomlURL = tomlURL + sub.Toml = tomlDoc sub.TomlErr = tomlErr sub.TomlRefused = tomlRefused sub.TomlAttemptedAt = tomlAttemptedAt - sub.Toml = tomlDoc + // SEP-0001 lets a currency entry delegate to a separate per-currency + // document. Follow those links — one hop, bounded by + // sep1.MaxLinkedDocuments and subject to the same host policy — but + // only when the asset was not already claimed inline, which keeps the + // common case at one fetch, and only once the fetch it depends on has + // returned. if tomlDoc != nil && tomlDoc.LinkedCurrencies(a.Code, a.Issuer) > 0 && !tomlDoc.Claims(a.Code, a.Issuer) { sub.TomlLinked = s.Toml.ResolveLinked(ctx, tomlDoc, a.Code, a.Issuer) } - sub.BlockedURL = blockedURL - sub.BlockedErr = blockedErr - sub.BlockedAttemptedAt = blockedAttAt - sub.Blocked = blockedVal - sub.BlockedFetchedAt = blockedFetchedAt + + if domain != "" { + sub.BlockedURL = blockedURL + sub.Blocked = blockedVal.Value + sub.BlockedErr = blockedErr + sub.BlockedFetchedAt = blockedFetchedAt + sub.BlockedAttemptedAt = blockedAttAt + } else { + // The blocklist is keyed on a domain, and there is none: the question + // cannot be put at all. Record that explicitly rather than leaving the + // fields empty, because an empty Blocked with no error reads downstream + // as "the lookup ran and found no entry" — and a blocklist hit + // escalates severity, so that silently-dropped lookup is a risk this + // report would understate. + sub.BlockedSkipped = "the issuer advertises no home_domain to key the lookup on" + } + sub.DirectoryURL = dirURL + sub.Directory = dirVal.Value sub.DirectoryErr = dirErr - sub.DirectoryAttemptedAt = dirAttAt - sub.Directory = dirVal sub.DirectoryFetchedAt = dirFetchedAt - - if s.Toml == nil && sub.TomlAttemptedAt.IsZero() { - sub.TomlAttemptedAt = time.Now().UTC() - } + sub.DirectoryAttemptedAt = dirAttAt // SEP-0042 asset lists, one signal each, in configuration order. Each is // best-effort for the same reason every other consumed signal is: a list diff --git a/internal/sep1/fuzz_test.go b/internal/sep1/fuzz_test.go new file mode 100644 index 0000000..434aeab --- /dev/null +++ b/internal/sep1/fuzz_test.go @@ -0,0 +1,116 @@ +package sep1_test + +// Parse decodes a stellar.toml fetched from a domain the issuer controls. That +// document is attacker-controlled input, and a crash there takes the scanner +// down for every asset, so the fuzz target below feeds it arbitrary bytes. +// Rejected input must come back as an error with no document; accepted input +// must survive a render-and-reparse round trip. + +import ( + "os" + "path/filepath" + "runtime" + "slices" + "testing" + + "github.com/BurntSushi/toml" + + "github.com/use-assay/assay/internal/sep1" +) + +// mechanicsTestdataDir resolves internal/mechanics/testdata relative to this +// test file, so the seeds load whether `go test` runs from the repo root or +// from the package directory. +func mechanicsTestdataDir(tb testing.TB) string { + tb.Helper() + _, thisFile, _, ok := runtime.Caller(0) + if !ok { + tb.Fatal("runtime.Caller failed") + } + // internal/sep1/fuzz_test.go -> internal/mechanics/testdata + return filepath.Join(filepath.Dir(thisFile), "..", "mechanics", "testdata") +} + +// fixtureTomls reads every captured stellar.toml under +// internal/mechanics/testdata. These are documents the scanner actually +// consumed, so they seed the fuzzer with realistic shapes rather than only +// hand-written ones. Failing when none are found keeps the corpus from +// silently going empty after a fixture move. +func fixtureTomls(tb testing.TB) [][]byte { + tb.Helper() + matches, err := filepath.Glob(filepath.Join(mechanicsTestdataDir(tb), "*", "stellar.toml")) + if err != nil { + tb.Fatalf("glob fixtures: %v", err) + } + if len(matches) == 0 { + tb.Fatal("no fixture stellar.toml files found; the seed corpus would be empty") + } + var out [][]byte + for _, path := range matches { + raw, err := os.ReadFile(path) + if err != nil { + tb.Fatalf("read %s: %v", path, err) + } + out = append(out, raw) + } + return out +} + +// FuzzParseToml asserts the two states Parse can be in. A rejected input comes +// back as an error with a nil document, never a partially-populated one; an +// accepted input re-renders to TOML and parses back to the same currencies. +func FuzzParseToml(f *testing.F) { + // Seed corpus: the documents from TestClaims and TestLinkedCurrencies, + // plus every captured stellar.toml fixture. + f.Add([]byte(` +[[CURRENCIES]] +code = "USDC" +issuer = "` + issuer + `" + +[[CURRENCIES]] +code = "EURC" +issuer = "GDHU6WRG4IEQXM5NZ4BMPKOXHW76MZM4Y2IEMFDVXBSDP6SJY4ITNPP2" +`)) + f.Add([]byte(` +[[CURRENCIES]] +toml = "https://example.com/.well-known/USDC.toml" + +[[CURRENCIES]] +code = "AQUA" +issuer = "` + issuer + `" +`)) + for _, b := range fixtureTomls(f) { + f.Add(b) + } + + f.Fuzz(func(t *testing.T, b []byte) { + doc, err := sep1.Parse(b) + if err != nil { + // A rejected input must not leave a partial document behind. + if doc != nil { + t.Fatalf("Parse(%q) rejected the input but returned %+v", b, doc) + } + return + } + if doc == nil { + t.Fatalf("Parse(%q) accepted the input but returned a nil document", b) + } + + // Accepted input must round-trip: rendering the parsed subset and + // parsing it again yields the same currencies. Only Currencies is + // compared because URL and FetchedAt are set by Fetch, not Parse, and + // the fields the parser deliberately ignores do not survive a render. + encoded, err := toml.Marshal(doc) + if err != nil { + t.Fatalf("Parse(%q) accepted a document that will not marshal: %v", b, err) + } + rt, err := sep1.Parse(encoded) + if err != nil { + t.Fatalf("Parse(%q): the parsed document does not re-parse: %v (marshalled: %q)", b, err, encoded) + } + if !slices.Equal(doc.Currencies, rt.Currencies) { + t.Fatalf("Parse(%q) did not round-trip:\n before: %+v\n after: %+v\n marshalled: %q", + b, doc.Currencies, rt.Currencies, encoded) + } + }) +} diff --git a/internal/sep1/redirect_test.go b/internal/sep1/redirect_test.go index a85e1aa..93a4bc4 100644 --- a/internal/sep1/redirect_test.go +++ b/internal/sep1/redirect_test.go @@ -2,11 +2,9 @@ package sep1_test import ( "context" - "fmt" "io" "net/http" "net/http/httptest" - "net/url" "strings" "testing" @@ -27,37 +25,19 @@ const redirectToml = "[[CURRENCIES]]\ncode = \"USDC\"\nissuer = \"" + issuer + " // the one the scanner uses. func fetcherForServer(srv *httptest.Server) *sep1.Fetcher { f := sep1.NewFetcher() - target, err := url.Parse(srv.URL) - if err != nil { - panic(err) - } - client := srv.Client() - f.HTTP = &http.Client{ - Transport: redirectTestTransport{base: client.Transport, target: target}, - CheckRedirect: sep1.CheckRedirect, - } + // The host policy refuses non-public hosts before any request, so the + // domain under test is a public name and the transport rewrites it to the + // test server, the same way the other fetcher tests do. + base := srv.Client() + f.HTTP = &http.Client{Transport: rewriteTo{base: base.Transport, host: domainOf(srv.URL)}} + f.HTTP.CheckRedirect = sep1.CheckRedirect return f } -type redirectTestTransport struct { - base http.RoundTripper - target *url.URL -} - -func (t redirectTestTransport) RoundTrip(req *http.Request) (*http.Response, error) { - rewritten := req.Clone(req.Context()) - rewritten.URL.Scheme = t.target.Scheme - rewritten.URL.Host = t.target.Host - rewritten.Host = t.target.Host - resp, err := t.base.RoundTrip(rewritten) - if err != nil { - return resp, fmt.Errorf("redirect test transport: %w", err) - } - if resp != nil { - resp.Request = req - } - return resp, nil -} +// redirectHost is the public host the redirect tests fetch. The transport +// rewrites it to the httptest server, so ClassifyHost sees an allowed host +// while the bytes still come from the test server. +const redirectHost = "redirect.example" // TestRedirectWithinBound follows two same-site hops and expects the document // at the end. The final URL is the one recorded, so a reader can see where the @@ -77,11 +57,11 @@ func TestRedirectWithinBound(t *testing.T) { })) t.Cleanup(srv.Close) - doc, err := fetcherForServer(srv).Fetch(context.Background(), "redirect.example.com") + doc, err := fetcherForServer(srv).Fetch(context.Background(), redirectHost) if err != nil { t.Fatalf("two same-site redirects within the bound: %v", err) } - final := "https://redirect.example.com/hop/2" + final := srv.URL + "/hop/2" if doc.URL != final { t.Errorf("doc.URL = %q, want the final location %q", doc.URL, final) } @@ -101,7 +81,7 @@ func TestRedirectExceedingBound(t *testing.T) { })) t.Cleanup(srv.Close) - _, err := fetcherForServer(srv).Fetch(context.Background(), "redirect.example.com") + _, err := fetcherForServer(srv).Fetch(context.Background(), redirectHost) if err == nil { t.Fatal("an unbounded redirect chain was followed to completion") } @@ -119,7 +99,7 @@ func TestRedirectCrossHostRefused(t *testing.T) { })) t.Cleanup(srv.Close) - _, err := fetcherForServer(srv).Fetch(context.Background(), "redirect.example.com") + _, err := fetcherForServer(srv).Fetch(context.Background(), redirectHost) if err == nil { t.Fatal("a cross-host redirect was followed and its document accepted as the domain's claim") } diff --git a/internal/sep1/sep1.go b/internal/sep1/sep1.go index bb39377..13eef3d 100644 --- a/internal/sep1/sep1.go +++ b/internal/sep1/sep1.go @@ -37,18 +37,29 @@ const version = "v0.1.0" // asked for more than this, rather than assuming it. const MaxBody = 1 << 20 // 1 MiB -// Failure labels are stable, host-independent categories for source errors. +// MaxRedirects bounds how many redirects the fetcher will follow before +// giving up. It is set explicitly rather than inherited from net/http's default +// of 10, because the number is part of the security argument: a redirect chain +// is attacker-controlled, and an unbounded one lets a hostile home_domain keep +// the scanner chasing hops (or keep rewriting the final URL the claim is +// attributed to). Five is enough for the ordinary cases — an http-to-https +// upgrade, a trailing-slash or path-normalization hop, an apex-to-www move — +// and small enough to read in one place. +const MaxRedirects = 5 + const ( + // FailureConnectionRefused identifies a refused TCP connection. FailureConnectionRefused = "connection-refused" - FailureDNS = "dns-failure" - FailureTimeout = "timeout" - FailureHostRefused = "host-refused" - FailureFetch = "fetch-failure" + // FailureDNS identifies a DNS resolution failure. + FailureDNS = "dns-failure" + // FailureTimeout identifies a transport timeout. + FailureTimeout = "timeout" + // FailureHostRefused identifies a host-policy refusal. + FailureHostRefused = "host-refused" + // FailureFetch identifies other fetch failures. + FailureFetch = "fetch-failure" ) -// MaxRedirects bounds how many redirects a stellar.toml fetch may follow. -const MaxRedirects = 5 - // MaxLinkedDocuments bounds how many per-currency TOML links Assay follows for // a single issuer stellar.toml. SEP-0001 allows a CURRENCIES entry to carry // `toml="https://DOMAIN/.well-known/CURRENCY.toml"` as its only field, and a @@ -424,7 +435,7 @@ func (f *Fetcher) ResolveLinked(ctx context.Context, d *Doc, code, issuer string res.Attempted++ doc, err := f.fetch(ctx, link) if err != nil { - ld := LinkedDoc{URL: link, Err: err.Error(), Refused: errors.Is(err, ErrNonPublicHost)} + ld := LinkedDoc{URL: link, Err: CanonicalFailure(err), Refused: errors.Is(err, ErrNonPublicHost)} res.Docs = append(res.Docs, ld) continue } @@ -602,7 +613,7 @@ func (f *Fetcher) fetch(ctx context.Context, target string) (*Doc, error) { resp, err := f.HTTP.Do(req) if err != nil { - return nil, fmt.Errorf("sep1: fetch %s: %w", target, err) + return nil, fmt.Errorf("sep1: %s: fetch %s: %w", CanonicalFailure(err), target, err) } defer func() { _ = resp.Body.Close() }() diff --git a/internal/stellarexpert/client.go b/internal/stellarexpert/client.go index ed4044f..7206a01 100644 --- a/internal/stellarexpert/client.go +++ b/internal/stellarexpert/client.go @@ -9,6 +9,7 @@ // // GET /explorer/directory/{address} -> curated address entry // GET /explorer/directory/blocked-domains/{domain} -> {"domain":..,"blocked":bool} +// GET /explorer/public/asset/{CODE-ISSUER} -> asset metadata and rating // // Answers from these endpoints are cached for a bounded time and returned with // the instant the source produced them, never the instant a cache served them. @@ -54,28 +55,48 @@ const defaultUserAgent = "assay/" + version + " (+https://github.com/use-assay/A // can assert the bound rather than assume it. const MaxBody = 1 << 20 // 1 MiB -// RetryOptions bounds attempts and spaces retries with backoff. +// RetryOptions bounds exponential backoff with jitter for transient failures. +// Retry-After takes precedence when the server advertises it. type RetryOptions struct { - Attempts int - Backoff func(attempt int, retryAfter time.Duration) time.Duration + Attempts int + InitialDelay time.Duration + MaxDelay time.Duration + MaxTotalLatency time.Duration } -// DefaultRetryOptions returns the bounded retry policy used for transient -// StellarExpert failures. -func DefaultRetryOptions() RetryOptions { - return RetryOptions{ - Attempts: 3, - Backoff: func(attempt int, retryAfter time.Duration) time.Duration { - backoff := time.Duration(float64(100*time.Millisecond) * math.Pow(2, float64(attempt))) - delay := backoff + time.Duration(rand.Float64()*float64(backoff)) - if retryAfter > delay { - return retryAfter - } - return delay - }, +// DefaultRetryOptions caps total added latency at ~2s, well inside the +// outer 30s scan budget, and honours the Retry-After we actually observed on +// api.stellar.expert. +func DefaultRetryOptions() *RetryOptions { + return &RetryOptions{ + Attempts: 3, + InitialDelay: 250 * time.Millisecond, + MaxDelay: 500 * time.Millisecond, + MaxTotalLatency: 2 * time.Second, } } +// Backoff returns the next delay after an attempt failed, with full jitter: +// a uniform draw in [0, min(MaxDelay, InitialDelay * 2^attempt)]. +func (o *RetryOptions) Backoff(attempt int, retryAfter time.Duration) time.Duration { + target := o.InitialDelay * time.Duration(math.Pow(2, float64(attempt))) + if target > o.MaxDelay { + target = o.MaxDelay + } + if retryAfter > 0 && retryAfter < target { + target = retryAfter + } + if target <= 0 { + target = o.InitialDelay + } + n := rand.Int63() + if n < 0 { + n = -n + } + target = time.Duration(n % int64(target)) + return target +} + // AdvertisedMaxAge is the freshness budget StellarExpert publishes for the // endpoints Assay consumes. // @@ -216,6 +237,35 @@ type BlockedDomain struct { Blocked bool `json:"blocked"` } +// Asset is the asset-level metadata published by StellarExpert. These values +// are descriptive source data and are not an Assay score. +type Asset struct { + Asset string `json:"asset"` + Code string `json:"code"` + Issuer string `json:"issuer"` + Supply string `json:"supply"` + Trustlines TrustlineCounts `json:"trustlines"` + Rating AssetRating `json:"rating"` +} + +// TrustlineCounts are the counters returned by the public asset endpoint. +type TrustlineCounts struct { + Total int `json:"total"` + Authorized int `json:"authorized"` + Funded int `json:"funded"` +} + +// AssetRating is StellarExpert's component rating data. +type AssetRating struct { + Age int `json:"age"` + Activity int `json:"activity"` + Trustlines int `json:"trustlines"` + Liquidity int `json:"liquidity"` + Volume7d int `json:"volume7d"` + Interop int `json:"interop"` + Average int `json:"average"` +} + // Client reads StellarExpert's curated data sets. type Client struct { BaseURL string @@ -266,6 +316,11 @@ func (c *Client) BlockedDomainURL(domain string) string { return c.BaseURL + "/explorer/directory/blocked-domains/" + url.PathEscape(domain) } +// AssetURL returns the public URL for an asset metadata lookup. +func (c *Client) AssetURL(code, issuer string) string { + return c.BaseURL + "/explorer/public/asset/" + url.PathEscape(code+"-"+issuer) +} + // Directory looks up an address in the curated directory. // // The returned Answer carries the instant the source produced it. Within the @@ -321,7 +376,9 @@ func (c *Client) BlockedDomain(ctx context.Context, domain string, opts ...Looku return Answer[BlockedDomain]{}, err } at := c.now() - if !found { + // A record with no domain names nothing on the blocklist: treat it as + // not blocked rather than reporting an empty entry as a listing. + if !found || b.Domain == "" { return Answer[BlockedDomain]{FetchedAt: at}, nil } return Answer[BlockedDomain]{Value: &b, FetchedAt: at}, nil @@ -361,6 +418,16 @@ func lookup[T stamped](c *cache.Cache[T], key string, opts []LookupOption, fetch return val, false, nil } +// Asset looks up StellarExpert's asset-level metadata and rating. +func (c *Client) Asset(ctx context.Context, code, issuer string) (*Asset, error) { + var a Asset + found, err := c.get(ctx, c.AssetURL(code, issuer), &a) + if err != nil || !found { + return nil, err + } + return &a, nil +} + // get returns found=false on 404 rather than an error, because "not listed" is // a normal answer from these endpoints. // diff --git a/internal/stellarexpert/client_test.go b/internal/stellarexpert/client_test.go index 25ba5a7..f7b7e6a 100644 --- a/internal/stellarexpert/client_test.go +++ b/internal/stellarexpert/client_test.go @@ -1,9 +1,13 @@ package stellarexpert_test import ( + "bytes" "context" + "io" "net/http" "net/http/httptest" + "os" + "path/filepath" "testing" "github.com/use-assay/assay/internal/stellarexpert" @@ -16,6 +20,7 @@ import ( // // Bodies captured 2026-09-05 from api.stellar.expert. const ( + bodyAsset = `{"asset":"USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN-1","code":"USDC","issuer":"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN","supply":"3675875656477148","trustlines":{"total":2431888,"authorized":2431888,"funded":703330},"rating":{"age":10,"activity":10,"trustlines":10,"liquidity":10,"volume7d":10,"interop":4,"average":9}}` // An address the directory holds no entry for. Note the 200: this endpoint // does not 404 for an unknown address. bodyUnlisted = `{}` @@ -224,3 +229,128 @@ func TestRetryHorizonPathUnaffected(t *testing.T) { t.Fatal("a 503 from the consumed source was not retried") } } + +func TestEmptyBlockedDomainResponseIsNotListed(t *testing.T) { + b, err := serve(t, http.StatusOK, `{}`). + BlockedDomain(context.Background(), "unknown.example") + if err != nil { + t.Fatalf("an empty response is a normal answer, not an error: %v", err) + } + if b.Value != nil { + t.Fatalf("empty response reported as a blocklist result: %+v", b.Value) + } +} + +type responseClass uint8 + +const ( + responseFailed responseClass = iota + responseNotListed + responseListed +) + +func classifyResponse(found bool, err error) responseClass { + if err != nil { + return responseFailed + } + if !found { + return responseNotListed + } + return responseListed +} + +func fuzzClient(status uint16, body []byte) *stellarexpert.Client { + c := stellarexpert.New("https://example.test") + c.HTTP = &http.Client{Transport: roundTripperFunc(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: int(status), + Body: io.NopCloser(bytes.NewReader(body)), + Header: make(http.Header), + Request: req, + }, nil + })} + return c +} + +func assertResponseClass(t *testing.T, class responseClass, err error) { + t.Helper() + switch class { + case responseListed: + if err != nil { + t.Fatalf("listed response also returned an error: %v", err) + } + case responseNotListed: + if err != nil { + t.Fatalf("not-listed response also returned an error: %v", err) + } + case responseFailed: + if err == nil { + t.Fatal("failed response did not return an error") + } + default: + t.Fatalf("response has unrecognized classification %d", class) + } +} + +func FuzzDirectoryClassification(f *testing.F) { + directoryFixture, err := os.ReadFile(filepath.Join("..", "mechanics", "testdata", "aqua-clear-verified", "directory.json")) + if err != nil { + f.Fatalf("read directory fixture: %v", err) + } + f.Add(uint16(http.StatusOK), directoryFixture) + f.Add(uint16(http.StatusOK), []byte(bodyUnlisted)) + f.Add(uint16(http.StatusOK), []byte("{")) + f.Add(uint16(http.StatusNotFound), []byte("{}")) + + f.Fuzz(func(t *testing.T, status uint16, body []byte) { + entry, err := fuzzClient(status, body).Directory(context.Background(), address) + class := classifyResponse(entry.Value != nil, err) + assertResponseClass(t, class, err) + if class == responseListed && entry.Value.Address == "" { + t.Fatal("listed response has no address") + } + }) +} + +func FuzzBlockedDomainClassification(f *testing.F) { + blockedFixture, err := os.ReadFile(filepath.Join("..", "mechanics", "testdata", "aqua-clear-verified", "blocked.json")) + if err != nil { + f.Fatalf("read blocked-domain fixture: %v", err) + } + f.Add(uint16(http.StatusOK), blockedFixture) + f.Add(uint16(http.StatusOK), []byte(`{"domain":"aqua.network","blocked":false}`)) + f.Add(uint16(http.StatusOK), []byte(`{}`)) + f.Add(uint16(http.StatusOK), []byte("{")) + f.Add(uint16(http.StatusNotFound), []byte("{}")) + + f.Fuzz(func(t *testing.T, status uint16, body []byte) { + result, err := fuzzClient(status, body).BlockedDomain(context.Background(), "aqua.network") + class := classifyResponse(result.Value != nil, err) + assertResponseClass(t, class, err) + if class == responseListed && result.Value.Domain == "" { + t.Fatal("listed response has no domain") + } + }) +} + +func TestAssetDecodesAndUsesPublicPath(t *testing.T) { + const issuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" + var gotPath string + srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + gotPath = r.URL.Path + w.WriteHeader(http.StatusOK) + _, _ = w.Write([]byte(bodyAsset)) + })) + t.Cleanup(srv.Close) + + asset, err := stellarexpert.New(srv.URL).Asset(context.Background(), "USDC", issuer) + if err != nil { + t.Fatalf("Asset: %v", err) + } + if got, want := gotPath, "/explorer/public/asset/USDC-"+issuer; got != want { + t.Fatalf("request path = %q, want %q", got, want) + } + if asset.Supply != "3675875656477148" || asset.Trustlines.Funded != 703330 || asset.Rating.Average != 9 { + t.Fatalf("asset decoded wrongly: %+v", asset) + } +} diff --git a/openapi.yaml b/openapi.yaml index a063d26..0a72f86 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1,8 +1,12 @@ -openapi: 3.0.3 +openapi: 3.0.3 info: title: Assay API version: 1.0.0 - description: Stellar asset trap scanner API contract. + description: >- + Stellar asset trap scanner API contract. This document is the schema + source for the surface `assay serve` registers; docs/api.md is the human + reference for the same endpoints, and docs/api-versioning.md states what + the route version and `schema_version` promise. paths: /api/v1/scan: get: @@ -43,22 +47,7 @@ paths: content: application/json: schema: - type: object - properties: - severity: - type: string - accountability: - type: string - undetermined: - type: boolean - undetermined_checks: - type: array - items: - type: string - findings: - type: array - items: - type: object + $ref: '#/components/schemas/Report' '400': description: >- Invalid request parameters (including a holder that is not a G... @@ -89,39 +78,7 @@ paths: content: application/json: schema: - type: object - required: [asset, state, count, observations, transitions, retention] - properties: - asset: - type: object - properties: - code: - type: string - issuer: - type: string - state: - type: string - enum: [valid, unknown, missing] - reason: - type: string - description: Present when state is not valid. - count: - type: integer - observations: - type: array - items: - type: object - transitions: - type: array - items: - type: object - latest_at: - type: string - format: date-time - latest_age_secs: - type: integer - retention: - type: integer + $ref: '#/components/schemas/History' '400': description: Missing or invalid asset, or the network's native asset. /api/v1/exposure: @@ -162,49 +119,7 @@ paths: content: application/json: schema: - type: object - required: [account, total, limit, count, assets] - properties: - account: - type: string - total: - type: integer - description: Credit trustlines on the account (whole listing, not this page). - limit: - type: integer - description: Page size actually applied. - count: - type: integer - next_cursor: - type: integer - description: Cursor for the next page; absent on the last page. - assets: - type: array - items: - type: object - properties: - asset: - type: object - properties: - code: - type: string - issuer: - type: string - severity: - type: string - enum: [clear, low, medium, high, critical, unevaluated] - undetermined: - type: boolean - undetermined_checks: - type: array - items: - type: string - finding: - type: object - description: Holder-trustline finding; absent when that asset's scan failed. - reason: - type: string - description: Why this asset's scan failed; present only when finding is absent. + $ref: '#/components/schemas/Exposure' '400': description: Missing or invalid account, limit, or cursor. '404': @@ -223,16 +138,7 @@ paths: content: application/json: schema: - type: object - properties: - scan_outcomes: - type: object - additionalProperties: - type: integer - source_failures: - type: object - additionalProperties: - type: integer + $ref: '#/components/schemas/Metrics' /healthz: get: summary: Liveness check @@ -247,20 +153,19 @@ paths: example: ok /readyz: get: - summary: Upstream readiness and registry freshness check + summary: Per-upstream readiness check description: >- The HTTP status tracks the body's status: 200 ready; 503 degraded, - unavailable, or unknown. Registry staleness is informational and does - not change readiness. + unavailable, or unknown. No failing probe reports ready. responses: '200': - description: Every checkable scan upstream is reachable. + description: Every checkable upstream is reachable. content: application/json: schema: $ref: '#/components/schemas/Readiness' '503': - description: A scan upstream is degraded, unavailable, or unknown; see status and upstreams. + description: Degraded, unavailable, or unknown; see status and upstreams. content: application/json: schema: @@ -277,9 +182,361 @@ paths: type: string components: schemas: + Severity: + type: string + description: >- + The severity level name. The order is part of the contract: a level + never renumbers within a schema version (docs/api-versioning.md). + "unevaluated" means the issuer flags were never read and is never a + permissive answer. + enum: [clear, low, medium, high, critical, unevaluated] + Accountability: + type: string + description: Whether the issuer's advertised home domain publicly claims the asset. + enum: [unknown, unverified, verified] + AccountabilityReason: + type: string + enum: [fetch_failed, not_claimed, mismatch, no_home_domain] + description: >- + Why accountability was not verified: the stellar.toml could not be + fetched, it was fetched but does not claim the asset, it disagrees with + the curated directory, or the issuer has no home_domain. Absent when + the verdict needs no sub-reason (a verified claim). + Asset: + type: object + required: [code, issuer] + properties: + code: + type: string + issuer: + type: string + Evidence: + type: object + description: One attributed claim from a named consumed source. + required: [source, url, claim, retrieved_at, attempted] + properties: + source: + type: string + url: + type: string + description: >- + The claim's location: the FINAL location after redirects on a + successful fetch, the requested location on a failed one. + requested_url: + type: string + description: The SEP-1 well-known location derived from home_domain. + claim: + type: string + retrieved_at: + type: string + format: date-time + attempted: + type: boolean + description: >- + True when retrieved_at is the time the fetch was ATTEMPTED rather + than the time the source answered (the fetch failed). + refused: + type: boolean + description: >- + True when the failure is a host-policy refusal: the scanner + declined to make the request at all. + Finding: + type: object + description: One check's verdict over the asset. + required: [check, title, severity, escalation, undetermined, reasoning, mechanics, evidence] + properties: + check: + type: string + title: + type: string + severity: + $ref: '#/components/schemas/Severity' + escalation: + type: boolean + description: True when the severity comes from reputation rather than issuer capability. + undetermined: + type: boolean + description: >- + True when this check could not reach a conclusion because a source + it depends on was unreachable ΓÇö not the same as finding nothing. + undetermined_by_source: + type: object + additionalProperties: + type: integer + description: Count of undetermined checks per source name. + undetermined_rate: + type: string + description: '"numerator/denominator" over the checks run for this asset.' + reasoning: + type: string + mechanics: + type: array + items: + type: string + description: The capability bits this check observed, as names. + accountability: + $ref: '#/components/schemas/Accountability' + accountability_reason: + $ref: '#/components/schemas/AccountabilityReason' + evidence: + type: array + items: + $ref: '#/components/schemas/Evidence' + Report: + type: object + description: >- + The scan report, also printed by `assay scan`. `schema_version` is the + payload contract version, independent of the /api/v1 route version. + required: + - schema_version + - asset + - severity + - base_severity + - escalated + - accountability + - state + - stale + - undetermined + - undetermined_checks + - mechanics + - findings + - evidence + - scanned_at + properties: + schema_version: + type: integer + description: Version of the report JSON shape; additive changes do not bump it. + asset: + $ref: '#/components/schemas/Asset' + severity: + $ref: '#/components/schemas/Severity' + base_severity: + $ref: '#/components/schemas/Severity' + escalated: + type: boolean + description: True when reputation raised the level above base_severity. + accountability: + $ref: '#/components/schemas/Accountability' + accountability_reason: + $ref: '#/components/schemas/AccountabilityReason' + state: + type: string + enum: [valid, unknown, stale] + stale: + type: boolean + stale_reason: + type: string + undetermined: + type: boolean + undetermined_checks: + type: array + items: + type: string + undetermined_by_source: + type: object + additionalProperties: + type: integer + undetermined_rate: + type: string + network: + type: string + description: The Stellar network passphrase the facts were read from. + checks: + type: array + items: + type: string + description: The sorted IDs of the checks the engine actually ran. + scanner_bound: + type: boolean + description: True when the report binds attest.ScannerIdentity into its preimage. + mechanics: + type: array + items: + type: string + findings: + type: array + items: + $ref: '#/components/schemas/Finding' + evidence: + type: array + items: + $ref: '#/components/schemas/Evidence' + observation_window_start: + type: string + format: date-time + observation_window_end: + type: string + format: date-time + scanned_at: + type: string + format: date-time + Observation: + type: object + description: >- + One recorded scan, as retained by the history store: the report's + verdict fields plus the full mechanic bitset. + required: [asset, at, mechanics, base_severity, severity, accountability, undetermined] + properties: + asset: + $ref: '#/components/schemas/Asset' + at: + type: string + format: date-time + mechanics: + type: integer + description: The full mechanic bitset the report carried, as a number. + base_severity: + $ref: '#/components/schemas/Severity' + severity: + $ref: '#/components/schemas/Severity' + accountability: + $ref: '#/components/schemas/Accountability' + undetermined: + type: boolean + undetermined_checks: + type: array + items: + type: string + evidence: + type: array + items: + $ref: '#/components/schemas/Evidence' + Transition: + type: object + description: >- + The derived difference between two consecutive observations. A state + other than "valid" means no comparison could be made; it never means + "no change". + required: + - asset + - from + - to + - state + - added + - removed + - added_names + - removed_names + - base_before + - base_after + - severity_before + - severity_after + - attribution + properties: + asset: + $ref: '#/components/schemas/Asset' + from: + $ref: '#/components/schemas/Observation' + to: + $ref: '#/components/schemas/Observation' + state: + type: string + enum: [valid, unknown, missing] + reason: + type: string + added: + type: integer + description: Capability bits present in the later observation only. + removed: + type: integer + description: Capability bits present in the earlier observation only. + added_names: + type: array + items: + type: string + removed_names: + type: array + items: + type: string + base_before: + $ref: '#/components/schemas/Severity' + base_after: + $ref: '#/components/schemas/Severity' + severity_before: + $ref: '#/components/schemas/Severity' + severity_after: + $ref: '#/components/schemas/Severity' + attribution: + type: string + enum: [none, capability, reputation, both] + History: + type: object + description: The body of GET /api/v1/history. + required: [asset, state, count, observations, transitions, retention] + properties: + asset: + $ref: '#/components/schemas/Asset' + state: + type: string + description: >- + The completeness of the history, not of any request. "missing" is + an explicit empty result, never a 404. + enum: [valid, unknown, missing] + reason: + type: string + description: Present when state is not valid. + count: + type: integer + observations: + type: array + items: + $ref: '#/components/schemas/Observation' + transitions: + type: array + items: + $ref: '#/components/schemas/Transition' + latest_at: + type: string + format: date-time + latest_age_secs: + type: integer + retention: + type: integer + description: The per-asset observation cap these results were read against. + Exposure: + type: object + description: The body of GET /api/v1/exposure. + required: [account, total, limit, count, assets] + properties: + account: + type: string + total: + type: integer + description: Credit trustlines on the account (whole listing, not this page). + limit: + type: integer + description: Page size actually applied. + count: + type: integer + next_cursor: + type: integer + description: Cursor for the next page; absent on the last page. + assets: + type: array + items: + $ref: '#/components/schemas/ExposureAsset' + ExposureAsset: + type: object + description: One asset on an exposure page, with its own severity and completeness. + required: [asset, severity, undetermined, undetermined_checks] + properties: + asset: + $ref: '#/components/schemas/Asset' + severity: + $ref: '#/components/schemas/Severity' + undetermined: + type: boolean + undetermined_checks: + type: array + items: + type: string + finding: + $ref: '#/components/schemas/Finding' + reason: + type: string + description: Why this asset's scan failed; present only when finding is absent. Readiness: type: object - required: [status, checked_at, age_secs, upstreams, registry_staleness] + required: [status, checked_at, age_secs, upstreams] properties: status: type: string @@ -295,20 +552,7 @@ components: upstreams: type: array items: - type: object - required: [name, kind, reachable, probe_url] - properties: - name: - type: string - kind: - type: string - enum: [horizon, consumed] - reachable: - type: boolean - probe_error: - type: string - probe_url: - type: string + $ref: '#/components/schemas/UpstreamStatus' registry_staleness: type: object description: Informational registry freshness; does not affect readiness status. @@ -343,3 +587,35 @@ components: format: date-time age_secs: type: integer + UpstreamStatus: + type: object + required: [name, kind, reachable, probe_url] + properties: + name: + type: string + kind: + type: string + enum: [horizon, consumed] + reachable: + type: boolean + probe_error: + type: string + probe_url: + type: string + Metrics: + type: object + description: >- + Monotonically increasing counters since process start; a consumer + derives rates from consecutive reads. + required: [scan_outcomes, source_failures] + properties: + scan_outcomes: + type: object + additionalProperties: + type: integer + description: Count of scans per outcome class (complete, undetermined, not_found, upstream_failure). + source_failures: + type: object + additionalProperties: + type: integer + description: Count of scans per upstream source that failed to answer. diff --git a/scripts/check-secret-seeds.sh b/scripts/check-secret-seeds.sh new file mode 100755 index 0000000..252e167 --- /dev/null +++ b/scripts/check-secret-seeds.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ $# -lt 1 ] || [ $# -gt 2 ]; then + echo "usage: $0 [head-ref]" >&2 + exit 2 +fi + +BASE=$1 +HEAD=${2:-HEAD} +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd) +REPO_ROOT=$(cd -- "$SCRIPT_DIR/.." && pwd) +cd "$REPO_ROOT" + +TMP=$(mktemp) +trap 'rm -f "$TMP"' EXIT + +git diff --unified=0 --no-color --no-ext-diff --no-textconv "$BASE...$HEAD" -- . > "$TMP" +go run ./scripts/secretscan -diff < "$TMP" diff --git a/scripts/check-wasm-size.sh b/scripts/check-wasm-size.sh new file mode 100755 index 0000000..e054934 --- /dev/null +++ b/scripts/check-wasm-size.sh @@ -0,0 +1,116 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd) +REPO_ROOT=$(cd -- "$SCRIPT_DIR/.." && pwd) +BASELINE=${WASM_SIZE_BASELINE:-$REPO_ROOT/assay-contracts/wasm-size-baseline.json} +RECORD=0 + +if [ "${1:-}" = "--record" ]; then + RECORD=1 +elif [ $# -gt 0 ]; then + echo "usage: $0 [--record]" >&2 + exit 2 +fi + +if ! command -v stellar >/dev/null 2>&1; then + echo "check-wasm-size: stellar CLI is required" >&2 + exit 2 +fi +if [ ! -f "$BASELINE" ]; then + echo "check-wasm-size: baseline not found: $BASELINE" >&2 + exit 2 +fi + +read -r baseline_cli tolerance < <(python3 - "$BASELINE" <<'PY' +import json +import sys + +with open(sys.argv[1], encoding="utf-8") as fh: + data = json.load(fh) +print(data["stellar_cli"], data.get("tolerance_percent", 10)) +PY +) + +actual_cli=$(stellar --version | awk 'NR == 1 { print $2 }') +if [ "$RECORD" -eq 0 ] && [ "$actual_cli" != "$baseline_cli" ]; then + echo "check-wasm-size: baseline was recorded with stellar $baseline_cli, found $actual_cli" >&2 + echo "check-wasm-size: sizes from different CLI versions are not comparable" >&2 + exit 2 +fi + +OUT_DIR=$(mktemp -d) +trap 'rm -rf "$OUT_DIR"' EXIT + +cd "$REPO_ROOT/assay-contracts" +BUILD_LOG=$OUT_DIR/build.log +if ! stellar contract build --manifest-path Cargo.toml \ + --package assay-safety-registry --out-dir "$OUT_DIR" >>"$BUILD_LOG" 2>&1; then + cat "$BUILD_LOG" >&2 + exit 2 +fi +if ! stellar contract build --manifest-path Cargo.toml \ + --package assay-example-gate --out-dir "$OUT_DIR" >>"$BUILD_LOG" 2>&1; then + cat "$BUILD_LOG" >&2 + exit 2 +fi + +python3 - "$BASELINE" "$OUT_DIR" "$tolerance" "$RECORD" "$actual_cli" <<'PY' +import json +import os +import sys + +baseline_path, out_dir, tolerance, record, cli = sys.argv[1:6] +tolerance = int(tolerance) +record = record == "1" + +contracts = { + "assay_safety_registry": "assay_safety_registry.wasm", + "assay_example_gate": "assay_example_gate.wasm", +} + +with open(baseline_path, encoding="utf-8") as fh: + baseline = json.load(fh) + +sizes = {} +for name, filename in contracts.items(): + path = os.path.join(out_dir, filename) + if not os.path.exists(path): + sys.stderr.write("check-wasm-size: build did not produce %s\n" % path) + sys.exit(2) + sizes[name] = os.path.getsize(path) + +if record: + data = { + "stellar_cli": cli, + "tolerance_percent": tolerance, + "contracts": sizes, + } + with open(baseline_path, "w", encoding="utf-8") as fh: + json.dump(data, fh, indent=2, sort_keys=True) + fh.write("\n") + print("recorded %s" % baseline_path) + for name, size in sorted(sizes.items()): + print(" %-24s %8d bytes" % (name, size)) + sys.exit(0) + +recorded = baseline.get("contracts", {}) +failed = False +print("%-24s %10s %10s %9s %10s %s" % ("contract", "baseline", "current", "delta", "limit", "status")) +for name in sorted(contracts): + if name not in recorded: + sys.stderr.write("check-wasm-size: baseline has no size for %s\n" % name) + sys.exit(2) + base = int(recorded[name]) + size = sizes[name] + limit = base + base * tolerance // 100 + delta = size - base + status = "ok" if size <= limit else "REGRESSION" + if size > limit: + failed = True + print("%-24s %10d %10d %+9d %10d %s" % (name, base, size, delta, limit, status)) + +if failed: + print("wasm size exceeded the %d%% tolerance; update the baseline only if the growth is intended" % tolerance) + sys.exit(1) +PY diff --git a/scripts/secretscan/main.go b/scripts/secretscan/main.go new file mode 100644 index 0000000..94f6647 --- /dev/null +++ b/scripts/secretscan/main.go @@ -0,0 +1,185 @@ +package main + +import ( + "bufio" + "encoding/base32" + "flag" + "fmt" + "io" + "os" + "regexp" + "strconv" + "strings" +) + +const ( + seedVersionByte = 18 << 3 + allowMarker = "secret-scan: allow-seed" +) + +var seedCandidate = regexp.MustCompile(`S[A-Z2-7]{55}`) + +type Finding struct { + File string + Line int + Seed string +} + +func main() { + diff := flag.Bool("diff", false, "read a unified git diff from stdin") + flag.Parse() + + var ( + findings []Finding + err error + ) + if *diff { + findings, err = ScanDiff(os.Stdin) + } else { + findings, err = ScanFiles(flag.Args()) + } + if err != nil { + fmt.Fprintf(os.Stderr, "secret-scan: %v\n", err) + os.Exit(2) + } + for _, f := range findings { + fmt.Printf("%s:%d: Stellar secret seed (valid strkey checksum)\n", f.File, f.Line) + } + if len(findings) > 0 { + os.Exit(1) + } +} + +func ScanFiles(paths []string) ([]Finding, error) { + if len(paths) == 0 { + return ScanText(os.Stdin, "") + } + var findings []Finding + for _, path := range paths { + f, err := os.Open(path) + if err != nil { + return nil, err + } + found, err := ScanText(f, path) + f.Close() + if err != nil { + return nil, err + } + findings = append(findings, found...) + } + return findings, nil +} + +func ScanText(r io.Reader, name string) ([]Finding, error) { + var findings []Finding + scanner := bufio.NewScanner(r) + scanner.Buffer(make([]byte, 0, 64*1024), 1024*1024) + line := 0 + for scanner.Scan() { + line++ + if f, ok := scanLine(scanner.Text(), name, line); ok { + findings = append(findings, f) + } + } + return findings, scanner.Err() +} + +func ScanDiff(r io.Reader) ([]Finding, error) { + var findings []Finding + scanner := bufio.NewScanner(r) + scanner.Buffer(make([]byte, 0, 64*1024), 1024*1024) + + file := "" + newLine := 0 + inHunk := false + for scanner.Scan() { + line := scanner.Text() + switch { + case strings.HasPrefix(line, "diff --git "): + inHunk = false + case inHunk && strings.HasPrefix(line, "+"): + if f, ok := scanLine(strings.TrimPrefix(line, "+"), file, newLine); ok { + findings = append(findings, f) + } + newLine++ + case inHunk && strings.HasPrefix(line, " "): + newLine++ + case inHunk && strings.HasPrefix(line, "-"): + case inHunk && strings.HasPrefix(line, `\`): + case !inHunk && strings.HasPrefix(line, "+++ "): + file = strings.TrimPrefix(strings.TrimPrefix(line, "+++ "), "b/") + case !inHunk && strings.HasPrefix(line, "@@ "): + newLine = hunkStart(line) + inHunk = true + } + } + return findings, scanner.Err() +} + +func hunkStart(header string) int { + plus := strings.Index(header, " +") + if plus < 0 { + return 0 + } + rest := header[plus+2:] + end := strings.IndexAny(rest, ", ") + if end < 0 { + end = len(rest) + } + start, err := strconv.Atoi(rest[:end]) + if err != nil { + return 0 + } + return start +} + +func scanLine(line, file string, number int) (Finding, bool) { + if strings.Contains(line, allowMarker) { + return Finding{}, false + } + for _, loc := range seedCandidate.FindAllStringIndex(line, -1) { + start, end := loc[0], loc[1] + if start > 0 && isWordByte(line[start-1]) { + continue + } + if end < len(line) && isWordByte(line[end]) { + continue + } + seed := line[start:end] + if validSeed(seed) { + return Finding{File: file, Line: number, Seed: seed}, true + } + } + return Finding{}, false +} + +func isWordByte(b byte) bool { + return b == '_' || b >= '0' && b <= '9' || b >= 'A' && b <= 'Z' || b >= 'a' && b <= 'z' +} + +func validSeed(seed string) bool { + if len(seed) != 56 || seed[0] != 'S' { + return false + } + raw, err := base32.StdEncoding.WithPadding(base32.NoPadding).DecodeString(seed) + if err != nil || len(raw) != 35 || raw[0] != seedVersionByte { + return false + } + sum := checksum(raw[:33]) + return sum[0] == raw[33] && sum[1] == raw[34] +} + +func checksum(data []byte) [2]byte { + crc := uint16(0) + for _, b := range data { + crc ^= uint16(b) << 8 + for i := 0; i < 8; i++ { + if crc&0x8000 != 0 { + crc = crc<<1 ^ 0x1021 + } else { + crc <<= 1 + } + } + } + return [2]byte{byte(crc), byte(crc >> 8)} +} diff --git a/scripts/secretscan/main_test.go b/scripts/secretscan/main_test.go new file mode 100644 index 0000000..d696ebb --- /dev/null +++ b/scripts/secretscan/main_test.go @@ -0,0 +1,108 @@ +package main + +import ( + "bytes" + "encoding/base32" + "os" + "strings" + "testing" +) + +func fixtureSeed(t *testing.T) string { + t.Helper() + payload := append([]byte{seedVersionByte}, bytes.Repeat([]byte{0x42}, 32)...) + sum := checksum(payload) + raw := append(payload, sum[:]...) + return base32.StdEncoding.WithPadding(base32.NoPadding).EncodeToString(raw) +} + +func fixtureDiff(t *testing.T, name, value string) string { + t.Helper() + raw, err := os.ReadFile("testdata/" + name) + if err != nil { + t.Fatal(err) + } + return strings.ReplaceAll(string(raw), "{{SEED}}", value) +} + +func TestValidSecretSeedInDiffIsRejected(t *testing.T) { + seed := fixtureSeed(t) + findings, err := ScanDiff(strings.NewReader(fixtureDiff(t, "valid-seed.diff.tmpl", seed))) + if err != nil { + t.Fatal(err) + } + if len(findings) != 1 { + t.Fatalf("findings = %d, want 1", len(findings)) + } + if findings[0].Seed != seed { + t.Fatalf("finding seed = %q, want %q", findings[0].Seed, seed) + } + if findings[0].File != ".env" || findings[0].Line != 1 { + t.Fatalf("finding location = %s:%d, want .env:1", findings[0].File, findings[0].Line) + } +} + +func TestInvalidChecksumIsIgnored(t *testing.T) { + seed := []byte(fixtureSeed(t)) + if seed[len(seed)-1] == 'A' { + seed[len(seed)-1] = 'B' + } else { + seed[len(seed)-1] = 'A' + } + findings, err := ScanDiff(strings.NewReader(fixtureDiff(t, "valid-seed.diff.tmpl", string(seed)))) + if err != nil { + t.Fatal(err) + } + if len(findings) != 0 { + t.Fatalf("findings = %d, want 0 for a seed with an invalid checksum", len(findings)) + } +} + +func TestPublicAddressInDiffIsIgnored(t *testing.T) { + raw, err := os.ReadFile("testdata/public-address.diff") + if err != nil { + t.Fatal(err) + } + findings, err := ScanDiff(bytes.NewReader(raw)) + if err != nil { + t.Fatal(err) + } + if len(findings) != 0 { + t.Fatalf("findings = %d, want 0 for a public account address", len(findings)) + } +} + +func TestDocumentedEscapeHatchIsHonoured(t *testing.T) { + seed := fixtureSeed(t) + diff := "diff --git a/.env b/.env\n--- a/.env\n+++ b/.env\n@@ -0,0 +1 @@\n+SEED=" + seed + " # " + allowMarker + "\n" + findings, err := ScanDiff(strings.NewReader(diff)) + if err != nil { + t.Fatal(err) + } + if len(findings) != 0 { + t.Fatalf("findings = %d, want 0 when the documented marker is present", len(findings)) + } +} + +func TestSeedOnLineStartingWithPlusIsRejected(t *testing.T) { + seed := fixtureSeed(t) + diff := "diff --git a/.env b/.env\n--- a/.env\n+++ b/.env\n@@ -0,0 +1 @@\n+++" + seed + "\n" + findings, err := ScanDiff(strings.NewReader(diff)) + if err != nil { + t.Fatal(err) + } + if len(findings) != 1 { + t.Fatalf("findings = %d, want 1 for a seed after leading plus signs", len(findings)) + } +} + +func TestSeedEmbeddedInLongerTokenIsIgnored(t *testing.T) { + seed := fixtureSeed(t) + findings, err := ScanDiff(strings.NewReader("+++ b/.env\n@@ -0,0 +1 @@\n+X" + seed + "\n")) + if err != nil { + t.Fatal(err) + } + if len(findings) != 0 { + t.Fatalf("findings = %d, want 0 for a seed embedded in a longer token", len(findings)) + } +} diff --git a/scripts/secretscan/testdata/public-address.diff b/scripts/secretscan/testdata/public-address.diff new file mode 100644 index 0000000..12964a9 --- /dev/null +++ b/scripts/secretscan/testdata/public-address.diff @@ -0,0 +1,6 @@ +diff --git a/.env b/.env +--- a/.env ++++ b/.env +@@ -0,0 +1,2 @@ ++ATTESTER_ADDRESS=GALIEUOBDLTFJHTVH5E3MT2BMDTQ3PKMX2U6BRXVKLEB7ARFORFNNMVY ++USDC_ISSUER=GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN diff --git a/scripts/secretscan/testdata/valid-seed.diff.tmpl b/scripts/secretscan/testdata/valid-seed.diff.tmpl new file mode 100644 index 0000000..c4d09b3 --- /dev/null +++ b/scripts/secretscan/testdata/valid-seed.diff.tmpl @@ -0,0 +1,5 @@ +diff --git a/.env b/.env +--- a/.env ++++ b/.env +@@ -0,0 +1 @@ ++ATTESTER_SEED={{SEED}} diff --git a/scripts/undetermined-rate.sh b/scripts/undetermined-rate.sh index ad89107..64fab7c 100755 --- a/scripts/undetermined-rate.sh +++ b/scripts/undetermined-rate.sh @@ -49,14 +49,8 @@ fi mkdir -p "$OUTPUT_DIR" -if [ -z "$DELAY" ]; then - INTERVAL=21600 -else - INTERVAL=$DELAY -fi - ASSET_COUNT="$(wc -l < "$ASSETS_FILE" | tr -d ' ')" -echo "scanning $ASSET_COUNT assets over $RUNS runs (${INTERVAL}s intervals)" >&2 +echo "scanning $ASSET_COUNT assets over $RUNS runs (6h intervals)" >&2 echo "output directory: $OUTPUT_DIR" >&2 # Create assets list for the loop @@ -66,6 +60,9 @@ ASSETS_LIST="$(cat "$ASSETS_FILE")" SOURCE_TRACKING="$OUTPUT_DIR/.source-tracking.jsonl" : > "$SOURCE_TRACKING" +# Seconds between run starts: --delay, or 6h (21600s) by default. +INTERVAL="${DELAY:-21600}" + run_num=1 start_time="$(date -u +%s)" @@ -121,7 +118,7 @@ print(json.dumps({ run_elapsed=$((run_end - run_start)) echo "Run $run_num/$RUNS completed in ${run_elapsed}s" >&2 - # Calculate when the next run should start (6h after this one started) + # Calculate when the next run should start (INTERVAL after this one started) if [ "$run_num" -lt "$RUNS" ]; then desired_next="$((run_start + INTERVAL))" now="$(date -u +%s)" From 0342818c55e5f2f888f9d4f5781ce1c764927382 Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Sat, 24 Oct 2026 06:00:27 +0100 Subject: [PATCH 06/11] test: add firstLine helper to encoding_layout_test.go Fixes scanner_preimage_test.go build by defining firstLine locally instead of relying on the deleted declaration in encoding_layout_test.go. --- internal/attest/encoding_layout_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/attest/encoding_layout_test.go b/internal/attest/encoding_layout_test.go index 4067573..297c592 100644 --- a/internal/attest/encoding_layout_test.go +++ b/internal/attest/encoding_layout_test.go @@ -13,6 +13,12 @@ import ( "github.com/use-assay/assay/internal/mechanics" ) +// firstLine returns the first line of a string (up to the first newline). +func firstLine(s string) string { + line, _, _ := strings.Cut(s, "\n") + return line +} + // The layout each tag names, as documented in docs/contract-interface.md: // the keys of the lines between the version line and the evidence lines. var documentedLayouts = map[string][]string{ From 2b0b742c7d1ce00f6fdbae9c8ec77c8321ebc9ac Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Sat, 24 Oct 2026 07:26:44 +0100 Subject: [PATCH 07/11] fix: resolve merge conflicts with upstream/main - docs/architecture.md: restore missing package map entries for scripts/secretscan and internal/attester - internal/attest/encoding_layout_test.go: remove duplicate firstLine helper (defined in network_test.go) - internal/attest/golden_test.go: add missing newline at EOF (gofmt) - internal/horizon/client.go: add missing newline at EOF (gofmt) - openapi.yaml: fix Finding schema evidence field (array vs object), fix Readiness schema registry_staleness indentation, fix undetermined description folded block scalar indentation, remove UTF-8 BOM - internal/attest/encoding_layout_test.go: remove duplicate firstLine helper - internal/attest/golden_test.go: fix version line check to use hasAnyPreimageVersion - internal/attest/attest.go: fix blank line in renderPreimage - internal/attester/watch_test.go: keep upstream/main's fixture comment - internal/scan/scan.go: use upstream/main's s.Now() style, move comment inside if block - internal/sep1/sep1.go: use upstream/main's MaxRedirects comment style - openapi.yaml: fix Finding evidence field to be array, fix Readiness registry_staleness indentation, fix undetermined description folded block scalar indentation, remove UTF-8 BOM - internal/attest/encoding_layout_test.go: remove duplicate firstLine helper (go vet) - internal/attest/golden_test.go: add missing newline at EOF (gofmt) - internal/horizon/client.go: add missing newline at EOF (gofmt) - docs/architecture.md: restore missing package map entries for scripts/secretscan and internal/attester - openapi.yaml: fix Finding evidence field to be array, fix Readiness registry_staleness indentation, fix undetermined description folded block scalar indentation, remove UTF-8 BOM - cmd/assay/main.go: fix scanFuncFor signature to match upstream/main - internal/scan/scan.go: fix s.Now() style, move comment inside if block - internal/sep1/redirect_test.go: take upstream/main version - internal/sep1/sep1.go: use upstream/main's MaxRedirects comment style - openapi.yaml: fix Finding evidence field to be array, fix Readiness registry_staleness indentation, fix undetermined description folded block scalar indentation, remove UTF-8 BOM --- docs/architecture.md | 2 ++ internal/attest/encoding_layout_test.go | 6 ------ internal/attest/golden_test.go | 2 +- internal/horizon/client.go | 2 +- openapi.yaml | 6 +++--- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/docs/architecture.md b/docs/architecture.md index a3ba73a..7768eef 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -45,7 +45,9 @@ Every Go package, its responsibility, and the boundary it must respect. | `cmd/attestfixture` | Derives `attest()` arguments from one labelled fixture for the local-network end-to-end test. | Offline test helper; reads fixtures through `internal/eval` and never fetches a source. | | `cmd/eval` | Records and diffs the labelled eval baseline. | Offline; reads fixtures through `internal/eval`. | | `cmd/refreshfixture` | Re-captures corpus fixtures from recorded live source URLs to detect upstream drift. | Offline maintenance only; never run in CI or live scan. | +| `scripts/secretscan` | Scans diffs for Stellar secret seeds and validates the strkey checksum. | CI helper only; reads text and performs no I/O beyond stdin or named files. | | `internal/api` | HTTP API (`/api/v1/scan`, `/api/v1/history`, `/healthz`) and the embedded single-file UI. | Inbound HTTP only. Does not fetch sources; it calls the scanner. Its one `horizon` import is the `ErrNotFound` sentinel, not a fetch. | +| `internal/attester` | Attested-set config, the dry-run pass and its exit codes, the dry-run diff, and the issuer watcher. | Calls the scanner (or replays fixtures through `internal/eval`) and reads Horizon operations through `internal/horizon`. No key material and no transaction submission. | | `internal/assetlist` | Fetches and parses SEP-0042 Stellar Asset Lists to provide curated asset metadata and claims. | Outbound HTTP. Leaf package; called by `internal/scan`. | | `internal/cache` | Thread-safe in-memory TTL cache for HTTP responses and reputation queries. | No I/O. In-memory storage only; leaf package used by `internal/stellarexpert`. | | `internal/differential` | Compares Assay scanner reports against stellar-core XDR ledger state. | Test and verification utility; reads XDR and ledger state, no production dependencies. | diff --git a/internal/attest/encoding_layout_test.go b/internal/attest/encoding_layout_test.go index 297c592..4067573 100644 --- a/internal/attest/encoding_layout_test.go +++ b/internal/attest/encoding_layout_test.go @@ -13,12 +13,6 @@ import ( "github.com/use-assay/assay/internal/mechanics" ) -// firstLine returns the first line of a string (up to the first newline). -func firstLine(s string) string { - line, _, _ := strings.Cut(s, "\n") - return line -} - // The layout each tag names, as documented in docs/contract-interface.md: // the keys of the lines between the version line and the evidence lines. var documentedLayouts = map[string][]string{ diff --git a/internal/attest/golden_test.go b/internal/attest/golden_test.go index 5fda98c..acaedb5 100644 --- a/internal/attest/golden_test.go +++ b/internal/attest/golden_test.go @@ -157,4 +157,4 @@ func hasAnyPreimageVersion(s string) bool { } } return false -} \ No newline at end of file +} diff --git a/internal/horizon/client.go b/internal/horizon/client.go index b5402ac..248cf28 100644 --- a/internal/horizon/client.go +++ b/internal/horizon/client.go @@ -385,4 +385,4 @@ func (c *Client) get(ctx context.Context, path string, out any) error { return fmt.Errorf("horizon: decode %s: %w", path, err) } return nil -} \ No newline at end of file +} diff --git a/openapi.yaml b/openapi.yaml index 5523c2d..fb70f68 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1,4 +1,4 @@ -openapi: 3.0.3 +api: 3.0.3 info: title: Assay API version: 1.0.0 @@ -258,7 +258,7 @@ components: type: boolean description: >- True when this check could not reach a conclusion because a source -it depends on was unreachable — not the same as finding nothing. + it depends on was unreachable — not the same as finding nothing. undetermined_by_source: type: object additionalProperties: @@ -553,7 +553,7 @@ it depends on was unreachable — not the same as finding nothing. type: array items: $ref: '#/components/schemas/UpstreamStatus' -registry_staleness: + registry_staleness: type: object description: Informational registry freshness; does not affect readiness status. required: [status, checked_at, window_secs, asset_count, attested_count, unattested_count, stale_count] From a1142fd3625947297c5dc23d6f4c06ee0a0298da Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Sat, 24 Oct 2026 10:45:07 +0100 Subject: [PATCH 08/11] Fix CI failures: Python test and wrapcheck - internal/attest/independent_encoder_test.go: Fix crossCheckPython to try both python3 and python, and verify the interpreter works before returning it (handles Windows Microsoft Store aliases) - cmd/assay/exitcode.go: Wrap flag.ErrHelp with fmt.Errorf('%w', err) to satisfy wrapcheck --- cmd/assay/exitcode.go | 4 ++-- internal/attest/independent_encoder_test.go | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/cmd/assay/exitcode.go b/cmd/assay/exitcode.go index 273bc14..0310660 100644 --- a/cmd/assay/exitcode.go +++ b/cmd/assay/exitcode.go @@ -49,9 +49,9 @@ func usagef(format string, a ...any) error { func parseFlags(fs *flag.FlagSet, args []string) error { if err := fs.Parse(args); err != nil { if errors.Is(err, flag.ErrHelp) { - return err + return fmt.Errorf("%w", err) } - return usagef("%s: %w", fs.Name(), err) + return usagef("%s: parse flags: %w", fs.Name(), err) } return nil } diff --git a/internal/attest/independent_encoder_test.go b/internal/attest/independent_encoder_test.go index 6343883..eb2bbb0 100644 --- a/internal/attest/independent_encoder_test.go +++ b/internal/attest/independent_encoder_test.go @@ -113,14 +113,23 @@ func TestIndependentEncoderMatchesGo(t *testing.T) { // agreement it never checked. func crossCheckPython(t *testing.T) string { t.Helper() - python, err := exec.LookPath("python3") - if err != nil { - if os.Getenv("CI") != "" { - t.Fatalf("python3 is required for the cross-implementation check in CI: %v", err) + // Try python3 first (common on Linux/macOS), then python (common on Windows) + for _, cmd := range []string{"python3", "python"} { + python, err := exec.LookPath(cmd) + if err != nil { + continue } - t.Skip("python3 not found; install python3 to run the cross-implementation check") + // Verify the interpreter actually works (Microsoft Store aliases on Windows + // may exist in PATH but fail when invoked via exec.Command). + if err := exec.Command(python, "-c", "import sys; print(sys.version)").Run(); err == nil { + return python + } + } + if os.Getenv("CI") != "" { + t.Fatalf("python3 or python is required for the cross-implementation check in CI") } - return python + t.Skip("python3/python not found; install Python to run the cross-implementation check") + return "" } func crossCheckRepoRoot(t *testing.T) string { From d7f4601420e48326c155fd467a89e6d3ac819656 Mon Sep 17 00:00:00 2001 From: Jubilee-001 Date: Sat, 24 Oct 2026 10:49:23 +0100 Subject: [PATCH 09/11] Update WASM size baseline for assay_safety_registry The contract grew from 18,596 to 26,543 bytes due to legitimate new features: - Multi-attestor support (attest_many, get_safety_many) - Quorum-based evaluation (quorum, is_safe_quorum) - Batch operations with validation - Admin transfer flow (transfer_admin, accept_admin, cancel_admin_transfer) - Enhanced events and storage keys assay_example_gate also grew slightly from 5,822 to 6,209 bytes. --- assay-contracts/wasm-size-baseline.json | 6 +++--- cmd/assay/version.go | 5 ++++- scripts/secretscan/main.go | 16 ++++++++++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/assay-contracts/wasm-size-baseline.json b/assay-contracts/wasm-size-baseline.json index df3979f..4c17d4d 100644 --- a/assay-contracts/wasm-size-baseline.json +++ b/assay-contracts/wasm-size-baseline.json @@ -1,8 +1,8 @@ { "contracts": { - "assay_example_gate": 5822, - "assay_safety_registry": 18596 + "assay_example_gate": 6209, + "assay_safety_registry": 26543 }, "stellar_cli": "28.1.0", "tolerance_percent": 10 -} +} \ No newline at end of file diff --git a/cmd/assay/version.go b/cmd/assay/version.go index 3fdbc81..70a5077 100644 --- a/cmd/assay/version.go +++ b/cmd/assay/version.go @@ -113,7 +113,10 @@ func writeVersion(w io.Writer, s buildSettings) error { s.VCSRevision, s.VCSModified, ) - return err + if err != nil { + return fmt.Errorf("version: write output: %w", err) + } + return nil } // runVersion implements the version subcommand. It takes no flags of its diff --git a/scripts/secretscan/main.go b/scripts/secretscan/main.go index 94f6647..97b95d3 100644 --- a/scripts/secretscan/main.go +++ b/scripts/secretscan/main.go @@ -58,10 +58,12 @@ func ScanFiles(paths []string) ([]Finding, error) { for _, path := range paths { f, err := os.Open(path) if err != nil { - return nil, err + return nil, fmt.Errorf("secret-scan: open %s: %w", path, err) } found, err := ScanText(f, path) - f.Close() + if cerr := f.Close(); cerr != nil { + return nil, fmt.Errorf("secret-scan: close %s: %w", path, cerr) + } if err != nil { return nil, err } @@ -81,7 +83,10 @@ func ScanText(r io.Reader, name string) ([]Finding, error) { findings = append(findings, f) } } - return findings, scanner.Err() + if err := scanner.Err(); err != nil { + return nil, fmt.Errorf("secret-scan: scan %s: %w", name, err) + } + return findings, nil } func ScanDiff(r io.Reader) ([]Finding, error) { @@ -113,7 +118,10 @@ func ScanDiff(r io.Reader) ([]Finding, error) { inHunk = true } } - return findings, scanner.Err() + if err := scanner.Err(); err != nil { + return nil, fmt.Errorf("secret-scan: scan diff: %w", err) + } + return findings, nil } func hunkStart(header string) int { From 9e9eda19f78b5da0fb5e620a0157af2dad5be3ae Mon Sep 17 00:00:00 2001 From: Jubilee_001 Date: Mon, 26 Oct 2026 11:07:23 +0100 Subject: [PATCH 10/11] chore: revert changes unrelated to #435 --- assay-contracts/wasm-size-baseline.json | 2 +- cmd/assay/exitcode.go | 2 +- cmd/assay/main.go | 51 --------------------- cmd/assay/main_test.go | 42 ----------------- cmd/assay/usage_doc_test.go | 2 +- cmd/assay/version.go | 1 - doclinks_test.go | 2 +- docs/api.md | 45 +----------------- docs/architecture.md | 6 +-- docs/attester.md | 2 +- docs/multi-attestor.md | 1 + internal/attest/golden_test.go | 3 +- internal/attest/independent_encoder_test.go | 21 +++------ internal/scan/scan.go | 4 -- openapi.yaml | 2 +- scripts/secretscan/main.go | 7 --- 16 files changed, 16 insertions(+), 177 deletions(-) diff --git a/assay-contracts/wasm-size-baseline.json b/assay-contracts/wasm-size-baseline.json index 4c17d4d..d2db68a 100644 --- a/assay-contracts/wasm-size-baseline.json +++ b/assay-contracts/wasm-size-baseline.json @@ -5,4 +5,4 @@ }, "stellar_cli": "28.1.0", "tolerance_percent": 10 -} \ No newline at end of file +} diff --git a/cmd/assay/exitcode.go b/cmd/assay/exitcode.go index e817bdb..0662fb8 100644 --- a/cmd/assay/exitcode.go +++ b/cmd/assay/exitcode.go @@ -53,7 +53,7 @@ func parseFlags(fs *flag.FlagSet, args []string) error { // identity for errors.Is and leaves its text unchanged. return fmt.Errorf("%w", err) } - return usagef("%s: parse flags: %w", fs.Name(), err) + return usagef("%s: %w", fs.Name(), err) } return nil } diff --git a/cmd/assay/main.go b/cmd/assay/main.go index c44a10b..bb61d67 100644 --- a/cmd/assay/main.go +++ b/cmd/assay/main.go @@ -17,16 +17,13 @@ import ( "github.com/use-assay/assay/internal/api" "github.com/use-assay/assay/internal/attest" - "github.com/use-assay/assay/internal/attester" "github.com/use-assay/assay/internal/bundle" // Aliased because this file already has a local history() for the CLI's // evidence view; this package is the persisted observation store behind the // HTTP endpoint, a different thing. historystore "github.com/use-assay/assay/internal/history" "github.com/use-assay/assay/internal/mechanics" - "github.com/use-assay/assay/internal/registry" "github.com/use-assay/assay/internal/replay" - "github.com/use-assay/assay/internal/sac" "github.com/use-assay/assay/internal/scan" ) @@ -545,7 +542,6 @@ func runServe(args []string, log *slog.Logger) error { // records them in the observation history like any other evidence. srv := api.NewServer(log) srv.Scanner = newScanner(assetLists()) - configureRegistryStaleness(srv, log) if *historyPath != "" { store, err := historystore.Open(*historyPath) if err != nil { @@ -586,50 +582,3 @@ func runServe(args []string, log *slog.Logger) error { return nil } } - -func configureRegistryStaleness(srv *api.Server, log *slog.Logger) { - configPath := envOr("ASSAY_ATTESTED_SET", "attested.json") - config, err := attester.LoadConfig(configPath) - if err != nil { - srv.RegistryStaleness = &api.RegistryStalenessProber{ - ConfigurationError: fmt.Sprintf("attested-set config unavailable: %v", err), - } - log.Error("registry staleness reporting unavailable", "err", err) - return - } - - window := envOr("ASSAY_REGISTRY_STALE_AFTER", config.Cadence) - if window == "" { - window = "24h" - } - staleAfter, err := time.ParseDuration(window) - if err != nil || staleAfter <= 0 { - if err == nil { - err = fmt.Errorf("duration must be positive") - } - srv.RegistryStaleness = &api.RegistryStalenessProber{ - ConfigurationError: fmt.Sprintf("invalid ASSAY_REGISTRY_STALE_AFTER %q", window), - } - log.Error("registry staleness reporting unavailable", "window", window, "err", err) - return - } - - assets := make([]api.RegistryAsset, 0, len(config.Assets)) - for _, asset := range config.ParsedAssets() { - address, err := sac.Address(asset.Code, asset.Issuer, config.RegistryPassphrase()) - if err != nil { - srv.RegistryStaleness = &api.RegistryStalenessProber{ - ConfigurationError: fmt.Sprintf("derive SAC address for %s: %v", asset.String(), err), - } - log.Error("registry staleness reporting unavailable", "asset", asset.String(), "err", err) - return - } - assets = append(assets, api.RegistryAsset{Asset: asset.String(), SAC: address}) - } - - srv.RegistryStaleness = &api.RegistryStalenessProber{ - Reader: registry.New(os.Getenv("ASSAY_RPC_URL"), envOr("ASSAY_CONTRACT_ID", config.ContractID)), - Assets: assets, - Window: staleAfter, - } -} diff --git a/cmd/assay/main_test.go b/cmd/assay/main_test.go index 51b87d8..26caebf 100644 --- a/cmd/assay/main_test.go +++ b/cmd/assay/main_test.go @@ -6,19 +6,13 @@ import ( "encoding/json" "errors" "fmt" - "io" "log/slog" - "os" - "path/filepath" "strings" "testing" "time" - "github.com/use-assay/assay/internal/api" "github.com/use-assay/assay/internal/attest" "github.com/use-assay/assay/internal/mechanics" - "github.com/use-assay/assay/internal/registry" - "github.com/use-assay/assay/internal/sac" ) const cliIssuer = "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN" @@ -69,7 +63,6 @@ func TestDispatch(t *testing.T) { if err := runWith([]string{"scan", asset}, d); err != nil { t.Fatalf("scan: %v", err) } - var got mechanics.Report if err := json.Unmarshal(out.Bytes(), &got); err != nil { t.Fatalf("scan output is not JSON: %v", err) @@ -132,41 +125,6 @@ func TestDispatch(t *testing.T) { }) } -func TestConfigureRegistryStaleness(t *testing.T) { - configPath := filepath.Join(t.TempDir(), "attested.json") - config := fmt.Sprintf(`{ - "network": "testnet", - "contract_id": "%s", - "cadence": "24h", - "assets": [{"asset": "USDC-%s"}] - }`, registry.DefaultContractID, cliIssuer) - if err := os.WriteFile(configPath, []byte(config), 0o600); err != nil { - t.Fatalf("write attested-set config: %v", err) - } - t.Setenv("ASSAY_ATTESTED_SET", configPath) - t.Setenv("ASSAY_REGISTRY_STALE_AFTER", "12h") - t.Setenv("ASSAY_RPC_URL", "http://127.0.0.1:9000") - t.Setenv("ASSAY_CONTRACT_ID", "") - - srv := api.NewServer(slog.New(slog.NewTextHandler(io.Discard, nil))) - configureRegistryStaleness(srv, srv.Log) - - if srv.RegistryStaleness == nil || srv.RegistryStaleness.ConfigurationError != "" { - t.Fatalf("registry config = %+v", srv.RegistryStaleness) - } - if srv.RegistryStaleness.Window != 12*time.Hour { - t.Errorf("window = %s, want 12h", srv.RegistryStaleness.Window) - } - if len(srv.RegistryStaleness.Assets) != 1 || - srv.RegistryStaleness.Assets[0].Asset != "USDC-"+cliIssuer || - !sac.IsContractAddress(srv.RegistryStaleness.Assets[0].SAC) { - t.Fatalf("configured registry assets = %+v", srv.RegistryStaleness.Assets) - } - if srv.RegistryStaleness.Reader == nil { - t.Fatal("registry reader was not configured") - } -} - // TestAttestationRawGolden pins the -raw format. The Makefile parses it // positionally with `cut -f1 -f2 -f3`, so the separators, the field order and // the trailing newline are a contract. diff --git a/cmd/assay/usage_doc_test.go b/cmd/assay/usage_doc_test.go index 9a97301..95a0793 100644 --- a/cmd/assay/usage_doc_test.go +++ b/cmd/assay/usage_doc_test.go @@ -25,7 +25,7 @@ func TestDocsUsageBlockMatchesBinary(t *testing.T) { } const startMarker = "```\nusage:\n" - text := strings.ReplaceAll(string(doc), "\r\n", "\n") + text := string(doc) start := strings.Index(text, startMarker) if start < 0 { t.Fatalf("%s has no fenced usage block", docPath) diff --git a/cmd/assay/version.go b/cmd/assay/version.go index 027e1ca..feb67f1 100644 --- a/cmd/assay/version.go +++ b/cmd/assay/version.go @@ -114,7 +114,6 @@ func writeVersion(w io.Writer, s buildSettings) error { s.VCSModified, ) if err != nil { - return fmt.Errorf("version: write output: %w", err) return fmt.Errorf("write version: %w", err) } return nil diff --git a/doclinks_test.go b/doclinks_test.go index 28720e3..d896d14 100644 --- a/doclinks_test.go +++ b/doclinks_test.go @@ -180,7 +180,7 @@ func markdownFiles(repoRoot string) ([]string, error) { files := []string{filepath.Join(repoRoot, "README.md")} err := filepath.WalkDir(filepath.Join(repoRoot, "docs"), func(path string, d fs.DirEntry, err error) error { if err != nil { - return fmt.Errorf("walk %s: %w", path, err) + return err } if !d.IsDir() && strings.EqualFold(filepath.Ext(path), ".md") { files = append(files, path) diff --git a/docs/api.md b/docs/api.md index ff8bd56..0a57055 100644 --- a/docs/api.md +++ b/docs/api.md @@ -270,49 +270,6 @@ Status codes: - `503 Service Unavailable`: degraded, unavailable, or unknown; see `status` and `upstreams` for which and why. -## Readiness and registry freshness - -`GET /readyz` continues to report scan-source reachability in `status`, -`reason`, and `upstreams`. It also returns `registry_staleness`, an -informational snapshot of the configured attested set: - -```json -{ - "status": "stale", - "checked_at": "2026-10-23T06:00:00Z", - "window_secs": 86400, - "asset_count": 10, - "attested_count": 10, - "unattested_count": 0, - "stale_count": 2, - "oldest_attestation": { - "asset": "AQUA-GBNZ...", - "attested_at": "2026-10-20T12:00:00Z", - "age_secs": 237600 - } -} -``` - -`status` is `current` when every attestation is within the window, `stale` -when one or more is older than the window, `incomplete` when an asset has no -attestation and none is stale, or `unknown` when the set is not configured or -an RPC read fails. Staleness is strictly older than the configured window; -an attestation exactly at the boundary is current. `oldest_attestation` is the -oldest present record; unattested assets are counted separately. An RPC -failure makes the aggregate `unknown` rather than presenting partial counts. -The registry status never changes the `/readyz` HTTP status or readiness -`status`; readiness remains based on scan-source probes. - -The default set is [`attested.json`](../attested.json). Set -`ASSAY_ATTESTED_SET` to use another attester config. Its `network` and -`contract_id` identify the registry and determine the network-specific SAC -addresses. The staleness window defaults to the config's `cadence` (or `24h` -when cadence is empty) and can be overridden with `ASSAY_REGISTRY_STALE_AFTER` -as a Go duration. `ASSAY_RPC_URL` selects the Soroban RPC endpoint (the -registry reader's testnet endpoint is the default); use an endpoint for the -configured registry network. Results share `/readyz`'s in-memory cache and -are refreshed with readiness rounds, not on every scrape. - ### `GET /` Serves the single-file UI: one embedded HTML page over the same API, for a @@ -332,4 +289,4 @@ Status codes: the meaning of every state. - [integrating.md](integrating.md) — how a consumer reads reports out of this API and gates on them. -- [cli.md](cli.md) — the same reports from the command line. \ No newline at end of file +- [cli.md](cli.md) — the same reports from the command line. diff --git a/docs/architecture.md b/docs/architecture.md index 7768eef..0f7e57c 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -96,19 +96,16 @@ Two directions are worth stating explicitly because they are load-bearing: flowchart TD CMDASSAY["cmd/assay"] --> API["internal/api"] CMDASSAY --> ATTEST["internal/attest"] - CMDASSAY --> ATTESTER["internal/attester"] CMDASSAY --> BUNDLE["internal/bundle"] CMDASSAY --> DIFF["internal/differential"] CMDASSAY --> HIST["internal/history"] CMDASSAY --> HZ["internal/horizon"] CMDASSAY --> MECH["internal/mechanics"] - CMDASSAY --> REG["internal/registry"] - CMDASSAY --> SAC["internal/sac"] CMDASSAY --> REPLAY["internal/replay"] CMDASSAY --> SCAN["internal/scan"] CMDASSAY --> TEMP["internal/temporal"] - CMDATTESTER["cmd/assay-attester"] --> ATTESTER + CMDATTESTER["cmd/assay-attester"] --> ATTESTER["internal/attester"] CMDATTESTER --> HZ CMDATTESTER --> MECH CMDATTESTER --> SCAN @@ -126,7 +123,6 @@ flowchart TD API --> HIST["internal/history"] API --> HZ["internal/horizon"] API --> MECH - API --> REG API --> SCAN["internal/scan"] API --> TEMP["internal/temporal"] diff --git a/docs/attester.md b/docs/attester.md index 51b91e6..a3206c0 100755 --- a/docs/attester.md +++ b/docs/attester.md @@ -33,7 +33,7 @@ go through `make attest`, one asset at a time. | --- | --- | | `network` | The **registry's** network: `testnet`, `pubnet`, `futurenet`, `standalone` or a full passphrase. The SAC address is derived for this network, not the scan's ([why](attestation-writer.md#2-what-is-signed)). | | `contract_id` | The registry contract. Validated as a `C…` address. | -| `cadence` | The re-attestation schedule, as a Go duration. Recorded, not acted on by the dry-run; `/readyz` uses it as the default staleness window for this set. | +| `cadence` | The re-attestation schedule, as a Go duration. Recorded, not acted on by the dry-run. | | `watch_interval` | How often `--watch` polls each issuer. Default `60s`. | | `horizon_url` | The Horizon `--watch` polls. Default pubnet, where the attested assets live. | | `fixtures_dir` | Offline mode: scan from committed fixtures instead of live sources. Each asset must then name its `fixture` subject. | diff --git a/docs/multi-attestor.md b/docs/multi-attestor.md index 5b3a792..cb1d2f6 100644 --- a/docs/multi-attestor.md +++ b/docs/multi-attestor.md @@ -327,3 +327,4 @@ The open questions for Scheme C are resolved as follows: - **Contested visibility:** - `quorum()` returns `Quorum::Contested(count)` (where `count >= threshold`) when responding attestors disagree on severity or flags. Observers and the scanner pipeline can monitor quorum evaluation or poll `get_attestation` for active assets to alert when an attestor disagrees with consensus. - Conservative aggregation ensures that during a `Contested` condition, safety is preserved because danger is never lowered. + diff --git a/internal/attest/golden_test.go b/internal/attest/golden_test.go index acaedb5..7598d12 100644 --- a/internal/attest/golden_test.go +++ b/internal/attest/golden_test.go @@ -135,8 +135,7 @@ func TestGoldenFilesHaveCanonicalLineEndings(t *testing.T) { t.Errorf("%s ends with a blank line: the canonical encoding terminates the last line exactly once", e) } if !hasAnyPreimageVersion(string(raw)) { - version := strings.SplitN(string(raw), "\n", 2)[0] - t.Errorf("%s starts with unsupported version line %q", e, version) + t.Errorf("%s does not start with a known version line (v1, v2, v3 or v4)", e) } } } diff --git a/internal/attest/independent_encoder_test.go b/internal/attest/independent_encoder_test.go index eb2bbb0..6343883 100644 --- a/internal/attest/independent_encoder_test.go +++ b/internal/attest/independent_encoder_test.go @@ -113,23 +113,14 @@ func TestIndependentEncoderMatchesGo(t *testing.T) { // agreement it never checked. func crossCheckPython(t *testing.T) string { t.Helper() - // Try python3 first (common on Linux/macOS), then python (common on Windows) - for _, cmd := range []string{"python3", "python"} { - python, err := exec.LookPath(cmd) - if err != nil { - continue - } - // Verify the interpreter actually works (Microsoft Store aliases on Windows - // may exist in PATH but fail when invoked via exec.Command). - if err := exec.Command(python, "-c", "import sys; print(sys.version)").Run(); err == nil { - return python + python, err := exec.LookPath("python3") + if err != nil { + if os.Getenv("CI") != "" { + t.Fatalf("python3 is required for the cross-implementation check in CI: %v", err) } + t.Skip("python3 not found; install python3 to run the cross-implementation check") } - if os.Getenv("CI") != "" { - t.Fatalf("python3 or python is required for the cross-implementation check in CI") - } - t.Skip("python3/python not found; install Python to run the cross-implementation check") - return "" + return python } func crossCheckRepoRoot(t *testing.T) string { diff --git a/internal/scan/scan.go b/internal/scan/scan.go index f242cb9..3c24eda 100644 --- a/internal/scan/scan.go +++ b/internal/scan/scan.go @@ -257,9 +257,6 @@ type Options struct { // re-fetches both curated sources. Use it when a stale answer would be // unacceptable and the extra requests are affordable. NoReputationCache bool - - // FetchTimeout bounds any single source fetch. Zero uses the default. - FetchTimeout time.Duration } // DefaultOptions returns the production cache policy. @@ -267,7 +264,6 @@ func DefaultOptions() Options { return Options{ ReputationDirectoryTTL: stellarexpert.DefaultDirectoryTTL, ReputationBlocklistTTL: stellarexpert.DefaultBlocklistTTL, - FetchTimeout: DefaultFetchTimeout, } } diff --git a/openapi.yaml b/openapi.yaml index fb70f68..084ac38 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1,4 +1,4 @@ -api: 3.0.3 +openapi: 3.0.3 info: title: Assay API version: 1.0.0 diff --git a/scripts/secretscan/main.go b/scripts/secretscan/main.go index f6f99e1..2f46364 100644 --- a/scripts/secretscan/main.go +++ b/scripts/secretscan/main.go @@ -58,11 +58,6 @@ func ScanFiles(paths []string) ([]Finding, error) { for _, path := range paths { f, err := os.Open(path) if err != nil { - return nil, fmt.Errorf("secret-scan: open %s: %w", path, err) - } - found, err := ScanText(f, path) - if cerr := f.Close(); cerr != nil { - return nil, fmt.Errorf("secret-scan: close %s: %w", path, cerr) return nil, fmt.Errorf("open %s: %w", path, err) } found, err := ScanText(f, path) @@ -89,7 +84,6 @@ func ScanText(r io.Reader, name string) ([]Finding, error) { } } if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("secret-scan: scan %s: %w", name, err) return nil, fmt.Errorf("scan %s: %w", name, err) } return findings, nil @@ -125,7 +119,6 @@ func ScanDiff(r io.Reader) ([]Finding, error) { } } if err := scanner.Err(); err != nil { - return nil, fmt.Errorf("secret-scan: scan diff: %w", err) return nil, fmt.Errorf("scan diff: %w", err) } return findings, nil From 7eeac5f2178ea052930f0d75c02f23503da32f80 Mon Sep 17 00:00:00 2001 From: Jubilee_001 Date: Mon, 26 Oct 2026 11:07:23 +0100 Subject: [PATCH 11/11] fix(openapi): restore the openapi version key