Activity

A feed of development activity from across Sia Foundation GitHub repositories.

Jul 23, 2024
Jul 23, 2024
  • The faucet API was moved, this updates to the new endpoint.
Jul 23, 2024

All v1 contracts are considered valid in the JSON representation regardless of their resolution. Adds an additional missed slice.

Jul 22, 2024

Core v0.4.1 fixed the serialization of V2FileContractFinalization

Jul 22, 2024

Bumps the all-dependencies group with 6 updates in the / directory:

PackageFromTo
github.com/klauspost/reedsolomon1.12.21.12.3
github.com/minio/minio-go/v77.0.737.0.74
go.sia.tech/core0.3.00.4.0
go.sia.tech/coreutils0.1.20.2.0
go.sia.tech/hostd1.1.1-beta.1.0.20240618072747-b3f430b4d2721.1.2
gorm.io/gorm1.25.101.25.11

Updates github.com/klauspost/reedsolomon from 1.12.2 to 1.12.3

Release notes

Sourced from github.com/klauspost/reedsolomon's releases.

v1.12.3

What's Changed

RETRACTS v1.12.2

Full Changelog: https://github.com/klauspost/reedsolomon/compare/v1.12.2...v1.12.3

Commits

Updates github.com/minio/minio-go/v7 from 7.0.73 to 7.0.74

Release notes

Sourced from github.com/minio/minio-go/v7's releases.

Bugfix Release

What's Changed

New Contributors

Full Changelog: https://github.com/minio/minio-go/compare/v7.0.73...v7.0.74

Commits

Updates go.sia.tech/core from 0.3.0 to 0.4.0

Commits
  • 749090b Merge pull request #182 from SiaFoundation:json-policy
  • b4038b5 Merge pull request #181 from SiaFoundation:json-update
  • 7276e48 consensus: Add JSON methods for Updates
  • 5c756e2 types: Replace expression-based SpendPolicy JSON marshalling
  • d078002 Merge pull request #175 from SiaFoundation/alpha-spec
  • 12fc9fb consensus: Add validateSupplement
  • db1b4ea types: Fix PolicyTypeUnlockConditions validation
  • b24c351 Merge pull request #179 from SiaFoundation/sp-whitespace
  • 299bf42 Merge pull request #178 from SiaFoundation/dependabot/go_modules/all-dependen...
  • aef43ff types: Handle whitespace in SpendPolicy encoding
  • Additional commits viewable in compare view

Updates go.sia.tech/coreutils from 0.1.2 to 0.2.0

Commits
  • 13e4e30 Merge pull request #72 from SiaFoundation/nate/update-core-v0.4.0
  • 77525db deps: update core
  • fec2955 Merge pull request #71 from SiaFoundation/dependabot/go_modules/go.sia.tech/c...
  • d635ef2 build(deps): bump go.sia.tech/core from 0.3.0 to 0.3.1
  • See full diff in compare view

Updates go.sia.tech/hostd from 1.1.1-beta.1.0.20240618072747-b3f430b4d272 to 1.1.2

Release notes

Sourced from go.sia.tech/hostd's releases.

v1.1.2

Changed

Fixed

v1.1.1

Changed

Fixed

Commits

Updates gorm.io/gorm from 1.25.10 to 1.25.11

Commits
  • 4a50b36 ci: Add PostgreSQL 14 and 15 to GitHub Actions matrix (#7081)
  • 11c4331 feat: add MapColumns method (#6901)
  • 8a0af58 fix map fields with clickhouse driver
  • 4f62911 Allow to support other field types
  • 109f239 add DB level propagation for the Unscoped flag (#7007)
  • 79bf7f9 fix CI for sqlserver
  • 3d09f79 only listen local port
  • 73a988c fix(scan): update Scan function to reset structs to zero values for each scan...
  • 05167fd fix: use reflect.Append when preloading nested associations (#7014)
  • 78c6dfd Fix association replace non-addressable panic (#7012)
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jul 22, 2024

Bumps the all-dependencies group with 3 updates: go.sia.tech/core, go.sia.tech/hostd and gorm.io/gorm.

Updates go.sia.tech/core from 0.3.0 to 0.3.1

Commits
  • 12fc9fb consensus: Add validateSupplement
  • db1b4ea types: Fix PolicyTypeUnlockConditions validation
  • b24c351 Merge pull request #179 from SiaFoundation/sp-whitespace
  • 299bf42 Merge pull request #178 from SiaFoundation/dependabot/go_modules/all-dependen...
  • aef43ff types: Handle whitespace in SpendPolicy encoding
  • eb4f71a build(deps): bump the all-dependencies group with 2 updates
  • See full diff in compare view

Updates go.sia.tech/hostd from 1.1.1-beta.1.0.20240618072747-b3f430b4d272 to 1.1.2

Release notes

Sourced from go.sia.tech/hostd's releases.

v1.1.2

Changed

Fixed

v1.1.1

Changed

Fixed

Commits

Updates gorm.io/gorm from 1.25.10 to 1.25.11

Commits
  • 4a50b36 ci: Add PostgreSQL 14 and 15 to GitHub Actions matrix (#7081)
  • 11c4331 feat: add MapColumns method (#6901)
  • 8a0af58 fix map fields with clickhouse driver
  • 4f62911 Allow to support other field types
  • 109f239 add DB level propagation for the Unscoped flag (#7007)
  • 79bf7f9 fix CI for sqlserver
  • 3d09f79 only listen local port
  • 73a988c fix(scan): update Scan function to reset structs to zero values for each scan...
  • 05167fd fix: use reflect.Append when preloading nested associations (#7014)
  • 78c6dfd Fix association replace non-addressable panic (#7012)
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jul 19, 2024
Jul 18, 2024

This validates the release version when running go generate ./... and uses the commit instead.

Closes #431

Jul 17, 2024

This field does not follow the consistent use of camelCase for JSON serialization.

Jul 17, 2024

Adds two new endpoints /outputs/siacoin/:id and /outputs/siafund/:id to lookup utxos by ID. These endpoints are intended only for nodes in full index mode.

Jul 16, 2024

Bumps the all-dependencies group with 2 updates: go.sia.tech/core and go.sia.tech/coreutils.

Updates go.sia.tech/core from 0.3.0 to 0.3.1

Commits
  • 12fc9fb consensus: Add validateSupplement
  • db1b4ea types: Fix PolicyTypeUnlockConditions validation
  • b24c351 Merge pull request #179 from SiaFoundation/sp-whitespace
  • 299bf42 Merge pull request #178 from SiaFoundation/dependabot/go_modules/all-dependen...
  • aef43ff types: Handle whitespace in SpendPolicy encoding
  • eb4f71a build(deps): bump the all-dependencies group with 2 updates
  • See full diff in compare view

Updates go.sia.tech/coreutils from 0.1.0 to 0.1.2

Commits
  • 11bcc7b Merge pull request #69 from SiaFoundation/chris/fix-syncer-connect
  • b87f104 fix allowConnect
  • 5b6af68 Merge pull request #68 from SiaFoundation/dependabot/go_modules/golang.org/x/...
  • dea812b Merge pull request #67 from SiaFoundation/chris/connect-dns
  • 429d31d build(deps): bump golang.org/x/crypto from 0.24.0 to 0.25.0
  • 657868e syncer: resolve domain before checking if peer is banned
  • 4a9f0a6 Merge pull request #66 from SiaFoundation/nate/update-bootstrap-peers
  • fbd7056 syncer: update zen bootstrap peer list
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jul 16, 2024
  • Fixes an off-by-one error in the event maturity heights
  • Fixes the JSON encoding of EventV2ContractResolution due to the embedded types.V2FileContractResolution field
  • Adds sanity testing for each event type
Jul 16, 2024

The expression-based SpendPolicy encoding is more compact and easier to read, but using it as the standard JSON encoding means that all clients have to write a custom rule, which is annoying. Since most users won't be looking at raw JSON anyway, we might as well make life a bit easier for our devs by switch to a more conventional structural encoding. (Note, however, that we still intend to use the expression-based encoding when displaying policies in UIs.)

Thanks to @Alrighttt for surfacing this.

Old:

thresh(2, [
  above(100),
  pk(0x111d2995afa8bf162180a647b9f1eb6a275fe8818e836b69b351871d5caf9c590ed25aec0616),
  thresh(2, [
    above(200),
    pk(0x111d2995afa8bf162180a647b9f1eb6a275fe8818e836b69b351871d5caf9c590ed25aec0616),
  ]),
]),

New:

{
  "type": "thresh",
  "policy": {
    "n": 2,
    "of": [
      {
        "type": "above",
        "policy": 100
      },
      {
        "type": "pk",
        "policy": "ed25519:111d2995afa8bf162180a647b9f1eb6a275fe8818e836b69b351871d5caf9c590ed25aec0616"
      },
      {
        "type": "thresh",
        "policy": {
          "n": 2,
          "of": [
            {
              "type": "above",
              "policy": 200
            },
            {
              "type": "pk",
              "policy": "ed25519:111d2995afa8bf162180a647b9f1eb6a275fe8818e836b69b351871d5caf9c590ed25aec0616"
            }
          ]
        }
      }
    ]
  }
}
Jul 16, 2024

This enables consensus "subscription" over HTTP, which in turn allows nodes running on the same machine to share a consensus.db. See https://github.com/SiaFoundation/core/pull/180

This is an unfortunate amount of code. It could be shrunk a little by factoring out the MidState marshaling but... meh. It's not the end of the world.

Jul 15, 2024

This removes GORM from our production code entirely. It's now only used in tests.

Therefore db was renamed to gormDB to make it clear that it's no longer to be used. bMain is now db.

Jul 13, 2024

This fixes a little edge case leading to unnecessary log spam which will be obsolete once we have RHPv4 since fetching costs will be free then anyway.

Jul 12, 2024

This is a testing PR for all event types and not intended to be merged

Jul 12, 2024
Jul 12, 2024
Jul 12, 2024
Jul 12, 2024
  • Added the contracts prunable API.
  • Added the contract size API.
Jul 11, 2024

Removes the fatal startup check for explorer configuration and adds an alert instead.

Jul 11, 2024
Jul 11, 2024
Jul 10, 2024
Jul 10, 2024

This would fix issue

The more elegant fix would be:

  • create a invisible bar on top the actual scroll bar without the margin.
  • and make current scroll bar unclickable, that should keep the visual the same - but would complicated code.

If you like this simple approach then please merge this. Thank you!

Jul 10, 2024

Specifiers were always intended to be human-readable IDs. This codifies that by escaping non-alphanumeric specifiers during marshaling. Alphanumeric specifiers are marshaled exactly the same as before.

Non-alphanumeric specifiers are fairly rare. The most common offending character is " ", which shows up in v1 specifiers like "siacoin output". Also, an early version of the RHP used raw integers in some of its RPC IDs (e.g. "RPCDownload\x02"), but those RPCs have been obsolete for many years at this point.

Specifiers are primarily seen in two places: UnlockKey algorithms in transaction inputs, and RPC IDs in logs. The latter are developer chosen, so nothing will change there. As for the former, users can technically set the algorithm to whatever they want, but doing so exposes their SC to possible theft, so there is basically no reason to do it. Probably >99% of algorithms are "ed25519", so again, no change.

I also decided to add length validation in NewSpecifier. While this is a little annoying, there's no question that silently truncating to 16 bytes has the potential to cause bugs. For example, because of this change, I discovered that "RelayTransactionSet" is actually sent over the wire as "RelayTransaction"! If we had added an RPC for sending a single transaction and called it "RelayTransaction", those IDs would have collided.

Jul 9, 2024
Jul 9, 2024

Previously, ValidateBlock (and by extension, ApplyBlock) assumed that the supplied V1BlockSupplement was valid. This is not entirely unreasonable, since the supplement is computed locally -- unlike the Block itself, it is not directly manipulable by an attacker. However, even if a local computation isn't malicious, it can still be buggy! And indeed, we recently discovered that the consensusDB helper in validation_test.go was not updating the Merkle proofs of its elements, which ultimately lead to a panic in ApplyBlock.

This PR adds a validateSupplement step to ApplyBlock, which ensures that all of the state elements in the supplement exist in the accumulator (and have not been spent or resolved). Note that this is different from how we handle accumulator checks in v2 transactions: in v2, we check the Merkle proofs individually (e.g. in validateV2Siacoins), whereas with v1 we validate all of the proofs in one place. Each strategy has its pros and cons; personally, doing accumulator checks in v1 validation functions just felt a bit out-of-place to me. Besides, there are other checks that need to be performed for the supplement, so centralizing them seemed sensible.

Jul 9, 2024

The old implementation was broken, as evidenced by the test cases I added. Specifically, we were implementing this policy in terms of PolicyThreshold, but PolicyThreshold requires you to mask any unused public keys with PolicyOpaque, which PolicyTypeUnlockConditions can't do. We also now handle algorithms other than SpecifierEd25519 correctly. Overall, this brings validation into agreement with consensus.validateSignatures. We can't match its behavior exactly (because v1 transactions contain a list signatures that target specific inputs, while v2 transaction inputs carry their signatures with them), but that's fine; we just need to ensure that any UnlockConditions that were satisfiable in v1 are also satisfiable in v2.

Jul 9, 2024

Bumps the all-dependencies group with 1 update: golang.org/x/term.

Updates golang.org/x/term from 0.21.0 to 0.22.0

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jul 8, 2024
Jul 8, 2024

Bumps the all-dependencies group with 2 updates: golang.org/x/crypto and golang.org/x/sys.

Updates golang.org/x/crypto from 0.24.0 to 0.25.0

Commits
  • 9fadb0b go.mod: update golang.org/x dependencies
  • a6a393f all: bump go.mod version and drop compatibility shims
  • 1c74500 ssh/test: make struct comment match struct name
  • d4e7c9c ssh: fail client auth immediately on receiving disconnect message
  • See full diff in compare view

Updates golang.org/x/sys from 0.21.0 to 0.22.0

Commits
  • faed7ec unix: add PthreadChdir and PthreadFchdir on darwin
  • c892bb7 unix: fix MmapPtr test failing on OpenBSD
  • a0ef40a unix: fix MremapPtr test failing on NetBSD
  • daa2394 unix: add unsafe mmap, munmap, mremap
  • 7670087 windows: add GetAce Windows API
  • 348425a windows/svc: do not pass theService to windows.RegisterServiceCtrlHandlerEx
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jul 8, 2024

Bumps the all-dependencies group with 5 updates:

PackageFromTo
github.com/klauspost/reedsolomon1.12.11.12.2
github.com/minio/minio-go/v77.0.727.0.73
golang.org/x/crypto0.24.00.25.0
golang.org/x/sys0.21.00.22.0
golang.org/x/term0.21.00.22.0

Updates github.com/klauspost/reedsolomon from 1.12.1 to 1.12.2

Release notes

Sourced from github.com/klauspost/reedsolomon's releases.

v1.12.2

What's Changed

New Contributors

Full Changelog: https://github.com/klauspost/reedsolomon/compare/v1.12.1...v1.12.2

Commits

Updates github.com/minio/minio-go/v7 from 7.0.72 to 7.0.73

Release notes

Sourced from github.com/minio/minio-go/v7's releases.

Bugfix Release

What's Changed

New Contributors

Full Changelog: https://github.com/minio/minio-go/compare/v7.0.72...v7.0.73

Commits

Updates golang.org/x/crypto from 0.24.0 to 0.25.0

Commits
  • 9fadb0b go.mod: update golang.org/x dependencies
  • a6a393f all: bump go.mod version and drop compatibility shims
  • 1c74500 ssh/test: make struct comment match struct name
  • d4e7c9c ssh: fail client auth immediately on receiving disconnect message
  • See full diff in compare view

Updates golang.org/x/sys from 0.21.0 to 0.22.0

Commits
  • faed7ec unix: add PthreadChdir and PthreadFchdir on darwin
  • c892bb7 unix: fix MmapPtr test failing on OpenBSD
  • a0ef40a unix: fix MremapPtr test failing on NetBSD
  • daa2394 unix: add unsafe mmap, munmap, mremap
  • 7670087 windows: add GetAce Windows API
  • 348425a windows/svc: do not pass theService to windows.RegisterServiceCtrlHandlerEx
  • See full diff in compare view

Updates golang.org/x/term from 0.21.0 to 0.22.0

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jul 3, 2024

This PR removes GORM from

  • SearchObjects
  • AddPartialSlab
  • Slab
  • RefreshHealth
  • PackedSlabsForUpload
  • ObjectMetadata

and removes

  • contractsForHost (unused) together with TestContractsForHost
Jul 3, 2024
Jul 2, 2024
  • The SDK now works in non-browser environments like nodejs and bun.
Jul 2, 2024

This PR adds

  • InsertContract -> adds contract to db
  • RenewContract -> adds contract to db and copies existing contract to archive

copyContractToArchive is also new to deduplicate some code.

The remaining functions were all just moved to re-alphabetize the file

Jul 1, 2024
Jul 1, 2024

Bumps the all-dependencies group with 1 update: go.sia.tech/jape.

Updates go.sia.tech/jape from 0.11.2-0.20240306154058-9832414a5385 to 0.12.0

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 28, 2024

/wallet/:id/events can be slow in full index mode when the wallet has no events. Adds a check to make sure the wallet has events before running the more expensive events query.

Jun 28, 2024
Jun 28, 2024
Jun 28, 2024
Jun 28, 2024
Jun 28, 2024

This PR adds a subnets column to the hosts table. This in an attempt to get rid of the redundant IP churn we saw on arequipa. This is under the assumption that the churn is related to the way we deal with intermittent dns resolve issues, which up until now we've treated as redundant IPs because the ipFilter returns a simple yes/no bool.

Fixes https://github.com/SiaFoundation/renterd/issues/1342

Jun 28, 2024

I didn't bother writing it out but instead supplied an example compose file with the absolute minimum config requirements per service.

Jun 28, 2024
Jun 27, 2024
Jun 27, 2024
Jun 27, 2024

There's a docs PR following this one, but this one contains some small tweaks to the way we parse the config on startup. There's some small pitfalls in our config currently when it comes to setting up renterd as a cluster of nodes.

  • setting worker.Enabled to false when remotes are configured makes it easier to build conditionals
  • appending /api/worker to the worker's external addr made it inconsistent with RENTERD_BUS_REMOTE_ADDR
  • seed should only be required if you have at least a bus or worker, the autopilot doesn't require it

I purposefully kept it at that and did not try to refactor too much. I think for v2 we should consider taking another look at our config though. It's not the worst but it's definitely not prettiest either.

This min. requirements cluster setup docker-compose file works.

version: '3.9'

services:
  bus:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_bus
    environment:
      - RENTERD_SEED=jump illness approve cry fabric alert fly post kind age keep bid
      - RENTERD_API_PASSWORD=bus-pass
    ports:
      - "9980:9980"
      - "9981:9981"

  worker-1:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_worker-1
    environment:
      - RENTERD_AUTOPILOT_ENABLED=false
      - RENTERD_SEED=jump illness approve cry fabric alert fly post kind age keep bid
      - RENTERD_API_PASSWORD=worker-pass
      - RENTERD_BUS_API_PASSWORD=bus-pass
      - RENTERD_BUS_REMOTE_ADDR=http://bus:9980/api/bus
      - RENTERD_WORKER_EXTERNAL_ADDR=http://worker-1:9980/api/worker
    ports:
      - "9982:9980"
    depends_on:
      - bus

  worker-2:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_worker-2
    environment:
      - RENTERD_SEED=jump illness approve cry fabric alert fly post kind age keep bid
      - RENTERD_API_PASSWORD=worker-pass
      - RENTERD_BUS_API_PASSWORD=bus-pass
      - RENTERD_BUS_REMOTE_ADDR=http://bus:9980/api/bus
      - RENTERD_WORKER_EXTERNAL_ADDR=http://worker-2:9980/api/worker
    ports:
      - "9983:9980"
    depends_on:
      - bus

  autopilot:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    container_name: renterd_autopilot
    environment:
      - RENTERD_API_PASSWORD=autopilot-pass
      - RENTERD_BUS_API_PASSWORD=bus-pass
      - RENTERD_BUS_REMOTE_ADDR=http://bus:9980/api/bus
      - RENTERD_WORKER_API_PASSWORD=<worker-password>
      - RENTERD_WORKER_REMOTE_ADDRS=http://worker-1:9980/api/worker;http://worker-2:9980/api/worker
    ports:
      - "9984:9980"
    depends_on:
      - bus
      - worker-1
      - worker-2
Jun 27, 2024
Jun 27, 2024

This draft is a debugging test for all of the possible wallet events. This is not intended to be merged.

[
  {
    "id": "h:4d0389ef76d72548fe5bd64c117e4fbcee594ce1573ec9539f4380abad256b1b",
    "index": {
      "height": 204,
      "id": "bid:868a93d5bb1b411bc73e56db36b75bc1cfedc72002ea2e11a9a63af2d6724aa7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 349,
    "type": "siafundClaim",
    "data": {
      "siacoinElement": {
        "id": "h:4d0389ef76d72548fe5bd64c117e4fbcee594ce1573ec9539f4380abad256b1b",
        "leafIndex": 432,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "2005827263267429760665970000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        },
        "maturityHeight": 348
      }
    }
  },
  {
    "id": "h:4712cf57e90de093a8ed52ec8831f376aac7c739847ec64f324525bf51d7bfc3",
    "index": {
      "height": 203,
      "id": "bid:6d37359564b7c36fb55c50f48aab4c2ae7545ce9b93ff1ab2f9511d1f20865b7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 348,
    "type": "v2ContractResolution",
    "data": {
      "parent": {
        "id": "h:e773d79ce8ed3b5edf11572c3d56cc3908e6c0766479f09d21420df22ca416be",
        "leafIndex": 423,
        "merkleProof": [
          "h:dec7cb8813aa21ebaec3da1d3a521903305079c382b2e37b1cc8e3c53e66c2db",
          "h:55bd6fb6bae8bc5063f20f67100dbee711e9fa75b5b0b50fc01d7e15e76b69a3",
          "h:14b049a779a996ef3c771669d30517798ef026c95ab5be146cab98dc3854e8cf",
          "h:d9d42af0c7eed9f89c605738f667e6b4248bfb93aa73c98d7c37b40bc9ec8f28"
        ],
        "v2FileContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 211,
          "expirationHeight": 221,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03",
          "hostSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03"
        }
      },
      "type": "renewal",
      "resolution": {
        "finalRevision": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 211,
          "expirationHeight": 221,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 18446744073709551615,
          "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
          "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        },
        "newContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 221,
          "expirationHeight": 231,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
          "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
        },
        "renterRollover": "0",
        "hostRollover": "0",
        "renterSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e",
        "hostSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e"
      }
    }
  },
  {
    "id": "h:51e066366b66e445725afe7fc54e85019c8b692aaa7502c36630d99e911ac98c",
    "index": {
      "height": 201,
      "id": "bid:5f4b2533cc467ab64e6032f4663819fa2c310fd180637349abbde5977c664fad"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 346,
    "type": "v2ContractResolution",
    "data": {
      "parent": {
        "id": "h:ee4c82247b462b875f7036b2076b1a525c97889a542c36b9e9ef1166fe74e781",
        "leafIndex": 397,
        "merkleProof": [
          "h:f58e964cf335ac0a4f055755aa210e0f3e1d7c6de35711f09a3e2a8fd54470ba",
          "h:36841292b0e182ddaf8c761ffd9b71f9463cf4530a134fdf60d08ea9a084ce57",
          "h:155c83d210d64c97a0bd0310630748c7fa2226ef6e514d37079cd25f797d4162",
          "h:abb482c19f1a14b21033b0b7b8304f685857a4f10d06fb20f172b253657e425b",
          "h:5dba3a456ed101f794a36e3396e375a88f8050e1a0b28bc2a15f105fbc44762a"
        ],
        "v2FileContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 200,
          "expirationHeight": 210,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a",
          "hostSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a"
        }
      },
      "type": "storage proof",
      "resolution": {
        "proofIndex": {
          "id": "h:3c95abbf4ee22cf09468ffd5d39ea74c9775dae57c34b45d91f3f7f753c18ed4",
          "leafIndex": 416,
          "merkleProof": [],
          "chainIndex": {
            "height": 200,
            "id": "bid:3c95abbf4ee22cf09468ffd5d39ea74c9775dae57c34b45d91f3f7f753c18ed4"
          }
        },
        "leaf": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "proof": []
      }
    }
  },
  {
    "id": "h:66c8978661a560bfd4497e7b10f99b32edee6f5c64f89376b0502bc07172b59b",
    "index": {
      "height": 190,
      "id": "bid:f3e8fc9091217ba6d8c369342c980138a56e514cfc78bf4dc698cb5095c05902"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 335,
    "type": "v2ContractResolution",
    "data": {
      "parent": {
        "id": "h:b48817a1efc249109eb54202fcfb4b8e0a14368b98c0f9e6fe2519a8e1cbffd8",
        "leafIndex": 351,
        "merkleProof": [
          "h:8509a73f82036fc4fd3ed652ff0f49db15ffaa2fef8d1010e9a2110026bb81b3",
          "h:cf179de3e7d390a4e85e784d7330daf1e925e47960bd0b06e68a1f00406b01da",
          "h:e46b612429e205b58843ad398b1f2dd31b11aebdd2aa0caac40d277905d4ca11",
          "h:a07408549e147d52e48b112a05bc632a19abc9f57fe2fea30efd945fdd01c49c",
          "h:56359fa49114d1ffdc14904cfdf9aff1e6f989ba8bc64d6f44218c73932688ec",
          "h:adffd0f07779af480239a099bcdbee317b3eb38796bbf43db061809d330379ad",
          "h:14815951f3861d371083dc342435d2017fe360d94b265fd6d9a8c6c4d6e2d048"
        ],
        "v2FileContract": {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 179,
          "expirationHeight": 189,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f",
          "hostSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f"
        }
      },
      "type": "expiration",
      "resolution": {}
    }
  },
  {
    "id": "h:7f61115bf563af7e1a2e074bdd058d81f01dde4927b6bc6ef76a4a1ef1051501",
    "index": {
      "height": 204,
      "id": "bid:868a93d5bb1b411bc73e56db36b75bc1cfedc72002ea2e11a9a63af2d6724aa7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 204,
    "type": "v2Transaction",
    "data": {
      "siafundInputs": [
        {
          "parent": {
            "id": "h:15c39ea191db4d09d7ea2377a3f5420b282bf5652896052f0f1ab8e1e3091888",
            "leafIndex": 1,
            "merkleProof": [
              "h:f511a305ffc38123784a15f622a4b3fa8fb33ee9f4819f520dbd74723be9b4fc",
              "h:ed462bec88bf447d34de9fa56f275577fd27d8d76f2614ee3763d058fe188dd6",
              "h:bf2f07cd074d36f55eb30ec3f7191da266e3f8f356d124f607a86fe0aef3073d",
              "h:e29d28b24d7f807c5d9d7c69e3c45fbfe67819a6c4204d2ee409bc01831f3c40",
              "h:839fef4a24b35fbcb287dd02368f0465cf9fb544655a96bebf54c74143408d8d",
              "h:f3ff212468e19ef921a614eabbc387e234e676ee1f1e4451d7abadd844a53b72",
              "h:e1f40a359b528d48f6e2c499688d8923a847234ec0e347605104d137372c0f0e",
              "h:c3a6bbde771ec2b73836e30eaebe4378f7c08ee9f01d1d78759ee3cdbc54dd26"
            ],
            "siafundOutput": {
              "value": 10000,
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "claimStart": "0"
          },
          "claimAddress": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192",
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:fd245848196a12eccfedc34efb7c9c46fc8ba58eaf6e5d93aca6471f05c41745c1b2c1382d61547cef506472b34de9afdbeb3c95d77ca08990a1fe00a5b92407"
            ]
          }
        }
      ],
      "siafundOutputs": [
        {
          "value": 10000,
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:26707ee955165411fbd2b0e444670fc2b728e9275fee71ca8cd0e3d4c7c98037",
    "index": {
      "height": 203,
      "id": "bid:6d37359564b7c36fb55c50f48aab4c2ae7545ce9b93ff1ab2f9511d1f20865b7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 203,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:04960b29c57b0417a252f04dd164b4e53ea07aae6561e5534e808ca5f928d325",
            "leafIndex": 18446744073709551615,
            "merkleProof": [],
            "siacoinOutput": {
              "value": "10400000000000000000000000000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:4c7958ca899ac442c1b0f3d1ba2960d658920c408cca77f71e96626fd328a356141ffcb048d3dcf41713b447269ad02493f8640e4fbb327160f949582aac8a04"
            ]
          }
        }
      ],
      "fileContractResolutions": [
        {
          "parent": {
            "id": "h:e773d79ce8ed3b5edf11572c3d56cc3908e6c0766479f09d21420df22ca416be",
            "leafIndex": 423,
            "merkleProof": [
              "h:dec7cb8813aa21ebaec3da1d3a521903305079c382b2e37b1cc8e3c53e66c2db",
              "h:48476f9fcc42b15359119ee17a9bc3d33b98e54e589fe9baaf6ddab9d8f6f617",
              "h:14b049a779a996ef3c771669d30517798ef026c95ab5be146cab98dc3854e8cf"
            ],
            "v2FileContract": {
              "filesize": 0,
              "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
              "proofHeight": 211,
              "expirationHeight": 221,
              "renterOutput": {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              },
              "hostOutput": {
                "value": "0",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              },
              "missedHostValue": "0",
              "totalCollateral": "0",
              "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "revisionNumber": 0,
              "renterSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03",
              "hostSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03"
            }
          },
          "type": "renewal",
          "resolution": {
            "finalRevision": {
              "filesize": 0,
              "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
              "proofHeight": 211,
              "expirationHeight": 221,
              "renterOutput": {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              },
              "hostOutput": {
                "value": "0",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              },
              "missedHostValue": "0",
              "totalCollateral": "0",
              "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "revisionNumber": 18446744073709551615,
              "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
            },
            "newContract": {
              "filesize": 0,
              "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
              "proofHeight": 221,
              "expirationHeight": 231,
              "renterOutput": {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              },
              "hostOutput": {
                "value": "0",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              },
              "missedHostValue": "0",
              "totalCollateral": "0",
              "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
              "revisionNumber": 0,
              "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
              "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
            },
            "renterRollover": "0",
            "hostRollover": "0",
            "renterSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e",
            "hostSignature": "sig:984dea37a3897f6287fd04630e0878df5518e4ae95ff1cba7fa72a87b74cc85774306bba8ff563353b2d6bbca50e331f3dcf54eca3b36f14eb01dfdd7c07d00e"
          }
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:d354cd57b55f6fae6926d2edc36978d5f03a3da3a96c93c9aace57a377efdf1e",
    "index": {
      "height": 203,
      "id": "bid:6d37359564b7c36fb55c50f48aab4c2ae7545ce9b93ff1ab2f9511d1f20865b7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 203,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:6aa56534396cbf177a45c7edaf3eb0e9f85dd9fa7419b3818ecbd262e9384374",
            "leafIndex": 421,
            "merkleProof": [
              "h:7d31531797157a7c9fa43c4a01dca0967a427ac19420d26b0259c39e0658dae7",
              "h:cab1fad8d5b9a116576db3c0d4e0334005d9ed562e9925e0513c4b2cfc94e9fe",
              "h:14b049a779a996ef3c771669d30517798ef026c95ab5be146cab98dc3854e8cf"
            ],
            "siacoinOutput": {
              "value": "256394172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:1ac1f25080ec675a8992a2174d6c6f068e6660141caccec40c5e95e3ab725e1f0547d57f1715a216f5ac4ccc81786d836d8b6f99e9d936fef31e8565b96b320c"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "10400000000000000000000000000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        },
        {
          "value": "245994172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:c342c0ed99ac9ee0155c17236bac9dbf93663e7ec25944727893b1faf03df30f",
    "index": {
      "height": 202,
      "id": "bid:0ef29ef4cd65042f22da4d70718522490177f3b3e73c525d964c48a46feb6dd7"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 202,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:877d5b90eb3feb8dedb5de169e0fd5cc1fb1d8663224d1006f03922e868e7e4a",
            "leafIndex": 395,
            "merkleProof": [
              "h:f7338ec8ac8deee1d952c9134c58f77af74e592ca4921f4d93b4c91a6234ef30",
              "h:4a0b1a378f07efe0524e1d9b6448f48f616393e827b800fe8d48870cb8ed36aa",
              "h:efe8bf880371541af10816f960ce3172ab09d8e2885f9087828c764e1670d632",
              "h:abb482c19f1a14b21033b0b7b8304f685857a4f10d06fb20f172b253657e425b",
              "h:5dba3a456ed101f794a36e3396e375a88f8050e1a0b28bc2a15f105fbc44762a"
            ],
            "siacoinOutput": {
              "value": "266794172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:0a1ccb440df8b484ff402d60819a44a9cd7043e522ad275d9aa3b76171375a104a1cb9f623e677eb58953fe81653c23a0d6ff64d88333b5cedfd4ee54e076600"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "256394172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "fileContracts": [
        {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 211,
          "expirationHeight": 221,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03",
          "hostSignature": "sig:db264235ecadc89e63221e4e96347d560754d1f93939120c6d02c96e5207578e64067bd6a4313d9d84de019412d028ba98e182cde342f0cb4ffe1ec3f4783e03"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:fc3bf63551d537d56d15a02da5f2ecb5d8de069c41eadf34327bfd8f130bd671",
    "index": {
      "height": 191,
      "id": "bid:4b98626b4d3fb1a9df52918cb9f3812a67ed4b99adcc405a8c06c6d75602be00"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 191,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:ab6677558d6c344e449fe74677a4709ec689c9620bc73115c3526d04d7dabf2a",
            "leafIndex": 349,
            "merkleProof": [
              "h:94a176d2c91e7c14eea13f834647222301819bb85ee274f62b7f958663fb5154",
              "h:812a840fffc713436ba107fc58dbecfaa574f513bf09e391a603df20affd228f",
              "h:e46b612429e205b58843ad398b1f2dd31b11aebdd2aa0caac40d277905d4ca11",
              "h:a07408549e147d52e48b112a05bc632a19abc9f57fe2fea30efd945fdd01c49c",
              "h:56359fa49114d1ffdc14904cfdf9aff1e6f989ba8bc64d6f44218c73932688ec",
              "h:adffd0f07779af480239a099bcdbee317b3eb38796bbf43db061809d330379ad",
              "h:14815951f3861d371083dc342435d2017fe360d94b265fd6d9a8c6c4d6e2d048"
            ],
            "siacoinOutput": {
              "value": "277194172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:4689ce9f5673bc4d94f6e2da191cad0ca927d8a89b7f2431c428832ae612d37ad64e48c3deb416501dec438b52d704ca4c70ac2094d23c76d4514c85760b7401"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "266794172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "fileContracts": [
        {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 200,
          "expirationHeight": 210,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a",
          "hostSignature": "sig:97385f262a2f8db3bd29b072b0ab7cc6dbe01843af09c9010675b3ec7db8a96dd199b3ede4df4ada81d41ca3b5ccb2ad6bfaa01071438ec6fce72e5f18bcd40a"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:2a1310fac16f79e12b518589b1ea5abfd3c8bd3da623727e5685caf8d6584cbc",
    "index": {
      "height": 170,
      "id": "bid:b3efdb29eb640b5d2e4bdd98a2a6f8c2837fdc54817ce229c522c36f6c75c576"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 170,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:ac413200b271cf769da46acb0898ed3406a43bb73f4f94659d91065f78dbecd0",
            "leafIndex": 346,
            "merkleProof": [
              "h:b83ee7a234a6a278cca5348e794354613812946de9832e542780eae9ec636c17",
              "h:d1e4e9d91faa25f909cdd396ed1ee290770a69a12d666f7452465e2f32937657"
            ],
            "siacoinOutput": {
              "value": "287594172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:fb809431f79a1b94e2de6efbd78c1dcc9945ba12fc367f7afb159e3ade8447e5431a3f9ad5c57d08a1643416af94a9530d5a01194dee54a0b209f1ed6eb45c02"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "277194172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "fileContracts": [
        {
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "proofHeight": 179,
          "expirationHeight": 189,
          "renterOutput": {
            "value": "10000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "hostOutput": {
            "value": "0",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          "missedHostValue": "0",
          "totalCollateral": "0",
          "renterPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "hostPublicKey": "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40",
          "revisionNumber": 0,
          "renterSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f",
          "hostSignature": "sig:a51f56c532f331b8ee9fd9bd3a76c89bed8643f2a60be2d820f168d19c7dae73a737c0eef532b992845af2a4a3bfd4993f01a4b66f42f87366c9e50afa2a820f"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:bae3d0b8a0934c54090ce546b6b56a079bbfc899900a2b891e44c887da695559",
    "index": {
      "height": 169,
      "id": "bid:747c7e17dd0d5397b9d91f8907750cc01d1cc2b4956008587214670a7fe4afb1"
    },
    "timestamp": "2024-06-22T04:22:34Z",
    "maturityHeight": 169,
    "type": "v2Transaction",
    "data": {
      "siacoinInputs": [
        {
          "parent": {
            "id": "h:409a5747120dbddb60bfca705142aeba7c8f940c1739484857667ef65a69379e",
            "leafIndex": 302,
            "merkleProof": [
              "h:afe2663b5c0f9660c3e11b0a5c31c34a0971ddb5c7ec6d3b6f1fd21b9b70a145",
              "h:50ed0ed44529a24a0e05eb0d6d07477427950d05c0f235d1d15410a6426c650c",
              "h:ff1fe1a3ad6966b5fad3a5797a37c594812e92dee0a6d2d78945b2c6a75913b0",
              "h:f93db49cf7d3894ac3ff569ffdf1095f22cc381217ecda2478f27ce07b555ccf",
              "h:795ce8a6c379d73bac9f2f2dd55f7b497dd3b335ea9a3a712f10730569e1f90c",
              "h:10974c113780409ab783dc38ab3277cb07e7209604ec29c0ddd178b32d908ef8"
            ],
            "siacoinOutput": {
              "value": "288594172736732570239334030000",
              "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
            },
            "maturityHeight": 0
          },
          "satisfiedPolicy": {
            "policy": "uc(0,[0x999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40],1)",
            "signatures": [
              "sig:d71087be0717a2d4510ef4fbd336957b3de02bec36f919edea1a03cbb92482a60c574e1f1da1397acf43f1348374b9153019ddac145e8b85f8c8cd233ffac30d"
            ]
          }
        }
      ],
      "siacoinOutputs": [
        {
          "value": "1000000000000000000000000000",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        {
          "value": "287594172736732570239334030000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        }
      ],
      "minerFee": "0"
    }
  },
  {
    "id": "h:069984b5fb252f664fee13888b9e9f7ec310f0fab3285ddf07d5cb7063aad078",
    "index": {
      "height": 149,
      "id": "bid:8cebc0436ccb78df060c0c4a34395368f5648fc644a97b2476a23f09fb680028"
    },
    "timestamp": "2024-06-22T04:22:33Z",
    "maturityHeight": 149,
    "type": "v1Transaction",
    "data": {
      "transaction": {
        "siacoinInputs": [
          {
            "parentID": "scoid:b468b83452fac38807af7943337eeef4695c9371b761a0fd8e4433d782b80d72",
            "unlockConditions": {
              "timelock": 0,
              "publicKeys": [
                "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40"
              ],
              "signaturesRequired": 1
            }
          }
        ],
        "siacoinOutputs": [
          {
            "value": "288594172736732570239334030000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          }
        ],
        "fileContracts": [
          {
            "filesize": 0,
            "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
            "windowStart": 158,
            "windowEnd": 168,
            "payout": "10405827263267429760665970000",
            "validProofOutputs": [
              {
                "value": "10000000000000000000000000000",
                "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
              }
            ],
            "missedProofOutputs": [
              {
                "value": "10000000000000000000000000000",
                "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
              }
            ],
            "unlockHash": "h:0000000000000000000000000000000000000000000000000000000000000000",
            "revisionNumber": 0
          }
        ],
        "signatures": [
          {
            "parentID": "h:b468b83452fac38807af7943337eeef4695c9371b761a0fd8e4433d782b80d72",
            "publicKeyIndex": 0,
            "coveredFields": {
              "wholeTransaction": true
            },
            "signature": "OwQ11DxbgVETVX2shCwG1Kc6NpEP3PovLJPlIq0MRsdlzA0rD1Flh98LcNQsqBLTkQZdZGDqVBsvAfELNVZVCw=="
          }
        ]
      },
      "spentSiacoinElements": [
        {
          "id": "h:b468b83452fac38807af7943337eeef4695c9371b761a0fd8e4433d782b80d72",
          "leafIndex": 299,
          "merkleProof": null,
          "siacoinOutput": {
            "value": "299000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "maturityHeight": 0
        }
      ],
      "spentSiafundElements": []
    }
  },
  {
    "id": "h:203c1616574e92afe4081bcaf75d53a4f2f0979b8ed7ece8e3fecf5d3be5cfba",
    "index": {
      "height": 148,
      "id": "bid:39a14960577954ce50d02b9c3ec88c9e0a358cfdc11f9be690cdce816391ae8f"
    },
    "timestamp": "2024-06-22T04:22:33Z",
    "maturityHeight": 148,
    "type": "v1Transaction",
    "data": {
      "transaction": {
        "siacoinInputs": [
          {
            "parentID": "scoid:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
            "unlockConditions": {
              "timelock": 0,
              "publicKeys": [
                "ed25519:999594db47cc792d408d26bb05f193b23ad020cb019113c0084a732673752a40"
              ],
              "signaturesRequired": 1
            }
          }
        ],
        "siacoinOutputs": [
          {
            "value": "1000000000000000000000000000",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          },
          {
            "value": "299000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          }
        ],
        "signatures": [
          {
            "parentID": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
            "publicKeyIndex": 0,
            "coveredFields": {
              "wholeTransaction": true
            },
            "signature": "GCXLgThVtjDutfAv6d34mIGUSRmm+vPX74DgafZIj7axOcnKylvwc2oCiaPboeOCjVd5Pgs1CP3GglfaxbihDw=="
          }
        ]
      },
      "spentSiacoinElements": [
        {
          "id": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
          "leafIndex": 3,
          "merkleProof": null,
          "siacoinOutput": {
            "value": "300000000000000000000000000000",
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          },
          "maturityHeight": 145
        }
      ],
      "spentSiafundElements": []
    }
  },
  {
    "id": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
    "index": {
      "height": 1,
      "id": "bid:f3fcab43b1ac9588d503a2a986fc927f8b6571e9865ddf38c675008ab37b03a8"
    },
    "timestamp": "2024-06-22T04:22:31Z",
    "maturityHeight": 146,
    "type": "miner",
    "data": {
      "siacoinElement": {
        "id": "h:d33175c0dad7df6d047a4ea1507862f157a122e56b7025397bbe5a25de9f1898",
        "leafIndex": 3,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "300000000000000000000000000000",
          "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
        },
        "maturityHeight": 145
      }
    }
  },
  {
    "id": "h:1e390d3fdb4b462c8250cbdfea9f82a2f867a7cf850c14c08fb7fbb650a71486",
    "index": {
      "height": 0,
      "id": "bid:aefb375d7075d783f89130e858609c4da5c61882baca0764f56c925332ca911c"
    },
    "timestamp": "2023-01-13T08:53:20Z",
    "maturityHeight": 0,
    "type": "v1Transaction",
    "data": {
      "transaction": {
        "siacoinOutputs": [
          {
            "value": "1000000000000000000000000000000000000",
            "address": "addr:3d7f707d05f2e0ec7ccc9220ed7c8af3bc560fbee84d068c2cc28151d617899e1ee8bc069946"
          }
        ],
        "siafundOutputs": [
          {
            "value": 10000,
            "address": "addr:b60ae577113147c4f68d2daa18dfba4af26a4a8f41a6e9d2a208c1afafe56997588cb25a5192"
          }
        ]
      },
      "spentSiacoinElements": [],
      "spentSiafundElements": []
    }
  }
]                                                                                                                                                                                                                                   
Jun 27, 2024

Ran into an issue with the UI trying to spend an immature UTXO. I don't believe there's a reason to make the UI filter the UTXO list, so I changed the endpoints to only include matured UTXOs.

Jun 27, 2024

This adds a created bool argument to the (Update).ForEach methods, allowing callers to identify ephemeral elements by checking for created && spent (or, in the case of file contracts, created && resolved.

This is very useful for any callers who care about persistently tracking unspent outputs. Normally, the code for doing so looks like this:

cau.ForEachSiacoinElement(func(sce types.SiacoinElement, spent bool) {
    if spent {
        deleteUTXO(sce.ID)
    } else {
        insertUTXO(sce)
    }
})

but this is subtly buggy: if the element was ephemeral, spent will be true, so we'll try to delete it; but since it's ephemeral, it's not in the set, so there's nothing to delete! Whether or not this causes problems depends on how deleteUTXO is implemented. Specifically, if you assert that an element must exist in order to be deleted, that assert will fail.

To avoid this, we need a way to detect whether an element is ephemeral. chain.DBStore attempted to do this by checking sce.LeafIndex == types.EphemeralLeafIndex. However, this doesn't work: ephemeral elements are assigned leaf indices just like regular outputs, so that condition is never satisfied! This eventually lead to a panic: ephemeral outputs within a reverted block would be added to the UTXO set (instead of being ignored), and if a future block references that same output, the DB gets confused and crashes.

Adding a created flag seemed like the most direct of doing this. Another option would be to always skip the ephemeral elements in the ForEach methods, and add a new method (or methods) for accessing only the ephemeral elements. This is attractive, since it doesn't break any existing code, and most callers want to skip ephemeral elements anyway. Ultimately, though, I decided against it; it pollutes the namespace, and it's one more thing you "just need to know" in order to use the API properly. Plus it makes the name "ForEach" a lie. Better to keep everything in one place.

Jun 27, 2024
Jun 27, 2024
  • Minor tweak to slab health update to speed it up by making use of indices
  • Make sure recording a host scans doesn't abort after 30 seconds when db is under heavy load
  • Make sure recording price tables doesn't abort after 30 seconds when db is under heavy load
  • Register new price tables in the background, unblocking operations faster and preventing the record operation from being cancelled after a timeout
Jun 27, 2024

The sector roots RPC used to return all sector roots, this was fixed in https://github.com/SiaFoundation/hostd/commit/e6dfc96fa0f8aab45ce0c87de0f87ffe477f83a5 and released in https://github.com/SiaFoundation/hostd/releases/tag/v1.0.2-beta.4 . We should ignore the error for old hosts.

Jun 26, 2024

Added a few more migrations since they are rather small.

Jun 25, 2024

This changes the policy to stringify and parse the unlock key in the v1 format specifier:hex key. You can currently create a valid PolicyTypeUnlockCondition using an UnlockKey without an ed25519 algorithm, but can't reverse it. This doesn't cause any issues since the v2 validation checks will reject it, but it's slightly annoying that a valid serialization can't be reversed.

also: I could be wrong, but I believe v1 treated unlock conditions with unknown key algorithms as, effectively, anyone-can-spend. I'm not sure if it was ever actually seen on-chain, but after the require height any unlock condition that used a different algorithm will no longer be spendable.

Current:

sp := SpendPolicy{PolicyTypeUnlockConditions(UnlockConditions{
	Timelock: 0,
	PublicKeys: []UnlockKey{
		{
			Algorithm: NewSpecifier("blank"),
			Key:       frand.Bytes(40),
		},
	},
	SignaturesRequired: 1,
})}
sp.String() // uc(0,[0x97ef92d4c07713b7a3a0e17000e59a9ef6e27402eaef0b5c9ae5cb0da50a78dd0a04e63d0e78e60d],1)

New:

sp := SpendPolicy{PolicyTypeUnlockConditions(UnlockConditions{
	Timelock: 0,
	PublicKeys: []UnlockKey{
		{
			Algorithm: NewSpecifier("blank"),
			Key:       frand.Bytes(40),
		},
	},
	SignaturesRequired: 1,
})}
sp.String() // uc(0,[blank:97ef92d4c07713b7a3a0e17000e59a9ef6e27402eaef0b5c9ae5cb0da50a78dd0a04e63d0e78e60d],1)
Jun 25, 2024

areq has an alert for unexpected response size (very old host), figured getting rid of the exact math is probably ok, reused maxMerkleProofResponseSize to avoid duplicating the const

Jun 24, 2024

Forces the wallet and address event queries to use the proper index since the query planner did not want to select it automatically. This significantly improves performance for wallets with lots of events.

Jun 24, 2024

Bumps the all-dependencies group with 2 updates: go.sia.tech/core and go.sia.tech/coreutils.

Updates go.sia.tech/core from 0.2.8-0.20240621235715-5054a28dc43d to 0.2.8

Commits

Updates go.sia.tech/coreutils from 0.0.6 to 0.0.7

Commits
  • b818c37 Merge pull request #63 from SiaFoundation/dependabot/go_modules/go.sia.tech/c...
  • c6f47c2 build(deps): bump go.sia.tech/core from 0.2.7 to 0.2.8
  • 3012a5a Merge pull request #62 from SiaFoundation/nate/siafund-events
  • 04b2041 wallet: combine common event structs, add siafund claim support
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 21, 2024

@n8maninger noticed a flipped conditional in validateV2FileContracts; after fixing it, I updated TestValidateV2Block to update the ChainIndexElement proofs, but the test still failed -- with commitment hash mismatch, which is a weird error. Further investigation revealed that V2Block.EncodeTo was mutating the block. Specifically, it was nil-ing out the V2StorageProof history proof, which is why this wasn't caught earlier: since the test wasn't updating the proofs in the first place, they were always nil, so EncodeTo didn't affect them. Anyway, this cascade of failures has all been fixed now :P

Jun 21, 2024
Jun 20, 2024
Jun 20, 2024
  • Fixed an issue where renaming a file would throw an error.
  • Fixed an issue where the empty directory state was showing an empty bucket message.
  • Added e2e tests for:
    • can create directory
    • delete directory
    • drag and drop target uploads
    • upload file within directory
    • rename file
    • delete a file
    • re-upload same file
    • navigate up and down directories
    • delete bucket with contents, contents first, then bucket
Jun 20, 2024

EventV2ContractResolution is missing the resolution type. Embeds V2FileContractResolution to get the custom json encoding that includes the extra type field.

{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "expiration",
    "resolution": {}
  }
}
{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "finalization",
    "resolution": {
      "filesize": 0,
      "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "proofHeight": 0,
      "expirationHeight": 0,
      "renterOutput": {
        "value": "0",
        "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
      },
      "hostOutput": {
        "value": "0",
        "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
      },
      "missedHostValue": "0",
      "totalCollateral": "0",
      "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
      "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
      "revisionNumber": 0,
      "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "renewal",
    "resolution": {
      "finalRevision": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      },
      "newContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      },
      "renterRollover": "0",
      "hostRollover": "0",
      "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
    }
  }
}
{
  "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
  "index": {
    "height": 0,
    "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
  },
  "timestamp": "0001-01-01T00:00:00Z",
  "maturityHeight": 0,
  "type": "v2ContractResolution",
  "data": {
    "parent": {
      "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
      "leafIndex": 0,
      "merkleProof": null,
      "v2FileContract": {
        "filesize": 0,
        "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "proofHeight": 0,
        "expirationHeight": 0,
        "renterOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "hostOutput": {
          "value": "0",
          "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
        },
        "missedHostValue": "0",
        "totalCollateral": "0",
        "renterPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "hostPublicKey": "ed25519:0000000000000000000000000000000000000000000000000000000000000000",
        "revisionNumber": 0,
        "renterSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "hostSignature": "sig:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
      }
    },
    "type": "storage proof",
    "resolution": {
      "proofIndex": {
        "id": "h:0000000000000000000000000000000000000000000000000000000000000000",
        "leafIndex": 0,
        "merkleProof": null,
        "chainIndex": {
          "height": 0,
          "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
        }
      },
      "leaf": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "proof": null
    }
  }
}
Jun 18, 2024

Bumps the all-dependencies group with 2 updates: go.sia.tech/core and go.sia.tech/coreutils.

Updates go.sia.tech/core from 0.2.6 to 0.2.7

Commits
  • 36ea9c7 Merge pull request #170 from SiaFoundation/generic-encoder
  • f64b216 types: Add encoding_test.go
  • 261959d types: Implement generic encoder functions
  • eb021a0 Merge pull request #169 from SiaFoundation/dependabot/go_modules/all-dependen...
  • 86747f5 build(deps): bump the all-dependencies group with 2 updates
  • c0d52ee group dependencies
  • See full diff in compare view

Updates go.sia.tech/coreutils from 0.0.5 to 0.0.6

Commits
  • 83105c6 Merge pull request #61 from SiaFoundation/nate/update-core
  • 4f2d2b1 go.mod: update core dependency
  • 1ac89c8 Merge pull request #60 from SiaFoundation/dependabot/go_modules/golang.org/x/...
  • a0d3ed3 build(deps): bump golang.org/x/crypto from 0.23.0 to 0.24.0
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 17, 2024

Refactors events to include the original transaction data. This lets external services verify the signatures and other transaction data. The event types and events almost match the ones from coreutils with the addition of a relevant field and a different v1 transaction event type so that inflow and outflow can be calculated instead of stored on the event.

Adds two new endpoints and ensures a consistent event structure for confirmed and unconfirmed events.

  • /api/wallet/:walletID/events/unconfirmed returns any unconfirmed events related to a wallet
  • /api/addresses/:addr/events/unconfirmed returns any unconfirmed events related to an address

Event Types:

  • miner
  • foundation
  • siafundClaim
  • v1Transaction
  • v1ContractResolution
  • v2Transaction
  • v2ContractResolution

Unconfirmed events will have an index of tip.index.height+1 and an empty id

 {
                "id": "h:731c8e75212fd850aef9f9b3f0a1373350743dea905966e0c819348e8fc226f1",
                "index": {
                        "height": 75207,
                        "id": "bid:0000000000000000000000000000000000000000000000000000000000000000"
                },
                "timestamp": "2024-06-13T17:06:54.551676-07:00",
                "maturityHeight": 75207,
                "type": "v1Transaction",
                "data": {
                        "raw": {
                                "siacoinInputs": [
                                        {
                                                "parentID": "scoid:e54b12c6a0f11ab3d89944c72df05e463e4e906b966906b266d92a65509d5053",
                                                "unlockConditions": {
                                                        "timelock": 0,
                                                        "publicKeys": [
                                                                "ed25519:0778d0e03c2f1b1e5e42d6f0f580d46587d992ad6381d8cae52b998463e0f633"
                                                        ],
                                                        "signaturesRequired": 1
                                                }
                                        }
                                ],
                                "siacoinOutputs": [
                                        {
                                                "value": "19999996070000000000000000000",
                                                "address": "addr:2a95add7cfc95b5c484a787c15b912e491876ca2f39982b62495049520acf798bf2e2cf6c326"
                                        },
                                        {
                                                "value": "932206165193017337982514690933",
                                                "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
                                        }
                                ],
                                "minerFees": [
                                        "36000000000000000000000"
                                ],
                                "signatures": [
                                        {
                                                "parentID": "h:e54b12c6a0f11ab3d89944c72df05e463e4e906b966906b266d92a65509d5053",
                                                "publicKeyIndex": 0,
                                                "coveredFields": {
                                                        "wholeTransaction": true
                                                },
                                                "signature": "KzCjMr66ZhzqzyBIHCzewr+9nK5e1B+nSNXexv4j0KEvqb5Vs0laQWBYnn03yUxKForhkPgm7uFCKwAmklT8Cw=="
                                        }
                                ]
                        },
                        "spentSiacoinElements": [
                                {
                                        "id": "h:e54b12c6a0f11ab3d89944c72df05e463e4e906b966906b266d92a65509d5053",
                                        "leafIndex": 1423020,
                                        "merkleProof": [],
                                        "siacoinOutput": {
                                                "value": "952206197263017337982514690933",
                                                "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
                                        },
                                        "maturityHeight": 0
                                }
                        ],
                        "spentSiafundElements": null
                },
                "relevant": [
                        "addr:2a95add7cfc95b5c484a787c15b912e491876ca2f39982b62495049520acf798bf2e2cf6c326"
                ]
        }
{
  "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
  "index": {
    "height": 62057,
    "id": "bid:000000251dbf2b6c8e9c6c53a4be4d5b7a2f70647a5aa98ba1d2d5f2a276bad6"
  },
  "timestamp": "2024-03-26T19:51:58Z",
  "maturityHeight": 62202,
  "type": "miner",
  "data": {
    "siacoinElement": {
      "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
      "leafIndex": 305758,
      "merkleProof": null,
      "siacoinOutput": {
        "value": "2546749203167233134721992",
        "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
      },
      "maturityHeight": 62201
    }
  }
}
{
  "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
  "index": {
    "height": 62057,
    "id": "bid:000000251dbf2b6c8e9c6c53a4be4d5b7a2f70647a5aa98ba1d2d5f2a276bad6"
  },
  "timestamp": "2024-03-26T19:51:58Z",
  "maturityHeight": 62202,
  "type": "v1ContractResolution",
  "data": {
    "fileContract": {
      "id": "h:0cc01878047a41b37db25bbe4a33be0063c20a172e89886bb15766221ad6aeb6",
      "leafIndex": 285511,
      "merkleProof": [],,
      "fileContract": {
        "filesize": 3221225472,
        "fileMerkleRoot": "h:538a633e94e0339fa3553c0ea2f37dba10cd81701cb22e352cacfd6eba4b42b6",
        "windowStart": 62056,
        "windowEnd": 62200,
        "payout": "4123337324945734946756928",
        "validProofOutputs": [
          {
            "value": "1415777966105618149114936",
            "address": "addr:7838f42a584f7247d4bc9d85e985fa1bbc42a0c55e942cc31204be7f9959091ceb62e4824eee"
          },
          {
            "value": "2546749203167233134721992",
            "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
          }
        ],
        "missedProofOutputs": [
          {
            "value": "1415777966105618149114936",
            "address": "addr:7838f42a584f7247d4bc9d85e985fa1bbc42a0c55e942cc31204be7f9959091ceb62e4824eee"
          },
          {
            "value": "2211527439234234844347336",
            "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
          },
          {
            "value": "335221763932998290374656",
            "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
          }
        ],
        "unlockHash": "h:15d57447a0db498c01f1643d04ae626629fa79013dd68b11f7fa06e2ba6d4160",
        "revisionNumber": 873
      }
    },
    "siacoinElement": {
      "id": "h:084bf558939d7f60bf28be3176f31aea015ee892178d55a1892311be80c60ab4",
      "leafIndex": 305758,
      "merkleProof": null,
      "siacoinOutput": {
        "value": "2546749203167233134721992",
        "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
      },
      "maturityHeight": 62201
    },
    "missed": false
  }
}

The value should be calculated using event.siacoinElement.siacoinOutput.value

{
  "id": "h:56dd0953f4a217fcb5bfae7927cbb7b08424cde3dcd1b47248fa09cb04e9f607",
  "index": {
    "height": 75191,
    "id": "bid:00000000d1cd5be659e21c9624cf58bcc1b69c08bee5ca85b8e5f5e5a9b94f86"
  },
  "timestamp": "2024-06-13T21:01:25Z",
  "maturityHeight": 75191,
  "type": "v1Transaction",
  "data": {
    "raw": {
      "siacoinInputs": [
        {
          "parentID": "scoid:cd6b3d83888ddca8a99b6860bf34b69f8346c7d6a7c8256a5e20492d755014e3",
          "unlockConditions": {
            "timelock": 0,
            "publicKeys": [
              "ed25519:745229eecd616452608dfc4c136cbb712aae0221c505fd21344cbaff02408654"
            ],
            "signaturesRequired": 1
          }
        },
      ],
      "siacoinOutputs": [
        {
          "value": "16603618098633177701291326236",
          "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
        },
      ],
      "fileContracts": [
        {
          "filesize": 1623455694848,
          "fileMerkleRoot": "h:5a0b3f23bb7005c3f3cf0e391b1754ca2b78f4d0bd1a0c62c07552bdaa34af9b",
          "windowStart": 77206,
          "windowEnd": 77350,
          "payout": "6527511983870317298497483904",
          "validProofOutputs": [
            {
              "value": "5294306986854930764839779264",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "978632029644444159016304640",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            }
          ],
          "missedProofOutputs": [
            {
              "value": "5294306986854930764839779264",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "775417498778363966804983808",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            },
            {
              "value": "203214530866080192211320832",
              "address": "addr:000000000000000000000000000000000000000000000000000000000000000089eb0d6a8a69"
            }
          ],
          "unlockHash": "h:54ecb4a10f7cffc1b89dcab6fef0887e6d83a86619faec9048fc27e36615d9a1",
          "revisionNumber": 0
        }
      ],
      "fileContractRevisions": [
        {
          "parentID": "fcid:5bda1c141daeb490689267736a8e9814f063009252b0da874b024f566b1213ec",
          "unlockConditions": {
            "timelock": 0,
            "publicKeys": [
              "ed25519:367b5e02363065999e175326d77f93f9bcfff5437ba8b0348209b8b34cc85dea",
              "ed25519:04e326a61076ca088cf5a9ea93eefcbb1fea144575b0c5dc1d02f7a298d4b816"
            ],
            "signaturesRequired": 2
          },
          "filesize": 0,
          "fileMerkleRoot": "h:0000000000000000000000000000000000000000000000000000000000000000",
          "windowStart": 76198,
          "windowEnd": 76342,
          "payout": "340282366920938463463374607431768211455",
          "validProofOutputs": [
            {
              "value": "5255684964149517545928885024",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "959591735219963162430677956",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            }
          ],
          "missedProofOutputs": [
            {
              "value": "5255684964149517545928885024",
              "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
            },
            {
              "value": "959591735219963162430677956",
              "address": "addr:11d68c52e67a800d0ca99867e410cfa9c0c3f5bc1726aa90e88f40b7ad0825c91841904dae10"
            }
          ],
          "unlockHash": "h:54ecb4a10f7cffc1b89dcab6fef0887e6d83a86619faec9048fc27e36615d9a1",
          "revisionNumber": 18446744073709552000
        }
      ],
      "minerFees": [
        "122880000000000000000000"
      ],
      "signatures": [
        {
          "parentID": "h:5bda1c141daeb490689267736a8e9814f063009252b0da874b024f566b1213ec",
          "publicKeyIndex": 0,
          "coveredFields": {
            "fileContracts": [
              0
            ],
            "fileContractRevisions": [
              0
            ]
          },
          "signature": "0cCUX6CpD1LwejSV4yuGGxgdPPpXfvh0n6IQWwMHBT1sBpSUJ2S4zbQ63+qhlWygHA00D0OGTsfevmjBib8BBw=="
        }
      ]
    },
    "spentSiacoinElements": [
      {
        "id": "h:cd6b3d83888ddca8a99b6860bf34b69f8346c7d6a7c8256a5e20492d755014e3",
        "leafIndex": 1422177,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "1311143590699235482074695625",
          "address": "addr:c6a179d96cc82f7814acd638c41250422205e8ed130c8d65481a3e15c30aaa195a8659547b0f"
        },
        "maturityHeight": 0
      }
    ],
    "spentSiafundElements": []
  }
}

The outflow should be calculated by summing the relevant siacoinElements in event.spentSiacoinElements. The inflow should be calculate by summing the relevant event.transaction.siacoinOutputs. The value is inflow-outflow

Jun 17, 2024
Jun 15, 2024
Jun 15, 2024

Fuzz decoding of SpendPolicy which is probably has the most complicated decoding logic of all the types. I have been running for ~30 minutes and coverage has not flatlined yet.

Run with:

$ go test -fuzz FuzzSpendPolicy ./types
Jun 14, 2024
  • The change address in the test was not for the same wallet
Jun 12, 2024

Fixes #399

Jun 12, 2024
  • Migrate walletd e2e tests from mocked API tests to live fixtures.
  • Updated tests for creating wallet, recovering wallet, viewing txns, sending siacoin, generating addresses, rescanning.
Jun 12, 2024

Adds a command to configure a walletd node similar to hostd and renterd.

Jun 12, 2024
Jun 12, 2024

Adds a new endpoint /api/events/:id to get an event by its ID. This is primarily only useful when running in full index mode to lookup arbitrary transactions.

Jun 11, 2024

Adds EncodeSlice, EncodeSliceCast, EncodeSliceFn, and their decoder counterparts, as well as Cast methods for increased type safety. This makes most encoding methods more succinct, but the real motivation was that it allows us to centralized the handling of malicious slice lengths (see discussion on #166). I will grudgingly admit that generics solved a real problem here. 😝

I'm not crazy about the API; it would be nicer if we could somehow unify these three functions, and if we could ditch the Cast methods. I explored replacing EncodeSliceFn with a BasicEncodable type (wrapping uint64, bool, etc.), but it was kinda gross, requiring a run-time type-switch on every encode call.

I ran one manual benchmark to see whether this had a big performance impact, and it looked ok. We should benchmark it more thoroughly though.

Jun 10, 2024

Increases the scanning batch size from 64 to 1000

Jun 10, 2024
Jun 10, 2024

Bumps the all-dependencies group with 2 updates: golang.org/x/crypto and golang.org/x/sys.

Updates golang.org/x/crypto from 0.23.0 to 0.24.0

Commits
  • 332fd65 go.mod: update golang.org/x dependencies
  • 0b431c7 x509roots/fallback: update bundle
  • 349231f ssh: implement CryptoPublicKey on sk keys
  • 44c9b0f ssh: allow server auth callbacks to send additional banners
  • 67b1361 sha3: reenable s390x assembly
  • 477a5b4 sha3: make APIs usable with zero allocations
  • 59b5a86 sha3: disable s390x assembly
  • 10f366e sha3: simplify XOR functions
  • See full diff in compare view

Updates golang.org/x/sys from 0.20.0 to 0.21.0

Commits
  • 673e0f9 unix: skip ethtool driver test for busy interface
  • 6943ab6 unix/linux: update glibc to 2.39
  • 92f3ad6 unix: update to Linux kernel 6.9
  • f34bb9f windows: add net user enum
  • 6dfb94e unix: add types for SOCK_DIAG
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 10, 2024

Bumps the all-dependencies group with 3 updates: go.sia.tech/core, go.sia.tech/coreutils and golang.org/x/term.

Updates go.sia.tech/core from 0.2.5 to 0.2.6

Commits
  • c89664e Merge pull request #166 from SiaFoundation/nate/clear-decoder-buffer
  • 5c81d31 ci: upgrade workflows
  • 76c8780 ci: fix golangci-lint, fix linter errors
  • 223630e upgrade Go
  • b6076d9 internal: drain channel when stopping timer (#165)
  • 9d2a157 consensus: lint suggestions
  • 9ec8e49 types: clear decoder buffer when read encounters an error
  • 31a155d gateway: revert memory reuse
  • See full diff in compare view

Updates go.sia.tech/coreutils from 0.0.5-0.20240531191724-1de8f76a2179 to 0.0.5

Commits

Updates golang.org/x/term from 0.20.0 to 0.21.0

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
Jun 10, 2024
Jun 10, 2024
Jun 10, 2024

Bumps golang.org/x/sys from 0.20.0 to 0.21.0.

Commits
  • 673e0f9 unix: skip ethtool driver test for busy interface
  • 6943ab6 unix/linux: update glibc to 2.39
  • 92f3ad6 unix: update to Linux kernel 6.9
  • f34bb9f windows: add net user enum
  • 6dfb94e unix: add types for SOCK_DIAG
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Jun 10, 2024

Bumps golang.org/x/crypto from 0.23.0 to 0.24.0.

Commits
  • 332fd65 go.mod: update golang.org/x dependencies
  • 0b431c7 x509roots/fallback: update bundle
  • 349231f ssh: implement CryptoPublicKey on sk keys
  • 44c9b0f ssh: allow server auth callbacks to send additional banners
  • 67b1361 sha3: reenable s390x assembly
  • 477a5b4 sha3: make APIs usable with zero allocations
  • 59b5a86 sha3: disable s390x assembly
  • 10f366e sha3: simplify XOR functions
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Jun 10, 2024

Fixes the following error on hostd when renterd trims sectors for large contracts:

failed to commit contract modifications: transaction failed (attempt 1): failed to trim sectors: failed to delete contract sector roots: failed to delete contract sector roots: too many SQL variables

renterd's batch size when trimming is 500000 sectors while the SQLite query parameter limit is around 32000. This change is negligibly slower (~2 microseconds per sector)

Before

BenchmarkTrimSectors-10           189414             91529 ns/op            189414 sectors          8892 B/op        207 allocs/op
PASS
ok      go.sia.tech/hostd/persist/sqlite        115.901s

After

BenchmarkTrimSectors-10           179298             94208 ns/op            179298 sectors          9768 B/op        252 allocs/op
PASS
ok      go.sia.tech/hostd/persist/sqlite        102.815s
Jun 7, 2024

Ensures the decoder's buffer is cleared when Read encounters an error. This should fix OOM issues we're seeing when syncing Mainnet. It may also fix https://github.com/SiaFoundation/hostd/issues/406, but I haven't looked deep into that one yet.

Jun 7, 2024

I'm not entirely sure that we need to do it per se in these three instances but in the context of the memory leaks we're seeing I think it's good practice to drain the timer channel when stopping them.

Jun 5, 2024

Arequipa is receiving large merkle proof responses from then hosts. Some 40MB+ in size. A slow host can't transmit that data within 60 seconds so I increased it to 5 minutes.

Jun 1, 2024
May 31, 2024
May 30, 2024

Something crashed Arequipa by returning a huge OutputLength. 10MiB should be plenty.

May 30, 2024

(note: confirmed this fixes memory leak on my node)

May 28, 2024

Bumps github.com/cloudflare/cloudflare-go from 0.95.0 to 0.96.0.

Release notes

Sourced from github.com/cloudflare/cloudflare-go's releases.

v0.96.0

ENHANCEMENTS:

  • access_application: Add Refresh Token, Custom Claims, and PKCE Without Client Secret support for OIDC SaaS configurations (#1981)
  • ruleset: add support for action parameters fonts and disable_rum (#1832)

DEPENDENCIES:

  • deps: bumps bflad/action-milestone-comment from 1 to 2 (#1991)
  • deps: bumps github.com/hashicorp/go-retryablehttp from 0.7.5 to 0.7.6 (#1993)
  • deps: bumps goreleaser/goreleaser-action from 5.0.0 to 5.1.0 (#1992)
Changelog

Sourced from github.com/cloudflare/cloudflare-go's changelog.

0.96.0 (May 22nd, 2024)

ENHANCEMENTS:

  • access_application: Add Refresh Token, Custom Claims, and PKCE Without Client Secret support for OIDC SaaS configurations (#1981)
  • ruleset: add support for action parameters fonts and disable_rum (#1832)

DEPENDENCIES:

  • deps: bumps bflad/action-milestone-comment from 1 to 2 (#1991)
  • deps: bumps github.com/hashicorp/go-retryablehttp from 0.7.5 to 0.7.6 (#1993)
  • deps: bumps goreleaser/goreleaser-action from 5.0.0 to 5.1.0 (#1992)
Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 22, 2024

While unlikely, if longQueryDuration is set to 0 or Prepare takes a long time,, Prepare will not return an error.

May 21, 2024

Fixes an issue where sector migrations were not being counted towards the global write stats

May 20, 2024

Bumps go.sia.tech/web/walletd from 0.20.0 to 0.21.0.

Release notes

Sourced from go.sia.tech/web/walletd's releases.

[email protected]

Minor Changes

Patch Changes

Commits
  • 56d6fe5 chore: release packages
  • b6505a6 fix: privacy settings host map, daemon version formatting
  • 0ba9281 feat: renterd health partial slab
  • b8a5a3b fix: renterd gpu, map colors
  • 73e7297 fix: alerts
  • bcc1485 feat: renterd autopilot and not enough contract onboarding
  • 8da5666 fix: move connectivity/login off consensus
  • 8b69b77 feat: failed to migrate slab alert objects
  • 1ed477f fix: renterd state, show build version
  • 2e77e9c fix: hostd error alert
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 20, 2024

Fixes #160

May 18, 2024

This went undetected because we haven't properly tested v2 storage proofs. Notably, we had a TestStorageProofRoot test, but it was basically just a regression test -- it compared the output to whatever storageProofRoot returned the first time we ran the test, so it didn't detect the faulty logic.

May 17, 2024

Removes the eventData interface and the custom json encoding in favor of a field on the Event struct. This does remove the limited guarantees we have about the data aligning with the type, but in practice its not a significant enough downside to justify the custom marshalling.

@alexfreska this will break the UI... Again.. Actually, it will not

{
  "id": "h:a0f44763dbb2d2f95eec0f20f18bda75e7026297b6172f73449f3c3d67c2099c",
  "index": {
    "height": 997,
    "id": "bid:000000004d7b155547e163ea4933c28cf2171c43c0c02e50c04f6718f6af37f0"
  },
  "timestamp": "2023-01-16T02:06:49Z",
  "maturityHeight": 997,
  "relevant": null,
  "type": "transaction",
  "data": {
    "siacoinInputs": [
      {
        "id": "h:35b81e41f594d7faeb88bd8eaac2eaa68ce99fe1c8fe5f0cba8fafa65ab3a70e",
        "leafIndex": 0,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "1000000000000000000000000000000000000",
          "address": "addr:3d7f707d05f2e0ec7ccc9220ed7c8af3bc560fbee84d068c2cc28151d617899e1ee8bc069946"
        },
        "maturityHeight": 0
      }
    ],
    "siacoinOutputs": [
      {
        "id": "h:674c765a9708e24528549c2ecf9c6cc99501a1d4909b9aa18ec64f14bccfef41",
        "leafIndex": 2133,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "100000000000022500000000000000000000",
          "address": "addr:70cd9249053dc5d575aa74385a730fbe16b1c7997ddadc37a5d9abc8dbf12017cbd4bb3c48da"
        },
        "maturityHeight": 0
      },
      {
        "id": "h:4e4dc8a4b2147ba5783d803e645be14c54f1276f45a76c1cad060e41ded3733f",
        "leafIndex": 2134,
        "merkleProof": null,
        "siacoinOutput": {
          "value": "899999999999977500000000000000000000",
          "address": "addr:6f2ff24633525e854d0106031daf6cc666d5b8610ff9fbbd676a1d1a95903c794e054de7a634"
        },
        "maturityHeight": 0
      }
    ],
    "siafundInputs": [],
    "siafundOutputs": [],
    "fileContracts": null,
    "v2FileContracts": null,
    "hostAnnouncements": null,
    "fee": "0"
  }
}
May 15, 2024
May 15, 2024

This PR expands test coverage in merkle to 95.1% and overall consensus coverage to 76.2% Now that we have the coverage for DecodeFrom and EncodeTo I'm planning to add a roundtrip later, assuming you find such tests to be valuable.

May 15, 2024

Adds support for a yaml configuration file similar to hostd and renterd.

directory: /etc/walletd
autoOpenWebUI: true
http:
  address: :9980
  password: sia is cool
consensus:
  network: mainnet
  gatewayAddress: :9981
  bootstrap: false
  enableUPnP: false
index:
  mode: partial # full, partial, none (full index will index the entire blockchain, partial will only index addresses that are registered in the wallet, none will treat the database as read-only and not index any new data)
  batchSize: 64 # max number of blocks to index at a time (increasing this will increase scan speed, but also increase memory and cpu usage)
log:
  level: info # global log level
  stdout:
    enabled: true # enable logging to stdout
    level: debug # override the global log level for stdout
    enableANSI: false
    format: human # human or JSON
  file:
    enabled: true # enable logging to a file
    level: debug # override the global log level for the file
    path: /var/log/walletd.log
    format: json # human or JSON
May 15, 2024

This PR expands test coverage in policy.go to 86.5% and overall types coverage to 59.7%

May 14, 2024

Changes the read and write RPC to send internal errors and alert+log the actual error.

May 14, 2024

Fixes a small race introduced when the handling of tpool utxos changed

May 14, 2024

Bumps github.com/cloudflare/cloudflare-go from 0.94.0 to 0.95.0.

Release notes

Sourced from github.com/cloudflare/cloudflare-go's releases.

v0.95.0

ENHANCEMENTS:

  • access_application: add support for policies array (#1956)
  • access_application: add support for scim_config (#1921)
  • access_policy: add support for reusable policies (#1956)
  • dlp: add support for zt risk behavior configuration (#1887)

BUG FIXES:

  • access_application: fix scim configuration authentication json marshalling (#1959)

DEPENDENCIES:

  • deps: bumps dependabot/fetch-metadata from 2.0.0 to 2.1.0 (#1839)
  • deps: bumps github.com/urfave/cli/v2 from 2.27.1 to 2.27.2 (#1861)
  • deps: bumps golang.org/x/net from 0.24.0 to 0.25.0 (#1974)
  • deps: bumps golangci/golangci-lint-action from 4 to 5 (#1845)
  • deps: bumps golangci/golangci-lint-action from 5 to 6 (#1975)
Changelog

Sourced from github.com/cloudflare/cloudflare-go's changelog.

0.95.0 (May 8th, 2024)

ENHANCEMENTS:

  • access_application: add support for policies array (#1956)
  • access_application: add support for scim_config (#1921)
  • access_policy: add support for reusable policies (#1956)
  • dlp: add support for zt risk behavior configuration (#1887)

BUG FIXES:

  • access_application: fix scim configuration authentication json marshalling (#1959)

DEPENDENCIES:

  • deps: bumps dependabot/fetch-metadata from 2.0.0 to 2.1.0 (#1839)
  • deps: bumps github.com/urfave/cli/v2 from 2.27.1 to 2.27.2 (#1861)
  • deps: bumps golang.org/x/net from 0.24.0 to 0.25.0 (#1974)
  • deps: bumps golangci/golangci-lint-action from 4 to 5 (#1845)
  • deps: bumps golangci/golangci-lint-action from 5 to 6 (#1975)
Commits
  • 4788db7 Update CHANGELOG.md
  • 3f615f5 update CHANGELOG
  • d4a7f8d Merge pull request #1975 from cloudflare/dependabot/github_actions/golangci/g...
  • a1fda3a Merge branch 'master' into dependabot/github_actions/golangci/golangci-lint-a...
  • 0026065 Merge pull request #1974 from cloudflare/dependabot/go_modules/golang.org/x/n...
  • 04c2ceb add CHANGELOG for #1975
  • e3ab1b2 build(deps): bump golangci/golangci-lint-action from 5 to 6
  • be510c4 add CHANGELOG for #1974
  • e35c25d build(deps): bump golang.org/x/net from 0.24.0 to 0.25.0
  • a8e30d4 Merge pull request #1959 from khiller-cf/master
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 6, 2024

Bumps golang.org/x/sys from 0.19.0 to 0.20.0.

Commits
  • 7d69d98 unix: extend support for z/OS
  • 7758090 cpu: add support for sve2 detection
  • 9a28524 windows: drop go version tags for unsupported versions
  • 27dc90b unix: update to Linux kernel 6.4
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
May 6, 2024

Bumps golang.org/x/crypto from 0.22.0 to 0.23.0.

Commits
  • 905d78a go.mod: update golang.org/x dependencies
  • ebb717d ssh: validate key type in SSH_MSG_USERAUTH_PK_OK response
  • 0da2a6a openpgp: fix function name in comment
  • 5defcc1 sha3: fix Sum results for SHAKE functions on s390x
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)